Commit Graph

1144 Commits

Author SHA1 Message Date
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
Carlos R. L. Rodrigues
31abba8cde fix(orchestrator): save checkpoint before async step (#12138) 2025-04-10 15:36:36 +00: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
Pedro Guzman
8804ca2f9c fix: allow backorder variants to be added to cart even if no locations (#12083)
* fix: allow backorder variants to be added to cart even if no locations

* document and unit test prepareConfirmInventoryInput
2025-04-09 19:15:42 +02:00
Adrien de Peretti
13e159d8ad fix(workflow-engine-*): Prevent passing shared context reference (#11873)
* fix(workflow-engine-*): Prevent passing shared context reference

* fix(workflow-engine-*): Prevent passing shared context reference

* prevent tests from hanging

* fix event handling

* add integration tests

* use interval for scheduled in tests

* skip tests for now

* Create silent-glasses-enjoy.md

* fix cancel

* changeset

* push multiple aliases

* test multiple field alias

* increase wait time to index on test

---------

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <rodrigolr@gmail.com>
2025-04-09 10:39:29 +02:00
Adrien de Peretti
2a18a75353 chore(framework): slightly improve maybe apply link filter middleware (#12113)
**What**
- Use the resource id filtering when possible instead of relying on programmatic intersection checks over potential hundreds thousands of resources from the link when in fact it is not necessary to fetch everything to check in memory but instead check in the db 
- Also fix normalizeDataForContext middlewares
2025-04-09 04:03:10 +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
9ac74eead4 feat(core-flows,types): export fetchShippingOptionForOrderWorkflow (#12103)
* feat(core-flows,types): export fetchShippingOptionForOrderWorkflow

* revert change

* change to tsdoc

* fix errors

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-04-08 13:05:03 +03:00
Shahed Nasser
83d29c2e79 chore(js-sdk, types): add TSDocs for plugin methods in JS SDK (#12106)
* chore(js-sdk, types): add TSDocs for plugin methods in JS SDK

* tsdocs for draft orders
2025-04-07 18:11:33 +03:00
Carlos R. L. Rodrigues
92c7baa561 fix(orchestration): handle multiple shortcuts with same name (#12066) 2025-04-07 11:59:28 -03: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
Shahed Nasser
4780226145 chore(core-flows): added TSDocs for setPricingContext hooks (#12100) 2025-04-07 14:49:24 +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
Frane Polić
5f3a82f5c3 fix(core-flows): applying product type promotion (#12051)
* fix: applying porduct type promotion

* Create fair-terms-tell.md

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-04-02 09:35:25 +02:00
Harminder Virk
2f7eb0ee03 fix: validate module names to disallow unallowed characters (#12025) 2025-03-28 22:39:39 +05:30
Shahed Nasser
e998366aba chore(js-sdk): improve the TSDocs of auth methods in JS SDK (#12033) 2025-03-28 17:55:01 +02:00
Oli Juhl
79cfc1a69e fix(utils): Enable Redis locking by default in Cloud (#12017)
* fix(utils): Enable redis locking by default

* fix: tests

* Create popular-rules-shake.md
2025-03-28 16:23:02 +01:00
Frane Polić
95e89a39f3 feat(core-flows, types): try payment cancelation if cart complete fails in the webhook (#11832)
* fix: try compensating if cart complete fails, reorder process paymnet workflow steps

* fix: condition

* fix: feedback

* feat: changes to the compensation step

* fix: build

* fix: remove payment id as arg

* fix: when input

* chore: remove captures realtion, changeset

* fix: return lates payment object from authorize payment
2025-03-28 14:49:54 +01:00
Kasper Fabricius Kristensen
3dba58785f fix(dashboard,medusa,types): allow searching for promotion rule options (#12028)
* fix: allow searching for promotion rule options

* fix: allow searching for promotion rule options

* add changeset

* cleanup
2025-03-28 14:45:05 +01:00
Harminder Virk
b1b3b48474 feat: Set pricing context hook (#11891) 2025-03-28 15:17:52 +05:30
Riqwan Thamir
c870a7a1ba fix(utils,promotion): fix case where mutliple percentage promotions werent applied (#11992)
what:

- fix case where mutliple percentage promotions werent applied
2025-03-26 22:46:50 +00:00
Riqwan Thamir
1f8fab3636 feat(core-flows,types,order,cart): assign tax lines only to regular products (#11994)
what:

- assign tax lines only to regular products
2025-03-26 22:26:34 +00:00
Shahed Nasser
0cc306bf56 fix(js-sdk, types): fixes types and deprecate duplicate methods (#11975) 2025-03-25 16:37:30 +01:00
Carlos R. L. Rodrigues
01089d5bc8 chore(core-flows): price list skip when no data (#11977) 2025-03-25 10:55:30 -03:00
Shahed Nasser
768ea91e1b chore(js-sdk,types): add missing examples for JS SDK methods (#11934)
* chore(js-sdk,types): add TSDocs for calculate method

* added tsdocs for promotions

* finished adding examples

* fixes

* remove unused import
2025-03-25 14:55:54 +02:00
Shahed Nasser
c6f2f444ed fix(js-sdk): fix the return type of the promotion.listRules method (#11937) 2025-03-24 07:35:15 +01:00
Frane Polić
de8c034d1b feat(core-flows, types): calculated shipping in RMA flows (#11533)
* wip: calculated SO pricing in RMA flows

* fix: types

* chore: small refactor

* feat: caluclated shipping in return flow

* fix: module integrations

* fix: array containing

* feat: refresh shipping on update item quantity

* rm: log

* rm: log2

* feat: update interface, remove flag

* fix: revert change on OE for now

* fix: import

* feat: refactor flwos, cleanup cacluation cotext data model, wip exchanges

* feat: refreshing inbound/outbound shipping on items change

* feat: refresh exchange shipping on return item add, test

* feat: refresh shipping on exchange/return item remove

* fix: check optional

* feat: test recalculation on quantity update

* feat: calculated shipping on claims

* fix: comment

* wip: address comments

* fix: more remote query, fix build

* refactor: claim refresh workflow

* fix: remove throw option

* fix: deconstruct param

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2025-03-24 07:07:47 +01:00
Shahed Nasser
053326950d fix(js-sdk): fix the API route used in fulfillment.cancel method (#11936) 2025-03-21 15:08:44 +00:00
Harminder Virk
cab6f3a8ad feat: add support for accessing step results via context (#11907)
Fixes: FRMW-2934

This PR adds support for accessing the results of a hook using the `hook.getResult` method.
2025-03-21 10:15:38 +00:00
Stevche Radevski
c4f75ecbb2 feat: Add support for generating a cloud-ready config out of the box (#11850) 2025-03-21 09:21:38 +01:00
Frane Polić
8385a5e34d feat(core-flows): revisit fulfillment flow reservations and support inventory kit (#11790)
* feat: fulfillment flow with reservations and inventory kit

* fix: account for custom line items

* chore: cleanup, changeset

* fix: revert action check

* fix: deduplicate, test item qunatities, compute line item quantity from fulfillment items

* fix:

* fix: improve types

* fix: optimize fetched fileds in cancel fulfillment workflow

* fix: add a test case

* chore: update type
2025-03-19 13:15:24 +01:00
Harminder Virk
ff3885500c fix: hooks auto-generated types to have precise input options (#11886) 2025-03-18 15:41:01 +05:30
Shahed Nasser
0099c1e2e9 chore: added / improved tsdocs to cache, event, file, and notification modules (#11879)
* chore: added / improved tsdocs to cache, event, file, and notification modules

* small fixes
2025-03-18 09:07:32 +02:00
Riqwan Thamir
c3440e5e38 feat(medusa,types): add enabled plugins route (#11876) 2025-03-17 20:11:46 +01:00
Riqwan Thamir
9dd62d93bd feat(core-flows,types,utils): make payment optional when cart balance is 0 (#11872)
what:

- make payment optional when cart balance is 0
2025-03-17 19:03:22 +00:00
Riqwan Thamir
5ab15a2988 feat(dashboard,js-sdk,admin-shared): add customer addresses + layout change (#11871)
what:

- changes customer layout from 1 layout to 2
- adds ability to create and delete customer addresses
- adds 2 customer widget locations
- adds is_giftcard=false by default to products list

<img width="1663" alt="Screenshot 2025-03-08 at 21 34 02" src="https://github.com/user-attachments/assets/e66f05da-718c-4c25-81ce-67ba0a814ca3" />
2025-03-17 16:16:27 +00:00
Riqwan Thamir
cb6249320e fix(types,order,medusa): Create credit lines + hooks (#11569)
what:

- api/workflows to create credit lines
- hooks to enable extending credit lines
2025-03-17 15:20:59 +00:00
Carlos R. L. Rodrigues
0625f76cd4 chore(workflow-engine): export cancel method (#11844)
What:
  * Workflow engine exports the method `cancel` to revert a workflow.
2025-03-17 12:59:09 +00:00
Harminder Virk
cae47d9e49 feat: add check for uniqueness when creating links with isList=false (#11767) 2025-03-17 13:23:18 +05:30
OttavioCas
5e892e2f05 add no_notification to shipment created event (#11836) 2025-03-14 13:05:14 -03:00
Adrien de Peretti
fc652ea51e fix(workflow-engine-*): scheduled jobs interval (#11800)
**What**
Currently only cron pattern are supported by scheduled jobs, this can lead to issue. for example you set the pattern to execute every hours at minute 0 and second 0 (as it is expected to execute at exactly this constraint) but due to the moment it gets executed we our out of the second 0 then the job wont get executed until the next scheduled cron table execution.

With this pr we introduce the `interval` configuration which allows you the specify a delay between execution in ms (e.g every minute -> 60 * 1000 ms) which ensure that once a job is executed another one is scheduled for a minute later.

**Usage**
```ts
// jobs/job-1.ts
const thirtySeconds = 30 * 1000

export const config = {
  name: "job-1",
  schedule: {
    interval: thirtySeconds
  },
}
```
2025-03-13 15:05:13 +00:00
Stevche Radevski
e0109540fa feat: Change customer to account_holder to be one-to-many (#11803) 2025-03-12 16:05:38 +01:00
Shahed Nasser
76a0d8e1d8 chore(types): small fixes to locking TSDocs (#11823)
* chore(types): small fixes to locking TSDocs

* add missing return
2025-03-12 16:31:07 +02:00
Adrien de Peretti
72d2cf9207 fix(workflow-engines): race condition when retry interval is used (#11771) 2025-03-12 09:53:34 -03:00
Shahed Nasser
bed8918c31 chore(types): add tsdocs for locking module and provider (#11818) 2025-03-12 10:45:29 +02:00
Harminder Virk
375c4a5ab1 refactor: use module name as the snapshot name (#11802)
Fixes: FRMW-2930

This PR updates the MikroORM config to use the module name as the snapshot name when generating migration files. Otherwise, MikroORM defaults to the database name and every time you update the database name, it will create a new snapshot. 

Also, we migrate existing snapshot files to be same the new file name to avoid breaking changes.
2025-03-12 07:02:19 +00:00
Kasper Fabricius Kristensen
ec56a8bc85 fix(medusa,utils,test-utils,types,framework,dashboard,admin-vite-plugin,admin-bundler): Fix broken plugin dependencies in development server (#11720)
**What**
- Reworks how admin extensions are loaded from plugins.
- Reworks how extensions are managed internally in the dashboard project.

**Why**
- Previously we loaded extensions from plugins the same way we do for extension found in a users application. This being scanning the source code for possible extensions in `.medusa/server/src/admin`, and including any extensions that were discovered in the final virtual modules.
- This was causing issues with how Vite optimizes dependencies, and would lead to CJS/ESM issues. Not sure of the exact cause of this, but the issue was pinpointed to Vite not being able to register correctly which dependencies to optimize when they were loaded through the virtual module from a plugin in `node_modules`.

**What changed**
- To circumvent the above issue we have changed to a different strategy for loading extensions from plugins. The changes are the following:
  - We now build plugins slightly different, if a plugin has admin extensions we now build those to `.medusa/server/src/admin/index.mjs` and `.medusa/server/src/admin/index.js` for a ESM and CJS build.
  - When determining how to load extensions from a source we follow these rules:
    - If the source has a `medusa-plugin-options.json` or is the root application we determine that it is a `local` extension source, and load extensions as previously through a virtual module.
    - If it has neither of the above, but has a `./admin` export in its package.json then we determine that it is a `package` extension, and we update the entry point for the dashboard to import the package and pass its extensions a long to the dashboard manager.

**Changes required by plugin authors**
- The change has no breaking changes, but requires plugin authors to update the `package.json` of their plugins to also include a `./admin` export. It should look like this:

```json
{
  "name": "@medusajs/plugin",
  "version": "0.0.1",
  "description": "A starter for Medusa plugins.",
  "author": "Medusa (https://medusajs.com)",
  "license": "MIT",
  "files": [
    ".medusa/server"
  ],
  "exports": {
    "./package.json": "./package.json",
    "./workflows": "./.medusa/server/src/workflows/index.js",
    "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
    "./modules/*": "./.medusa/server/src/modules/*/index.js",
    "./providers/*": "./.medusa/server/src/providers/*/index.js",
    "./*": "./.medusa/server/src/*.js",
    "./admin": {
      "import": "./.medusa/server/src/admin/index.mjs",
      "require": "./.medusa/server/src/admin/index.js",
      "default": "./.medusa/server/src/admin/index.js"
    }
  },
}
```
2025-03-11 11:28:33 +00:00