Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make allowedMetaFields consistent #5011

Merged
merged 3 commits into from Mar 25, 2024
Merged

Make allowedMetaFields consistent #5011

merged 3 commits into from Mar 25, 2024

Conversation

Murderlon
Copy link
Member

Closes #4217

It's now always boolean | string[], with true as default which sends all meta fields.

@Murderlon Murderlon requested a review from aduh95 March 19, 2024 17:09
@Murderlon Murderlon self-assigned this Mar 19, 2024
Copy link
Contributor

github-actions bot commented Mar 19, 2024

Diff output files
diff --git a/packages/@uppy/aws-s3-multipart/lib/index.js b/packages/@uppy/aws-s3-multipart/lib/index.js
index 70d6f5b..4faed3f 100644
--- a/packages/@uppy/aws-s3-multipart/lib/index.js
+++ b/packages/@uppy/aws-s3-multipart/lib/index.js
@@ -14,6 +14,7 @@ import BasePlugin from "@uppy/core/lib/BasePlugin.js";
 import EventManager from "@uppy/core/lib/EventManager.js";
 import { createAbortError } from "@uppy/utils/lib/AbortController";
 import { filterFilesToEmitUploadStarted, filterNonFailedFiles } from "@uppy/utils/lib/fileFilters";
+import getAllowedMetaFields from "@uppy/utils/lib/getAllowedMetaFields";
 import { RateLimitedQueue } from "@uppy/utils/lib/RateLimitedQueue";
 import createSignedURL from "./createSignedURL.js";
 import { HTTPCommunicationQueue } from "./HTTPCommunicationQueue.js";
