@hartl-services/medusa-base 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +741 -36
- package/.medusa/server/src/admin/index.mjs +743 -38
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/route.js +31 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/actions/[action_key]/runs/route.js +16 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/route.js +14 -0
- package/.medusa/server/src/api/admin/plugin-features/[plugin_key]/settings/route.js +22 -0
- package/.medusa/server/src/api/admin/plugin-features/route.js +6 -4
- package/.medusa/server/src/api/middlewares.js +22 -8
- package/.medusa/server/src/api/plugin-actions.js +221 -0
- package/.medusa/server/src/api/plugin-features-http.js +67 -8
- package/.medusa/server/src/modules/plugin-features/domain/plugin-action-runs.js +92 -0
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +213 -0
- package/.medusa/server/src/modules/plugin-features/domain/secret-box.js +56 -0
- package/.medusa/server/src/modules/plugin-features/migrations/Migration20260928205031.js +16 -0
- package/.medusa/server/src/modules/plugin-features/migrations/Migration20260928215428.js +17 -0
- package/.medusa/server/src/modules/plugin-features/models/plugin-action-run.js +43 -0
- package/.medusa/server/src/modules/plugin-features/models/plugin-setting-state.js +32 -0
- package/.medusa/server/src/modules/plugin-features/service.js +419 -17
- package/.medusa/server/src/public/action-progress.js +67 -0
- package/.medusa/server/src/public/descriptor.js +199 -2
- package/.medusa/server/src/public/effective-features.js +9 -5
- package/.medusa/server/src/public/enforcement.js +18 -8
- package/.medusa/server/src/public/index.js +10 -2
- package/.medusa/server/src/public/module-access.js +14 -0
- package/.medusa/server/src/public/settings.js +17 -0
- package/.medusa/server/src/public/shop-master-data.js +95 -0
- package/.medusa/server/src/utils/discover-complete-cart-participants.js +9 -2
- package/.medusa/server/src/utils/discover-plugin-features.js +47 -9
- package/.medusa/server/src/workflows/hooks/complete-cart-participants.js +28 -16
- package/README.md +393 -12
- package/dist/admin-components/features/plugin-features/components/PluginActionsSection.d.ts +6 -0
- package/dist/admin-components/features/plugin-features/components/PluginActionsSection.js +66 -0
- package/dist/admin-components/features/plugin-features/components/PluginDetailPage.d.ts +2 -0
- package/dist/admin-components/features/plugin-features/components/PluginDetailPage.js +9 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureGate.d.ts +22 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureGate.js +18 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +11 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeatureSections.js +19 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +12 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesCard.js +34 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +5 -0
- package/dist/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +16 -0
- package/dist/admin-components/features/plugin-features/components/PluginHubCard.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/components/PluginHubCard.js +21 -0
- package/dist/admin-components/features/plugin-features/components/PluginPageShell.d.ts +13 -0
- package/dist/admin-components/features/plugin-features/components/PluginPageShell.js +20 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/components/PluginSettingsForm.js +39 -0
- package/dist/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +5 -0
- package/dist/admin-components/features/plugin-features/components/PluginStatusChips.js +8 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +114 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.js +40 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +392 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginFeatures.js +128 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +93 -0
- package/dist/admin-components/features/plugin-features/hooks/usePluginSettingsForm.js +44 -0
- package/dist/admin-components/features/plugin-features/lib/action-runs.d.ts +19 -0
- package/dist/admin-components/features/plugin-features/lib/action-runs.js +74 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +363 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-features-admin-client.js +9 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-paths.d.ts +4 -0
- package/dist/admin-components/features/plugin-features/lib/plugin-paths.js +4 -0
- package/dist/admin-components/features/plugin-features/lib/settings-draft.d.ts +28 -0
- package/dist/admin-components/features/plugin-features/lib/settings-draft.js +86 -0
- package/dist/admin-components/features/plugin-features/queries/pluginFeatureKeys.d.ts +7 -0
- package/dist/admin-components/features/plugin-features/queries/pluginFeatureKeys.js +7 -0
- package/dist/admin-components/i18n/texts.d.ts +90 -0
- package/dist/admin-components/i18n/texts.js +90 -0
- package/dist/admin-components/index.d.ts +14 -0
- package/dist/admin-components/index.js +14 -0
- package/dist/admin-components/lib/errors.d.ts +6 -0
- package/dist/admin-components/lib/errors.js +27 -0
- package/dist/admin-components/lib/sdk.d.ts +2 -0
- package/dist/admin-components/lib/sdk.js +13 -0
- package/dist/public/action-progress.d.ts +25 -0
- package/dist/public/action-progress.js +66 -0
- package/dist/public/descriptor.d.ts +3 -2
- package/dist/public/descriptor.js +198 -1
- package/dist/public/effective-features.d.ts +2 -1
- package/dist/public/effective-features.js +8 -4
- package/dist/public/enforcement.d.ts +7 -0
- package/dist/public/enforcement.js +17 -7
- package/dist/public/index.d.ts +5 -2
- package/dist/public/index.js +9 -1
- package/dist/public/module-access.d.ts +3 -0
- package/dist/public/module-access.js +13 -0
- package/dist/public/settings.d.ts +11 -0
- package/dist/public/settings.js +16 -0
- package/dist/public/shop-master-data.d.ts +25 -0
- package/dist/public/shop-master-data.js +94 -0
- package/dist/public/types.d.ts +97 -1
- package/dist/utils/discover-plugin-features.d.ts +28 -0
- package/dist/utils/discover-plugin-features.js +96 -0
- package/package.json +7 -3
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listRegisteredModules = listRegisteredModules;
|
|
4
4
|
exports.discoverPluginFeatureDescriptors = discoverPluginFeatureDescriptors;
|
|
5
|
+
exports.discoverPluginFeatureProviders = discoverPluginFeatureProviders;
|
|
5
6
|
exports.findPluginFeatureDescriptor = findPluginFeatureDescriptor;
|
|
7
|
+
exports.findPluginFeatureProvider = findPluginFeatureProvider;
|
|
8
|
+
exports.readPluginSettingsFallback = readPluginSettingsFallback;
|
|
6
9
|
const utils_1 = require("@medusajs/framework/utils");
|
|
7
10
|
const descriptor_1 = require("../public/descriptor");
|
|
8
11
|
// Keyed by the app's config object: stable for the process lifetime, unlike
|
|
@@ -21,11 +24,7 @@ function listRegisteredModules(container) {
|
|
|
21
24
|
const readDescriptor = (service) => service !== null && typeof service === "object" && "pluginFeatures" in service
|
|
22
25
|
? service.pluginFeatures
|
|
23
26
|
: undefined;
|
|
24
|
-
|
|
25
|
-
* Finds every registered module whose service declares `pluginFeatures`.
|
|
26
|
-
* Fails closed: an invalid or duplicate declaration is `UNEXPECTED_STATE`.
|
|
27
|
-
*/
|
|
28
|
-
function discoverPluginFeatureDescriptors(container) {
|
|
27
|
+
const discover = (container) => {
|
|
29
28
|
const configModule = container.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
30
29
|
const memo = discovered.get(configModule);
|
|
31
30
|
if (memo) {
|
|
@@ -47,13 +46,52 @@ function discoverPluginFeatureDescriptors(container) {
|
|
|
47
46
|
if (byPluginKey.has(descriptor.plugin_key)) {
|
|
48
47
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Plugin-Key "${descriptor.plugin_key}" wird von mehreren Modulen deklariert.`);
|
|
49
48
|
}
|
|
50
|
-
byPluginKey.set(descriptor.plugin_key,
|
|
49
|
+
byPluginKey.set(descriptor.plugin_key, {
|
|
50
|
+
module_key: moduleKey,
|
|
51
|
+
descriptor,
|
|
52
|
+
service,
|
|
53
|
+
});
|
|
51
54
|
}
|
|
52
|
-
const
|
|
55
|
+
const providers = [...byPluginKey.values()].sort((left, right) => left.descriptor.plugin_key.localeCompare(right.descriptor.plugin_key));
|
|
56
|
+
const result = {
|
|
57
|
+
providers,
|
|
58
|
+
descriptors: providers.map((provider) => provider.descriptor),
|
|
59
|
+
};
|
|
53
60
|
discovered.set(configModule, result);
|
|
54
61
|
return result;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Finds every registered module whose service declares `pluginFeatures`.
|
|
65
|
+
* Fails closed: an invalid or duplicate declaration is `UNEXPECTED_STATE`.
|
|
66
|
+
*/
|
|
67
|
+
function discoverPluginFeatureDescriptors(container) {
|
|
68
|
+
return discover(container).descriptors;
|
|
69
|
+
}
|
|
70
|
+
/** Like `discoverPluginFeatureDescriptors`, with the declaring service. */
|
|
71
|
+
function discoverPluginFeatureProviders(container) {
|
|
72
|
+
return discover(container).providers;
|
|
55
73
|
}
|
|
56
74
|
function findPluginFeatureDescriptor(container, pluginKey) {
|
|
57
|
-
return
|
|
75
|
+
return findPluginFeatureProvider(container, pluginKey)?.descriptor;
|
|
76
|
+
}
|
|
77
|
+
function findPluginFeatureProvider(container, pluginKey) {
|
|
78
|
+
return discover(container).providers.find((provider) => provider.descriptor.plugin_key === pluginKey);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The medusa-config fallback a provider exposes as `pluginSettingsFallback`.
|
|
82
|
+
* Read on every call, since a service may compute it lazily.
|
|
83
|
+
*/
|
|
84
|
+
function readPluginSettingsFallback(provider) {
|
|
85
|
+
const service = provider.service;
|
|
86
|
+
if (service === null ||
|
|
87
|
+
typeof service !== "object" ||
|
|
88
|
+
!("pluginSettingsFallback" in service)) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
const fallback = service
|
|
92
|
+
.pluginSettingsFallback;
|
|
93
|
+
return fallback !== null && typeof fallback === "object"
|
|
94
|
+
? fallback
|
|
95
|
+
: undefined;
|
|
58
96
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY292ZXItcGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2Rpc2NvdmVyLXBsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSxzREFPQztBQWtFRCw0RUFJQztBQUdELHdFQUlDO0FBRUQsa0VBS0M7QUFFRCw4REFPQztBQU1ELGdFQWdCQztBQXBLRCxxREFBa0Y7QUFFbEYscURBQXNFO0FBd0J0RSw0RUFBNEU7QUFDNUUsaURBQWlEO0FBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFBO0FBRXBELE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsU0FBMEIsRUFDMUIsWUFBOEIsRUFDVixFQUFFLENBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7S0FDcEMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzNELEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQixHQUFHLEVBQUUsU0FBUztJQUNkLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFVLFNBQVMsQ0FBQztDQUMvQyxDQUFDLENBQUMsQ0FBQTtBQUVQLGdGQUFnRjtBQUNoRixTQUFnQixxQkFBcUIsQ0FDbkMsU0FBMEI7SUFFMUIsT0FBTyxpQkFBaUIsQ0FDdEIsU0FBUyxFQUNULFNBQVMsQ0FBQyxPQUFPLENBQW1CLGlDQUF5QixDQUFDLGFBQWEsQ0FBQyxDQUM3RSxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBZ0IsRUFBVyxFQUFFLENBQ25ELE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLGdCQUFnQixJQUFJLE9BQU87SUFDNUUsQ0FBQyxDQUFFLE9BQXVDLENBQUMsY0FBYztJQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFBO0FBRWYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUEwQixFQUFjLEVBQUU7SUFDMUQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDcEMsaUNBQXlCLENBQUMsYUFBYSxDQUN4QyxDQUFBO0lBQ0QsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN6QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUE7SUFDakUsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxpQkFBaUIsQ0FDekQsU0FBUyxFQUNULFlBQVksQ0FDYixFQUFFLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsU0FBUTtRQUNWLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxTQUFvQyxDQUFBO1FBQ3ZELElBQUksQ0FBQztZQUNILElBQUEsNENBQStCLEVBQUMsVUFBVSxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLFVBQVUsU0FBUyw2Q0FDakIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDdkQsRUFBRSxDQUNILENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsZUFBZSxVQUFVLENBQUMsVUFBVSx5Q0FBeUMsQ0FDOUUsQ0FBQTtRQUNILENBQUM7UUFDRCxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDckMsVUFBVSxFQUFFLFNBQVM7WUFDckIsVUFBVTtZQUNWLE9BQU87U0FDUixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FDdEUsQ0FBQTtJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsU0FBUztRQUNULFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0tBQzlELENBQUE7SUFDRCxVQUFVLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNwQyxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNILFNBQWdCLGdDQUFnQyxDQUM5QyxTQUEwQjtJQUUxQixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUE7QUFDeEMsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxTQUFnQiw4QkFBOEIsQ0FDNUMsU0FBMEI7SUFFMUIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxTQUFnQiwyQkFBMkIsQ0FDekMsU0FBMEIsRUFDMUIsU0FBaUI7SUFFakIsT0FBTyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsVUFBVSxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FDdkMsU0FBMEIsRUFDMUIsU0FBaUI7SUFFakIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDdkMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FDM0QsQ0FBQTtBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FDeEMsUUFBb0M7SUFFcEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQTtJQUNoQyxJQUNFLE9BQU8sS0FBSyxJQUFJO1FBQ2hCLE9BQU8sT0FBTyxLQUFLLFFBQVE7UUFDM0IsQ0FBQyxDQUFDLHdCQUF3QixJQUFJLE9BQU8sQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFJLE9BQWdEO1NBQy9ELHNCQUFzQixDQUFBO0lBQ3pCLE9BQU8sUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRO1FBQ3RELENBQUMsQ0FBRSxRQUFtQztRQUN0QyxDQUFDLENBQUMsU0FBUyxDQUFBO0FBQ2YsQ0FBQyJ9
|
|
@@ -25,7 +25,7 @@ const logError = (container, message) => {
|
|
|
25
25
|
* cannot resolve its module. Built with the container like `runAsStep` does.
|
|
26
26
|
* Throws the participant's own compensation error, not "Unknown error".
|
|
27
27
|
*/
|
|
28
|
-
const cancelParticipant = async (workflowId, transactionId, container,
|
|
28
|
+
const cancelParticipant = async (workflowId, transactionId, container, context) => {
|
|
29
29
|
const workflow = workflows_sdk_1.MedusaWorkflow.getWorkflow(workflowId);
|
|
30
30
|
if (!workflow) {
|
|
31
31
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Workflow "${workflowId}" is not registered.`);
|
|
@@ -33,7 +33,7 @@ const cancelParticipant = async (workflowId, transactionId, container, sharedCon
|
|
|
33
33
|
const { transaction } = await workflow(container).cancel({
|
|
34
34
|
transactionId,
|
|
35
35
|
container,
|
|
36
|
-
context: { ...
|
|
36
|
+
context: { ...context },
|
|
37
37
|
throwOnError: false,
|
|
38
38
|
});
|
|
39
39
|
if (transaction.getState() !== utils_1.TransactionState.REVERTED) {
|
|
@@ -42,6 +42,24 @@ const cancelParticipant = async (workflowId, transactionId, container, sharedCon
|
|
|
42
42
|
new Error(`Workflow "${workflowId}" ended in state "${transaction.getState()}" instead of reverted.`));
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* The context a participant workflow runs or is cancelled with. Built
|
|
47
|
+
* explicitly like Medusa's `runAsStep` (workflows-sdk 2.19.0
|
|
48
|
+
* create-workflow.js): the parent's shared transaction context plus the
|
|
49
|
+
* event group, with release events suppressed. Never forwards the step
|
|
50
|
+
* context itself: a `parentStepIdempotencyKey` (set when complete-cart runs
|
|
51
|
+
* nested through `runAsStep`) would make the engine report the participant's
|
|
52
|
+
* finish to the parent step via setStepSuccess/setStepFailure, which throws
|
|
53
|
+
* after the participant already committed.
|
|
54
|
+
*/
|
|
55
|
+
const participantContext = (context) => {
|
|
56
|
+
const { parentStepIdempotencyKey: _parentStepIdempotencyKey, cancelingFromParentStep: _cancelingFromParentStep, isCancelling: _isCancelling, idempotencyKey: _idempotencyKey, transactionId: _transactionId, runId: _runId, ...shared } = context.context ?? {};
|
|
57
|
+
return {
|
|
58
|
+
...shared,
|
|
59
|
+
eventGroupId: context.eventGroupId,
|
|
60
|
+
preventReleaseEvents: true,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
45
63
|
const describeError = (error) => error instanceof Error
|
|
46
64
|
? error.message
|
|
47
65
|
: typeof error?.message === "string"
|
|
@@ -53,7 +71,7 @@ const describeError = (error) => error instanceof Error
|
|
|
53
71
|
* rethrown unchanged, keeping its MedusaError type for the HTTP status.
|
|
54
72
|
*/
|
|
55
73
|
const runCompleteCartValidateParticipants = async (input, context, modules) => {
|
|
56
|
-
const { container
|
|
74
|
+
const { container } = context;
|
|
57
75
|
const participants = participantsFor("validate", container, modules);
|
|
58
76
|
if (!participants.length) {
|
|
59
77
|
return new workflows_sdk_1.StepResponse(undefined);
|
|
@@ -64,10 +82,7 @@ const runCompleteCartValidateParticipants = async (input, context, modules) => {
|
|
|
64
82
|
// to run(); the engine uses the shared app container.
|
|
65
83
|
await workflowEngine.run(participant.workflow_id, {
|
|
66
84
|
input,
|
|
67
|
-
context:
|
|
68
|
-
...sharedContext,
|
|
69
|
-
preventReleaseEvents: true,
|
|
70
|
-
},
|
|
85
|
+
context: participantContext(context),
|
|
71
86
|
throwOnError: true,
|
|
72
87
|
});
|
|
73
88
|
}
|
|
@@ -81,7 +96,7 @@ exports.runCompleteCartValidateParticipants = runCompleteCartValidateParticipant
|
|
|
81
96
|
* rethrown either way.
|
|
82
97
|
*/
|
|
83
98
|
const runCompleteCartOrderCreatedParticipants = async (input, context, modules) => {
|
|
84
|
-
const { container
|
|
99
|
+
const { container } = context;
|
|
85
100
|
const transactionId = context.transactionId;
|
|
86
101
|
if (!transactionId) {
|
|
87
102
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Complete-cart orderCreated hook ran without a transaction id.");
|
|
@@ -101,17 +116,14 @@ const runCompleteCartOrderCreatedParticipants = async (input, context, modules)
|
|
|
101
116
|
await workflowEngine.run(participant.workflow_id, {
|
|
102
117
|
input,
|
|
103
118
|
transactionId,
|
|
104
|
-
context:
|
|
105
|
-
...sharedContext,
|
|
106
|
-
preventReleaseEvents: true,
|
|
107
|
-
},
|
|
119
|
+
context: participantContext(context),
|
|
108
120
|
throwOnError: true,
|
|
109
121
|
});
|
|
110
122
|
}
|
|
111
123
|
catch (error) {
|
|
112
124
|
for (const done of [...completed].reverse()) {
|
|
113
125
|
try {
|
|
114
|
-
await cancelParticipant(done.workflow_id, transactionId, container,
|
|
126
|
+
await cancelParticipant(done.workflow_id, transactionId, container, participantContext(context));
|
|
115
127
|
}
|
|
116
128
|
catch (rollbackError) {
|
|
117
129
|
logError(container, `Complete-cart orderCreated rollback failed for module "${done.module_key}", workflow "${done.workflow_id}" (cart ${input.cart_id}, order ${input.order_id}, transaction ${transactionId}) after "${participant.workflow_id}" failed: ${describeError(rollbackError)}`);
|
|
@@ -136,7 +148,7 @@ const compensateCompleteCartOrderCreatedParticipants = async (compensation, cont
|
|
|
136
148
|
if (!compensation) {
|
|
137
149
|
return;
|
|
138
150
|
}
|
|
139
|
-
const { container
|
|
151
|
+
const { container } = context;
|
|
140
152
|
const workflowIds = [...compensation.workflow_ids].reverse();
|
|
141
153
|
if (!workflowIds.length) {
|
|
142
154
|
return;
|
|
@@ -145,7 +157,7 @@ const compensateCompleteCartOrderCreatedParticipants = async (compensation, cont
|
|
|
145
157
|
let firstFailure;
|
|
146
158
|
for (const workflowId of workflowIds) {
|
|
147
159
|
try {
|
|
148
|
-
await cancelParticipant(workflowId, compensation.transaction_id, container,
|
|
160
|
+
await cancelParticipant(workflowId, compensation.transaction_id, container, participantContext(context));
|
|
149
161
|
}
|
|
150
162
|
catch (error) {
|
|
151
163
|
logError(container, `Complete-cart orderCreated compensation failed for workflow "${workflowId}" (transaction ${compensation.transaction_id}): ${describeError(error)}`);
|
|
@@ -160,4 +172,4 @@ const compensateCompleteCartOrderCreatedParticipants = async (compensation, cont
|
|
|
160
172
|
}
|
|
161
173
|
};
|
|
162
174
|
exports.compensateCompleteCartOrderCreatedParticipants = compensateCompleteCartOrderCreatedParticipants;
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC1wYXJ0aWNpcGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hvb2tzL2NvbXBsZXRlLWNhcnQtcGFydGljaXBhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUtrQztBQUNsQyxxRUFBZ0Y7QUFRaEYseUdBSXdEO0FBbUJ4RCxNQUFNLGVBQWUsR0FBRyxDQUN0QixJQUEwQixFQUMxQixTQUEwQixFQUMxQixPQUFnRCxFQUNoQixFQUFFLENBQ2xDLE9BQU87SUFDTCxDQUFDLENBQUMsSUFBQSxvRUFBOEIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO0lBQy9DLENBQUMsQ0FBQyxJQUFBLGtFQUE0QixFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUVuRCxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQTBCLEVBQUUsT0FBZSxFQUFRLEVBQUU7SUFDckUsSUFBSSxDQUFDO1FBQ0gsU0FBUzthQUNOLE9BQU8sQ0FDTixpQ0FBeUIsQ0FBQyxNQUFNLENBQ2pDO2FBQ0EsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwREFBMEQ7SUFDNUQsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWdCRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQzdCLFVBQWtCLEVBQ2xCLGFBQXFCLEVBQ3JCLFNBQTBCLEVBQzFCLE9BQWdDLEVBQ2pCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQ1osOEJBR0QsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsYUFBYSxVQUFVLHNCQUFzQixDQUM5QyxDQUFBO0lBQ0gsQ0FBQztJ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
|