@gorgo/medusa-integration 0.0.1
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 +2259 -0
- package/.medusa/server/src/admin/index.mjs +2257 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/enable/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/enable/route.js +17 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/route.js +46 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/test-connection/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/integrations/[provider_id]/test-connection/route.js +16 -0
- package/.medusa/server/src/api/admin/integrations/_helpers.d.ts +16 -0
- package/.medusa/server/src/api/admin/integrations/_helpers.js +52 -0
- package/.medusa/server/src/api/admin/integrations/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/integrations/middlewares.js +21 -0
- package/.medusa/server/src/api/admin/integrations/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/integrations/route.js +11 -0
- package/.medusa/server/src/api/admin/integrations/validators.d.ts +11 -0
- package/.medusa/server/src/api/admin/integrations/validators.js +15 -0
- package/.medusa/server/src/api/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/middlewares.js +10 -0
- package/.medusa/server/src/index.d.ts +10 -0
- package/.medusa/server/src/index.js +22 -0
- package/.medusa/server/src/jobs/test-integration-connections.d.ts +16 -0
- package/.medusa/server/src/jobs/test-integration-connections.js +53 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/build-zod.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/build-zod.unit.spec.js +64 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/define.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/define.unit.spec.js +41 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/introspect.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/introspect.unit.spec.js +93 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/validate.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/descriptor/__tests__/validate.unit.spec.js +64 -0
- package/.medusa/server/src/modules/integration/descriptor/build-zod.d.ts +8 -0
- package/.medusa/server/src/modules/integration/descriptor/build-zod.js +82 -0
- package/.medusa/server/src/modules/integration/descriptor/define.d.ts +74 -0
- package/.medusa/server/src/modules/integration/descriptor/define.js +31 -0
- package/.medusa/server/src/modules/integration/descriptor/index.d.ts +5 -0
- package/.medusa/server/src/modules/integration/descriptor/index.js +22 -0
- package/.medusa/server/src/modules/integration/descriptor/introspect.d.ts +5 -0
- package/.medusa/server/src/modules/integration/descriptor/introspect.js +67 -0
- package/.medusa/server/src/modules/integration/descriptor/meta.d.ts +7 -0
- package/.medusa/server/src/modules/integration/descriptor/meta.js +3 -0
- package/.medusa/server/src/modules/integration/descriptor/option.d.ts +104 -0
- package/.medusa/server/src/modules/integration/descriptor/option.js +3 -0
- package/.medusa/server/src/modules/integration/descriptor/validate.d.ts +29 -0
- package/.medusa/server/src/modules/integration/descriptor/validate.js +69 -0
- package/.medusa/server/src/modules/integration/index.d.ts +22 -0
- package/.medusa/server/src/modules/integration/index.js +15 -0
- package/.medusa/server/src/modules/integration/loaders/index.d.ts +1 -0
- package/.medusa/server/src/modules/integration/loaders/index.js +9 -0
- package/.medusa/server/src/modules/integration/loaders/load-providers.d.ts +5 -0
- package/.medusa/server/src/modules/integration/loaders/load-providers.js +35 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260610215533.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260610215533.js +18 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260618154037.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260618154037.js +27 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260622120502.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260622120502.js +14 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260701095518.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260701095518.js +14 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260708072033.d.ts +5 -0
- package/.medusa/server/src/modules/integration/migrations/Migration20260708072033.js +14 -0
- package/.medusa/server/src/modules/integration/models/integration.d.ts +13 -0
- package/.medusa/server/src/modules/integration/models/integration.js +27 -0
- package/.medusa/server/src/modules/integration/services/__tests__/crypto.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/services/__tests__/crypto.unit.spec.js +33 -0
- package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/services/__tests__/integration-provider.unit.spec.js +77 -0
- package/.medusa/server/src/modules/integration/services/__tests__/secrets.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/services/__tests__/secrets.unit.spec.js +33 -0
- package/.medusa/server/src/modules/integration/services/crypto.d.ts +10 -0
- package/.medusa/server/src/modules/integration/services/crypto.js +41 -0
- package/.medusa/server/src/modules/integration/services/index.d.ts +3 -0
- package/.medusa/server/src/modules/integration/services/index.js +11 -0
- package/.medusa/server/src/modules/integration/services/integration-module.d.ts +113 -0
- package/.medusa/server/src/modules/integration/services/integration-module.js +219 -0
- package/.medusa/server/src/modules/integration/services/integration-provider.d.ts +49 -0
- package/.medusa/server/src/modules/integration/services/integration-provider.js +76 -0
- package/.medusa/server/src/modules/integration/services/secrets.d.ts +11 -0
- package/.medusa/server/src/modules/integration/services/secrets.js +31 -0
- package/.medusa/server/src/modules/integration/types/index.d.ts +13 -0
- package/.medusa/server/src/modules/integration/types/index.js +10 -0
- package/.medusa/server/src/modules/integration/utils/abstract-integration-provider.d.ts +39 -0
- package/.medusa/server/src/modules/integration/utils/abstract-integration-provider.js +42 -0
- package/.medusa/server/src/modules/integration/utils/index.d.ts +1 -0
- package/.medusa/server/src/modules/integration/utils/index.js +6 -0
- package/.medusa/server/src/subscribers/invalidate-options-cache.d.ts +5 -0
- package/.medusa/server/src/subscribers/invalidate-options-cache.js +13 -0
- package/.medusa/server/src/types/bundles.d.ts +1 -0
- package/.medusa/server/src/types/bundles.js +38 -0
- package/.medusa/server/src/types/http/index.d.ts +1 -0
- package/.medusa/server/src/types/http/index.js +18 -0
- package/.medusa/server/src/types/http/integration/admin/entities.d.ts +32 -0
- package/.medusa/server/src/types/http/integration/admin/entities.js +3 -0
- package/.medusa/server/src/types/http/integration/admin/index.d.ts +2 -0
- package/.medusa/server/src/types/http/integration/admin/index.js +19 -0
- package/.medusa/server/src/types/http/integration/admin/responses.d.ts +19 -0
- package/.medusa/server/src/types/http/integration/admin/responses.js +3 -0
- package/.medusa/server/src/types/http/integration/index.d.ts +1 -0
- package/.medusa/server/src/types/http/integration/index.js +18 -0
- package/.medusa/server/src/types/index.d.ts +3 -0
- package/.medusa/server/src/types/index.js +20 -0
- package/.medusa/server/src/types/integration/common.d.ts +70 -0
- package/.medusa/server/src/types/integration/common.js +3 -0
- package/.medusa/server/src/types/integration/index.d.ts +1 -0
- package/.medusa/server/src/types/integration/index.js +18 -0
- package/.medusa/server/src/workflows/integration/index.d.ts +2 -0
- package/.medusa/server/src/workflows/integration/index.js +19 -0
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.d.ts +22 -0
- package/.medusa/server/src/workflows/integration/steps/apply-integration-section.js +70 -0
- package/.medusa/server/src/workflows/integration/steps/delete-integration-record.d.ts +6 -0
- package/.medusa/server/src/workflows/integration/steps/delete-integration-record.js +16 -0
- package/.medusa/server/src/workflows/integration/steps/emit-integration-event.d.ts +5 -0
- package/.medusa/server/src/workflows/integration/steps/emit-integration-event.js +11 -0
- package/.medusa/server/src/workflows/integration/steps/index.d.ts +6 -0
- package/.medusa/server/src/workflows/integration/steps/index.js +16 -0
- package/.medusa/server/src/workflows/integration/steps/run-test-connection.d.ts +4 -0
- package/.medusa/server/src/workflows/integration/steps/run-test-connection.js +20 -0
- package/.medusa/server/src/workflows/integration/steps/set-integration-enabled.d.ts +19 -0
- package/.medusa/server/src/workflows/integration/steps/set-integration-enabled.js +27 -0
- package/.medusa/server/src/workflows/integration/steps/upsert-integration-record.d.ts +9 -0
- package/.medusa/server/src/workflows/integration/steps/upsert-integration-record.js +18 -0
- package/.medusa/server/src/workflows/integration/workflows/delete-integration.d.ts +7 -0
- package/.medusa/server/src/workflows/integration/workflows/delete-integration.js +18 -0
- package/.medusa/server/src/workflows/integration/workflows/index.d.ts +4 -0
- package/.medusa/server/src/workflows/integration/workflows/index.js +12 -0
- package/.medusa/server/src/workflows/integration/workflows/set-integration-enabled.d.ts +20 -0
- package/.medusa/server/src/workflows/integration/workflows/set-integration-enabled.js +20 -0
- package/.medusa/server/src/workflows/integration/workflows/test-integration-connection.d.ts +5 -0
- package/.medusa/server/src/workflows/integration/workflows/test-integration-connection.js +21 -0
- package/.medusa/server/src/workflows/integration/workflows/upsert-integration.d.ts +8 -0
- package/.medusa/server/src/workflows/integration/workflows/upsert-integration.js +30 -0
- package/LICENSE +21 -0
- package/README.md +46 -0
- package/package.json +79 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
import type { AdminSetIntegrationEnabledType } from "../../validators";
|
|
3
|
+
import type { AdminIntegrationUpsertResponse } from "../../../../../types";
|
|
4
|
+
/** Enable or disable a configured integration (toggles `is_enabled`). */
|
|
5
|
+
export declare const POST: (req: AuthenticatedMedusaRequest<AdminSetIntegrationEnabledType>, res: MedusaResponse<AdminIntegrationUpsertResponse>) => Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const integration_1 = require("../../../../../workflows/integration");
|
|
5
|
+
const _helpers_1 = require("../../_helpers");
|
|
6
|
+
/** Enable or disable a configured integration (toggles `is_enabled`). */
|
|
7
|
+
const POST = async (req, res) => {
|
|
8
|
+
const svc = (0, _helpers_1.service)(req);
|
|
9
|
+
const provider_id = req.params.provider_id;
|
|
10
|
+
(0, _helpers_1.requireProvider)(svc, provider_id);
|
|
11
|
+
const { result } = await (0, integration_1.setIntegrationEnabledWorkflow)(req.scope).run({
|
|
12
|
+
input: { provider_id, is_enabled: req.validatedBody.is_enabled },
|
|
13
|
+
});
|
|
14
|
+
res.json({ integration: (0, _helpers_1.maskedView)(result, svc.getSecretKeys(provider_id)) });
|
|
15
|
+
};
|
|
16
|
+
exports.POST = POST;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9bcHJvdmlkZXJfaWRdL2VuYWJsZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxzRUFBb0Y7QUFDcEYsNkNBQXFFO0FBSXJFLHlFQUF5RTtBQUNsRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQStELEVBQy9ELEdBQW1ELEVBQ25ELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxJQUFBLGtCQUFPLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDMUMsSUFBQSwwQkFBZSxFQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUVqQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDJDQUE2QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDcEUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtLQUNqRSxDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUEscUJBQVUsRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUMvRSxDQUFDLENBQUE7QUFaWSxRQUFBLElBQUksUUFZaEIifQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
import type { AdminUpsertIntegrationType } from "../validators";
|
|
3
|
+
import type { AdminIntegrationResponse, AdminIntegrationUpsertResponse, AdminIntegrationDeleteResponse } from "../../../../types";
|
|
4
|
+
/** Descriptor (UI schema) + current masked record + completeness for one declared instance. */
|
|
5
|
+
export declare const GET: (req: AuthenticatedMedusaRequest, res: MedusaResponse<AdminIntegrationResponse>) => Promise<void>;
|
|
6
|
+
export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpsertIntegrationType>, res: MedusaResponse<AdminIntegrationUpsertResponse>) => Promise<void>;
|
|
7
|
+
export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse<AdminIntegrationDeleteResponse>) => Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = exports.POST = exports.GET = void 0;
|
|
4
|
+
const integration_1 = require("../../../../workflows/integration");
|
|
5
|
+
const _helpers_1 = require("../_helpers");
|
|
6
|
+
/** Descriptor (UI schema) + current masked record + completeness for one declared instance. */
|
|
7
|
+
const GET = async (req, res) => {
|
|
8
|
+
const svc = (0, _helpers_1.service)(req);
|
|
9
|
+
const provider_id = req.params.provider_id;
|
|
10
|
+
(0, _helpers_1.requireProvider)(svc, provider_id);
|
|
11
|
+
const descriptor = svc.getProviderUiDescriptor(provider_id);
|
|
12
|
+
const record = await svc.findByProviderId(provider_id);
|
|
13
|
+
const is_complete = record ? svc.isComplete(record) : false;
|
|
14
|
+
res.json({ descriptor, integration: record ? (0, _helpers_1.maskedView)(record, svc.getSecretKeys(provider_id)) : null, is_complete });
|
|
15
|
+
};
|
|
16
|
+
exports.GET = GET;
|
|
17
|
+
const POST = async (req, res) => {
|
|
18
|
+
const svc = (0, _helpers_1.service)(req);
|
|
19
|
+
const provider_id = req.params.provider_id;
|
|
20
|
+
(0, _helpers_1.requireProvider)(svc, provider_id);
|
|
21
|
+
// Only the submitted option ids are validated (inside the workflow step) — a built-in
|
|
22
|
+
// section sends its section's ids, a widget may send option ids with no section_id — with
|
|
23
|
+
// a readable, field-prefixed message on failure. The config as a whole may remain a
|
|
24
|
+
// partial draft; full validation happens lazily at resolve time.
|
|
25
|
+
const { result } = await (0, integration_1.upsertIntegrationWorkflow)(req.scope).run({
|
|
26
|
+
input: {
|
|
27
|
+
provider_id,
|
|
28
|
+
section_id: req.validatedBody.section_id,
|
|
29
|
+
title: req.validatedBody.title,
|
|
30
|
+
values: req.validatedBody.values,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
res.json({ integration: (0, _helpers_1.maskedView)(result, svc.getSecretKeys(provider_id)) });
|
|
34
|
+
};
|
|
35
|
+
exports.POST = POST;
|
|
36
|
+
const DELETE = async (req, res) => {
|
|
37
|
+
const svc = (0, _helpers_1.service)(req);
|
|
38
|
+
const provider_id = req.params.provider_id;
|
|
39
|
+
(0, _helpers_1.requireProvider)(svc, provider_id);
|
|
40
|
+
await (0, integration_1.deleteIntegrationWorkflow)(req.scope).run({
|
|
41
|
+
input: { provider_id },
|
|
42
|
+
});
|
|
43
|
+
res.json({ id: provider_id, object: "integration", deleted: true });
|
|
44
|
+
};
|
|
45
|
+
exports.DELETE = DELETE;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9bcHJvdmlkZXJfaWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1FQUF3RztBQUN4RywwQ0FBa0U7QUFRbEUsK0ZBQStGO0FBQ3hGLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBNkMsRUFDN0MsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLElBQUEsa0JBQU8sRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUN4QixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQTtJQUMxQyxJQUFBLDBCQUFlLEVBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMzRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUEscUJBQVUsRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtBQUN4SCxDQUFDLENBQUE7QUFYWSxRQUFBLEdBQUcsT0FXZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBMkQsRUFDM0QsR0FBbUQsRUFDbkQsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLElBQUEsa0JBQU8sRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUN4QixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQTtJQUMxQyxJQUFBLDBCQUFlLEVBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBRWpDLHNGQUFzRjtJQUN0RiwwRkFBMEY7SUFDMUYsb0ZBQW9GO0lBQ3BGLGlFQUFpRTtJQUNqRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLHVDQUF5QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDaEUsS0FBSyxFQUFFO1lBQ0wsV0FBVztZQUNYLFVBQVUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVU7WUFDeEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSztZQUM5QixNQUFNLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNO1NBQ2pDO0tBQ0YsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFBLHFCQUFVLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDL0UsQ0FBQyxDQUFBO0FBckJZLFFBQUEsSUFBSSxRQXFCaEI7QUFFTSxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQ3pCLEdBQStCLEVBQy9CLEdBQW1ELEVBQ25ELEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxJQUFBLGtCQUFPLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDMUMsSUFBQSwwQkFBZSxFQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUNqQyxNQUFNLElBQUEsdUNBQXlCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM3QyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUNyRSxDQUFDLENBQUE7QUFYWSxRQUFBLE1BQU0sVUFXbEIifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
import type { AdminIntegrationTestResponse } from "../../../../../types";
|
|
3
|
+
export declare const POST: (req: AuthenticatedMedusaRequest, res: MedusaResponse<AdminIntegrationTestResponse>) => Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const integration_1 = require("../../../../../workflows/integration");
|
|
5
|
+
const _helpers_1 = require("../../_helpers");
|
|
6
|
+
const POST = async (req, res) => {
|
|
7
|
+
const svc = (0, _helpers_1.service)(req);
|
|
8
|
+
const provider_id = req.params.provider_id;
|
|
9
|
+
(0, _helpers_1.requireProvider)(svc, provider_id);
|
|
10
|
+
const { result } = await (0, integration_1.testIntegrationConnectionWorkflow)(req.scope).run({
|
|
11
|
+
input: { provider_id },
|
|
12
|
+
});
|
|
13
|
+
res.json(result);
|
|
14
|
+
};
|
|
15
|
+
exports.POST = POST;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9bcHJvdmlkZXJfaWRdL3Rlc3QtY29ubmVjdGlvbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxzRUFBd0Y7QUFDeEYsNkNBQXlEO0FBR2xELE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBK0IsRUFDL0IsR0FBaUQsRUFDakQsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLElBQUEsa0JBQU8sRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUN4QixNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQTtJQUMxQyxJQUFBLDBCQUFlLEVBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsK0NBQWlDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN4RSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUU7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFYWSxRQUFBLElBQUksUUFXaEIifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MedusaRequest } from "@medusajs/framework/http";
|
|
2
|
+
import type IntegrationModuleService from "../../../modules/integration/services/integration-module";
|
|
3
|
+
import type { MaskedIntegration } from "../../../types";
|
|
4
|
+
export declare function service(req: MedusaRequest): IntegrationModuleService;
|
|
5
|
+
/**
|
|
6
|
+
* Assert that a `:provider_id` URL param (the registration key `int_<id>[_<instance>]`,
|
|
7
|
+
* which is also the stored `provider_id`) is a declared registration. 404 otherwise.
|
|
8
|
+
*/
|
|
9
|
+
export declare function requireProvider(svc: IntegrationModuleService, providerId: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Build the client-facing view of a record. Secret options live encrypted inside `options`;
|
|
12
|
+
* they are stripped here so ciphertext never reaches the browser. `has_secrets` tells the UI
|
|
13
|
+
* a secret is stored (so it can render a "leave blank to keep" hint). `values` holds only
|
|
14
|
+
* the non-secret options.
|
|
15
|
+
*/
|
|
16
|
+
export declare function maskedView(record: any, secretKeys: string[]): MaskedIntegration;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.service = service;
|
|
4
|
+
exports.requireProvider = requireProvider;
|
|
5
|
+
exports.maskedView = maskedView;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const integration_1 = require("../../../modules/integration");
|
|
8
|
+
function service(req) {
|
|
9
|
+
return req.scope.resolve(integration_1.INTEGRATION_MODULE);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Assert that a `:provider_id` URL param (the registration key `int_<id>[_<instance>]`,
|
|
13
|
+
* which is also the stored `provider_id`) is a declared registration. 404 otherwise.
|
|
14
|
+
*/
|
|
15
|
+
function requireProvider(svc, providerId) {
|
|
16
|
+
if (!svc.hasProviderId(providerId)) {
|
|
17
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Unknown integration "${providerId}"`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build the client-facing view of a record. Secret options live encrypted inside `options`;
|
|
22
|
+
* they are stripped here so ciphertext never reaches the browser. `has_secrets` tells the UI
|
|
23
|
+
* a secret is stored (so it can render a "leave blank to keep" hint). `values` holds only
|
|
24
|
+
* the non-secret options.
|
|
25
|
+
*/
|
|
26
|
+
function maskedView(record, secretKeys) {
|
|
27
|
+
const secret = new Set(secretKeys);
|
|
28
|
+
const stored = (record.options ?? {});
|
|
29
|
+
const values = {};
|
|
30
|
+
let has_secrets = false;
|
|
31
|
+
for (const [k, v] of Object.entries(stored)) {
|
|
32
|
+
if (secret.has(k)) {
|
|
33
|
+
if (v != null && v !== "")
|
|
34
|
+
has_secrets = true;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
values[k] = v;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
id: record.id,
|
|
41
|
+
provider_id: record.provider_id,
|
|
42
|
+
module: record.module,
|
|
43
|
+
title: record.title ?? null,
|
|
44
|
+
is_enabled: record.is_enabled,
|
|
45
|
+
has_secrets,
|
|
46
|
+
last_test_at: record.last_test_at ?? null,
|
|
47
|
+
last_test_status: record.last_test_status ?? null,
|
|
48
|
+
last_test_message: record.last_test_message ?? null,
|
|
49
|
+
values,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9faGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLDBCQUVDO0FBTUQsMENBSUM7QUFRRCxnQ0F3QkM7QUFqREQscURBQXVEO0FBQ3ZELDhEQUFpRTtBQUlqRSxTQUFnQixPQUFPLENBQUMsR0FBa0I7SUFDeEMsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQ0FBa0IsQ0FBQyxDQUFBO0FBQzlDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBNkIsRUFBRSxVQUFrQjtJQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxtQkFBVyxDQUFDLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUMzRixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQVcsRUFBRSxVQUFvQjtJQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUE0QixDQUFBO0lBQ2hFLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUE7SUFDMUMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFBO0lBQ3ZCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUFFLFdBQVcsR0FBRyxJQUFJLENBQUE7WUFDN0MsU0FBUTtRQUNWLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU87UUFDTCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDYixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDL0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUk7UUFDM0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLFdBQVc7UUFDWCxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1FBQ3pDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1FBQ2pELGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJO1FBQ25ELE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.adminIntegrationRoutesMiddlewares = void 0;
|
|
4
|
+
const http_1 = require("@medusajs/framework/http");
|
|
5
|
+
const validators_1 = require("./validators");
|
|
6
|
+
exports.adminIntegrationRoutesMiddlewares = [
|
|
7
|
+
{
|
|
8
|
+
methods: ["POST"],
|
|
9
|
+
matcher: "/admin/integrations/:provider_id",
|
|
10
|
+
// `as any` flattens a TS2589 (excessively deep instantiation) that zod-4 schema types
|
|
11
|
+
// trigger against validateAndTransformBody's generic. Runtime validation is unchanged;
|
|
12
|
+
// `req.validatedBody` is typed explicitly in the route via AdminUpsertIntegrationType.
|
|
13
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpsertIntegration)],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
methods: ["POST"],
|
|
17
|
+
matcher: "/admin/integrations/:provider_id/enable",
|
|
18
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminSetIntegrationEnabled)],
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBb0Y7QUFDcEYsNkNBQWlGO0FBRXBFLFFBQUEsaUNBQWlDLEdBQXNCO0lBQ2xFO1FBQ0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxrQ0FBa0M7UUFDM0Msc0ZBQXNGO1FBQ3RGLHVGQUF1RjtRQUN2Rix1RkFBdUY7UUFDdkYsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxtQ0FBNkIsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsT0FBTyxFQUFFLHlDQUF5QztRQUNsRCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHVDQUFpQyxDQUFDLENBQUM7S0FDM0U7Q0FDRixDQUFBIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
import type { AdminIntegrationListResponse } from "../../../types";
|
|
3
|
+
export declare const GET: (req: AuthenticatedMedusaRequest, res: MedusaResponse<AdminIntegrationListResponse>) => Promise<void>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const _helpers_1 = require("./_helpers");
|
|
5
|
+
const GET = async (req, res) => {
|
|
6
|
+
const svc = (0, _helpers_1.service)(req);
|
|
7
|
+
const integrations = await svc.listIntegrationsOverview();
|
|
8
|
+
res.json({ integrations });
|
|
9
|
+
};
|
|
10
|
+
exports.GET = GET;
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludGVncmF0aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBb0M7QUFHN0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUErQixFQUMvQixHQUFpRCxFQUNqRCxFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLE1BQU0sWUFBWSxHQUFHLE1BQU0sR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUE7SUFDekQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUE7QUFDNUIsQ0FBQyxDQUFBO0FBUFksUUFBQSxHQUFHLE9BT2YifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "@medusajs/deps/zod";
|
|
2
|
+
export type AdminUpsertIntegrationType = z.infer<typeof AdminUpsertIntegration>;
|
|
3
|
+
export declare const AdminUpsertIntegration: z.ZodObject<{
|
|
4
|
+
title: z.ZodOptional<z.ZodString>;
|
|
5
|
+
section_id: z.ZodOptional<z.ZodString>;
|
|
6
|
+
values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type AdminSetIntegrationEnabledType = z.infer<typeof AdminSetIntegrationEnabled>;
|
|
9
|
+
export declare const AdminSetIntegrationEnabled: z.ZodObject<{
|
|
10
|
+
is_enabled: z.ZodBoolean;
|
|
11
|
+
}, z.core.$strip>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminSetIntegrationEnabled = exports.AdminUpsertIntegration = void 0;
|
|
4
|
+
const zod_1 = require("@medusajs/deps/zod");
|
|
5
|
+
exports.AdminUpsertIntegration = zod_1.z.object({
|
|
6
|
+
title: zod_1.z.string().optional(),
|
|
7
|
+
// Which descriptor section these values belong to. Omitted by widgets, which submit
|
|
8
|
+
// their own option ids directly — the server then validates exactly the submitted keys.
|
|
9
|
+
section_id: zod_1.z.string().optional(),
|
|
10
|
+
values: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
|
|
11
|
+
});
|
|
12
|
+
exports.AdminSetIntegrationEnabled = zod_1.z.object({
|
|
13
|
+
is_enabled: zod_1.z.boolean(),
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vaW50ZWdyYXRpb25zL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQXNDO0FBR3pCLFFBQUEsc0JBQXNCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixvRkFBb0Y7SUFDcEYsd0ZBQXdGO0lBQ3hGLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2pDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDMUMsQ0FBQyxDQUFBO0FBR1csUUFBQSwwQkFBMEIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pELFVBQVUsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO0NBQ3hCLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const framework_1 = require("@medusajs/framework");
|
|
4
|
+
const middlewares_1 = require("./admin/integrations/middlewares");
|
|
5
|
+
exports.default = (0, framework_1.defineMiddlewares)({
|
|
6
|
+
routes: [
|
|
7
|
+
...middlewares_1.adminIntegrationRoutesMiddlewares
|
|
8
|
+
]
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQXVEO0FBQ3ZELGtFQUFvRjtBQUVwRixrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEdBQUcsK0NBQWlDO0tBQ3JDO0NBQ0YsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { defineIntegration, z } from "./modules/integration/descriptor/define";
|
|
2
|
+
export { AbstractIntegrationProvider } from "./modules/integration/utils/abstract-integration-provider";
|
|
3
|
+
export type { IntegrationDescriptor, IntegrationDescriptorInput, ModuleKind, OptionDef, OptionValidateContext, Settings, TestConnectionContext, TestConnectionResult, } from "./modules/integration/descriptor/define";
|
|
4
|
+
export type { FieldControl, I18nKey } from "./modules/integration/descriptor/meta";
|
|
5
|
+
export { collectValidationIssues, isDescriptorComplete } from "./modules/integration/descriptor/validate";
|
|
6
|
+
export type { IntegrationSectionData } from "./types";
|
|
7
|
+
export { INTEGRATION_MODULE } from "./modules/integration";
|
|
8
|
+
export { default as IntegrationModuleService } from "./modules/integration/services/integration-module";
|
|
9
|
+
export type { ResolvedOptions } from "./modules/integration/services/integration-module";
|
|
10
|
+
export type { IntegrationModuleOptions } from "./modules/integration/types";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.IntegrationModuleService = exports.INTEGRATION_MODULE = exports.isDescriptorComplete = exports.collectValidationIssues = exports.AbstractIntegrationProvider = exports.z = exports.defineIntegration = void 0;
|
|
7
|
+
// ── For integration-provider authors ─────────────────────────────────────────
|
|
8
|
+
var define_1 = require("./modules/integration/descriptor/define");
|
|
9
|
+
Object.defineProperty(exports, "defineIntegration", { enumerable: true, get: function () { return define_1.defineIntegration; } });
|
|
10
|
+
Object.defineProperty(exports, "z", { enumerable: true, get: function () { return define_1.z; } });
|
|
11
|
+
var abstract_integration_provider_1 = require("./modules/integration/utils/abstract-integration-provider");
|
|
12
|
+
Object.defineProperty(exports, "AbstractIntegrationProvider", { enumerable: true, get: function () { return abstract_integration_provider_1.AbstractIntegrationProvider; } });
|
|
13
|
+
// The "validate my descriptor" API — for provider authors and their unit tests.
|
|
14
|
+
var validate_1 = require("./modules/integration/descriptor/validate");
|
|
15
|
+
Object.defineProperty(exports, "collectValidationIssues", { enumerable: true, get: function () { return validate_1.collectValidationIssues; } });
|
|
16
|
+
Object.defineProperty(exports, "isDescriptorComplete", { enumerable: true, get: function () { return validate_1.isDescriptorComplete; } });
|
|
17
|
+
// ── For consumers of the integration module ──────────────────────────────────
|
|
18
|
+
var integration_1 = require("./modules/integration");
|
|
19
|
+
Object.defineProperty(exports, "INTEGRATION_MODULE", { enumerable: true, get: function () { return integration_1.INTEGRATION_MODULE; } });
|
|
20
|
+
var integration_module_1 = require("./modules/integration/services/integration-module");
|
|
21
|
+
Object.defineProperty(exports, "IntegrationModuleService", { enumerable: true, get: function () { return __importDefault(integration_module_1).default; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0ZBQWdGO0FBQ2hGLGtFQUE4RTtBQUFyRSwyR0FBQSxpQkFBaUIsT0FBQTtBQUFFLDJGQUFBLENBQUMsT0FBQTtBQUM3QiwyR0FBdUc7QUFBOUYsNElBQUEsMkJBQTJCLE9BQUE7QUFZcEMsZ0ZBQWdGO0FBQ2hGLHNFQUF5RztBQUFoRyxtSEFBQSx1QkFBdUIsT0FBQTtBQUFFLGdIQUFBLG9CQUFvQixPQUFBO0FBSXRELGdGQUFnRjtBQUNoRixxREFBMEQ7QUFBakQsaUhBQUEsa0JBQWtCLE9BQUE7QUFDM0Isd0ZBQXVHO0FBQTlGLCtJQUFBLE9BQU8sT0FBNEIifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
+
/**
|
|
3
|
+
* Daily health check: run the connection test for every configured & enabled integration
|
|
4
|
+
* that exposes one. Each test runs through `testIntegrationConnectionWorkflow`, which
|
|
5
|
+
* persists `last_test_*` on the record and emits `integration.tested`.
|
|
6
|
+
*
|
|
7
|
+
* Disabled or not-yet-configured registrations are skipped (their settings don't resolve,
|
|
8
|
+
* so a test would report a misleading "Not configured" failure), as are providers without
|
|
9
|
+
* a `testConnection`. Failures are isolated per provider and nothing is thrown at the top
|
|
10
|
+
* level, so one bad integration never aborts the rest and the job retries next schedule.
|
|
11
|
+
*/
|
|
12
|
+
export default function testIntegrationConnectionsJob(container: MedusaContainer): Promise<void>;
|
|
13
|
+
export declare const config: {
|
|
14
|
+
name: string;
|
|
15
|
+
schedule: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = testIntegrationConnectionsJob;
|
|
5
|
+
const integration_1 = require("../modules/integration");
|
|
6
|
+
const integration_2 = require("../workflows/integration");
|
|
7
|
+
/**
|
|
8
|
+
* Daily health check: run the connection test for every configured & enabled integration
|
|
9
|
+
* that exposes one. Each test runs through `testIntegrationConnectionWorkflow`, which
|
|
10
|
+
* persists `last_test_*` on the record and emits `integration.tested`.
|
|
11
|
+
*
|
|
12
|
+
* Disabled or not-yet-configured registrations are skipped (their settings don't resolve,
|
|
13
|
+
* so a test would report a misleading "Not configured" failure), as are providers without
|
|
14
|
+
* a `testConnection`. Failures are isolated per provider and nothing is thrown at the top
|
|
15
|
+
* level, so one bad integration never aborts the rest and the job retries next schedule.
|
|
16
|
+
*/
|
|
17
|
+
async function testIntegrationConnectionsJob(container) {
|
|
18
|
+
const logger = container.resolve("logger");
|
|
19
|
+
const service = container.resolve(integration_1.INTEGRATION_MODULE);
|
|
20
|
+
const overview = await service.listIntegrationsOverview();
|
|
21
|
+
const targets = overview.filter((i) => i.is_configured && i.is_enabled && i.has_test_connection);
|
|
22
|
+
if (targets.length === 0) {
|
|
23
|
+
logger.info("[integration] connection-test job: no configured integrations to test");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
logger.info(`[integration] connection-test job: testing ${targets.length} integration(s)`);
|
|
27
|
+
const counts = { ok: 0, fail: 0, skipped: 0, errored: 0 };
|
|
28
|
+
for (const target of targets) {
|
|
29
|
+
try {
|
|
30
|
+
const { result } = await (0, integration_2.testIntegrationConnectionWorkflow)(container).run({
|
|
31
|
+
input: { provider_id: target.provider_id },
|
|
32
|
+
});
|
|
33
|
+
counts[result.status]++;
|
|
34
|
+
const line = `[integration] ${target.provider_id} → ${result.status}${result.message ? `: ${result.message}` : ""}`;
|
|
35
|
+
if (result.status === "fail")
|
|
36
|
+
logger.warn(line);
|
|
37
|
+
else
|
|
38
|
+
logger.info(line);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
counts.errored++;
|
|
42
|
+
logger.error(`[integration] ${target.provider_id} test errored: ${e?.message ?? e}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
logger.info(`[integration] connection-test job done — ok: ${counts.ok}, fail: ${counts.fail}, ` +
|
|
46
|
+
`skipped: ${counts.skipped}, errored: ${counts.errored}`);
|
|
47
|
+
}
|
|
48
|
+
exports.config = {
|
|
49
|
+
name: "test-integration-connections-daily",
|
|
50
|
+
// Once a day, off-peak (03:00). Cron: minute hour day-of-month month day-of-week.
|
|
51
|
+
schedule: "0 3 * * *",
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1pbnRlZ3JhdGlvbi1jb25uZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL3Rlc3QtaW50ZWdyYXRpb24tY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZUEsZ0RBdUNDO0FBckRELHdEQUEyRDtBQUUzRCwwREFBNEU7QUFFNUU7Ozs7Ozs7OztHQVNHO0FBQ1ksS0FBSyxVQUFVLDZCQUE2QixDQUFDLFNBQTBCO0lBQ3BGLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQVMsUUFBUSxDQUFDLENBQUE7SUFDbEQsTUFBTSxPQUFPLEdBQTZCLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0NBQWtCLENBQUMsQ0FBQTtJQUUvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO0lBQ3pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQzdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLG1CQUFtQixDQUNoRSxDQUFBO0lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtRQUNwRixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLE9BQU8sQ0FBQyxNQUFNLGlCQUFpQixDQUFDLENBQUE7SUFFMUYsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUE7SUFFekQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLCtDQUFpQyxFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDeEUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUU7YUFDM0MsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixNQUFNLENBQUMsV0FBVyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEdBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMzQyxFQUFFLENBQUE7WUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTTtnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBOztnQkFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsTUFBTSxDQUFDLFdBQVcsa0JBQWtCLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQ1QsZ0RBQWdELE1BQU0sQ0FBQyxFQUFFLFdBQVcsTUFBTSxDQUFDLElBQUksSUFBSTtRQUNqRixZQUFZLE1BQU0sQ0FBQyxPQUFPLGNBQWMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUMzRCxDQUFBO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLElBQUksRUFBRSxvQ0FBb0M7SUFDMUMsa0ZBQWtGO0lBQ2xGLFFBQVEsRUFBRSxXQUFXO0NBQ3RCLENBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const globals_1 = require("@jest/globals");
|
|
4
|
+
const build_zod_1 = require("../build-zod");
|
|
5
|
+
(0, globals_1.describe)("optionToZod", () => {
|
|
6
|
+
(0, globals_1.it)("string required rejects undefined and empty (minLength 1)", () => {
|
|
7
|
+
const s = (0, build_zod_1.optionToZod)({ type: "string", required: true, minLength: 1, label: "l" });
|
|
8
|
+
(0, globals_1.expect)(s.safeParse(undefined).success).toBe(false);
|
|
9
|
+
(0, globals_1.expect)(s.safeParse("").success).toBe(false);
|
|
10
|
+
(0, globals_1.expect)(s.safeParse("x").success).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
(0, globals_1.it)("optional string accepts undefined", () => {
|
|
13
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "string", label: "l" }).safeParse(undefined).success).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
(0, globals_1.it)("url type validates URLs", () => {
|
|
16
|
+
const u = (0, build_zod_1.optionToZod)({ type: "url", label: "l" });
|
|
17
|
+
(0, globals_1.expect)(u.safeParse("nope").success).toBe(false);
|
|
18
|
+
(0, globals_1.expect)(u.safeParse("https://x.io").success).toBe(true);
|
|
19
|
+
(0, globals_1.expect)(u.safeParse("http://x.io").success).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
(0, globals_1.it)("url type restricts the scheme via protocols", () => {
|
|
22
|
+
const https = (0, build_zod_1.optionToZod)({ type: "url", protocols: ["https"], label: "l" });
|
|
23
|
+
(0, globals_1.expect)(https.safeParse("https://x.io").success).toBe(true);
|
|
24
|
+
(0, globals_1.expect)(https.safeParse("http://x.io").success).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
(0, globals_1.it)("email type validates emails", () => {
|
|
27
|
+
const e = (0, build_zod_1.optionToZod)({ type: "email", label: "l" });
|
|
28
|
+
(0, globals_1.expect)(e.safeParse("a@b.co").success).toBe(true);
|
|
29
|
+
(0, globals_1.expect)(e.safeParse("a@b").success).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
(0, globals_1.it)("uuid type validates UUIDs", () => {
|
|
32
|
+
const u = (0, build_zod_1.optionToZod)({ type: "uuid", label: "l" });
|
|
33
|
+
(0, globals_1.expect)(u.safeParse("not-a-uuid").success).toBe(false);
|
|
34
|
+
(0, globals_1.expect)(u.safeParse("550e8400-e29b-41d4-a716-446655440000").success).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
(0, globals_1.it)("boolean with default fills undefined", () => {
|
|
37
|
+
const r = (0, build_zod_1.optionToZod)({ type: "boolean", default: true, label: "l" }).safeParse(undefined);
|
|
38
|
+
(0, globals_1.expect)(r.success && r.data).toBe(true);
|
|
39
|
+
});
|
|
40
|
+
(0, globals_1.it)("enum rejects out-of-set values", () => {
|
|
41
|
+
const s = (0, build_zod_1.optionToZod)({ type: "enum", values: ["a", "b"], label: "l" });
|
|
42
|
+
(0, globals_1.expect)(s.safeParse("a").success).toBe(true);
|
|
43
|
+
(0, globals_1.expect)(s.safeParse("c").success).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
(0, globals_1.it)("number honors int/min/max/positive/nonnegative/multipleOf", () => {
|
|
46
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", int: true, label: "l" }).safeParse(2.5).success).toBe(false);
|
|
47
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", min: 1, max: 10, label: "l" }).safeParse(0).success).toBe(false);
|
|
48
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", positive: true, label: "l" }).safeParse(0).success).toBe(false);
|
|
49
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", nonnegative: true, label: "l" }).safeParse(-1).success).toBe(false);
|
|
50
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", nonnegative: true, label: "l" }).safeParse(0).success).toBe(true);
|
|
51
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", multipleOf: 5, label: "l" }).safeParse(7).success).toBe(false);
|
|
52
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "number", multipleOf: 5, label: "l" }).safeParse(10).success).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
(0, globals_1.it)("json accepts arbitrary values; required rejects undefined; default fills", () => {
|
|
55
|
+
const opt = (0, build_zod_1.optionToZod)({ type: "json", label: "l" });
|
|
56
|
+
(0, globals_1.expect)(opt.safeParse({ a: 1 }).success).toBe(true);
|
|
57
|
+
(0, globals_1.expect)(opt.safeParse([1, 2]).success).toBe(true);
|
|
58
|
+
(0, globals_1.expect)(opt.safeParse(undefined).success).toBe(true); // optional
|
|
59
|
+
(0, globals_1.expect)((0, build_zod_1.optionToZod)({ type: "json", required: true, label: "l" }).safeParse(undefined).success).toBe(false);
|
|
60
|
+
const d = (0, build_zod_1.optionToZod)({ type: "json", default: [], label: "l" }).safeParse(undefined);
|
|
61
|
+
(0, globals_1.expect)(d.success && d.data).toEqual([]);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtem9kLnVuaXQuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uL2Rlc2NyaXB0b3IvX190ZXN0c19fL2J1aWxkLXpvZC51bml0LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBb0Q7QUFDcEQsNENBQTBDO0FBRTFDLElBQUEsa0JBQVEsRUFBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLElBQUEsWUFBRSxFQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtRQUNuRSxNQUFNLENBQUMsR0FBRyxJQUFBLHVCQUFXLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUNuRixJQUFBLGdCQUFNLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbEQsSUFBQSxnQkFBTSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNDLElBQUEsZ0JBQU0sRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUEsWUFBRSxFQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUMzQyxJQUFBLGdCQUFNLEVBQUMsSUFBQSx1QkFBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENB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QkFBTSxFQUFDLElBQUEsdUJBQVcsRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BHLElBQUEsZ0JBQU0sRUFBQyxJQUFBLHVCQUFXLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hHLElBQUEsZ0JBQU0sRUFBQyxJQUFBLHVCQUFXLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN0RyxJQUFBLGdCQUFNLEVBQUMsSUFBQSx1QkFBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkcsSUFBQSxnQkFBTSxFQUFDLElBQUEsdUJBQVcsRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JHLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBQSxZQUFFLEVBQUMsMEVBQTBFLEVBQUUsR0FBRyxFQUFFO1FBQ2xGLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVcsRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDckQsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEQsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsV0FBVztRQUMvRCxJQUFBLGdCQUFNLEVBQUMsSUFBQSx1QkFBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUcsTUFBTSxDQUFDLEdBQUcsSUFBQSx1QkFBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyRixJQUFBLGdCQUFNLEVBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const globals_1 = require("@jest/globals");
|
|
4
|
+
const define_1 = require("../define");
|
|
5
|
+
(0, globals_1.describe)("defineIntegration", () => {
|
|
6
|
+
const d = (0, define_1.defineIntegration)({
|
|
7
|
+
module: "payment",
|
|
8
|
+
displayName: "demo.name",
|
|
9
|
+
options: {
|
|
10
|
+
terminalKey: { type: "string", required: true, minLength: 1, label: "l" },
|
|
11
|
+
capture: { type: "boolean", default: true, label: "l" },
|
|
12
|
+
ffd: { type: "enum", values: ["1.2", "1.05"], label: "l" },
|
|
13
|
+
},
|
|
14
|
+
sections: [
|
|
15
|
+
{ id: "creds", title: "t", options: ["terminalKey"] },
|
|
16
|
+
{ id: "behavior", title: "t", options: ["capture", "ffd"] },
|
|
17
|
+
],
|
|
18
|
+
});
|
|
19
|
+
(0, globals_1.it)("composes an optionsSchema from every option, applying defaults", () => {
|
|
20
|
+
const r = d.optionsSchema.safeParse({ terminalKey: "x" });
|
|
21
|
+
(0, globals_1.expect)(r.success).toBe(true);
|
|
22
|
+
if (r.success)
|
|
23
|
+
(0, globals_1.expect)(r.data.capture).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
(0, globals_1.it)("optionsSchema strips unknown keys", () => {
|
|
26
|
+
const r = d.optionsSchema.safeParse({ terminalKey: "x", bogus: 1 });
|
|
27
|
+
(0, globals_1.expect)(r.success && "bogus" in r.data).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
(0, globals_1.it)("keeps the options catalog on the descriptor", () => {
|
|
30
|
+
(0, globals_1.expect)(Object.keys(d.options)).toEqual(["terminalKey", "capture", "ffd"]);
|
|
31
|
+
});
|
|
32
|
+
(0, globals_1.it)("throws when a section references an unknown option id", () => {
|
|
33
|
+
(0, globals_1.expect)(() => (0, define_1.defineIntegration)({
|
|
34
|
+
module: "payment",
|
|
35
|
+
displayName: "demo.name",
|
|
36
|
+
options: { a: { type: "string", label: "l" } },
|
|
37
|
+
sections: [{ id: "s", title: "t", options: ["a", "missing"] }],
|
|
38
|
+
})).toThrow(/missing/);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLnVuaXQuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uL2Rlc2NyaXB0b3IvX190ZXN0c19fL2RlZmluZS51bml0LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQ0FBb0Q7QUFDcEQsc0NBQTZDO0FBRTdDLElBQUEsa0JBQVEsRUFBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBQSwwQkFBaUIsRUFBQztRQUMxQixNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsV0FBVztRQUN4QixPQUFPLEVBQUU7WUFDUCxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ3pFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7U0FDM0Q7UUFDRCxRQUFRLEVBQUU7WUFDUixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNyRCxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7U0FDNUQ7S0FDRixDQUFDLENBQUE7SUFFRixJQUFBLFlBQUUsRUFBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7UUFDeEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxJQUFBLGdCQUFNLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsQ0FBQyxPQUFPO1lBQUUsSUFBQSxnQkFBTSxFQUFFLENBQUMsQ0FBQyxJQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNELENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBQSxZQUFFLEVBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNuRSxJQUFBLGdCQUFNLEVBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLElBQUssQ0FBQyxDQUFDLElBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3RCxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUEsWUFBRSxFQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDM0UsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFBLFlBQUUsRUFBQyx1REFBdUQsRUFBRSxHQUFHLEVBQUU7UUFDL0QsSUFBQSxnQkFBTSxFQUFDLEdBQUcsRUFBRSxDQUNWLElBQUEsMEJBQWlCLEVBQUM7WUFDaEIsTUFBTSxFQUFFLFNBQVM7WUFDakIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDOUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUNILENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|