@@ -57,7 +58,7 @@ function getAllowedMetadata(_ref) {
   );
 }
 const defaultOptions = {
-  allowedMetaFields: null,
+  allowedMetaFields: true,
   limit: 6,
   getTemporarySecurityCredentials: false,
   shouldUseMultipart: file => file.size !== 0,
@@ -299,9 +300,10 @@ export default class AwsS3Multipart extends BasePlugin {
   createMultipartUpload(file, signal) {
     this.assertHost("createMultipartUpload");
     throwIfAborted(signal);
+    const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);
     const metadata = getAllowedMetadata({
       meta: file.meta,
-      allowedMetaFields: this.opts.allowedMetaFields,
+      allowedMetaFields,
     });
     return _classPrivateFieldLooseBase(this, _client)[_client].post("s3/multipart", {
       filename: file.name,
@@ -425,9 +427,10 @@ export default class AwsS3Multipart extends BasePlugin {
       type,
       name: filename,
     } = meta;
+    const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);
     const metadata = getAllowedMetadata({
       meta,
-      allowedMetaFields: this.opts.allowedMetaFields,
+      allowedMetaFields,
       querify: true,
     });
     const query = new URLSearchParams({
diff --git a/packages/@uppy/tus/lib/index.js b/packages/@uppy/tus/lib/index.js
index dfa1bd1..23a9e87 100644
--- a/packages/@uppy/tus/lib/index.js
+++ b/packages/@uppy/tus/lib/index.js
@@ -11,6 +11,7 @@ function _classPrivateFieldLooseKey(name) {
 import BasePlugin from "@uppy/core/lib/BasePlugin.js";
 import EventManager from "@uppy/core/lib/EventManager.js";
 import { filterFilesToEmitUploadStarted, filterNonFailedFiles } from "@uppy/utils/lib/fileFilters";
+import getAllowedMetaFields from "@uppy/utils/lib/getAllowedMetaFields";
 import hasProperty from "@uppy/utils/lib/hasProperty";
 import isNetworkError from "@uppy/utils/lib/isNetworkError";
 import NetworkError from "@uppy/utils/lib/NetworkError";
@@ -43,6 +44,7 @@ const defaultOptions = {
   limit: 20,
   retryDelays: tusDefaultOptions.retryDelays,
   withCredentials: false,
+  allowedMetaFields: true,
 };
 var _retryDelayIterator = _classPrivateFieldLooseKey("retryDelayIterator");
 var _uploadLocalFile = _classPrivateFieldLooseKey("uploadLocalFile");
@@ -328,7 +330,7 @@ function _uploadLocalFile2(file) {
       }
     };
     const meta = {};
-    const allowedMetaFields = Array.isArray(opts.allowedMetaFields) ? opts.allowedMetaFields : Object.keys(file.meta);
+    const allowedMetaFields = getAllowedMetaFields(opts.allowedMetaFields, file.meta);
     allowedMetaFields.forEach(item => {
       meta[item] = String(file.meta[item]);
     });
diff --git a/packages/@uppy/xhr-upload/lib/index.js b/packages/@uppy/xhr-upload/lib/index.js
index 609c3ad..0a6a698 100644
--- a/packages/@uppy/xhr-upload/lib/index.js
+++ b/packages/@uppy/xhr-upload/lib/index.js
@@ -11,6 +11,7 @@ function _classPrivateFieldLooseKey(name) {
 import BasePlugin from "@uppy/core/lib/BasePlugin.js";
 import EventManager from "@uppy/core/lib/EventManager.js";
 import { filterFilesToEmitUploadStarted, filterNonFailedFiles } from "@uppy/utils/lib/fileFilters";
+import getAllowedMetaFields from "@uppy/utils/lib/getAllowedMetaFields";
 import isNetworkError from "@uppy/utils/lib/isNetworkError";
 import NetworkError from "@uppy/utils/lib/NetworkError";
 import ProgressTimeout from "@uppy/utils/lib/ProgressTimeout";
@@ -44,7 +45,7 @@ const defaultOptions = {
   formData: true,
   fieldName: "file",
   method: "post",
-  allowedMetaFields: null,
+  allowedMetaFields: true,
   responseUrlFieldName: "url",
   bundle: false,
   headers: {},
@@ -171,7 +172,7 @@ export default class XHRUpload extends BasePlugin {
     return opts;
   }
   addMetadata(formData, meta, opts) {
-    const allowedMetaFields = Array.isArray(opts.allowedMetaFields) ? opts.allowedMetaFields : Object.keys(meta);
+    const allowedMetaFields = getAllowedMetaFields(opts.allowedMetaFields, meta);
     allowedMetaFields.forEach(item => {
       const value = meta[item];
       if (Array.isArray(value)) {
@@ -432,7 +433,7 @@ function _uploadBundle2(files) {
 function _getCompanionClientArgs2(file) {
   var _file$remote;
   const opts = this.getOptions(file);
-  const allowedMetaFields = Array.isArray(opts.allowedMetaFields) ? opts.allowedMetaFields : Object.keys(file.meta);
+  const allowedMetaFields = getAllowedMetaFields(opts.allowedMetaFields, file.meta);
   return {
     ...((_file$remote = file.remote) == null ? void 0 : _file$remote.body),
     protocol: "multipart",

This comment was marked as resolved.

This comment was marked as resolved.

@Murderlon Murderlon added the 4.0 For the 4.0 major version label Mar 19, 2024
@Murderlon
Copy link
Member Author

@SocketSecurity ignore-all

Copy link
Member

@aduh95 aduh95 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, we have to remember to update the docs at some point.

You'll have to rebase to modify the index.ts instead of index.js for AWS plugin.

packages/@uppy/utils/src/getAllowedMetaFields.ts Outdated Show resolved Hide resolved
@Murderlon Murderlon merged commit 1aac94d into 4.x Mar 25, 2024
16 checks passed
@Murderlon Murderlon deleted the consistent-metafields branch March 25, 2024 10:27
This was referenced Mar 28, 2024
github-actions bot added a commit that referenced this pull request Mar 28, 2024
| Package                   |      Version | Package                   |      Version |
| ------------------------- | ------------ | ------------------------- | ------------ |
| @uppy/angular             | 0.7.0-beta.1 | @uppy/progress-bar        | 4.0.0-beta.1 |
| @uppy/audio               | 2.0.0-beta.1 | @uppy/provider-views      | 4.0.0-beta.1 |
| @uppy/aws-s3              | 4.0.0-beta.1 | @uppy/react               | 4.0.0-beta.1 |
| @uppy/aws-s3-multipart    | 4.0.0-beta.1 | @uppy/redux-dev-tools     | 4.0.0-beta.1 |
| @uppy/box                 | 3.0.0-beta.1 | @uppy/remote-sources      | 2.0.0-beta.1 |
| @uppy/companion           | 5.0.0-beta.1 | @uppy/screen-capture      | 4.0.0-beta.1 |
| @uppy/companion-client    | 4.0.0-beta.1 | @uppy/status-bar          | 4.0.0-beta.1 |
| @uppy/compressor          | 2.0.0-beta.1 | @uppy/store-default       | 4.0.0-beta.1 |
| @uppy/core                | 4.0.0-beta.1 | @uppy/store-redux         | 4.0.0-beta.1 |
| @uppy/dashboard           | 4.0.0-beta.1 | @uppy/svelte              | 4.0.0-beta.1 |
| @uppy/drag-drop           | 4.0.0-beta.1 | @uppy/thumbnail-generator | 4.0.0-beta.1 |
| @uppy/drop-target         | 3.0.0-beta.1 | @uppy/transloadit         | 4.0.0-beta.1 |
| @uppy/dropbox             | 4.0.0-beta.1 | @uppy/tus                 | 4.0.0-beta.1 |
| @uppy/facebook            | 4.0.0-beta.1 | @uppy/unsplash            | 4.0.0-beta.1 |
| @uppy/file-input          | 4.0.0-beta.1 | @uppy/url                 | 4.0.0-beta.1 |
| @uppy/form                | 4.0.0-beta.1 | @uppy/utils               | 6.0.0-beta.1 |
| @uppy/golden-retriever    | 4.0.0-beta.1 | @uppy/vue                 | 2.0.0-beta.1 |
| @uppy/google-drive        | 4.0.0-beta.1 | @uppy/webcam              | 4.0.0-beta.1 |
| @uppy/image-editor        | 3.0.0-beta.1 | @uppy/xhr-upload          | 4.0.0-beta.1 |
| @uppy/informer            | 4.0.0-beta.1 | @uppy/zoom                | 3.0.0-beta.1 |
| @uppy/instagram           | 4.0.0-beta.1 | uppy                      | 4.0.0-beta.1 |
| @uppy/onedrive            | 4.0.0-beta.1 |                           |              |

- @uppy/vue: migrate to Composition API with TS & drop Vue 2 support (Merlijn Vos / #5043)
- @uppy/angular: upgrade to Angular 17.x and to TS 5.4 (Antoine du Hamel / #5008)
- @uppy/svelte: remove UMD output and make it use newer types (Antoine du Hamel / #5023)
- @uppy/companion-client,@uppy/provider-views,@uppy/status-bar: fix type imports (Antoine du Hamel / #5038)
- @uppy/aws-s3-multipart: mark `opts` as optional (Antoine du Hamel / #5039)
- e2e: bump Cypress version (Antoine du Hamel / #5034)
- @uppy/react: remove `prop-types` dependency (Antoine du Hamel / #5031)
- @uppy/progress-bar: remove default target (Antoine du Hamel / #4971)
- @uppy/status-bar: remove default target (Antoine du Hamel / #4970)
- @uppy/react: remove `Wrapper.ts` (Antoine du Hamel / #5032)
- @uppy/react: refactor to TS (Antoine du Hamel / #5012)
- @uppy/core: refine type of private variables (Antoine du Hamel / #5028)
- @uppy/dashboard: refine type of private variables (Antoine du Hamel / #5027)
- @uppy/drag-drop: refine type of private variables (Antoine du Hamel / #5026)
- @uppy/status-bar: refine type of private variables (Antoine du Hamel / #5025)
- @uppy/remote-sources: migrate to TS (Merlijn Vos / #5020)
- @uppy/dashboard: refine option types (Antoine du Hamel / #5022)
- @uppy/dashboard: add new `autoOpen` option (Chris Grigg / #5001)
- @uppy/aws-s3-multipart,@uppy/tus,@uppy/utils,@uppy/xhr-upload: Make `allowedMetaFields` consistent (Merlijn Vos / #5011)
- @uppy/core: fix some type errors (Antoine du Hamel / #5015)
- @uppy/audio,@uppy/dashboard,@uppy/drop-target,@uppy/webcam: add missing exports (Antoine du Hamel / #5014)
- meta: Bump webpack-dev-middleware from 5.3.3 to 5.3.4 (dependabot[bot] / #5013)
- @uppy/dashboard: refactor to TypeScript (Antoine du Hamel / #4984)
- @uppy/companion: improve error msg (Mikael Finstad / #5010)
- @uppy/aws-s3-multipart: refactor to TS (Antoine du Hamel / #4902)
- @uppy/dashboard: refactor to stable lifecycle method (Antoine du Hamel / #4999)
- @uppy/companion: crash if trying to set path to / (Mikael Finstad / #5003)
- @uppy/provider-views: fix `super.toggleCheckbox` bug (Mikael Finstad / #5004)
- @uppy/aws-s3-multipart: fix escaping issue with client signed request (Hiroki Shimizu / #5006)
- @uppy/drag-drop,@uppy/progress-bar: add missing exports (Antoine du Hamel / #5009)
- @uppy/transloadit: migrate to TS (Merlijn Vos / #4987)
- @uppy/utils: fix `RateLimitedQueue#wrapPromiseFunction` types (Antoine du Hamel / #5007)
- @uppy/golden-retriever: migrate to TS (Merlijn Vos / #4989)
- meta: Bump follow-redirects from 1.15.4 to 1.15.6 (dependabot[bot] / #5002)
- meta: fix `resize-observer-polyfill` types (Antoine du Hamel / #4994)
- @uppy/core: various type fixes (Antoine du Hamel / #4995)
- @uppy/utils: fix `findAllDOMElements` type (Antoine du Hamel / #4997)
- @uppy/status-bar: fix `recoveredState` type (Antoine du Hamel / #4996)
- @uppy/utils: fix `AbortablePromise` type (Antoine du Hamel / #4988)
- @uppy/core,@uppy/provider-views: Fix breadcrumbs (Evgenia Karunus / #4986)
- @uppy/drag-drop: refactor to TypeScript (Antoine du Hamel / #4983)
- @uppy/webcam: refactor to TypeScript (Antoine du Hamel / #4870)
- @uppy/url: migrate to TS (Merlijn Vos / #4980)
- @uppy/zoom: refactor to TypeScript (Murderlon / #4979)
- @uppy/unsplash: refactor to TypeScript (Murderlon / #4979)
- @uppy/onedrive: refactor to TypeScript (Murderlon / #4979)
- @uppy/instagram: refactor to TypeScript (Murderlon / #4979)
- @uppy/google-drive: refactor to TypeScript (Murderlon / #4979)
- @uppy/facebook: refactor to TypeScript (Murderlon / #4979)
- @uppy/dropbox: refactor to TypeScript (Murderlon / #4979)
- @uppy/box: refactor to TypeScript (Murderlon / #4979)
- @uppy/utils: migrate RateLimitedQueue to TS (Merlijn Vos / #4981)
- @uppy/thumbnail-generator: migrate to TS (Merlijn Vos / #4978)
- @uppy/screen-capture: migrate to TS (Merlijn Vos / #4965)
- @uppy/companion-client: Replace Provider.initPlugin with composition (Merlijn Vos / #4977)
- uppy: remove legacy bundle (Antoine du Hamel)
- meta: include types in npm archive (Antoine du Hamel)
- @uppy/angular: fix build (Antoine du Hamel)
- meta: Remove generate types from locale-pack (Murderlon)
- meta: enable CI on `4.x` branch (Antoine du Hamel)
- @uppy/vue: [v4.x] remove manual types (Antoine du Hamel / #4803)
- meta: prepare release workflow for beta versions (Antoine du Hamel)




| Package                   | Version | Package                   | Version |
| ------------------------- | ------- | ------------------------- | ------- |
| @uppy/audio               |   1.1.8 | @uppy/progress-bar        |   3.1.1 |
| @uppy/aws-s3-multipart    |  3.11.0 | @uppy/provider-views      |  3.11.0 |
| @uppy/box                 |   2.3.0 | @uppy/react               |   3.3.0 |
| @uppy/companion           |  4.13.0 | @uppy/remote-sources      |   1.2.0 |
| @uppy/companion-client    |   3.8.0 | @uppy/screen-capture      |   3.2.0 |
| @uppy/compressor          |   1.1.2 | @uppy/status-bar          |   3.3.1 |
| @uppy/core                |  3.10.0 | @uppy/thumbnail-generator |   3.1.0 |
| @uppy/dashboard           |   3.8.0 | @uppy/transloadit         |   3.6.0 |
| @uppy/drag-drop           |   3.1.0 | @uppy/tus                 |   3.5.4 |
| @uppy/drop-target         |   2.0.5 | @uppy/unsplash            |   3.3.0 |
| @uppy/dropbox             |   3.3.0 | @uppy/url                 |   3.6.0 |
| @uppy/facebook            |   3.3.0 | @uppy/utils               |   5.7.5 |
| @uppy/golden-retriever    |   3.2.0 | @uppy/webcam              |   3.4.0 |
| @uppy/google-drive        |   3.5.0 | @uppy/zoom                |   2.3.0 |
| @uppy/instagram           |   3.3.0 | uppy                      |  3.24.0 |
| @uppy/onedrive            |   3.3.0 |                           |         |

- @uppy/box,@uppy/companion-client,@uppy/provider-views,@uppy/status-bar: fix type imports (Antoine du Hamel / #5038)
- @uppy/aws-s3-multipart: mark `opts` as optional (Antoine du Hamel / #5039)
- e2e: bump Cypress version (Antoine du Hamel / #5034)
- @uppy/react: refactor to TS (Antoine du Hamel / #5012)
- @uppy/core: refine type of private variables (Antoine du Hamel / #5028)
- @uppy/dashboard: refine type of private variables (Antoine du Hamel / #5027)
- @uppy/drag-drop: refine type of private variables (Antoine du Hamel / #5026)
- @uppy/status-bar: refine type of private variables (Antoine du Hamel / #5025)
- @uppy/remote-sources: migrate to TS (Merlijn Vos / #5020)
- @uppy/dashboard: refine option types (Antoine du Hamel / #5022)
- @uppy/dashboard: add new `autoOpen` option (Chris Grigg / #5001)
- @uppy/core: fix some type errors (Antoine du Hamel / #5015)
- @uppy/audio,@uppy/dashboard,@uppy/drop-target,@uppy/webcam: add missing exports (Antoine du Hamel / #5014)
- meta: Bump webpack-dev-middleware from 5.3.3 to 5.3.4 (dependabot[bot] / #5013)
- @uppy/dashboard: refactor to TypeScript (Antoine du Hamel / #4984)
- @uppy/companion: improve error msg (Mikael Finstad / #5010)
- @uppy/aws-s3-multipart: refactor to TS (Antoine du Hamel / #4902)
- @uppy/dashboard: refactor to stable lifecycle method (Antoine du Hamel / #4999)
- @uppy/companion: crash if trying to set path to / (Mikael Finstad / #5003)
- @uppy/provider-views: fix `super.toggleCheckbox` bug (Mikael Finstad / #5004)
- @uppy/aws-s3-multipart: fix escaping issue with client signed request (Hiroki Shimizu / #5006)
- @uppy/drag-drop,@uppy/progress-bar: add missing exports (Antoine du Hamel / #5009)
- @uppy/transloadit: migrate to TS (Merlijn Vos / #4987)
- @uppy/utils: fix `RateLimitedQueue#wrapPromiseFunction` types (Antoine du Hamel / #5007)
- @uppy/golden-retriever: migrate to TS (Merlijn Vos / #4989)
- meta: Bump follow-redirects from 1.15.4 to 1.15.6 (dependabot[bot] / #5002)
- meta: fix `resize-observer-polyfill` types (Antoine du Hamel / #4994)
- @uppy/core: various type fixes (Antoine du Hamel / #4995)
- @uppy/utils: fix `findAllDOMElements` type (Antoine du Hamel / #4997)
- @uppy/status-bar: fix `recoveredState` type (Antoine du Hamel / #4996)
- @uppy/utils: fix `AbortablePromise` type (Antoine du Hamel / #4988)
- @uppy/core,@uppy/provider-views: Fix breadcrumbs (Evgenia Karunus / #4986)
- @uppy/drag-drop: refactor to TypeScript (Antoine du Hamel / #4983)
- @uppy/webcam: refactor to TypeScript (Antoine du Hamel / #4870)
- @uppy/url: migrate to TS (Merlijn Vos / #4980)
- @uppy/zoom: refactor to TypeScript (Murderlon / #4979)
- @uppy/unsplash: refactor to TypeScript (Murderlon / #4979)
- @uppy/onedrive: refactor to TypeScript (Murderlon / #4979)
- @uppy/instagram: refactor to TypeScript (Murderlon / #4979)
- @uppy/google-drive: refactor to TypeScript (Murderlon / #4979)
- @uppy/facebook: refactor to TypeScript (Murderlon / #4979)
- @uppy/dropbox: refactor to TypeScript (Murderlon / #4979)
- @uppy/box: refactor to TypeScript (Murderlon / #4979)
- @uppy/utils: migrate RateLimitedQueue to TS (Merlijn Vos / #4981)
- @uppy/thumbnail-generator: migrate to TS (Merlijn Vos / #4978)
- @uppy/screen-capture: migrate to TS (Merlijn Vos / #4965)
- @uppy/companion-client: Replace Provider.initPlugin with composition (Merlijn Vos / #4977)
Murderlon added a commit that referenced this pull request Apr 2, 2024
* 4.x: (27 commits)
  Release: uppy@4.0.0-beta.1 (#5047)
  @uppy/vue: migrate to Composition API with TS & drop Vue 2 support (#5043)
  @uppy/angular,meta: upgrade to Angular 17.x and to TS 5.4 (#5008)
  @uppy/svelte: remove UMD output and make it use newer types (#5023)
  fix type imports (#5038)
  @uppy/aws-s3-multipart: mark `opts` as optional (#5039)
  e2e: bump Cypress version (#5034)
  @uppy/react: remove `prop-types` dependency (#5031)
  @uppy/progress-bar: remove default target (#4971)
  @uppy/status-bar: remove default target (#4970)
  @uppy/react: remove `Wrapper.ts` (#5032)
  @uppy/react: refactor to TS (#5012)
  @uppy/core: refine type of private variables (#5028)
  @uppy/dashboard: refine type of private variables (#5027)
  @uppy/drag-drop: refine type of private variables (#5026)
  @uppy/status-bar: refine type of private variables (#5025)
  @uppy/remote-sources: migrate to TS (#5020)
  @uppy/dashboard: refine option types (#5022)
  @uppy/dashboard: add new `autoOpen` option (#5001)
  Make `allowedMetaFields` consistent (#5011)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4.0 For the 4.0 major version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants