customer-registration 0.0.122 → 0.0.124

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.
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const framework_1 = require("@medusajs/framework");
3
4
  const http_1 = require("@medusajs/framework/http");
5
+ const query_config_1 = require("@medusajs/medusa/api/store/customers/query-config");
6
+ const validators_1 = require("@medusajs/medusa/api/store/customers/validators");
4
7
  const guard_account_deletion_1 = require("./middlewares/guard-account-deletion");
5
8
  const validate_customer_registration_1 = require("./middlewares/validate-customer-registration");
6
9
  const ip_rate_limit_1 = require("./middlewares/ip-rate-limit");
10
+ const storeCustomerMeQueryTransform = (0, framework_1.validateAndTransformQuery)(validators_1.StoreGetCustomerParams, query_config_1.retrieveTransformQueryConfig);
7
11
  exports.default = (0, http_1.defineMiddlewares)({
8
12
  routes: [
9
13
  {
@@ -19,6 +23,16 @@ exports.default = (0, http_1.defineMiddlewares)({
19
23
  method: ["POST"],
20
24
  middlewares: [validate_customer_registration_1.validateCustomerRegistration],
21
25
  },
26
+ {
27
+ matcher: "/store/customers/me",
28
+ method: ["GET"],
29
+ middlewares: [storeCustomerMeQueryTransform],
30
+ },
31
+ {
32
+ matcher: "/store/customers/me",
33
+ method: ["PATCH"],
34
+ middlewares: [storeCustomerMeQueryTransform],
35
+ },
22
36
  {
23
37
  // Unauthenticated endpoint — rate-limit per IP to prevent OTP spam
24
38
  matcher: "/store/customers/account-deletion/cancel-request",
@@ -27,4 +41,4 @@ exports.default = (0, http_1.defineMiddlewares)({
27
41
  },
28
42
  ],
29
43
  });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTREO0FBQzVELGlGQUEyRTtBQUMzRSxpR0FBMkY7QUFDM0YsK0RBQXlEO0FBRXpELGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLFdBQVcsRUFBRSxDQUFDLDZDQUFvQixDQUFDO1NBQ3BDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsVUFBVTtZQUNuQixXQUFXLEVBQUUsQ0FBQyw2Q0FBb0IsQ0FBQztTQUNwQztRQUNEO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDaEIsV0FBVyxFQUFFLENBQUMsNkRBQTRCLENBQUM7U0FDNUM7UUFDRDtZQUNFLG1FQUFtRTtZQUNuRSxPQUFPLEVBQUUsa0RBQWtEO1lBQzNELE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLDJCQUFXLEVBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0Y7Q0FDRixDQUFDLENBQUEifQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQStEO0FBQy9ELG1EQUE0RDtBQUM1RCxvRkFBZ0c7QUFDaEcsZ0ZBQXdGO0FBQ3hGLGlGQUEyRTtBQUMzRSxpR0FBMkY7QUFDM0YsK0RBQXlEO0FBRXpELE1BQU0sNkJBQTZCLEdBQUcsSUFBQSxxQ0FBeUIsRUFDN0QsbUNBQXNCLEVBQ3RCLDJDQUE0QixDQUM3QixDQUFBO0FBRUQsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsV0FBVyxFQUFFLENBQUMsNkNBQW9CLENBQUM7U0FDcEM7UUFDRDtZQUNFLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFdBQVcsRUFBRSxDQUFDLDZDQUFvQixDQUFDO1NBQ3BDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNoQixXQUFXLEVBQUUsQ0FBQyw2REFBNEIsQ0FBQztTQUM1QztRQUNEO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDZixXQUFXLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztTQUM3QztRQUNEO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsNkJBQTZCLENBQUM7U0FDN0M7UUFDRDtZQUNFLG1FQUFtRTtZQUNuRSxPQUFPLEVBQUUsa0RBQWtEO1lBQzNELE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLDJCQUFXLEVBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3pEO0tBQ0Y7Q0FDRixDQUFDLENBQUEifQ==
@@ -2,7 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PATCH = exports.GET = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
+ const helpers_1 = require("@medusajs/medusa/api/store/customers/helpers");
6
+ const query_config_1 = require("@medusajs/medusa/api/store/customers/query-config");
5
7
  const otp_verification_1 = require("../../../../modules/otp-verification");
8
+ function refetchFieldsForMe(req) {
9
+ const fields = req.queryConfig?.fields;
10
+ if (fields && fields.length > 0) {
11
+ return fields;
12
+ }
13
+ return [...query_config_1.retrieveTransformQueryConfig.defaults];
14
+ }
6
15
  /**
7
16
  * Override of Medusa's built-in GET /store/customers/me and PATCH /store/customers/me.
8
17
  *
@@ -16,7 +25,7 @@ const otp_verification_1 = require("../../../../modules/otp-verification");
16
25
  */
17
26
  const GET = async (req, res) => {
18
27
  const customerId = req.auth_context.actor_id;
19
- const customer = await refetchCustomer(customerId, req.scope);
28
+ const customer = await (0, helpers_1.refetchCustomer)(customerId, req.scope, refetchFieldsForMe(req));
20
29
  const payload = await withVerificationFlags(customer, customerId, req.scope);
21
30
  return res.status(200).json({ customer: payload });
22
31
  };
@@ -34,7 +43,7 @@ const PATCH = async (req, res) => {
34
43
  if (Object.keys(body).length > 0) {
35
44
  await customerService.updateCustomers(customerId, body);
36
45
  }
37
- const updated = await refetchCustomer(customerId, req.scope);
46
+ const updated = await (0, helpers_1.refetchCustomer)(customerId, req.scope, refetchFieldsForMe(req));
38
47
  const payload = await withVerificationFlags(updated, customerId, req.scope);
39
48
  return res.status(200).json({ customer: payload });
40
49
  };
@@ -51,29 +60,4 @@ async function withVerificationFlags(customer, customerId, scope) {
51
60
  phone_verified: status.phone_verified,
52
61
  };
53
62
  }
54
- /** Matches Medusa core store customer retrieve defaults (incl. linked addresses). */
55
- const STORE_CUSTOMER_ME_REFETCH_FIELDS = [
56
- "id",
57
- "email",
58
- "company_name",
59
- "first_name",
60
- "last_name",
61
- "phone",
62
- "metadata",
63
- "has_account",
64
- "deleted_at",
65
- "created_at",
66
- "updated_at",
67
- "*addresses",
68
- ];
69
- async function refetchCustomer(customerId, scope) {
70
- const remoteQuery = scope.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
71
- const queryObject = (0, utils_1.remoteQueryObjectFromString)({
72
- entryPoint: "customer",
73
- variables: { filters: { id: customerId } },
74
- fields: [...STORE_CUSTOMER_ME_REFETCH_FIELDS],
75
- });
76
- const customers = await remoteQuery(queryObject);
77
- return customers[0];
78
- }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxREFLa0M7QUFDbEMsMkVBRzZDO0FBRTdDOzs7Ozs7Ozs7O0dBVUc7QUFDSSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQStCLEVBQy9CLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdELE1BQU0sT0FBTyxHQUFHLE1BQU0scUJBQXFCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQTtBQVJZLFFBQUEsR0FBRyxPQVFmO0FBRU0sTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUN4QixHQUErQixFQUMvQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUE7SUFDNUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBNEIsQ0FBQTtJQUV4RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsbUdBQW1HLENBQ3BHLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJ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
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxxREFBZ0U7QUFDaEUsMEVBQThFO0FBQzlFLG9GQUFnRztBQUNoRywyRUFHNkM7QUFNN0MsU0FBUyxrQkFBa0IsQ0FBQyxHQUFzQjtJQUNoRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQTtJQUN0QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLDJDQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ25ELENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQXNCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx5QkFBZSxFQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDdEYsTUFBTSxPQUFPLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEQsQ0FBQyxDQUFBO0FBTFksUUFBQSxHQUFHLE9BS2Y7QUFFTSxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBc0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDekUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUE7SUFDNUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBNEIsQ0FBQTtJQUV4RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsbUdBQW1HLENBQ3BHLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLG1HQUFtRyxDQUNwRyxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF5QixlQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFbkYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLGVBQWUsQ0FBQyxlQUFlLENBQ25DLFVBQVUsRUFDVixJQUE2RCxDQUM5RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx5QkFBZSxFQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDckYsTUFBTSxPQUFPLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEQsQ0FBQyxDQUFBO0FBOUJZLFFBQUEsS0FBSyxTQThCakI7QUFFRCxLQUFLLFVBQVUscUJBQXFCLENBQ2xDLFFBQXVCLEVBQ3ZCLFVBQWtCLEVBQ2xCLEtBQXNCO0lBSXRCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUF5QiwwQ0FBdUIsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLG1DQUFtQyxDQUNqRSxLQUErQixFQUMvQixVQUFVLENBQ1gsQ0FBQTtJQUNELE9BQU87UUFDTCxHQUFHLFFBQVE7UUFDWCxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDckMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjO0tBQ3RDLENBQUE7QUFDSCxDQUFDIn0=
@@ -4,6 +4,7 @@ exports.POST = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const core_flows_1 = require("@medusajs/core-flows");
6
6
  const config_1 = require("../../../config");
7
+ const referral_link_1 = require("../../../modules/referral-link");
7
8
  const is_social_pending_customer_registration_1 = require("./shared/is-social-pending-customer-registration");
8
9
  /** Medusa / Knex raw results may use `rows` (node-pg) or `result[0]` batch shape. */
9
10
  function firstKnexRow(result) {
@@ -20,6 +21,83 @@ function firstKnexRow(result) {
20
21
  }
21
22
  return undefined;
22
23
  }
24
+ function parseReferralCodeFromQuery(query) {
25
+ if (!query || typeof query !== "object") {
26
+ return null;
27
+ }
28
+ const raw = query.referral_code;
29
+ if (Array.isArray(raw)) {
30
+ const first = raw[0];
31
+ if (typeof first === "string" && first.trim().length > 0) {
32
+ return first.trim();
33
+ }
34
+ return null;
35
+ }
36
+ if (typeof raw === "string" && raw.trim().length > 0) {
37
+ return raw.trim();
38
+ }
39
+ return null;
40
+ }
41
+ function isRecord(value) {
42
+ return typeof value === "object" && value !== null && !Array.isArray(value);
43
+ }
44
+ /**
45
+ * `referral_code` is the referrer's Medusa customer id. If the query param is set,
46
+ * the customer must exist before we create the new account (avoids orphaned customers).
47
+ */
48
+ async function assertReferralCodeReferrerExists(req) {
49
+ const referrerId = parseReferralCodeFromQuery(req.query);
50
+ if (!referrerId) {
51
+ return;
52
+ }
53
+ const customerService = req.scope.resolve(utils_1.Modules.CUSTOMER);
54
+ const referrerCustomers = await customerService.listCustomers({
55
+ id: [referrerId],
56
+ });
57
+ if (!referrerCustomers.length) {
58
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Invalid referral_code: no customer exists with this id");
59
+ }
60
+ }
61
+ /**
62
+ * When `?referral_code=` is present (referrer customer id), inserts `referral_link`
63
+ * for the newly created customer. Omits DB write when the query param is absent.
64
+ * Call {@link assertReferralCodeReferrerExists} before creating the customer when
65
+ * `referral_code` is present.
66
+ */
67
+ async function maybeCreateReferralLinkFromQuery(req, newCustomerId) {
68
+ const referrerId = parseReferralCodeFromQuery(req.query);
69
+ if (!referrerId) {
70
+ return;
71
+ }
72
+ if (referrerId === newCustomerId) {
73
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "referral_code cannot match the new customer id");
74
+ }
75
+ const referralLinkService = req.scope.resolve(referral_link_1.REFERRAL_LINK_MODULE);
76
+ const parentByLevel = { "1": referrerId };
77
+ const referrerRows = await referralLinkService.listReferralLinks({
78
+ customer_id: referrerId,
79
+ });
80
+ const referrerOwnLink = referrerRows[0];
81
+ const referrerParents = referrerOwnLink?.parent_customers_by_level;
82
+ if (isRecord(referrerParents)) {
83
+ for (const [key, val] of Object.entries(referrerParents)) {
84
+ const n = Number(key);
85
+ if (!Number.isFinite(n) || n < 1) {
86
+ continue;
87
+ }
88
+ const id = typeof val === "string" ? val.trim() : "";
89
+ if (!id) {
90
+ continue;
91
+ }
92
+ parentByLevel[String(n + 1)] = id;
93
+ }
94
+ }
95
+ await referralLinkService.createReferralLinks({
96
+ customer_id: newCustomerId,
97
+ referrer_id: referrerId,
98
+ parent_customers_by_level: parentByLevel,
99
+ });
100
+ }
23
101
  /**
24
102
  * Override of Medusa's built-in POST /store/customers.
25
103
  *
@@ -49,6 +127,7 @@ const POST = async (req, res) => {
49
127
  const phoneNormalized = customerData.phone != null && String(customerData.phone).trim() !== ""
50
128
  ? String(customerData.phone).trim()
51
129
  : "";
130
+ await assertReferralCodeReferrerExists(req);
52
131
  if (identifier === "email" || socialPending) {
53
132
  const { result } = await (0, core_flows_1.createCustomerAccountWorkflow)(req.scope).run({
54
133
  input: {
@@ -57,6 +136,7 @@ const POST = async (req, res) => {
57
136
  authIdentityId: authIdentityId ?? "",
58
137
  },
59
138
  });
139
+ await maybeCreateReferralLinkFromQuery(req, result.id);
60
140
  const customer = await refetchCustomer(result.id, req.scope);
61
141
  return res.status(200).json({ customer });
62
142
  }
@@ -77,6 +157,7 @@ const POST = async (req, res) => {
77
157
  authIdentityId: authIdentityId ?? "",
78
158
  },
79
159
  });
160
+ await maybeCreateReferralLinkFromQuery(req, result.id);
80
161
  const customer = await refetchCustomer(result.id, req.scope);
81
162
  return res.status(200).json({ customer });
82
163
  }
@@ -97,6 +178,7 @@ const POST = async (req, res) => {
97
178
  app_metadata: { customer_id: customer.id },
98
179
  });
99
180
  }
181
+ await maybeCreateReferralLinkFromQuery(req, customer.id);
100
182
  const fullCustomer = await refetchCustomer(customer.id, req.scope);
101
183
  return res.status(200).json({ customer: fullCustomer });
102
184
  };
@@ -121,4 +203,4 @@ async function refetchCustomer(customerId, scope) {
121
203
  const customers = await remoteQuery(queryObject);
122
204
  return customers[0];
123
205
  }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFLa0M7QUFDbEMscURBQW9FO0FBQ3BFLDRDQUd3QjtBQUN4Qiw4R0FBc0c7QUFFdEcscUZBQXFGO0FBQ3JGLFNBQVMsWUFBWSxDQUNuQixNQUFtQztJQUVuQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakMsSUFBSSxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxPQUFPLEtBQVUsQ0FBQTtRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLFdBQVcsR0FDZixHQUdELENBQUMsWUFBWSxDQUFBO0lBRWQsSUFBSSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLG1CQUFXLENB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
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxxREFLa0M7QUFDbEMscURBQW9FO0FBQ3BFLDRDQUd3QjtBQUN4QixrRUFBcUU7QUFFckUsOEdBQXNHO0FBRXRHLHFGQUFxRjtBQUNyRixTQUFTLFlBQVksQ0FDbkIsTUFBbUM7SUFFbkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pDLElBQUksUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0QixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEUsT0FBTyxLQUFVLENBQUE7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxLQUFjO0lBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUksS0FBaUMsQ0FBQyxhQUFhLENBQUE7SUFDNUQsSUFBSSxL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
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const vitest_1 = require("vitest");
5
+ const referral_link_1 = require("../../../../modules/referral-link");
6
+ const route_1 = require("../route");
7
+ (0, vitest_1.describe)("GET /store/my-referrals table-driven tests", () => {
8
+ const cases = [
9
+ {
10
+ title: "returns empty children when no referral links",
11
+ auth_context: { actor_id: "cus_parent", actor_type: "customer" },
12
+ links: [],
13
+ customers: [],
14
+ expectListCustomersCalls: 0,
15
+ expectedStatus: 200,
16
+ expectedJson: { children: [] },
17
+ },
18
+ {
19
+ title: "returns children merged with customer rows",
20
+ auth_context: { actor_id: "cus_parent", actor_type: "customer" },
21
+ links: [
22
+ {
23
+ id: "rl_1",
24
+ customer_id: "cus_child",
25
+ referrer_id: "cus_parent",
26
+ parent_customers_by_level: { "1": "cus_parent" },
27
+ created_at: new Date("2025-06-01T12:00:00.000Z"),
28
+ },
29
+ ],
30
+ customers: [
31
+ {
32
+ id: "cus_child",
33
+ email: "child@example.com",
34
+ first_name: "C",
35
+ last_name: "One",
36
+ phone: "+1000",
37
+ created_at: "2025-06-01T00:00:00.000Z",
38
+ },
39
+ ],
40
+ expectListCustomersCalls: 1,
41
+ expectedStatus: 200,
42
+ expectedJson: {
43
+ children: [
44
+ {
45
+ referral_link_id: "rl_1",
46
+ referred_at: "2025-06-01T12:00:00.000Z",
47
+ parent_customers_by_level: { "1": "cus_parent" },
48
+ customer: {
49
+ id: "cus_child",
50
+ email: "child@example.com",
51
+ first_name: "C",
52
+ last_name: "One",
53
+ phone: "+1000",
54
+ created_at: "2025-06-01T00:00:00.000Z",
55
+ },
56
+ },
57
+ ],
58
+ },
59
+ },
60
+ ];
61
+ vitest_1.test.each(cases)("$title", async ({ auth_context, links, customers, expectListCustomersCalls, expectedStatus, expectedJson, }) => {
62
+ const listReferralLinks = vitest_1.vi.fn().mockResolvedValue(links);
63
+ const listCustomers = vitest_1.vi.fn().mockResolvedValue(customers);
64
+ const req = {
65
+ auth_context,
66
+ scope: {
67
+ resolve: (token) => {
68
+ if (token === referral_link_1.REFERRAL_LINK_MODULE) {
69
+ return { listReferralLinks };
70
+ }
71
+ if (token === utils_1.Modules.CUSTOMER) {
72
+ return { listCustomers };
73
+ }
74
+ return undefined;
75
+ },
76
+ },
77
+ };
78
+ const status = vitest_1.vi.fn().mockReturnThis();
79
+ const json = vitest_1.vi.fn();
80
+ const res = { status, json };
81
+ await (0, route_1.GET)(req, res);
82
+ (0, vitest_1.expect)(status).toHaveBeenCalledWith(expectedStatus);
83
+ (0, vitest_1.expect)(json).toHaveBeenCalledWith(expectedJson);
84
+ (0, vitest_1.expect)(listReferralLinks).toHaveBeenCalledWith({
85
+ referrer_id: auth_context?.actor_id,
86
+ });
87
+ (0, vitest_1.expect)(listCustomers).toHaveBeenCalledTimes(expectListCustomersCalls);
88
+ if (expectListCustomersCalls > 0) {
89
+ (0, vitest_1.expect)(listCustomers).toHaveBeenCalledWith({ id: ["cus_child"] });
90
+ }
91
+ });
92
+ const authErrorCases = [
93
+ {
94
+ title: "rejects when actor_type is not customer",
95
+ auth_context: { actor_id: "usr_admin", actor_type: "user" },
96
+ wantMessage: "Unauthorized",
97
+ },
98
+ {
99
+ title: "rejects when actor_id is missing",
100
+ auth_context: { actor_type: "customer" },
101
+ wantMessage: "Unauthorized",
102
+ },
103
+ ];
104
+ vitest_1.test.each(authErrorCases)("$title", async ({ auth_context, wantMessage }) => {
105
+ const listReferralLinks = vitest_1.vi.fn();
106
+ const req = {
107
+ auth_context,
108
+ scope: {
109
+ resolve: () => ({ listReferralLinks }),
110
+ },
111
+ };
112
+ const res = {};
113
+ await (0, vitest_1.expect)((0, route_1.GET)(req, res)).rejects.toMatchObject({
114
+ type: utils_1.MedusaError.Types.UNAUTHORIZED,
115
+ message: wantMessage,
116
+ });
117
+ (0, vitest_1.expect)(listReferralLinks).not.toHaveBeenCalled();
118
+ });
119
+ });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvbXktcmVmZXJyYWxzL19fdGVzdHNfXy9yb3V0ZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EscURBQWdFO0FBQ2hFLG1DQUFtRDtBQUNuRCxxRUFBd0U7QUFDeEUsb0NBQThCO0FBMkI5QixJQUFBLGlCQUFRLEVBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO0lBQzFELE1BQU0sS0FBSyxHQUEwQjtRQUNuQztZQUNFLEtBQUssRUFBRSwrQ0FBK0M7WUFDdEQsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEVBQUU7WUFDYix3QkFBd0IsRUFBRSxDQUFDO1lBQzNCLGNBQWMsRUFBRSxHQUFHO1lBQ25CLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7U0FDL0I7UUFDRDtZQUNFLEtBQUssRUFBRSw0Q0FBNEM7WUFDbkQsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxFQUFFLEVBQUUsTUFBTTtvQkFDVixXQUFXLEVBQUUsV0FBVztvQkFDeEIsV0FBVyxFQUFFLFlBQVk7b0JBQ3pCLHlCQUF5QixFQUFFLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtvQkFDaEQsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDO2lCQUNqRDthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNUO29CQUNFLEVBQUUsRUFBRSxXQUFXO29CQUNmLEtBQUssRUFBRSxtQkFBbUI7b0JBQzFCLFVBQVUsRUFBRSxHQUFHO29CQUNmLFNBQVMsRUFBRSxLQUFLO29CQUNoQixLQUFLLEVBQUUs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
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const referral_link_1 = require("../../../modules/referral-link");
6
+ /**
7
+ * GET /store/my-referrals
8
+ *
9
+ * Returns every customer who signed up with this customer as `referrer_id`
10
+ * (`referral_link` rows for the authenticated customer).
11
+ */
12
+ const GET = async (req, res) => {
13
+ const authContext = req.auth_context;
14
+ const actorId = authContext?.actor_id;
15
+ if (!actorId || authContext?.actor_type !== "customer") {
16
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Unauthorized");
17
+ }
18
+ const referralLinkService = req.scope.resolve(referral_link_1.REFERRAL_LINK_MODULE);
19
+ const links = await referralLinkService.listReferralLinks({
20
+ referrer_id: actorId,
21
+ });
22
+ const childIds = [
23
+ ...new Set(links
24
+ .map((row) => row.customer_id)
25
+ .filter((id) => typeof id === "string" && id.length > 0)),
26
+ ];
27
+ const customerService = req.scope.resolve(utils_1.Modules.CUSTOMER);
28
+ const customers = childIds.length > 0
29
+ ? await customerService.listCustomers({ id: childIds })
30
+ : [];
31
+ const byId = new Map(customers.map((c) => [c.id, c]));
32
+ const children = links.map((link) => {
33
+ const c = byId.get(link.customer_id);
34
+ const parentLevel = link.parent_customers_by_level;
35
+ const parentParsed = parentLevel !== null &&
36
+ parentLevel !== undefined &&
37
+ typeof parentLevel === "object" &&
38
+ !Array.isArray(parentLevel)
39
+ ? parentLevel
40
+ : null;
41
+ return {
42
+ referral_link_id: link.id,
43
+ referred_at: link.created_at != null
44
+ ? typeof link.created_at === "string"
45
+ ? link.created_at
46
+ : link.created_at.toISOString()
47
+ : null,
48
+ parent_customers_by_level: parentParsed,
49
+ customer: {
50
+ id: link.customer_id,
51
+ email: c?.email ?? null,
52
+ first_name: c?.first_name ?? null,
53
+ last_name: c?.last_name ?? null,
54
+ phone: c?.phone ?? null,
55
+ created_at: c?.created_at ?? null,
56
+ },
57
+ };
58
+ });
59
+ res.status(200).json({ children });
60
+ };
61
+ exports.GET = GET;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL215LXJlZmVycmFscy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFBZ0U7QUFDaEUsa0VBQXFFO0FBc0JyRTs7Ozs7R0FLRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNoRixNQUFNLFdBQVcsR0FBSSxHQUFzQyxDQUFDLFlBQVksQ0FBQTtJQUN4RSxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3JDLElBQUksQ0FBQyxPQUFPLElBQUksV0FBVyxFQUFFLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzNDLG9DQUFvQixDQUNyQixDQUFBO0lBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUN4RCxXQUFXLEVBQUUsT0FBTztLQUNyQixDQUFDLENBQUE7SUFFRixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsSUFBSSxHQUFHLENBQ1IsS0FBSzthQUNGLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDekU7S0FDRixDQUFBO0lBRUQsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXlCLGVBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNuRixNQUFNLFNBQVMsR0FDYixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDakIsQ0FBQyxDQUFDLE1BQU0sZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRVIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFFBQVEsR0FBNEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQTtRQUNsRCxNQUFNLFlBQVksR0FDaEIsV0FBVyxLQUFLLElBQUk7WUFDcEIsV0FBVyxLQUFLLFNBQVM7WUFDekIsT0FBTyxXQUFXLEtBQUssUUFBUTtZQUMvQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxXQUF1QztZQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRVYsT0FBTztZQUNMLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pCLFdBQVcsRUFDVCxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUk7Z0JBQ3JCLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUTtvQkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVO29CQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pDLENBQUMsQ0FBQyxJQUFJO1lBQ1YseUJBQXlCLEVBQUUsWUFBWTtZQUN2QyxRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUNwQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsSUFBSSxJQUFJO2dCQUNqQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsSUFBSSxJQUFJO2dCQUMvQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsSUFBSSxJQUFJO2FBQ2xDO1NBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0FBQ3BDLENBQUMsQ0FBQTtBQTlEWSxRQUFBLEdBQUcsT0E4RGYifQ==
@@ -0,0 +1,14 @@
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.ReferralLinkModuleService = exports.REFERRAL_LINK_MODULE = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const service_1 = __importDefault(require("./service"));
9
+ exports.ReferralLinkModuleService = service_1.default;
10
+ exports.REFERRAL_LINK_MODULE = "referral_link";
11
+ exports.default = (0, utils_1.Module)(exports.REFERRAL_LINK_MODULE, {
12
+ service: service_1.default,
13
+ });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9yZWZlcnJhbC1saW5rL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFrRDtBQUNsRCx3REFBaUQ7QUFReEMsb0NBUkYsaUJBQXlCLENBUUU7QUFOckIsUUFBQSxvQkFBb0IsR0FBRyxlQUFlLENBQUE7QUFFbkQsa0JBQWUsSUFBQSxjQUFNLEVBQUMsNEJBQW9CLEVBQUU7SUFDMUMsT0FBTyxFQUFFLGlCQUF5QjtDQUNuQyxDQUFDLENBQUEifQ==
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260502100000CreateReferralLinkTable = void 0;
4
+ const migrations_1 = require("@mikro-orm/migrations");
5
+ /**
6
+ * Referral link for a referred customer (child) to their upline.
7
+ * Uses IF NOT EXISTS so the same table can be shared if both `customer-registration`
8
+ * and `medusa-referral-affiliate` register a `referral_link` module (whichever
9
+ * migration runs first creates the table; the other no-ops).
10
+ */
11
+ class Migration20260502100000CreateReferralLinkTable extends migrations_1.Migration {
12
+ async up() {
13
+ this.addSql(`
14
+ CREATE TABLE IF NOT EXISTS "referral_link" (
15
+ "id" TEXT NOT NULL,
16
+ "customer_id" TEXT NOT NULL,
17
+ "referrer_id" TEXT NOT NULL,
18
+ "parent_customers_by_level" JSONB NOT NULL DEFAULT '{}'::jsonb,
19
+ "created_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
20
+ "updated_at" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
21
+ "deleted_at" TIMESTAMP WITH TIME ZONE NULL,
22
+ CONSTRAINT "referral_link_pkey" PRIMARY KEY ("id"),
23
+ CONSTRAINT "referral_link_no_self" CHECK ("customer_id" <> "referrer_id"),
24
+ CONSTRAINT "referral_link_ids_nonempty" CHECK (
25
+ length(trim("customer_id")) > 0 AND length(trim("referrer_id")) > 0
26
+ ),
27
+ CONSTRAINT "referral_link_parent_customers_by_level_is_object_chk" CHECK (
28
+ jsonb_typeof("parent_customers_by_level") = 'object'
29
+ )
30
+ );
31
+ `);
32
+ this.addSql(`
33
+ CREATE UNIQUE INDEX IF NOT EXISTS "IDX_referral_link_customer_unique"
34
+ ON "referral_link" ("customer_id")
35
+ WHERE deleted_at IS NULL;
36
+ `);
37
+ this.addSql(`
38
+ CREATE INDEX IF NOT EXISTS "IDX_referral_link_referrer_id"
39
+ ON "referral_link" ("referrer_id")
40
+ WHERE deleted_at IS NULL;
41
+ `);
42
+ this.addSql(`
43
+ CREATE INDEX IF NOT EXISTS "IDX_referral_link_deleted_at"
44
+ ON "referral_link" ("deleted_at")
45
+ WHERE deleted_at IS NULL;
46
+ `);
47
+ }
48
+ async down() {
49
+ this.addSql(`DROP INDEX IF EXISTS "IDX_referral_link_deleted_at";`);
50
+ this.addSql(`DROP INDEX IF EXISTS "IDX_referral_link_referrer_id";`);
51
+ this.addSql(`DROP INDEX IF EXISTS "IDX_referral_link_customer_unique";`);
52
+ this.addSql(`DROP TABLE IF EXISTS "referral_link";`);
53
+ }
54
+ }
55
+ exports.Migration20260502100000CreateReferralLinkTable = Migration20260502100000CreateReferralLinkTable;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA1MDIxMDAwMDBDcmVhdGVSZWZlcnJhbExpbmtUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlZmVycmFsLWxpbmsvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI2MDUwMjEwMDAwMENyZWF0ZVJlZmVycmFsTGlua1RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFpRDtBQUVqRDs7Ozs7R0FLRztBQUNILE1BQWEsOENBQStDLFNBQVEsc0JBQVM7SUFDM0UsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FrQlgsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7OztLQUlYLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7S0FJWCxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7O0tBSVgsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzREFBc0QsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsdURBQXVELENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLDJEQUEyRCxDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO0lBQ3RELENBQUM7Q0FDRjtBQTVDRCx3R0E0Q0MifQ==
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReferralLink = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.ReferralLink = utils_1.model
6
+ .define("referral_link", {
7
+ id: utils_1.model.id().primaryKey(),
8
+ customer_id: utils_1.model.text().searchable(),
9
+ referrer_id: utils_1.model.text().searchable(),
10
+ /**
11
+ * Upline keyed by referral distance: `"1"` = direct parent (same as `referrer_id`),
12
+ * `"2"` = next upline, etc. Example: `{ "1": "cus_123", "2": "cus_456", "3": "cus_789" }`.
13
+ */
14
+ parent_customers_by_level: utils_1.model.json(),
15
+ })
16
+ .indexes([
17
+ {
18
+ name: "IDX_referral_link_customer_unique",
19
+ on: ["customer_id"],
20
+ unique: true,
21
+ where: "deleted_at IS NULL",
22
+ },
23
+ {
24
+ name: "IDX_referral_link_referrer_id",
25
+ on: ["referrer_id"],
26
+ where: "deleted_at IS NULL",
27
+ },
28
+ ]);
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJyYWwtbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlZmVycmFsLWxpbmsvbW9kZWxzL3JlZmVycmFsLWxpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRXBDLFFBQUEsWUFBWSxHQUFHLGFBQUs7S0FDOUIsTUFBTSxDQUFDLGVBQWUsRUFBRTtJQUN2QixFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUN0QyxXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUN0Qzs7O09BR0c7SUFDSCx5QkFBeUIsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0NBQ3hDLENBQUM7S0FDRCxPQUFPLENBQUM7SUFDUDtRQUNFLElBQUksRUFBRSxtQ0FBbUM7UUFDekMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLG9CQUFvQjtLQUM1QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLCtCQUErQjtRQUNyQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDbkIsS0FBSyxFQUFFLG9CQUFvQjtLQUM1QjtDQUNGLENBQUMsQ0FBQSJ9
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const referral_link_1 = require("./models/referral-link");
5
+ class ReferralLinkModuleService extends (0, utils_1.MedusaService)({
6
+ ReferralLink: referral_link_1.ReferralLink,
7
+ }) {
8
+ constructor(container, moduleOptions, moduleDeclaration) {
9
+ super(container, moduleOptions, moduleDeclaration);
10
+ }
11
+ }
12
+ exports.default = ReferralLinkModuleService;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlZmVycmFsLWxpbmsvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUF5RDtBQUV6RCwwREFBcUQ7QUFNckQsTUFBcUIseUJBQTBCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ25FLFlBQVksRUFBWiw0QkFBWTtDQUNiLENBQUM7SUFDQSxZQUNFLFNBQStCLEVBQy9CLGFBQXVDLEVBQ3ZDLGlCQUF5RDtRQUV6RCxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BELENBQUM7Q0FDRjtBQVZELDRDQVVDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "customer-registration",
3
- "version": "0.0.122",
3
+ "version": "0.0.124",
4
4
  "description": "Medusa plugin that overrides store customer registration, enforces email/phone verification flags, and provides OTP management module.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",