@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.
@@ -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,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,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,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==
@@ -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.1",
4
4
  "description": "Integration module for Medusa",
5
5
  "author": {
6
6
  "name": "Gorgo",