@gorgo/medusa-integration 0.0.1 → 0.0.2
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 +15 -23
- package/.medusa/server/src/admin/index.mjs +15 -23
- package/.medusa/server/src/api/admin/integrations/_helpers.js +1 -3
- package/.medusa/server/src/jobs/test-integration-connections.js +2 -2
- package/.medusa/server/src/modules/integration/descriptor/__tests__/introspect.unit.spec.js +8 -8
- package/.medusa/server/src/modules/integration/descriptor/__tests__/validate.unit.spec.js +2 -2
- package/.medusa/server/src/modules/integration/descriptor/define.d.ts +2 -3
- package/.medusa/server/src/modules/integration/descriptor/define.js +1 -1
- package/.medusa/server/src/modules/integration/descriptor/introspect.js +5 -6
- package/.medusa/server/src/modules/integration/loaders/load-providers.js +58 -1
- package/.medusa/server/src/modules/integration/migrations/Migration20260716110756.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260716110756.js +16 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260716132041.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260716132041.js +14 -0
- package/.medusa/server/src/modules/integration/models/integration.d.ts +17 -5
- package/.medusa/server/src/modules/integration/models/integration.js +4 -9
- package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.js +19 -17
- package/.medusa/server/src/modules/integration/services/integration-module.d.ts +22 -13
- package/.medusa/server/src/modules/integration/services/integration-module.js +14 -15
- package/.medusa/server/src/modules/integration/services/integration-provider.d.ts +11 -11
- package/.medusa/server/src/modules/integration/services/integration-provider.js +17 -17
- package/.medusa/server/src/modules/integration/utils/abstract-integration-provider.d.ts +3 -3
- package/.medusa/server/src/modules/integration/utils/abstract-integration-provider.js +2 -2
- package/.medusa/server/src/modules/integration/utils/integration.d.ts +21 -0
- package/.medusa/server/src/modules/integration/utils/integration.js +23 -0
- package/.medusa/server/src/types/http/integration/admin/entities.d.ts +2 -5
- package/.medusa/server/src/types/integration/common.d.ts +8 -11
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.d.ts +0 -1
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.js +1 -5
- package/.medusa/server/src/workflows/integration/steps/run-test-connection.js +1 -3
- package/.medusa/server/src/workflows/integration/steps/set-integration-enabled.d.ts +1 -4
- package/.medusa/server/src/workflows/integration/steps/upsert-integration-record.d.ts +0 -1
- package/.medusa/server/src/workflows/integration/steps/upsert-integration-record.js +1 -1
- package/.medusa/server/src/workflows/integration/workflows/set-integration-enabled.d.ts +1 -4
- package/.medusa/server/src/workflows/integration/workflows/upsert-integration.js +1 -2
- package/package.json +10 -3
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
declare const Integration: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
2
2
|
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
3
|
-
module: import("@medusajs/framework/utils").EnumProperty<
|
|
3
|
+
module: import("@medusajs/framework/utils").EnumProperty<{
|
|
4
|
+
readonly PAYMENT: "payment";
|
|
5
|
+
readonly FULFILLMENT: "fulfillment";
|
|
6
|
+
readonly MARKETPLACE: "marketplace";
|
|
7
|
+
readonly CRM: "crm";
|
|
8
|
+
readonly ERP: "erp";
|
|
9
|
+
readonly PIM: "pim";
|
|
10
|
+
readonly NOTIFICATION: "notification";
|
|
11
|
+
readonly FEED: "feed";
|
|
12
|
+
readonly TAX: "tax";
|
|
13
|
+
readonly OTHER: "other";
|
|
14
|
+
}>;
|
|
4
15
|
provider_id: import("@medusajs/framework/utils").TextProperty;
|
|
5
16
|
title: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
|
|
6
17
|
options: import("@medusajs/framework/utils").JSONProperty;
|
|
7
|
-
options_version: import("@medusajs/framework/utils").NumberProperty;
|
|
8
18
|
is_enabled: import("@medusajs/framework/utils").BooleanProperty;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
last_test_status: import("@medusajs/framework/utils").NullableModifier<"passed" | "failed" | "skipped", import("@medusajs/framework/utils").EnumProperty<{
|
|
20
|
+
readonly PASSED: "passed";
|
|
21
|
+
readonly FAILED: "failed";
|
|
22
|
+
readonly SKIPPED: "skipped";
|
|
23
|
+
}>>;
|
|
12
24
|
}>, "integration">;
|
|
13
25
|
export default Integration;
|
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const integration_1 = require("../utils/integration");
|
|
4
5
|
const Integration = utils_1.model.define("integration", {
|
|
5
6
|
id: utils_1.model.id({ prefix: "int" }).primaryKey(),
|
|
6
7
|
// Plugin identity
|
|
7
|
-
module: utils_1.model.enum(
|
|
8
|
-
"payment", "fulfillment", "marketplace", "crm", "erp", "pim",
|
|
9
|
-
"notification", "feed", "tax", "other",
|
|
10
|
-
]),
|
|
8
|
+
module: utils_1.model.enum(integration_1.IntegrationModule),
|
|
11
9
|
provider_id: utils_1.model.text(),
|
|
12
10
|
title: utils_1.model.text().nullable(),
|
|
13
11
|
// Integration options (non-secret settings)
|
|
14
12
|
options: utils_1.model.json().default({}),
|
|
15
13
|
// Metadata
|
|
16
|
-
options_version: utils_1.model.number().default(1),
|
|
17
14
|
is_enabled: utils_1.model.boolean().default(true),
|
|
18
|
-
|
|
19
|
-
last_test_status: utils_1.model.enum(["ok", "fail", "skipped"]).nullable(),
|
|
20
|
-
last_test_message: utils_1.model.text().nullable(),
|
|
15
|
+
last_test_status: utils_1.model.enum(integration_1.IntegrationTestStatus).nullable(),
|
|
21
16
|
})
|
|
22
17
|
.indexes([
|
|
23
18
|
{ on: ["provider_id"], unique: true },
|
|
24
19
|
{ on: ["module"] },
|
|
25
20
|
]);
|
|
26
21
|
exports.default = Integration;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9tb2RlbHMvaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFDakQsc0RBQStFO0FBRS9FLE1BQU0sV0FBVyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO0lBQzlDLEVBQUUsRUFBRSxhQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFO0lBRTVDLGtCQUFrQjtJQUNsQixNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQywrQkFBaUIsQ0FBQztJQUNyQyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN6QixLQUFLLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUU5Qiw0Q0FBNEM7SUFDNUMsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBRWpDLFdBQVc7SUFDWCxVQUFVLEVBQUUsYUFBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDekMsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxtQ0FBcUIsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUMvRCxDQUFDO0tBQ0QsT0FBTyxDQUFDO0lBQ1AsRUFBRSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0lBQ3JDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7Q0FDbkIsQ0FBQyxDQUFBO0FBRUYsa0JBQWUsV0FBVyxDQUFBIn0=
|
package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.js
CHANGED
|
@@ -5,20 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const globals_1 = require("@jest/globals");
|
|
7
7
|
const integration_provider_1 = __importDefault(require("../integration-provider"));
|
|
8
|
-
// Minimal provider stubs — the registry only needs getIdentifier/getInstanceId/
|
|
8
|
+
// Minimal provider stubs — the registry only needs getIdentifier/getInstanceId/descriptor.
|
|
9
9
|
const mkProvider = (identifier, instanceId, withTest = false) => {
|
|
10
10
|
const p = {
|
|
11
11
|
getIdentifier: () => identifier,
|
|
12
12
|
getInstanceId: () => instanceId,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
get descriptor() {
|
|
14
|
+
return {
|
|
15
|
+
module: "payment",
|
|
16
|
+
displayName: `${identifier}.name`,
|
|
17
|
+
options: {},
|
|
18
|
+
sections: [],
|
|
19
|
+
};
|
|
20
|
+
},
|
|
19
21
|
};
|
|
20
22
|
if (withTest)
|
|
21
|
-
p.testConnection = async () => ({ status: "
|
|
23
|
+
p.testConnection = async () => ({ status: "passed" });
|
|
22
24
|
return p;
|
|
23
25
|
};
|
|
24
26
|
// Mimics the awilix cradle: container keys are `int_<identifier>[_<id>]`.
|
|
@@ -30,20 +32,20 @@ const makeRegistry = () => new integration_provider_1.default({
|
|
|
30
32
|
integrationModuleOptions: { encryptionKey: "x" },
|
|
31
33
|
});
|
|
32
34
|
(0, globals_1.describe)("IntegrationProviderService (registration identity)", () => {
|
|
33
|
-
(0, globals_1.it)("builds container keys from (
|
|
35
|
+
(0, globals_1.it)("builds container keys from (identifier, instanceId)", () => {
|
|
34
36
|
(0, globals_1.expect)(integration_provider_1.default.key("tkassa")).toBe("int_tkassa");
|
|
35
37
|
(0, globals_1.expect)(integration_provider_1.default.key("tkassa", null)).toBe("int_tkassa");
|
|
36
38
|
(0, globals_1.expect)(integration_provider_1.default.key("ozon", "acct1")).toBe("int_ozon_acct1");
|
|
37
39
|
});
|
|
38
40
|
(0, globals_1.it)("lists registrations with derived identity, ignoring non-provider keys", () => {
|
|
39
41
|
const regs = makeRegistry().listRegistrations();
|
|
40
|
-
(0, globals_1.expect)(regs.map((r) => [r.key, r.
|
|
42
|
+
(0, globals_1.expect)(regs.map((r) => [r.key, r.identifier, r.instanceId]).sort()).toEqual([
|
|
41
43
|
["int_ozon_acct1", "ozon", "acct1"],
|
|
42
44
|
["int_ozon_acct2", "ozon", "acct2"],
|
|
43
45
|
["int_tkassa", "tkassa", null],
|
|
44
46
|
]);
|
|
45
47
|
});
|
|
46
|
-
(0, globals_1.it)("resolves a provider by key and by (
|
|
48
|
+
(0, globals_1.it)("resolves a provider by key and by (identifier, instanceId)", () => {
|
|
47
49
|
const reg = makeRegistry();
|
|
48
50
|
(0, globals_1.expect)(reg.retrieveByKey("int_ozon_acct1").getInstanceId()).toBe("acct1");
|
|
49
51
|
(0, globals_1.expect)(reg.retrieveProvider("ozon", "acct2").getInstanceId()).toBe("acct2");
|
|
@@ -57,9 +59,9 @@ const makeRegistry = () => new integration_provider_1.default({
|
|
|
57
59
|
(0, globals_1.expect)(reg.hasProvider("ozon")).toBe(false); // no null-instance ozon
|
|
58
60
|
(0, globals_1.expect)(reg.hasProvider("ozon", "nope")).toBe(false);
|
|
59
61
|
});
|
|
60
|
-
(0, globals_1.it)("maps a key back to its (
|
|
62
|
+
(0, globals_1.it)("maps a key back to its (identifier, instanceId)", () => {
|
|
61
63
|
(0, globals_1.expect)(makeRegistry().getRegistration("int_ozon_acct2")).toMatchObject({
|
|
62
|
-
|
|
64
|
+
identifier: "ozon",
|
|
63
65
|
instanceId: "acct2",
|
|
64
66
|
});
|
|
65
67
|
(0, globals_1.expect)(makeRegistry().getRegistration("int_unknown")).toBeUndefined();
|
|
@@ -67,11 +69,11 @@ const makeRegistry = () => new integration_provider_1.default({
|
|
|
67
69
|
(0, globals_1.it)("throws on an unknown key", () => {
|
|
68
70
|
(0, globals_1.expect)(() => makeRegistry().retrieveByKey("int_nope")).toThrow(/Unable to retrieve/);
|
|
69
71
|
});
|
|
70
|
-
(0, globals_1.it)("stamps
|
|
72
|
+
(0, globals_1.it)("stamps identifier + instanceId onto each descriptor", () => {
|
|
71
73
|
const ds = makeRegistry().listDescriptors();
|
|
72
74
|
const ozon1 = ds.find((d) => d.instanceId === "acct1");
|
|
73
|
-
(0, globals_1.expect)(ozon1.
|
|
74
|
-
(0, globals_1.expect)(ds.find((d) => d.
|
|
75
|
+
(0, globals_1.expect)(ozon1.identifier).toBe("ozon");
|
|
76
|
+
(0, globals_1.expect)(ds.find((d) => d.identifier === "tkassa").instanceId).toBe(null);
|
|
75
77
|
});
|
|
76
78
|
});
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tcHJvdmlkZXIudW5pdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vc2VydmljZXMvX190ZXN0c19fL2ludGVncmF0aW9uLXByb3ZpZGVyLnVuaXQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUFvRDtBQUNwRCxtRkFBZ0U7QUFFaEUsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUF5QixFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsRUFBRTtJQUNyRixNQUFNLENBQUMsR0FBUTtRQUNiLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVO1FBQy9CLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVO1FBQy9CLElBQUksVUFBVTtZQUNaLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFdBQVcsRUFBRSxHQUFHLFVBQVUsT0FBTztnQkFDakMsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFBO1FBQ0gsQ0FBQztLQUNGLENBQUE7SUFDRCxJQUFJLFFBQVE7UUFBRSxDQUFDLENBQUMsY0FBYyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyxDQUFBO0FBRUQsMEVBQTBFO0FBQzFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUN4QixJQUFJLDhCQUEwQixDQUFDO0lBQzdCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztJQUN0QyxjQUFjLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDO0lBQ2pELGNBQWMsRUFBRSxVQUFVLENBQUMsTUFB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
|
|
@@ -20,15 +20,27 @@ export type ResolvedOptions = {
|
|
|
20
20
|
declare const IntegrationModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
|
|
21
21
|
readonly Integration: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
22
22
|
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
23
|
-
module: import("@medusajs/framework/utils").EnumProperty<
|
|
23
|
+
module: import("@medusajs/framework/utils").EnumProperty<{
|
|
24
|
+
readonly PAYMENT: "payment";
|
|
25
|
+
readonly FULFILLMENT: "fulfillment";
|
|
26
|
+
readonly MARKETPLACE: "marketplace";
|
|
27
|
+
readonly CRM: "crm";
|
|
28
|
+
readonly ERP: "erp";
|
|
29
|
+
readonly PIM: "pim";
|
|
30
|
+
readonly NOTIFICATION: "notification";
|
|
31
|
+
readonly FEED: "feed";
|
|
32
|
+
readonly TAX: "tax";
|
|
33
|
+
readonly OTHER: "other";
|
|
34
|
+
}>;
|
|
24
35
|
provider_id: import("@medusajs/framework/utils").TextProperty;
|
|
25
36
|
title: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
|
|
26
37
|
options: import("@medusajs/framework/utils").JSONProperty;
|
|
27
|
-
options_version: import("@medusajs/framework/utils").NumberProperty;
|
|
28
38
|
is_enabled: import("@medusajs/framework/utils").BooleanProperty;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
39
|
+
last_test_status: import("@medusajs/framework/utils").NullableModifier<"passed" | "failed" | "skipped", import("@medusajs/framework/utils").EnumProperty<{
|
|
40
|
+
readonly PASSED: "passed";
|
|
41
|
+
readonly FAILED: "failed";
|
|
42
|
+
readonly SKIPPED: "skipped";
|
|
43
|
+
}>>;
|
|
32
44
|
}>, "integration">;
|
|
33
45
|
}>>;
|
|
34
46
|
export default class IntegrationModuleService extends IntegrationModuleService_base {
|
|
@@ -42,7 +54,7 @@ export default class IntegrationModuleService extends IntegrationModuleService_b
|
|
|
42
54
|
constructor(deps: InjectedDependencies);
|
|
43
55
|
/** UI descriptors for every registration (one per instance). */
|
|
44
56
|
listUiDescriptors(): UiDescriptor[];
|
|
45
|
-
/** Stamped descriptor (schema +
|
|
57
|
+
/** Stamped descriptor (schema + identifier/instanceId) for one `provider_id`. */
|
|
46
58
|
getProviderDescriptor(providerId: string): IntegrationDescriptor | undefined;
|
|
47
59
|
/** UI descriptor for one `provider_id` (container key). */
|
|
48
60
|
getProviderUiDescriptor(providerId: string): UiDescriptor | undefined;
|
|
@@ -58,11 +70,8 @@ export default class IntegrationModuleService extends IntegrationModuleService_b
|
|
|
58
70
|
provider_id: string;
|
|
59
71
|
title: string | null;
|
|
60
72
|
options: Record<string, unknown>;
|
|
61
|
-
options_version: number;
|
|
62
73
|
is_enabled: boolean;
|
|
63
|
-
|
|
64
|
-
last_test_status: "ok" | "fail" | "skipped" | null;
|
|
65
|
-
last_test_message: string | null;
|
|
74
|
+
last_test_status: "passed" | "failed" | "skipped" | null;
|
|
66
75
|
created_at: Date;
|
|
67
76
|
updated_at: Date;
|
|
68
77
|
deleted_at: Date | null;
|
|
@@ -105,9 +114,9 @@ export default class IntegrationModuleService extends IntegrationModuleService_b
|
|
|
105
114
|
/** Clear the resolved-options cache for one `provider_id`, or all when omitted. */
|
|
106
115
|
clearOptionsCache(providerId?: string): void;
|
|
107
116
|
/**
|
|
108
|
-
* Resolve decrypted options for a `(
|
|
109
|
-
* shape) — mapped internally to the `provider_id` key `int_<
|
|
117
|
+
* Resolve decrypted options for a `(identifier, instanceId)` pair (the consumer-facing
|
|
118
|
+
* shape) — mapped internally to the `provider_id` key `int_<identifier>[_<instanceId>]`.
|
|
110
119
|
*/
|
|
111
|
-
getResolvedOptions(
|
|
120
|
+
getResolvedOptions(identifier: string, instanceId?: string | null): Promise<ResolvedOptions | null>;
|
|
112
121
|
}
|
|
113
122
|
export {};
|
|
@@ -24,21 +24,21 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
24
24
|
// ── descriptors (sourced from registered integration-providers) ──────────────
|
|
25
25
|
/** UI descriptors for every registration (one per instance). */
|
|
26
26
|
listUiDescriptors() {
|
|
27
|
-
return this.providerService_.listRegistrations().map((r) => (0, introspect_1.introspectDescriptor)({ ...r.provider.
|
|
27
|
+
return this.providerService_.listRegistrations().map((r) => (0, introspect_1.introspectDescriptor)({ ...r.provider.descriptor, identifier: r.identifier, instanceId: r.instanceId }, typeof r.provider.testConnection === "function"));
|
|
28
28
|
}
|
|
29
|
-
/** Stamped descriptor (schema +
|
|
29
|
+
/** Stamped descriptor (schema + identifier/instanceId) for one `provider_id`. */
|
|
30
30
|
getProviderDescriptor(providerId) {
|
|
31
31
|
const r = this.providerService_.getRegistration(providerId);
|
|
32
32
|
if (!r)
|
|
33
33
|
return undefined;
|
|
34
|
-
return { ...r.provider.
|
|
34
|
+
return { ...r.provider.descriptor, identifier: r.identifier, instanceId: r.instanceId };
|
|
35
35
|
}
|
|
36
36
|
/** UI descriptor for one `provider_id` (container key). */
|
|
37
37
|
getProviderUiDescriptor(providerId) {
|
|
38
38
|
const r = this.providerService_.getRegistration(providerId);
|
|
39
39
|
if (!r)
|
|
40
40
|
return undefined;
|
|
41
|
-
return (0, introspect_1.introspectDescriptor)({ ...r.provider.
|
|
41
|
+
return (0, introspect_1.introspectDescriptor)({ ...r.provider.descriptor, identifier: r.identifier, instanceId: r.instanceId }, typeof r.provider.testConnection === "function");
|
|
42
42
|
}
|
|
43
43
|
/** Whether a provider is registered under this `provider_id` (container key). */
|
|
44
44
|
hasProviderId(providerId) {
|
|
@@ -90,11 +90,11 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
90
90
|
const rows = await this.listIntegrations({}, { take: 1000 });
|
|
91
91
|
const byId = new Map(rows.map((r) => [r.provider_id, r]));
|
|
92
92
|
return regs.map((r) => {
|
|
93
|
-
const d = r.provider.
|
|
93
|
+
const d = r.provider.descriptor;
|
|
94
94
|
const row = byId.get(r.key);
|
|
95
95
|
return {
|
|
96
96
|
provider_id: r.key,
|
|
97
|
-
|
|
97
|
+
identifier: r.identifier,
|
|
98
98
|
instance_id: r.instanceId,
|
|
99
99
|
module: d.module,
|
|
100
100
|
display_name: d.displayName,
|
|
@@ -105,7 +105,6 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
105
105
|
is_enabled: row?.is_enabled ?? false,
|
|
106
106
|
is_complete: row ? this.isComplete(row) : false,
|
|
107
107
|
last_test_status: row?.last_test_status ?? null,
|
|
108
|
-
last_test_at: row?.last_test_at ?? null,
|
|
109
108
|
};
|
|
110
109
|
});
|
|
111
110
|
}
|
|
@@ -119,14 +118,14 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
119
118
|
provider = this.providerService_.retrieveByKey(providerId);
|
|
120
119
|
}
|
|
121
120
|
catch {
|
|
122
|
-
return { status: "
|
|
121
|
+
return { status: "failed", message: `Unknown integration provider "${providerId}"` };
|
|
123
122
|
}
|
|
124
123
|
if (!provider.testConnection) {
|
|
125
124
|
return { status: "skipped", message: "No test configured" };
|
|
126
125
|
}
|
|
127
126
|
const resolved = await this.getResolvedOptions(provider.getIdentifier(), provider.getInstanceId());
|
|
128
127
|
if (!resolved) {
|
|
129
|
-
return { status: "
|
|
128
|
+
return { status: "failed", message: "Not configured" };
|
|
130
129
|
}
|
|
131
130
|
try {
|
|
132
131
|
return await provider.testConnection({
|
|
@@ -134,7 +133,7 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
134
133
|
});
|
|
135
134
|
}
|
|
136
135
|
catch (e) {
|
|
137
|
-
return { status: "
|
|
136
|
+
return { status: "failed", message: e?.message ?? "Test failed" };
|
|
138
137
|
}
|
|
139
138
|
}
|
|
140
139
|
// ── encryption ───────────────────────────────────────────────────────────────
|
|
@@ -175,11 +174,11 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
175
174
|
this.cache_.delete(providerId);
|
|
176
175
|
}
|
|
177
176
|
/**
|
|
178
|
-
* Resolve decrypted options for a `(
|
|
179
|
-
* shape) — mapped internally to the `provider_id` key `int_<
|
|
177
|
+
* Resolve decrypted options for a `(identifier, instanceId)` pair (the consumer-facing
|
|
178
|
+
* shape) — mapped internally to the `provider_id` key `int_<identifier>[_<instanceId>]`.
|
|
180
179
|
*/
|
|
181
|
-
async getResolvedOptions(
|
|
182
|
-
const providerId = integration_provider_1.default.key(
|
|
180
|
+
async getResolvedOptions(identifier, instanceId) {
|
|
181
|
+
const providerId = integration_provider_1.default.key(identifier, instanceId);
|
|
183
182
|
const hit = this.cache_.get(providerId);
|
|
184
183
|
if (hit && hit.expiresAt > Date.now())
|
|
185
184
|
return hit.value;
|
|
@@ -216,4 +215,4 @@ class IntegrationModuleService extends (0, utils_1.MedusaService)({
|
|
|
216
215
|
}
|
|
217
216
|
}
|
|
218
217
|
exports.default = IntegrationModuleService;
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vc2VydmljZXMvaW50ZWdyYXRpb24tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXlEO0FBRXpELHdFQUErQztBQUMvQyxxQ0FBb0M7QUFDcEMsdUNBQXNFO0FBQ3RFLGtGQUErRDtBQUUvRCx5REFBb0c7QUFDcEcscURBQTZEO0FBQzdELG9DQUFpRjtBQWNqRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUE7QUFFM0IsTUFBcUIsd0JBQXlCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ2xFLFdBQVcsRUFBWCxxQkFBVztDQUNaLENBQUM7SUFNQSxZQUFZLElBQTBCO1FBQ3BDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFBO1FBSlgsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFnRSxDQUFBO1FBS3hGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUE7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsK0JBQXVCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDckQsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixnRUFBZ0U7SUFDaEUsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN6RCxJQUFBLGlDQUFvQixFQUNsQixFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFDaEYsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsS0FBSyxVQUFVLENBQ2hELENBQ0YsQ0FBQTtJQUNI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
|
|
@@ -8,7 +8,7 @@ type InjectedDependencies = {
|
|
|
8
8
|
export type ProviderRegistration = {
|
|
9
9
|
/** Container key `int_<identifier>[_<id>]` — the instance's stable identity. */
|
|
10
10
|
key: string;
|
|
11
|
-
|
|
11
|
+
identifier: string;
|
|
12
12
|
instanceId: string | null;
|
|
13
13
|
provider: AbstractIntegrationProvider;
|
|
14
14
|
};
|
|
@@ -16,7 +16,7 @@ export type ProviderRegistration = {
|
|
|
16
16
|
* Thin registry over the integration-providers registered into the module container by
|
|
17
17
|
* `loadProviders`. Each registration in `options.providers` is one instance, identified
|
|
18
18
|
* by its container key `int_<identifier>[_<id>]` — which is also the DB `provider_id`.
|
|
19
|
-
* Instances are declared in medusa-config, not created at runtime. `
|
|
19
|
+
* Instances are declared in medusa-config, not created at runtime. `identifier`/`instanceId`
|
|
20
20
|
* (= `getIdentifier()`/`getInstanceId()`) are derived for descriptors/UI.
|
|
21
21
|
*
|
|
22
22
|
* Intentionally minimal: it locates providers; callers invoke provider methods directly,
|
|
@@ -25,23 +25,23 @@ export type ProviderRegistration = {
|
|
|
25
25
|
export default class IntegrationProviderService {
|
|
26
26
|
protected dependencies_: InjectedDependencies;
|
|
27
27
|
constructor(container: InjectedDependencies);
|
|
28
|
-
/** Build the container key for a `(
|
|
29
|
-
static key(
|
|
28
|
+
/** Build the container key for a `(identifier, instanceId)` pair. */
|
|
29
|
+
static key(identifier: string, instanceId?: string | null): string;
|
|
30
30
|
/** All registered provider instances. */
|
|
31
31
|
listProviders(): AbstractIntegrationProvider[];
|
|
32
|
-
/** Every registration with its derived `(
|
|
32
|
+
/** Every registration with its derived `(identifier, instanceId)` identity. */
|
|
33
33
|
listRegistrations(): ProviderRegistration[];
|
|
34
34
|
/** Resolve a provider by its exact container key. */
|
|
35
35
|
retrieveByKey(key: string): AbstractIntegrationProvider;
|
|
36
|
-
/** Resolve the provider for a `(
|
|
37
|
-
retrieveProvider(
|
|
38
|
-
/** Whether a provider is registered for this `(
|
|
39
|
-
hasProvider(
|
|
40
|
-
/** Resolve `(
|
|
36
|
+
/** Resolve the provider for a `(identifier, instanceId)` pair. */
|
|
37
|
+
retrieveProvider(identifier: string, instanceId?: string | null): AbstractIntegrationProvider;
|
|
38
|
+
/** Whether a provider is registered for this `(identifier, instanceId)` pair. */
|
|
39
|
+
hasProvider(identifier: string, instanceId?: string | null): boolean;
|
|
40
|
+
/** Resolve `(identifier, instanceId)` from a container key, or undefined if unregistered. */
|
|
41
41
|
getRegistration(key: string): ProviderRegistration | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* Descriptors of every registered provider — feeds the introspection/UI pipeline.
|
|
44
|
-
* `
|
|
44
|
+
* `identifier`/`instanceId` are stamped from each registration, so authors never repeat
|
|
45
45
|
* them in the descriptor. One descriptor per registration (one per instance).
|
|
46
46
|
*/
|
|
47
47
|
listDescriptors(): IntegrationDescriptor[];
|
|
@@ -5,7 +5,7 @@ const types_1 = require("../types");
|
|
|
5
5
|
* Thin registry over the integration-providers registered into the module container by
|
|
6
6
|
* `loadProviders`. Each registration in `options.providers` is one instance, identified
|
|
7
7
|
* by its container key `int_<identifier>[_<id>]` — which is also the DB `provider_id`.
|
|
8
|
-
* Instances are declared in medusa-config, not created at runtime. `
|
|
8
|
+
* Instances are declared in medusa-config, not created at runtime. `identifier`/`instanceId`
|
|
9
9
|
* (= `getIdentifier()`/`getInstanceId()`) are derived for descriptors/UI.
|
|
10
10
|
*
|
|
11
11
|
* Intentionally minimal: it locates providers; callers invoke provider methods directly,
|
|
@@ -15,9 +15,9 @@ class IntegrationProviderService {
|
|
|
15
15
|
constructor(container) {
|
|
16
16
|
this.dependencies_ = container;
|
|
17
17
|
}
|
|
18
|
-
/** Build the container key for a `(
|
|
19
|
-
static key(
|
|
20
|
-
return `${types_1.IntegrationProviderRegistrationPrefix}${
|
|
18
|
+
/** Build the container key for a `(identifier, instanceId)` pair. */
|
|
19
|
+
static key(identifier, instanceId) {
|
|
20
|
+
return `${types_1.IntegrationProviderRegistrationPrefix}${identifier}${instanceId ? `_${instanceId}` : ""}`;
|
|
21
21
|
}
|
|
22
22
|
/** All registered provider instances. */
|
|
23
23
|
listProviders() {
|
|
@@ -25,7 +25,7 @@ class IntegrationProviderService {
|
|
|
25
25
|
.filter((k) => k.startsWith(types_1.IntegrationProviderRegistrationPrefix))
|
|
26
26
|
.map((k) => this.dependencies_[k]);
|
|
27
27
|
}
|
|
28
|
-
/** Every registration with its derived `(
|
|
28
|
+
/** Every registration with its derived `(identifier, instanceId)` identity. */
|
|
29
29
|
listRegistrations() {
|
|
30
30
|
return Object.keys(this.dependencies_)
|
|
31
31
|
.filter((k) => k.startsWith(types_1.IntegrationProviderRegistrationPrefix))
|
|
@@ -33,7 +33,7 @@ class IntegrationProviderService {
|
|
|
33
33
|
const provider = this.dependencies_[k];
|
|
34
34
|
return {
|
|
35
35
|
key: k,
|
|
36
|
-
|
|
36
|
+
identifier: provider.getIdentifier(),
|
|
37
37
|
instanceId: provider.getInstanceId(),
|
|
38
38
|
provider,
|
|
39
39
|
};
|
|
@@ -47,30 +47,30 @@ class IntegrationProviderService {
|
|
|
47
47
|
}
|
|
48
48
|
return provider;
|
|
49
49
|
}
|
|
50
|
-
/** Resolve the provider for a `(
|
|
51
|
-
retrieveProvider(
|
|
52
|
-
return this.retrieveByKey(IntegrationProviderService.key(
|
|
50
|
+
/** Resolve the provider for a `(identifier, instanceId)` pair. */
|
|
51
|
+
retrieveProvider(identifier, instanceId) {
|
|
52
|
+
return this.retrieveByKey(IntegrationProviderService.key(identifier, instanceId));
|
|
53
53
|
}
|
|
54
|
-
/** Whether a provider is registered for this `(
|
|
55
|
-
hasProvider(
|
|
56
|
-
return !!this.dependencies_[IntegrationProviderService.key(
|
|
54
|
+
/** Whether a provider is registered for this `(identifier, instanceId)` pair. */
|
|
55
|
+
hasProvider(identifier, instanceId) {
|
|
56
|
+
return !!this.dependencies_[IntegrationProviderService.key(identifier, instanceId)];
|
|
57
57
|
}
|
|
58
|
-
/** Resolve `(
|
|
58
|
+
/** Resolve `(identifier, instanceId)` from a container key, or undefined if unregistered. */
|
|
59
59
|
getRegistration(key) {
|
|
60
60
|
return this.listRegistrations().find((r) => r.key === key);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Descriptors of every registered provider — feeds the introspection/UI pipeline.
|
|
64
|
-
* `
|
|
64
|
+
* `identifier`/`instanceId` are stamped from each registration, so authors never repeat
|
|
65
65
|
* them in the descriptor. One descriptor per registration (one per instance).
|
|
66
66
|
*/
|
|
67
67
|
listDescriptors() {
|
|
68
68
|
return this.listRegistrations().map((r) => ({
|
|
69
|
-
...r.provider.
|
|
70
|
-
|
|
69
|
+
...r.provider.descriptor,
|
|
70
|
+
identifier: r.identifier,
|
|
71
71
|
instanceId: r.instanceId,
|
|
72
72
|
}));
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
exports.default = IntegrationProviderService;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9zZXJ2aWNlcy9pbnRlZ3JhdGlvbi1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9DQUFnRTtBQWlCaEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsMEJBQTBCO0lBRzdDLFlBQVksU0FBK0I7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7SUFDaEMsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBMEI7UUFDdkQsT0FBTyxHQUFHLDZDQUFxQyxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFBO0lBQ3JHLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw2Q0FBcUMsQ0FBQyxDQUFDO2FBQ2xFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUErQixDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLGlCQUFpQjtRQUNmLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw2Q0FBcUMsQ0FBQyxDQUFDO2FBQ2xFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUErQixDQUFDLENBQUE7WUFDcEUsT0FBTztnQkFDTCxHQUFHLEVBQUUsQ0FBQztnQkFDTixVQUFVLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRTtnQkFDcEMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BDLFFBQVE7YUFDVCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQscURBQXFEO0lBQ3JELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBaUMsQ0FBQyxDQUFBO1FBQ3RFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQ2IsNENBQTRDLEdBQUcsc0dBQXNHLENBQ3RKLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLFVBQTBCO1FBQzdELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUVELGlGQUFpRjtJQUNqRixXQUFXLENBQUMsVUFBa0IsRUFBRSxVQUEwQjtRQUN4RCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUN6QiwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBK0IsQ0FDckYsQ0FBQTtJQUNILENBQUM7SUFFRCw2RkFBNkY7SUFDN0YsZUFBZSxDQUFDLEdBQVc7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVU7WUFDeEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtTQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7Q0FDRjtBQTFFRCw2Q0EwRUMifQ==
|
|
@@ -5,7 +5,7 @@ import type { IntegrationDescriptorInput, TestConnectionContext, TestConnectionR
|
|
|
5
5
|
*
|
|
6
6
|
* export class TkassaIntegrationProvider extends AbstractIntegrationProvider {
|
|
7
7
|
* static identifier = "tkassa"
|
|
8
|
-
*
|
|
8
|
+
* get descriptor() { return tkassaDescriptor }
|
|
9
9
|
* async testConnection({ credentials }) { ... }
|
|
10
10
|
* }
|
|
11
11
|
*
|
|
@@ -13,7 +13,7 @@ import type { IntegrationDescriptorInput, TestConnectionContext, TestConnectionR
|
|
|
13
13
|
* consumes providers (the registry) types against it, so adding a method here is the
|
|
14
14
|
* only place to touch (besides implementing it in concrete providers).
|
|
15
15
|
*
|
|
16
|
-
* `static identifier` becomes the descriptor's `
|
|
16
|
+
* `static identifier` becomes the descriptor's `identifier` (settings are stored/resolved
|
|
17
17
|
* under it); authors don't repeat it in the descriptor.
|
|
18
18
|
*
|
|
19
19
|
* Each registration in `options.providers` is one *instance*: its `id` (if any) is
|
|
@@ -32,7 +32,7 @@ export declare abstract class AbstractIntegrationProvider {
|
|
|
32
32
|
/** This instance's id (the registration `id`), or null for the single/default instance. */
|
|
33
33
|
getInstanceId(): string | null;
|
|
34
34
|
/** Return this plugin's settings descriptor (zod schema + UI metadata + sections). */
|
|
35
|
-
abstract
|
|
35
|
+
abstract get descriptor(): IntegrationDescriptorInput;
|
|
36
36
|
/** Optional connection check; omit if the plugin can't quickly verify credentials. */
|
|
37
37
|
testConnection?(ctx: TestConnectionContext): Promise<TestConnectionResult>;
|
|
38
38
|
}
|
|
@@ -7,7 +7,7 @@ exports.AbstractIntegrationProvider = void 0;
|
|
|
7
7
|
*
|
|
8
8
|
* export class TkassaIntegrationProvider extends AbstractIntegrationProvider {
|
|
9
9
|
* static identifier = "tkassa"
|
|
10
|
-
*
|
|
10
|
+
* get descriptor() { return tkassaDescriptor }
|
|
11
11
|
* async testConnection({ credentials }) { ... }
|
|
12
12
|
* }
|
|
13
13
|
*
|
|
@@ -15,7 +15,7 @@ exports.AbstractIntegrationProvider = void 0;
|
|
|
15
15
|
* consumes providers (the registry) types against it, so adding a method here is the
|
|
16
16
|
* only place to touch (besides implementing it in concrete providers).
|
|
17
17
|
*
|
|
18
|
-
* `static identifier` becomes the descriptor's `
|
|
18
|
+
* `static identifier` becomes the descriptor's `identifier` (settings are stored/resolved
|
|
19
19
|
* under it); authors don't repeat it in the descriptor.
|
|
20
20
|
*
|
|
21
21
|
* Each registration in `options.providers` is one *instance*: its `id` (if any) is
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Which Medusa module an integration configures. */
|
|
2
|
+
export declare const IntegrationModule: {
|
|
3
|
+
readonly PAYMENT: "payment";
|
|
4
|
+
readonly FULFILLMENT: "fulfillment";
|
|
5
|
+
readonly MARKETPLACE: "marketplace";
|
|
6
|
+
readonly CRM: "crm";
|
|
7
|
+
readonly ERP: "erp";
|
|
8
|
+
readonly PIM: "pim";
|
|
9
|
+
readonly NOTIFICATION: "notification";
|
|
10
|
+
readonly FEED: "feed";
|
|
11
|
+
readonly TAX: "tax";
|
|
12
|
+
readonly OTHER: "other";
|
|
13
|
+
};
|
|
14
|
+
export type ModuleKind = (typeof IntegrationModule)[keyof typeof IntegrationModule];
|
|
15
|
+
/** Outcome of a provider's connection test. */
|
|
16
|
+
export declare const IntegrationTestStatus: {
|
|
17
|
+
readonly PASSED: "passed";
|
|
18
|
+
readonly FAILED: "failed";
|
|
19
|
+
readonly SKIPPED: "skipped";
|
|
20
|
+
};
|
|
21
|
+
export type TestStatus = (typeof IntegrationTestStatus)[keyof typeof IntegrationTestStatus];
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IntegrationTestStatus = exports.IntegrationModule = void 0;
|
|
4
|
+
/** Which Medusa module an integration configures. */
|
|
5
|
+
exports.IntegrationModule = {
|
|
6
|
+
PAYMENT: "payment",
|
|
7
|
+
FULFILLMENT: "fulfillment",
|
|
8
|
+
MARKETPLACE: "marketplace",
|
|
9
|
+
CRM: "crm",
|
|
10
|
+
ERP: "erp",
|
|
11
|
+
PIM: "pim",
|
|
12
|
+
NOTIFICATION: "notification",
|
|
13
|
+
FEED: "feed",
|
|
14
|
+
TAX: "tax",
|
|
15
|
+
OTHER: "other",
|
|
16
|
+
};
|
|
17
|
+
/** Outcome of a provider's connection test. */
|
|
18
|
+
exports.IntegrationTestStatus = {
|
|
19
|
+
PASSED: "passed",
|
|
20
|
+
FAILED: "failed",
|
|
21
|
+
SKIPPED: "skipped",
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi91dGlscy9pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBcUQ7QUFDeEMsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixPQUFPLEVBQUUsU0FBUztJQUNsQixXQUFXLEVBQUUsYUFBYTtJQUMxQixXQUFXLEVBQUUsYUFBYTtJQUMxQixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixZQUFZLEVBQUUsY0FBYztJQUM1QixJQUFJLEVBQUUsTUFBTTtJQUNaLEdBQUcsRUFBRSxLQUFLO0lBQ1YsS0FBSyxFQUFFLE9BQU87Q0FDTixDQUFBO0FBR1YsK0NBQStDO0FBQ2xDLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFNBQVM7Q0FDVixDQUFBIn0=
|