Commit Graph

443 Commits

Author SHA1 Message Date
Shahed Nasser
5ba842bfb0 chore(core-flows,types,utils): fixes to TSDocs (#12692) 2025-06-10 18:33:41 +03:00
github-actions[bot]
68a796d300 chore: Version Packages (#12583)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-05 20:33:53 +02:00
Carlos R. L. Rodrigues
490bd7647f fix(core-flows): complete cart improvements (#12646)
* fix(core-flows): use cartId as transactionId and acquire lock to complete cart

* fix cart update compensation
2025-05-30 14:15:08 +01:00
Shahed Nasser
3d65807d99 fix(utils): export payment events in core flows events (#12636) 2025-05-29 10:10:26 +03:00
Harminder Virk
cf0297f74a feat: implement stream based processing of the files (#12574)
Fixes: FRMW-2960

This PR adds support for processing large CSV files by breaking them into chunks and processing one chunk at a time. This is how it works in nutshell.

- The CSV file is read as a stream and each chunk of the stream is one CSV row.
- We read upto 1000 rows (plus a few more to ensure product variants of a product are not split into multiple chunks).
- Each chunk is then normalized using the `CSVNormalizer` and validated using zod schemas. If there is an error, the entire process will be aborted and the existing chunks will be deleted.
- Each chunk is written to a JSON file, so that we can process them later (after user confirms) without re-processing or validating the CSV file.
- The confirmation process will start consuming one chunk at a time and create/update products using the `batchProducts` workflow.

## Resume or not to resume processing of chunks

Let's imagine during processing of chunks, we find that chunk 3 leads to a database error. However, till this time we have processed the first two chunks already. How do we deal with this situation? Options are:

- We store at which chunk we failed and then during the re-upload we ignore chunks before the failed one. In my conversation with @olivermrbl we discovered that resuming will have to work with certain assumptions if we decide to implement it.
   - What if a user updates the CSV rows which are part of the already processed chunks? These changes will be ignored and they will never notice it.
   - Resuming works if the file name is still the same. What if they made changes and saved the file with "Save as - New name". In that case we will anyways process the entire file.
   - We will have to fetch the old workflow from the workflow engine using some `ilike` search, so that we can see at which chunk the last run failed for the given file.

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2025-05-29 05:42:16 +00:00
Harminder Virk
791276e80f feat: introduce bulkDelete method for IFileProvider (#12614)
Fixes: FRMW-2974

Currently during the product imports, we create multiple chunks that must be deleted after the import has finished (either successfully or with an error). Deleting files one by one leads to multiple network calls and slows down everything.

The `bulkDelete` method deletes multiple files (with their fileKey) in one go
2025-05-27 06:52:11 +00:00
Harminder Virk
f6f34cc0e4 fix: module import paths to contain unix slash (#12592)
Currently when types are generated on Windows, they result in using Windows slash for relative imports. This PR, fixes that to always use Unix imports
2025-05-23 08:09:34 +00:00
github-actions[bot]
5ad3615830 chore: Version Packages (#12576)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-22 14:04:27 +02:00
Frane Polić
c5a6573e26 fix(product, utils): handle metadata key deletion on product update (#12478) 2025-05-21 21:32:12 +02:00
Shahed Nasser
e6b6c0d3b7 chore(types, utils): update TSDocs related to analytics module (#12564) 2025-05-21 14:43:09 +00:00
Carlos R. L. Rodrigues
59bbff62d8 fix(index): Apply various fixes to the index engine (#12501) 2025-05-19 15:14:25 -03:00
Stevche Radevski
b9a51e217d feat: Add an analytics module and local and posthog providers (#12505)
* feat: Add an analytics module and local and posthog providers

* fix: Add tests and wire up in missing places

* fix: Address feedback and add missing module typing

* fix: Address feedback and add missing module typing

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-05-19 19:57:13 +02:00
Adrien de Peretti
85d2b3c992 fix(utils): Missing zod deps (#12518) 2025-05-18 15:49:59 +02:00
olivermrbl
8c0b49fed4 chore: Version packages 2025-05-16 11:04:39 +02:00
Harminder Virk
e149a99886 feat: define validators and use normalize-products step (#12473)
Fixes: FRMW-2965

In this PR we replace/remove the existing step to normalize a CSV file with the newly written CSV normalizer and also we validate the file contents further using a Zod schema.

I have duplicated the schema for now. But it is makes sense to re-use the schema for CSV validating and `/admin/products/batch`, then I can keep one source of truth under utils and re-export it. WDYT?

**Screenshots of some errors after validating the file strictly**

![CleanShot 2025-05-15 at 16 36 46@2x](https://github.com/user-attachments/assets/c7fa424f-b947-4898-9b94-47c48617c129)

![CleanShot 2025-05-15 at 16 36 34@2x](https://github.com/user-attachments/assets/0fefef79-148b-4eeb-8ef0-3077e8063ea8)
2025-05-16 08:37:25 +00:00
Shahed Nasser
e91aa2493a chore(types, utils): TSDoc improvements for providers (#12498)
* chore(types, utils): TSDoc improvements for providers

* small iteration
2025-05-15 18:40:33 +03:00
olivermrbl
d2dd2e7c72 chore: Version packages 2025-05-15 09:49:09 +02:00
Pedro Guzman
142a1f0a5b fix(product): returned updates order in upsertWithReplace (#12486)
* add failing test for upsertWithReplace order

* reproduce prices update shuffling issue

* fix: fix order of returned updates in updateMany

* fix: fix order of returned updates in ProductService

* fix: reset test count to 1

* Create tame-insects-marry.md

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-05-15 09:22:24 +02:00
Shahed Nasser
851c81fd4b chore(types,utils): add featureFlag and version tags (#12464) 2025-05-13 19:12:19 +03:00
Harminder Virk
4602163b56 feat: create CSV normalizer to normalize a CSV file (#12396) 2025-05-13 18:04:59 +05:30
olivermrbl
d3a5868e8b chore: Version packages 2025-05-13 12:56:07 +02:00
Casey Harper
9d4bc81d0f fix(plugins, utils): Plugin admin folder loading with backslash on Windows (#12418)
* fix: Plugin admin folder loading with backslash on Windows

* fix: Plugin admin folder loading with backslash on Windows - Add changeset

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-05-11 18:46:12 +02:00
Adrien de Peretti
fff285f8d2 feat(core-flows): Emit cart trasnferred customer (#12425)
**What**
When a cart is transferred emit an event notifying of the action with the cart id and the customer id
2025-05-11 15:17:19 +00:00
Shahed Nasser
6032f3ec40 chore(js-sdk,types,utils): updates to file TSDocs (#12426)
* chore(js-sdk,types,utils): updates to file TSDocs

* remove ignore tag for file provider

* update file service tsdocs
2025-05-09 14:34:31 +03:00
Shahed Nasser
7eddcb54b8 chore(utils): add version tag to order edit events (#12424) 2025-05-09 13:11:46 +03:00
Shahed Nasser
89beaf38e1 chore(utils): small fix to payload in TSDocs (#12409) 2025-05-09 12:51:27 +03:00
Stevche Radevski
f929185021 fix: Use logger in the test runner and migration commands (#12406) 2025-05-08 11:25:47 +02:00
Shahed Nasser
0dd4572964 chore(utils): fixes to events TSDocs (#12395)
* chore(utils): fixes to events TSDocs

* more fixes
2025-05-07 14:25:11 +03:00
Shahed Nasser
c4dd805849 fix(core-flows): export order-related utility workflows (#12380) 2025-05-07 12:02:08 +03:00
Edin Abazi
a16ffb83d9 fix: rename Macedonia FYROM to North Macedonia (#12375) 2025-05-06 15:44:17 +02:00
Harminder Virk
e4d853185f fix: export ProductImage to allow for custom links to add alt text (#12357) 2025-05-05 14:24:25 +05:30
Harminder Virk
84f58f9058 feat: implement direct upload (#12328)
* feat: implement direct upload

* feat: add direct-upload endpoint

* refactor: implement feedback

* refactor: have a dedicated endpoint for direct uploads

* refactor: convert responses to snakecase

* refactor: rename method to createImport

* test: add tests for the presigned-urls endpoint
2025-05-04 12:58:10 +02:00
Pedro Guzman
ed55d17a36 fix: batch updates in upsertMany_ (#12333) 2025-05-02 08:36:33 +02:00
Shahed Nasser
332e46d1db chore(utils): fixes to events TSDocs (#12342) 2025-05-01 19:23:50 +03:00
Shahed Nasser
e3e02a1cc8 chore: add tsdocs for events (#12337) 2025-05-01 12:15:33 +03:00
Shahed Nasser
a53d645f8a fix(core-flows,utils): move fulfillment workflow events (#12338)
Move fulfillment workflow events to be with other workflow events.

Could be considered a breaking change for users using the previously `FulfillmentEvents` variable
2025-05-01 09:11:17 +00:00
Frane Polić
8985998756 feat(core-flows, utils): add OrderEdit events (#12320)
* feat(core-flows, utils): add OrderEdit events

* fix: typo
2025-04-30 17:44:39 +02:00
Harminder Virk
ceb504db2c feat: add needed methods to the file module and providers (#12325) 2025-04-30 13:17:31 +05:30
Carlos R. L. Rodrigues
b868a4ef4d feat(index): add filterable fields to link definition (#11898)
* feat(index): add filterable fields to link definition

* rm comment

* break recursion

* validate read only links

* validate filterable

* gql schema array

* link parents

* isInverse

* push id when not present

* Fix ciruclar relationships and add tests to ensure proper behaviour (part 1)

* log and fallback to entity.alias

* cleanup and fixes

* cleanup and fixes

* cleanup and fixes

* fix get attributes

* gql type

* unit test

* array inference

* rm only

* package.json

* pacvkage.json

* fix link retrieval on duplicated entity type and aliases + tests

* link parents as array

* Match only parent entity

* rm comment

* remove hard coded schema

* extend types

* unit test

* test

* types

* pagination type

* type

* fix integration tests

* Improve performance of in selection

* use @@ to filter property

* escape jsonPath

* add Event Bus by default

* changeset

* rm postgres analyze

* estimate count

* new query

* parent aliases

* inner query w/ filter and sort relations

* address comments

---------

Co-authored-by: adrien2p <adrien.deperetti@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-04-29 12:10:31 +02:00
olivermrbl
2fec5f4aa0 chore: Version packages 2025-04-23 09:27:02 +02:00
Harminder Virk
b890263725 feature: add support for dynamoDB for storing sessions and some types cleanup (#12140) 2025-04-16 14:55:14 +05:30
Adrien de Peretti
2f6963a5fb fix(): Event group id propagation and event managements (#12157) 2025-04-14 15:57:52 -03:00
Kunut Mix Chirdchai
ff9d1624b2 docs: Fix incorrect syntax in code snippets on Create Payment Provider page. (#12012) 2025-04-11 13:41:49 +03:00
olivermrbl
d61694385d chore: Version packages 2025-04-11 10:25:36 +02:00
Adrien de Peretti
07252691c5 chore(pricing): Pricing retrieval improvements (#12128)
**What**
I have removed the check for the context key where it was fetching all attributes available and then stripping out the one that does not exists.. On big dataset these would remove multiple hundreds of ms of query execution
2025-04-10 09:39:21 +00:00
Adrien de Peretti
74381addc3 chore(): Emit events in batch and index process event ids in batch (#12097)
**What**
First iteration to prevent events from overwhelming the systems.
- Group emitted event ids when possible instead of creating a message per id which leads to reduced amount of events to process massively in cases of import for example
- Update the index engine to process event data in batches of 100
- Update event handling by the index engine to be able to upsert by batch as well
- Fix index engine build config for intermediate listeners inferrence
2025-04-08 16:57:08 +00:00
Shahed Nasser
2be03d0d39 chore(types,utils): fixes to TSDocs for HTTP types and payment provider (#12102) 2025-04-07 16:08:39 +03:00
Frane Polić
a8513019db fix(core-flows,dashboard): handling authorized payment collection on OE (#11958)
* wip: handling authorized payment collection on OE

* fix: update condition

* fix: condition for creation

* chore: remove commented code

* chore: changeset, refactor

* chore: typo, comments

* fix: add a test case

* fix: reorg workflows, partially captured

* fix: status enum type
2025-04-02 13:57:44 +02:00
Harminder Virk
d3e725a907 feat: add hasMany flag to enforce in app link uniqueness (#12039)
* feat: add createMultiple flag to enforce inApp link uniqueness

* changes

* mocks

* default

* many to many

---------

Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
2025-04-02 10:46:51 +02:00
Kasper Fabricius Kristensen
f441362f4a feat(medusa,core-flows,types,js-sdk): Draft Order workflows and API endpoints (#11805) 2025-04-02 10:23:33 +02:00