@gorgo/medusa-integration 0.2.1 → 0.3.0-beta.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/modules/integration/descriptor/define.d.ts +2 -0
- package/.medusa/server/src/modules/integration/descriptor/define.js +1 -1
- package/.medusa/server/src/modules/integration/index.js +2 -2
- package/.medusa/server/src/modules/integration/loaders/__tests__/check-licenses.unit.spec.d.ts +1 -0
- package/.medusa/server/src/modules/integration/loaders/__tests__/check-licenses.unit.spec.js +100 -0
- package/.medusa/server/src/modules/integration/loaders/check-licenses.d.ts +4 -0
- package/.medusa/server/src/modules/integration/loaders/check-licenses.js +56 -0
- package/.medusa/server/src/modules/integration/loaders/index.d.ts +1 -0
- package/.medusa/server/src/modules/integration/loaders/index.js +4 -2
- package/.medusa/server/src/modules/integration/types/index.d.ts +2 -0
- package/package.json +1 -1
|
@@ -32,6 +32,8 @@ type DescriptorBase = {
|
|
|
32
32
|
docsUrl?: string;
|
|
33
33
|
supportsMultipleInstances?: boolean;
|
|
34
34
|
preferredLayoutId?: IntegrationLayouts;
|
|
35
|
+
/** Opt in to the license check run by the module's `checkLicenses` loader. */
|
|
36
|
+
requiresLicense?: boolean;
|
|
35
37
|
};
|
|
36
38
|
type CrossSectionRules = {
|
|
37
39
|
/**
|
|
@@ -40,4 +40,4 @@ function defineIntegration(input) {
|
|
|
40
40
|
const optionsSchema = zod_1.z.object(shape);
|
|
41
41
|
return { ...input, optionsSchema };
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vZGVzY3JpcHRvci9kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEVBLDhDQXdDQztBQWxIRCw0Q0FBc0M7QUFNN0Isa0ZBTkEsT0FBQyxPQU1BO0FBSFYsMkNBQXlDO0FBK0R6Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLEtBTUc7SUFRSCxnRUFBZ0U7SUFDaEUsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxPQUFPLENBQUMsRUFBRSxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUM5RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCwyRkFBMkY7SUFDM0YsMkZBQTJGO0lBQzNGLGtDQUFrQztJQUNsQyxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUFFLFNBQVE7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQ3JFLHdDQUF3QyxDQUMzQyxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFBO0lBQzNDLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBQSx1QkFBVyxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25GLE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFzQyxDQUFBO0lBQzFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQTtBQUNwQyxDQUFDIn0=
|
|
@@ -10,6 +10,6 @@ const loaders_1 = require("./loaders");
|
|
|
10
10
|
exports.INTEGRATION_MODULE = "integration";
|
|
11
11
|
exports.default = (0, utils_1.Module)(exports.INTEGRATION_MODULE, {
|
|
12
12
|
service: integration_module_1.default,
|
|
13
|
-
loaders: [loaders_1.loadProviders],
|
|
13
|
+
loaders: [loaders_1.loadProviders, loaders_1.checkLicenses],
|
|
14
14
|
});
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsdUZBQW9FO0FBQ3BFLHVDQUF3RDtBQUUzQyxRQUFBLGtCQUFrQixHQUFHLGFBQWEsQ0FBQTtBQUUvQyxrQkFBZSxJQUFBLGNBQU0sRUFBQywwQkFBa0IsRUFBRTtJQUN4QyxPQUFPLEVBQUUsNEJBQXdCO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLHVCQUFhLEVBQUUsdUJBQWEsQ0FBQztDQUN4QyxDQUFDLENBQUEifQ==
|
package/.medusa/server/src/modules/integration/loaders/__tests__/check-licenses.unit.spec.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const globals_1 = require("@jest/globals");
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
const track = globals_1.jest.fn();
|
|
6
|
+
globals_1.jest.mock("@gorgo/telemetry", () => ({
|
|
7
|
+
createTelemetryClient: () => ({ track }),
|
|
8
|
+
}));
|
|
9
|
+
const reportLicense = globals_1.jest.fn(() => true);
|
|
10
|
+
function makeContainer(descriptors, packageMeta, backendUrl) {
|
|
11
|
+
const registrations = {};
|
|
12
|
+
for (const key of Object.keys(descriptors))
|
|
13
|
+
registrations[key] = true;
|
|
14
|
+
registrations.somethingElse = true;
|
|
15
|
+
return {
|
|
16
|
+
registrations,
|
|
17
|
+
resolve(key) {
|
|
18
|
+
if (key === types_1.INTEGRATION_PACKAGE_META_KEY)
|
|
19
|
+
return packageMeta;
|
|
20
|
+
if (key === "configModule")
|
|
21
|
+
return { admin: { backendUrl } };
|
|
22
|
+
if (descriptors[key])
|
|
23
|
+
return { getDescriptor: () => descriptors[key] };
|
|
24
|
+
throw new Error(`not registered: ${key}`);
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async function run(container, options = {}) {
|
|
29
|
+
const loader = require("../check-licenses").default;
|
|
30
|
+
await loader({ container, options });
|
|
31
|
+
}
|
|
32
|
+
(0, globals_1.describe)("checkLicenses loader", () => {
|
|
33
|
+
(0, globals_1.beforeEach)(() => {
|
|
34
|
+
globals_1.jest.resetModules();
|
|
35
|
+
track.mockClear();
|
|
36
|
+
reportLicense.mockClear();
|
|
37
|
+
delete process.env.GORGO_LICENSE;
|
|
38
|
+
globals_1.jest.doMock("@gorgo-store/license", () => ({ reportLicense }), { virtual: true });
|
|
39
|
+
});
|
|
40
|
+
(0, globals_1.it)("does nothing when the verifier package is not installed", async () => {
|
|
41
|
+
globals_1.jest.dontMock("@gorgo-store/license");
|
|
42
|
+
globals_1.jest.doMock("@gorgo-store/license", () => {
|
|
43
|
+
throw new Error("Cannot find module");
|
|
44
|
+
}, { virtual: true });
|
|
45
|
+
const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}a`]: { identifier: "a", requiresLicense: true } }, { a: { name: "@gorgo-store/a" } });
|
|
46
|
+
await (0, globals_1.expect)(run(container)).resolves.toBeUndefined();
|
|
47
|
+
(0, globals_1.expect)(reportLicense).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
(0, globals_1.it)("skips providers that do not opt in", async () => {
|
|
50
|
+
const container = makeContainer({
|
|
51
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}free`]: { identifier: "free" },
|
|
52
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}paid`]: { identifier: "paid", requiresLicense: true },
|
|
53
|
+
}, { free: { name: "@gorgo/free" }, paid: { name: "@gorgo-store/paid" } });
|
|
54
|
+
await run(container);
|
|
55
|
+
(0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(1);
|
|
56
|
+
(0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({
|
|
57
|
+
packageName: "@gorgo-store/paid",
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
(0, globals_1.it)("checks a package once even with several provider instances", async () => {
|
|
61
|
+
const container = makeContainer({
|
|
62
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}p_one`]: { identifier: "p", requiresLicense: true },
|
|
63
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}p_two`]: { identifier: "p", requiresLicense: true },
|
|
64
|
+
}, { p: { name: "@gorgo-store/p" } });
|
|
65
|
+
await run(container);
|
|
66
|
+
(0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(1);
|
|
67
|
+
});
|
|
68
|
+
(0, globals_1.it)("prefers options.licenses over GORGO_LICENSE", async () => {
|
|
69
|
+
process.env.GORGO_LICENSE = "from-env";
|
|
70
|
+
const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: "@gorgo-store/p" } }, "https://shop.example.com");
|
|
71
|
+
await run(container, { licenses: { "@gorgo-store/p": "from-options" } });
|
|
72
|
+
(0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({
|
|
73
|
+
license: "from-options",
|
|
74
|
+
backendUrl: "https://shop.example.com",
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
(0, globals_1.it)("falls back to GORGO_LICENSE", async () => {
|
|
78
|
+
process.env.GORGO_LICENSE = "from-env";
|
|
79
|
+
const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: "@gorgo-store/p" } });
|
|
80
|
+
await run(container);
|
|
81
|
+
(0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({ license: "from-env" });
|
|
82
|
+
});
|
|
83
|
+
(0, globals_1.it)("skips a provider whose package name cannot be resolved", async () => {
|
|
84
|
+
const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: null } });
|
|
85
|
+
await run(container);
|
|
86
|
+
(0, globals_1.expect)(reportLicense).not.toHaveBeenCalled();
|
|
87
|
+
});
|
|
88
|
+
(0, globals_1.it)("keeps going when the verifier throws", async () => {
|
|
89
|
+
reportLicense.mockImplementationOnce(() => {
|
|
90
|
+
throw new Error("boom");
|
|
91
|
+
});
|
|
92
|
+
const container = makeContainer({
|
|
93
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}a`]: { identifier: "a", requiresLicense: true },
|
|
94
|
+
[`${types_1.IntegrationProviderRegistrationPrefix}b`]: { identifier: "b", requiresLicense: true },
|
|
95
|
+
}, { a: { name: "@gorgo-store/a" }, b: { name: "@gorgo-store/b" } });
|
|
96
|
+
await (0, globals_1.expect)(run(container)).resolves.toBeUndefined();
|
|
97
|
+
(0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(2);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stbGljZW5zZXMudW5pdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vbG9hZGVycy9fX3Rlc3RzX18vY2hlY2stbGljZW5zZXMudW5pdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXNFO0FBQ3RFLHVDQUdvQjtBQUVwQixNQUFNLEtBQUssR0FBRyxjQUFJLENBQUMsRUFBRSxFQUFFLENBQUE7QUFDdkIsY0FBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBQUMsQ0FBQTtBQUdILE1BQU0sYUFBYSxHQUFHLGNBQUksQ0FBQyxFQUFFLENBQWtCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBSTFELFNBQVMsYUFBYSxDQUNwQixXQUF1QyxFQUN2QyxXQUFvRCxFQUNwRCxVQUFtQjtJQUVuQixNQUFNLGFBQWEsR0FBNEIsRUFBRSxDQUFBO0lBQ2pELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0lBQ3JFLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO0lBRWxDLE9BQU87UUFDTCxhQUFhO1FBQ2IsT0FBTyxDQUFDLEdBQVc7WUFDakIsSUFBSSxHQUFHLEtBQUssb0NBQTRCO2dCQUFFLE9BQU8sV0FBVyxDQUFBO1lBQzVELElBQUksR0FBRyxLQUFLLGNBQWM7Z0JBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUE7WUFDNUQsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8s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
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const telemetry_1 = require("@gorgo/telemetry");
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const VERIFIER_PACKAGE = "@gorgo-store/license";
|
|
6
|
+
function safeResolve(container, key) {
|
|
7
|
+
try {
|
|
8
|
+
return container.resolve(key);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function loadVerifier() {
|
|
15
|
+
try {
|
|
16
|
+
const mod = require(VERIFIER_PACKAGE);
|
|
17
|
+
const fn = (mod?.reportLicense ?? mod?.default?.reportLicense);
|
|
18
|
+
return typeof fn === "function" ? fn : null;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = async ({ container, options, }) => {
|
|
25
|
+
const reportLicense = loadVerifier();
|
|
26
|
+
if (!reportLicense)
|
|
27
|
+
return;
|
|
28
|
+
const packageMeta = safeResolve(container, types_1.INTEGRATION_PACKAGE_META_KEY) ?? {};
|
|
29
|
+
const backendUrl = safeResolve(container, "configModule")?.admin?.backendUrl;
|
|
30
|
+
const licenses = options?.licenses ?? {};
|
|
31
|
+
const registrations = container.registrations ?? {};
|
|
32
|
+
const keys = Object.keys(registrations).filter((key) => key.startsWith(types_1.IntegrationProviderRegistrationPrefix));
|
|
33
|
+
const telemetry = (0, telemetry_1.createTelemetryClient)({ packageDir: __dirname });
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
for (const key of keys) {
|
|
36
|
+
const descriptor = safeResolve(container, key)?.getDescriptor?.();
|
|
37
|
+
if (!descriptor?.requiresLicense)
|
|
38
|
+
continue;
|
|
39
|
+
const packageName = packageMeta[descriptor.identifier]?.name;
|
|
40
|
+
if (!packageName || seen.has(packageName))
|
|
41
|
+
continue;
|
|
42
|
+
seen.add(packageName);
|
|
43
|
+
try {
|
|
44
|
+
reportLicense({
|
|
45
|
+
license: licenses[packageName] ?? process.env.GORGO_LICENSE,
|
|
46
|
+
backendUrl,
|
|
47
|
+
packageName,
|
|
48
|
+
track: (event, props) => telemetry.track(event, props),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stbGljZW5zZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9sb2FkZXJzL2NoZWNrLWxpY2Vuc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsZ0RBQXdEO0FBQ3hELG9DQUdpQjtBQUdqQixNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFBO0FBUy9DLFNBQVMsV0FBVyxDQUFDLFNBQWMsRUFBRSxHQUFXO0lBQzlDLElBQUksQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFlBQVk7SUFDbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFZLENBQUE7UUFDekUsT0FBTyxPQUFPLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFFLEVBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNoRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVELGtCQUFlLEtBQUssRUFBRSxFQUNwQixTQUFTLEVBQ1QsT0FBTyxHQUNpQyxFQUFpQixFQUFFO0lBQzNELE1BQU0sYUFBYSxHQUFHLFlBQVksRUFBRSxDQUFBO0lBQ3BDLElBQUksQ0FBQyxhQUFhO1FBQUUsT0FBTTtJQUUxQixNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsU0FBUyxFQUFFLG9DQUE0QixDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQTtJQUM1RSxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUV4QyxNQUFNLGFBQWEsR0FBSSxTQUFpQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUE7SUFDNUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNyRCxHQUFHLENBQUMsVUFBVSxDQUFDLDZDQUFxQyxDQUFDLENBQ3RELENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFBLGlDQUFxQixFQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUU5QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQTtRQUNqRSxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWU7WUFBRSxTQUFRO1FBRTFDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFBO1FBQzVELElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFBRSxTQUFRO1FBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFckIsSUFBSSxDQUFDO1lBQ0gsYUFBYSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhO2dCQUMzRCxVQUFVO2dCQUNWLFdBQVc7Z0JBQ1gsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO2FBQ3ZELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxTQUFRO1FBQ1YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUEifQ==
|
|
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.loadProviders = void 0;
|
|
6
|
+
exports.checkLicenses = exports.loadProviders = void 0;
|
|
7
7
|
var load_providers_1 = require("./load-providers");
|
|
8
8
|
Object.defineProperty(exports, "loadProviders", { enumerable: true, get: function () { return __importDefault(load_providers_1).default; } });
|
|
9
|
-
|
|
9
|
+
var check_licenses_1 = require("./check-licenses");
|
|
10
|
+
Object.defineProperty(exports, "checkLicenses", { enumerable: true, get: function () { return __importDefault(check_licenses_1).default; } });
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9sb2FkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUEyRDtBQUFsRCxnSUFBQSxPQUFPLE9BQWlCO0FBQ2pDLG1EQUEyRDtBQUFsRCxnSUFBQSxPQUFPLE9BQWlCIn0=
|
|
@@ -21,4 +21,6 @@ export type IntegrationModuleOptions = {
|
|
|
21
21
|
encryptionKey?: string;
|
|
22
22
|
/** Integration-providers, each `{ resolve, id?, options? }` — like payment/fulfillment. */
|
|
23
23
|
providers?: ModuleProvider[];
|
|
24
|
+
/** Per-package license keys, keyed by npm package name. Falls back to `GORGO_LICENSE`. */
|
|
25
|
+
licenses?: Record<string, string>;
|
|
24
26
|
};
|