### What
At the moment, it is not possible to not invalidate any queries>
Example, when we want to Create a new signed url, it does not require to invalidate any of the queries.
But the way it is done in the buildOptions, require to give either a key or an array of keys.
### How
The behaviour for empty array is to invalidate all the queries and here we would like to be able to just pass undefined in order to not trigger the invalidation. The update allow the arg to be optional and check for undefined explicitly before choosing the invalidation
* centralize common knowledge and checks for list-customers in repository
* convert customer service to typescript
* fix typing error in update-address
* add await
* add atomic phases
* update types for customerservice
* update api and model types
* pr feedback
* remove Promise.resolve
* typing of buildQuery
* remove atomic phase from private method
* add batch job strategy interface
* update plugin loaders
* remove comment
* make map async
* ensure that only one of each strategy is registered
* register strategies plural
* add identifier and batchType properties
* extend batch job strategy identification method
* initial test
* update loaders to accomodate different ways of accessing batch job strategies
* identifier batch type field
* redo merge in plugins
* update interface and load only js files
* use switches instead of elif
* remove comments
* use static properties for strategy registration
* update tests
* fix unit tests
* update test names
* update isBatchJobStrategy method
* add check for TransactionBaseService in services for plugins
* update interfaces export
* update batchjob strategy interface with a prepare script
* update loaders
* update batchjob strategy interface
* remove everything but public interface methods from batchJobStrategy
* add default implementation to prepareBathJobForProcessing
* remove unused import
* feat(medusa): Support transformQuery middleware
* feat(medusa): Add support for transformBody
* test(medusa): Fix unit tests
* feat(medusa): Cleanup import
* feat(medusa): Update pipe required fields
* feat(medusa): Cleanup
* feat(medusa): Types cleanup
* feat(medusa): Types cleanup
* feat(medusa): Improve global typings and add one more example
* fix(medusa): Wrong wording in the error for prepareListQuery utility
* fix: return prices when lsiting products with a query
* add: integration test
* fix: integration test
* fix: move WithRequiredProperty to common.ts
* fix: comment
* add file service interface initial
* pr feedback
* use abstract fileservice for file service plugins
* update plugin loader for services
* implement fileservices with abstractFileService and convert to ts
* update fileservice interface
* remove fileservice loading of old interface
* re-add loading of old fileservice interface
* re-rename digital ocean fileservice to javascript
* revert s3 to js
* revert minio to js
* remove irrelevant method implementation
* rename download stream method to reflect upload stream method
* update fileservice
* use isFileService in loaders
* remove fields from js class
* rename "generatePresignedDownloadUrl" to "getPresignedDownloadUrl"
* make methods abstract in AbstractFileService
* create download stream endpoint (#1583)
* Feat/upload to storage (#1580)
* add test generate endpoint to api
* rename method to getUploadStream
* cleanup generate example
* upload file example
* remove comment
* make vars const
* Feat/create presigned download url (#1582)
* implement "generatePresignedDownloadUrl"
* add get-download-url endpoint for testing
* remove examples
* update index ts
* create generalized method for aws update in DO fileservice
* update bucket configuration
* update interface types
* add typings to fileservice methods
* update service loaders
* update fileservice interface to extend transaction base service
* create download stream endpoint (#1583)
* Feat/upload to storage (#1580)
* add test generate endpoint to api
* rename method to getUploadStream
* cleanup generate example
* upload file example
* remove comment
* make vars const
* Feat/create presigned download url (#1582)
* implement "generatePresignedDownloadUrl"
* add get-download-url endpoint for testing
* remove examples
* update index ts
* create generalized method for aws update in DO fileservice
* update bucket configuration
* update interface types
* update download method name
* revert changes
* add filekey and optional extension to the fileservice result
* add key to the result of getUploadStream
* rename key to filekey
* rename key to filekey in getUploadStream result
* rename key to filekey in getDownloadStream and getPresignedDownloadUrl
* rename key to fileKey for getUploadedFileType
Co-authored-by: olivermrbl <oliver@mrbltech.com>