@gorgo/medusa-integration 0.2.1 → 0.3.0-beta.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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vZGVzY3JpcHRvci9kZWZpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd0VBLDhDQXdDQztBQWhIRCw0Q0FBc0M7QUFNN0Isa0ZBTkEsT0FBQyxPQU1BO0FBSFYsMkNBQXlDO0FBNkR6Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLEtBTUc7SUFRSCxnRUFBZ0U7SUFDaEUsS0FBSyxNQUFNLE9BQU8sSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxPQUFPLENBQUMsRUFBRSxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUM5RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCwyRkFBMkY7SUFDM0YsMkZBQTJGO0lBQzNGLGtDQUFrQztJQUNsQyxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUFFLFNBQVE7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQ3JFLHdDQUF3QyxDQUMzQyxDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLEtBQUssR0FBOEIsRUFBRSxDQUFBO0lBQzNDLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBQSx1QkFBVyxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25GLE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFzQyxDQUFBO0lBQzFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQTtBQUNwQyxDQUFDIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsdUZBQW9FO0FBQ3BFLHVDQUF5QztBQUU1QixRQUFBLGtCQUFrQixHQUFHLGFBQWEsQ0FBQTtBQUUvQyxrQkFBZSxJQUFBLGNBQU0sRUFBQywwQkFBa0IsRUFBRTtJQUN4QyxPQUFPLEVBQUUsNEJBQXdCO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLHVCQUFhLENBQUM7Q0FDekIsQ0FBQyxDQUFBIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsdUZBQW9FO0FBQ3BFLHVDQUF3RDtBQUUzQyxRQUFBLGtCQUFrQixHQUFHLGFBQWEsQ0FBQTtBQUUvQyxrQkFBZSxJQUFBLGNBQU0sRUFBQywwQkFBa0IsRUFBRTtJQUN4QyxPQUFPLEVBQUUsNEJBQXdCO0lBQ2pDLE9BQU8sRUFBRSxDQUFDLHVCQUFhLEVBQUUsdUJBQWEsQ0FBQztDQUN4QyxDQUFDLENBQUEifQ==
@@ -0,0 +1,103 @@
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 {
24
+ descriptor: descriptors[key],
25
+ getIdentifier: () => descriptors[key].identifier,
26
+ };
27
+ throw new Error(`not registered: ${key}`);
28
+ },
29
+ };
30
+ }
31
+ async function run(container, options = {}) {
32
+ const loader = require("../check-licenses").default;
33
+ await loader({ container, options });
34
+ }
35
+ (0, globals_1.describe)("checkLicenses loader", () => {
36
+ (0, globals_1.beforeEach)(() => {
37
+ globals_1.jest.resetModules();
38
+ track.mockClear();
39
+ reportLicense.mockClear();
40
+ delete process.env.GORGO_LICENSE;
41
+ globals_1.jest.doMock("@gorgo-store/license", () => ({ reportLicense }), { virtual: true });
42
+ });
43
+ (0, globals_1.it)("does nothing when the verifier package is not installed", async () => {
44
+ globals_1.jest.dontMock("@gorgo-store/license");
45
+ globals_1.jest.doMock("@gorgo-store/license", () => {
46
+ throw new Error("Cannot find module");
47
+ }, { virtual: true });
48
+ const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}a`]: { identifier: "a", requiresLicense: true } }, { a: { name: "@gorgo-store/a" } });
49
+ await (0, globals_1.expect)(run(container)).resolves.toBeUndefined();
50
+ (0, globals_1.expect)(reportLicense).not.toHaveBeenCalled();
51
+ });
52
+ (0, globals_1.it)("skips providers that do not opt in", async () => {
53
+ const container = makeContainer({
54
+ [`${types_1.IntegrationProviderRegistrationPrefix}free`]: { identifier: "free" },
55
+ [`${types_1.IntegrationProviderRegistrationPrefix}paid`]: { identifier: "paid", requiresLicense: true },
56
+ }, { free: { name: "@gorgo/free" }, paid: { name: "@gorgo-store/paid" } });
57
+ await run(container);
58
+ (0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(1);
59
+ (0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({
60
+ packageName: "@gorgo-store/paid",
61
+ });
62
+ });
63
+ (0, globals_1.it)("checks a package once even with several provider instances", async () => {
64
+ const container = makeContainer({
65
+ [`${types_1.IntegrationProviderRegistrationPrefix}p_one`]: { identifier: "p", requiresLicense: true },
66
+ [`${types_1.IntegrationProviderRegistrationPrefix}p_two`]: { identifier: "p", requiresLicense: true },
67
+ }, { p: { name: "@gorgo-store/p" } });
68
+ await run(container);
69
+ (0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(1);
70
+ });
71
+ (0, globals_1.it)("prefers options.licenses over GORGO_LICENSE", async () => {
72
+ process.env.GORGO_LICENSE = "from-env";
73
+ const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: "@gorgo-store/p" } }, "https://shop.example.com");
74
+ await run(container, { licenses: { "@gorgo-store/p": "from-options" } });
75
+ (0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({
76
+ license: "from-options",
77
+ backendUrl: "https://shop.example.com",
78
+ });
79
+ });
80
+ (0, globals_1.it)("falls back to GORGO_LICENSE", async () => {
81
+ process.env.GORGO_LICENSE = "from-env";
82
+ const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: "@gorgo-store/p" } });
83
+ await run(container);
84
+ (0, globals_1.expect)(reportLicense.mock.calls[0]?.[0]).toMatchObject({ license: "from-env" });
85
+ });
86
+ (0, globals_1.it)("skips a provider whose package name cannot be resolved", async () => {
87
+ const container = makeContainer({ [`${types_1.IntegrationProviderRegistrationPrefix}p`]: { identifier: "p", requiresLicense: true } }, { p: { name: null } });
88
+ await run(container);
89
+ (0, globals_1.expect)(reportLicense).not.toHaveBeenCalled();
90
+ });
91
+ (0, globals_1.it)("keeps going when the verifier throws", async () => {
92
+ reportLicense.mockImplementationOnce(() => {
93
+ throw new Error("boom");
94
+ });
95
+ const container = makeContainer({
96
+ [`${types_1.IntegrationProviderRegistrationPrefix}a`]: { identifier: "a", requiresLicense: true },
97
+ [`${types_1.IntegrationProviderRegistrationPrefix}b`]: { identifier: "b", requiresLicense: true },
98
+ }, { a: { name: "@gorgo-store/a" }, b: { name: "@gorgo-store/b" } });
99
+ await (0, globals_1.expect)(run(container)).resolves.toBeUndefined();
100
+ (0, globals_1.expect)(reportLicense).toHaveBeenCalledTimes(2);
101
+ });
102
+ });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stbGljZW5zZXMudW5pdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24vbG9hZGVycy9fX3Rlc3RzX18vY2hlY2stbGljZW5zZXMudW5pdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXNFO0FBQ3RFLHVDQUdvQjtBQUVwQixNQUFNLEtBQUssR0FBRyxjQUFJLENBQUMsRUFBRSxFQUFFLENBQUE7QUFDdkIsY0FBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBQUMsQ0FBQTtBQUdILE1BQU0sYUFBYSxHQUFHLGNBQUksQ0FBQyxFQUFFLENBQWtCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBSTFELFNBQVMsYUFBYSxDQUNwQixXQUF1QyxFQUN2QyxXQUFvRCxFQUNwRCxVQUFtQjtJQUVuQixNQUFNLGFBQWEsR0FBNEIsRUFBRSxDQUFBO0lBQ2pELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0lBQ3JFLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO0lBRWxDLE9BQU87UUFDTCxhQUFhO1FBQ2IsT0FBTyxDQUFDLEdBQVc7WUFDakIsSUFBSSxHQUFHLEtBQUssb0NBQTRCO2dCQUFFLE9BQU8sV0FBVyxDQUFBO1lBQzVELElBQUksR0FBRyxLQUFLLGNBQWM7Z0JBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUE7WUFDNUQsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNsQixPQUFP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
@@ -0,0 +1,4 @@
1
+ import type { LoaderOptions } from "@medusajs/framework/types";
2
+ import type { IntegrationModuleOptions } from "../types";
3
+ declare const _default: ({ container, options, }: LoaderOptions<IntegrationModuleOptions>) => Promise<void>;
4
+ export default _default;
@@ -0,0 +1,58 @@
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 provider = safeResolve(container, key);
37
+ const descriptor = provider?.descriptor;
38
+ if (!descriptor?.requiresLicense)
39
+ continue;
40
+ const identifier = provider?.getIdentifier?.() ?? descriptor.identifier;
41
+ const packageName = identifier ? packageMeta[identifier]?.name : undefined;
42
+ if (!packageName || seen.has(packageName))
43
+ continue;
44
+ seen.add(packageName);
45
+ try {
46
+ reportLicense({
47
+ license: licenses[packageName] ?? process.env.GORGO_LICENSE,
48
+ backendUrl,
49
+ packageName,
50
+ track: (event, props) => telemetry.track(event, props),
51
+ });
52
+ }
53
+ catch {
54
+ continue;
55
+ }
56
+ }
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stbGljZW5zZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9sb2FkZXJzL2NoZWNrLWxpY2Vuc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsZ0RBQXdEO0FBQ3hELG9DQUdpQjtBQUdqQixNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFBO0FBUy9DLFNBQVMsV0FBVyxDQUFDLFNBQWMsRUFBRSxHQUFXO0lBQzlDLElBQUksQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFlBQVk7SUFDbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFZLENBQUE7UUFDekUsT0FBTyxPQUFPLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFFLEVBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNoRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVELGtCQUFlLEtBQUssRUFBRSxFQUNwQixTQUFTLEVBQ1QsT0FBTyxHQUNpQyxFQUFpQixFQUFFO0lBQzNELE1BQU0sYUFBYSxHQUFHLFlBQVksRUFBRSxDQUFBO0lBQ3BDLElBQUksQ0FBQyxhQUFhO1FBQUUsT0FBTTtJQUUxQixNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsU0FBUyxFQUFFLG9DQUE0QixDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQTtJQUM1RSxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUV4QyxNQUFNLGFBQWEsR0FBSSxTQUFpQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUE7SUFDNUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNyRCxHQUFHLENBQUMsVUFBVSxDQUFDLDZDQUFxQyxDQUFDLENBQ3RELENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFBLGlDQUFxQixFQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDbEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUU5QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDNUMsTUFBTSxVQUFVLEdBQUcsUUFBUSxFQUFFLFVBQVUsQ0FBQTtRQUN2QyxJQUFJLENBQUMsVUFBVSxFQUFFLGVBQWU7WUFBRSxTQUFRO1FBRTFDLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxhQUFhLEVBQUUsRUFBRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUE7UUFDdkUsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDMUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUFFLFNBQVE7UUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUVyQixJQUFJLENBQUM7WUFDSCxhQUFhLENBQUM7Z0JBQ1osT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWE7Z0JBQzNELFVBQVU7Z0JBQ1YsV0FBVztnQkFDWCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7YUFDdkQsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLFNBQVE7UUFDVixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQSJ9
@@ -1 +1,2 @@
1
1
  export { default as loadProviders } from "./load-providers";
2
+ export { default as checkLicenses } from "./check-licenses";
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi9sb2FkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUEyRDtBQUFsRCxnSUFBQSxPQUFPLE9BQWlCIn0=
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gorgo/medusa-integration",
3
- "version": "0.2.1",
3
+ "version": "0.3.0-beta.2",
4
4
  "description": "Integration module for Medusa",
5
5
  "author": {
6
6
  "name": "Gorgo",