@mercurjs/core 2.2.0-canary.39 → 2.2.0-canary.41

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.
Files changed (120) hide show
  1. package/.medusa/server/src/api/admin/offers/batch/route.js +3 -3
  2. package/.medusa/server/src/api/admin/offers/validators.d.ts +5 -2
  3. package/.medusa/server/src/api/admin/offers/validators.js +3 -2
  4. package/.medusa/server/src/api/admin/product-changes/[id]/cancel/route.js +2 -1
  5. package/.medusa/server/src/api/admin/product-changes/[id]/confirm/route.js +2 -1
  6. package/.medusa/server/src/api/admin/product-changes/validators.d.ts +8 -4
  7. package/.medusa/server/src/api/admin/product-changes/validators.js +6 -3
  8. package/.medusa/server/src/api/admin/products/[id]/attributes/batch/route.js +3 -3
  9. package/.medusa/server/src/api/admin/products/[id]/confirm/route.js +2 -1
  10. package/.medusa/server/src/api/admin/products/[id]/reject/route.js +2 -1
  11. package/.medusa/server/src/api/admin/products/[id]/request-changes/route.js +2 -1
  12. package/.medusa/server/src/api/admin/products/validators.d.ts +12 -8
  13. package/.medusa/server/src/api/admin/products/validators.js +9 -5
  14. package/.medusa/server/src/api/admin/sellers/[id]/address/route.js +4 -2
  15. package/.medusa/server/src/api/admin/sellers/[id]/approve/route.d.ts +2 -1
  16. package/.medusa/server/src/api/admin/sellers/[id]/approve/route.js +2 -1
  17. package/.medusa/server/src/api/admin/sellers/[id]/payment-details/route.js +4 -2
  18. package/.medusa/server/src/api/admin/sellers/[id]/professional-details/route.js +4 -2
  19. package/.medusa/server/src/api/admin/sellers/[id]/route.js +4 -2
  20. package/.medusa/server/src/api/admin/sellers/[id]/suspend/route.js +2 -1
  21. package/.medusa/server/src/api/admin/sellers/[id]/terminate/route.js +2 -1
  22. package/.medusa/server/src/api/admin/sellers/[id]/unsuspend/route.d.ts +2 -1
  23. package/.medusa/server/src/api/admin/sellers/[id]/unsuspend/route.js +2 -1
  24. package/.medusa/server/src/api/admin/sellers/[id]/unterminate/route.d.ts +2 -1
  25. package/.medusa/server/src/api/admin/sellers/[id]/unterminate/route.js +2 -1
  26. package/.medusa/server/src/api/admin/sellers/middlewares.js +4 -1
  27. package/.medusa/server/src/api/admin/sellers/route.js +4 -2
  28. package/.medusa/server/src/api/admin/sellers/validators.d.ts +14 -4
  29. package/.medusa/server/src/api/admin/sellers/validators.js +10 -4
  30. package/.medusa/server/src/api/store/carts/[id]/shipping-methods/route.js +6 -2
  31. package/.medusa/server/src/api/store/middlewares.js +5 -3
  32. package/.medusa/server/src/api/store/search/middlewares.d.ts +2 -0
  33. package/.medusa/server/src/api/store/search/middlewares.js +73 -0
  34. package/.medusa/server/src/api/store/search/route.d.ts +8 -0
  35. package/.medusa/server/src/api/store/search/route.js +25 -0
  36. package/.medusa/server/src/api/store/search/validators.d.ts +27 -0
  37. package/.medusa/server/src/api/store/search/validators.js +17 -0
  38. package/.medusa/server/src/api/vendor/offers/[id]/route.js +4 -2
  39. package/.medusa/server/src/api/vendor/offers/batch/route.js +3 -2
  40. package/.medusa/server/src/api/vendor/offers/route.js +4 -2
  41. package/.medusa/server/src/api/vendor/offers/validators.d.ts +14 -8
  42. package/.medusa/server/src/api/vendor/offers/validators.js +9 -5
  43. package/.medusa/server/src/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/cancel/route.d.ts +2 -1
  44. package/.medusa/server/src/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/cancel/route.js +4 -1
  45. package/.medusa/server/src/api/vendor/orders/middlewares.js +2 -1
  46. package/.medusa/server/src/api/vendor/orders/validators.d.ts +14 -2
  47. package/.medusa/server/src/api/vendor/orders/validators.js +10 -3
  48. package/.medusa/server/src/api/vendor/products/[id]/cancel/route.d.ts +2 -1
  49. package/.medusa/server/src/api/vendor/products/[id]/cancel/route.js +2 -1
  50. package/.medusa/server/src/api/vendor/products/[id]/route.js +3 -2
  51. package/.medusa/server/src/api/vendor/products/validators.d.ts +3 -2
  52. package/.medusa/server/src/api/vendor/products/validators.js +3 -2
  53. package/.medusa/server/src/api/vendor/sellers/[id]/address/route.js +4 -2
  54. package/.medusa/server/src/api/vendor/sellers/[id]/payment-details/route.js +4 -2
  55. package/.medusa/server/src/api/vendor/sellers/[id]/professional-details/route.js +4 -2
  56. package/.medusa/server/src/api/vendor/sellers/[id]/route.js +4 -2
  57. package/.medusa/server/src/api/vendor/sellers/me/route.js +10 -1
  58. package/.medusa/server/src/api/vendor/sellers/route.js +3 -2
  59. package/.medusa/server/src/migration-scripts/rename-default-store.d.ts +2 -0
  60. package/.medusa/server/src/migration-scripts/rename-default-store.js +12 -0
  61. package/.medusa/server/src/modules/search/abstract-search-provider.d.ts +9 -0
  62. package/.medusa/server/src/modules/search/abstract-search-provider.js +20 -0
  63. package/.medusa/server/src/modules/search/index.d.ts +10 -0
  64. package/.medusa/server/src/modules/search/index.js +31 -0
  65. package/.medusa/server/src/modules/search/lib/build-docs.d.ts +84 -0
  66. package/.medusa/server/src/modules/search/lib/build-docs.js +207 -0
  67. package/.medusa/server/src/modules/search/lib/reindex.d.ts +7 -0
  68. package/.medusa/server/src/modules/search/lib/reindex.js +61 -0
  69. package/.medusa/server/src/modules/search/lib/sync.d.ts +9 -0
  70. package/.medusa/server/src/modules/search/lib/sync.js +73 -0
  71. package/.medusa/server/src/modules/search/loaders/providers.d.ts +5 -0
  72. package/.medusa/server/src/modules/search/loaders/providers.js +26 -0
  73. package/.medusa/server/src/modules/search/providers/index.d.ts +1 -0
  74. package/.medusa/server/src/modules/search/providers/index.js +6 -0
  75. package/.medusa/server/src/modules/search/providers/orama/index.d.ts +4 -0
  76. package/.medusa/server/src/modules/search/providers/orama/index.js +12 -0
  77. package/.medusa/server/src/modules/search/providers/orama/service.d.ts +19 -0
  78. package/.medusa/server/src/modules/search/providers/orama/service.js +148 -0
  79. package/.medusa/server/src/modules/search/providers/orama/types.d.ts +10 -0
  80. package/.medusa/server/src/modules/search/providers/orama/types.js +3 -0
  81. package/.medusa/server/src/modules/search/services/index.d.ts +2 -0
  82. package/.medusa/server/src/modules/search/services/index.js +24 -0
  83. package/.medusa/server/src/modules/search/services/search-module-service.d.ts +25 -0
  84. package/.medusa/server/src/modules/search/services/search-module-service.js +60 -0
  85. package/.medusa/server/src/modules/search/services/search-provider-service.d.ts +15 -0
  86. package/.medusa/server/src/modules/search/services/search-provider-service.js +30 -0
  87. package/.medusa/server/src/subscribers/search-offer-changed.d.ts +6 -0
  88. package/.medusa/server/src/subscribers/search-offer-changed.js +34 -0
  89. package/.medusa/server/src/subscribers/search-product-changed.d.ts +5 -0
  90. package/.medusa/server/src/subscribers/search-product-changed.js +29 -0
  91. package/.medusa/server/src/subscribers/search-product-deleted.d.ts +5 -0
  92. package/.medusa/server/src/subscribers/search-product-deleted.js +23 -0
  93. package/.medusa/server/src/subscribers/search-reindex.d.ts +3 -0
  94. package/.medusa/server/src/subscribers/search-reindex.js +23 -0
  95. package/.medusa/server/src/subscribers/search-seller-changed.d.ts +5 -0
  96. package/.medusa/server/src/subscribers/search-seller-changed.js +44 -0
  97. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +2 -2
  98. package/.medusa/server/src/workflows/offer/workflows/delete-offers.js +7 -2
  99. package/.medusa/server/src/workflows/offer/workflows/update-offers.js +2 -2
  100. package/.medusa/server/src/workflows/product/workflows/confirm-products.d.ts +4 -4
  101. package/.medusa/server/src/workflows/product/workflows/confirm-products.js +2 -1
  102. package/.medusa/server/src/workflows/product/workflows/reject-product.d.ts +4 -4
  103. package/.medusa/server/src/workflows/product/workflows/reject-product.js +2 -1
  104. package/.medusa/server/src/workflows/product/workflows/request-product-change.d.ts +4 -4
  105. package/.medusa/server/src/workflows/product/workflows/request-product-change.js +2 -1
  106. package/.medusa/server/src/workflows/product-attribute/workflows/create-and-link-product-attributes.d.ts +1 -0
  107. package/.medusa/server/src/workflows/product-attribute/workflows/create-and-link-product-attributes.js +2 -1
  108. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.d.ts +8 -3
  109. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.js +8 -2
  110. package/.medusa/server/src/workflows/seller/workflows/approve-seller.d.ts +4 -4
  111. package/.medusa/server/src/workflows/seller/workflows/approve-seller.js +2 -1
  112. package/.medusa/server/src/workflows/seller/workflows/suspend-seller.d.ts +4 -4
  113. package/.medusa/server/src/workflows/seller/workflows/suspend-seller.js +2 -1
  114. package/.medusa/server/src/workflows/seller/workflows/terminate-seller.d.ts +4 -4
  115. package/.medusa/server/src/workflows/seller/workflows/terminate-seller.js +2 -1
  116. package/.medusa/server/src/workflows/seller/workflows/unsuspend-seller.d.ts +4 -4
  117. package/.medusa/server/src/workflows/seller/workflows/unsuspend-seller.js +2 -1
  118. package/.medusa/server/src/workflows/seller/workflows/unterminate-seller.d.ts +4 -4
  119. package/.medusa/server/src/workflows/seller/workflows/unterminate-seller.js +2 -1
  120. package/package.json +21 -20
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const awilix_1 = require("@medusajs/framework/awilix");
4
+ const modules_sdk_1 = require("@medusajs/framework/modules-sdk");
5
+ const search_provider_service_1 = require("../services/search-provider-service");
6
+ const providers_1 = require("../providers");
7
+ const registrationFn = async (klass, container, pluginOptions) => {
8
+ const key = `${search_provider_service_1.SearchProviderRegistrationPrefix}${klass.identifier}_${pluginOptions.id}`;
9
+ container.register({
10
+ [key]: (0, awilix_1.asFunction)((cradle) => new klass(cradle, pluginOptions.options ?? {}), {
11
+ lifetime: klass.LIFE_TIME || awilix_1.Lifetime.SINGLETON,
12
+ }),
13
+ });
14
+ };
15
+ exports.default = async ({ container, options, }) => {
16
+ const provider = options?.provider;
17
+ if (!provider) {
18
+ return await registrationFn(providers_1.OramaSearchProvider, container, { id: "default" });
19
+ }
20
+ await (0, modules_sdk_1.moduleProviderLoader)({
21
+ container,
22
+ providers: [provider],
23
+ registerServiceFn: registrationFn,
24
+ });
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc2VhcmNoL2xvYWRlcnMvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQStFO0FBQy9FLGlFQUFzRTtBQU90RSxpRkFBc0Y7QUFDdEYsNENBQWtEO0FBRWxELE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDMUIsS0FBdUQsRUFDdkQsU0FBNkQsRUFDN0QsYUFBZ0UsRUFDaEUsRUFBRTtJQUNGLE1BQU0sR0FBRyxHQUFHLEdBQUcsMERBQWdDLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUE7SUFFeEYsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNqQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUEsbUJBQVUsRUFDZixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsSUFBSyxLQUdRLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQ3BEO1lBQ0UsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksaUJBQVEsQ0FBQyxTQUFTO1NBQ2hELENBQ0Y7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxrQkFBZSxLQUFLLEVBQUUsRUFDcEIsU0FBUyxFQUNULE9BQU8sR0FNUixFQUFpQixFQUFFO0lBQ2xCLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUE7SUFFbEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTyxNQUFNLGNBQWMsQ0FDekIsK0JBQXdELEVBQ3hELFNBRUMsRUFDRCxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FDbEIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLElBQUEsa0NBQW9CLEVBQUM7UUFDekIsU0FBUztRQUNULFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNyQixpQkFBaUIsRUFBRSxjQUFjO0tBQ2xDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ export { OramaSearchProvider } from "./orama";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OramaSearchProvider = void 0;
4
+ var orama_1 = require("./orama");
5
+ Object.defineProperty(exports, "OramaSearchProvider", { enumerable: true, get: function () { return orama_1.OramaSearchProvider; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zZWFyY2gvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUE2QztBQUFwQyw0R0FBQSxtQkFBbUIsT0FBQSJ9
@@ -0,0 +1,4 @@
1
+ export { OramaSearchProvider } from "./service";
2
+ export type { OramaSearchQuery } from "./types";
3
+ declare const _default: import("@mercurjs/types").ModuleProviderExports;
4
+ export default _default;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OramaSearchProvider = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const types_1 = require("@mercurjs/types");
6
+ const service_1 = require("./service");
7
+ var service_2 = require("./service");
8
+ Object.defineProperty(exports, "OramaSearchProvider", { enumerable: true, get: function () { return service_2.OramaSearchProvider; } });
9
+ exports.default = (0, utils_1.ModuleProvider)(types_1.MercurModules.SEARCH, {
10
+ services: [service_1.OramaSearchProvider],
11
+ });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zZWFyY2gvcHJvdmlkZXJzL29yYW1hL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUEwRDtBQUMxRCwyQ0FBK0M7QUFFL0MsdUNBQStDO0FBRS9DLHFDQUErQztBQUF0Qyw4R0FBQSxtQkFBbUIsT0FBQTtBQUc1QixrQkFBZSxJQUFBLHNCQUFjLEVBQUMscUJBQWEsQ0FBQyxNQUFNLEVBQUU7SUFDbEQsUUFBUSxFQUFFLENBQUMsNkJBQW1CLENBQUM7Q0FDaEMsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,19 @@
1
+ import { AnyOrama } from "@orama/orama";
2
+ import { SearchDoc, SearchResults } from "@mercurjs/types";
3
+ import { AbstractSearchProvider } from "../../abstract-search-provider";
4
+ import { OramaSearchQuery } from "./types";
5
+ export declare class OramaSearchProvider extends AbstractSearchProvider {
6
+ static identifier: string;
7
+ protected readonly db_: AnyOrama;
8
+ protected readonly collectionLabels_: Map<string, string>;
9
+ protected readonly categoryLabels_: Map<string, string>;
10
+ protected readonly attributeHandleLabels_: Map<string, string>;
11
+ protected readonly attributeValueLabels_: Map<string, string>;
12
+ constructor();
13
+ private recordLabels_;
14
+ index(docs: SearchDoc[]): Promise<void>;
15
+ remove(ids: string[]): Promise<void>;
16
+ search(query: OramaSearchQuery): Promise<SearchResults>;
17
+ private toFacetValues_;
18
+ private toAttributeFacets_;
19
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OramaSearchProvider = void 0;
4
+ const orama_1 = require("@orama/orama");
5
+ const abstract_search_provider_1 = require("../../abstract-search-provider");
6
+ const SEARCH_SCHEMA = {
7
+ type: "enum",
8
+ title: "string",
9
+ description: "string",
10
+ handle: "string",
11
+ sku: "string",
12
+ seller_handle: "enum",
13
+ collection_id: "enum",
14
+ category_ids: "enum[]",
15
+ product_id: "enum",
16
+ variant_id: "enum",
17
+ attribute_tokens: "enum[]",
18
+ };
19
+ const SEARCHABLE_PROPERTIES = ["title", "description", "handle", "sku"];
20
+ // In-memory index living in the API process's RAM — it starts empty and needs a
21
+ // reindex to populate. id → label maps are kept at index time so `search` can
22
+ // label facets without a second lookup.
23
+ class OramaSearchProvider extends abstract_search_provider_1.AbstractSearchProvider {
24
+ constructor() {
25
+ super();
26
+ this.collectionLabels_ = new Map();
27
+ this.categoryLabels_ = new Map();
28
+ this.attributeHandleLabels_ = new Map();
29
+ this.attributeValueLabels_ = new Map();
30
+ this.db_ = (0, orama_1.create)({ schema: SEARCH_SCHEMA });
31
+ }
32
+ recordLabels_(docs) {
33
+ for (const doc of docs) {
34
+ if (doc.collection_id && doc.collection) {
35
+ this.collectionLabels_.set(doc.collection_id, doc.collection);
36
+ }
37
+ const ids = doc.category_ids ?? [];
38
+ const labels = doc.categories ?? [];
39
+ ids.forEach((id, i) => {
40
+ if (labels[i]) {
41
+ this.categoryLabels_.set(id, labels[i]);
42
+ }
43
+ });
44
+ for (const attribute of doc.attributes ?? []) {
45
+ this.attributeHandleLabels_.set(attribute.handle, attribute.name);
46
+ for (const value of attribute.values) {
47
+ this.attributeValueLabels_.set(value.id, value.name);
48
+ }
49
+ }
50
+ }
51
+ }
52
+ async index(docs) {
53
+ if (!docs.length) {
54
+ return;
55
+ }
56
+ this.recordLabels_(docs);
57
+ await (0, orama_1.removeMultiple)(this.db_, docs.map((doc) => doc.id));
58
+ await (0, orama_1.insertMultiple)(this.db_, docs);
59
+ }
60
+ async remove(ids) {
61
+ if (!ids.length) {
62
+ return;
63
+ }
64
+ await (0, orama_1.removeMultiple)(this.db_, ids);
65
+ }
66
+ async search(query) {
67
+ const filters = query.filters ?? {};
68
+ const term = query.q?.trim();
69
+ const where = {};
70
+ if (filters.type) {
71
+ where.type = { eq: filters.type };
72
+ }
73
+ if (filters.seller_handle) {
74
+ where.seller_handle = { eq: filters.seller_handle };
75
+ }
76
+ if (filters.collection_ids?.length) {
77
+ where.collection_id = { in: filters.collection_ids };
78
+ }
79
+ if (filters.category_ids?.length) {
80
+ where.category_ids = { containsAny: filters.category_ids };
81
+ }
82
+ if (filters.attributes) {
83
+ const tokens = Object.entries(filters.attributes).flatMap(([handle, valueIds]) => valueIds.map((valueId) => `attr:${handle}:${valueId}`));
84
+ if (tokens.length) {
85
+ where.attribute_tokens = { containsAny: tokens };
86
+ }
87
+ }
88
+ const result = await (0, orama_1.search)(this.db_, {
89
+ term: term || undefined,
90
+ properties: term ? SEARCHABLE_PROPERTIES : undefined,
91
+ where: where,
92
+ limit: query.limit ?? 12,
93
+ offset: query.offset ?? 0,
94
+ threshold: 0,
95
+ facets: {
96
+ collection_id: { limit: 200 },
97
+ category_ids: { limit: 200 },
98
+ attribute_tokens: { limit: 1000 },
99
+ },
100
+ });
101
+ const regionId = (query.context?.region_id ?? undefined);
102
+ const hits = result.hits.map((hit) => {
103
+ const doc = hit.document;
104
+ const price = regionId && doc.prices?.[regionId] ? doc.prices[regionId] : null;
105
+ return { ...doc, calculated_price: price };
106
+ });
107
+ return {
108
+ hits,
109
+ count: result.count,
110
+ facets: {
111
+ collections: this.toFacetValues_(result.facets?.collection_id?.values, this.collectionLabels_),
112
+ categories: this.toFacetValues_(result.facets?.category_ids?.values, this.categoryLabels_),
113
+ attributes: this.toAttributeFacets_(result.facets?.attribute_tokens?.values),
114
+ },
115
+ };
116
+ }
117
+ toFacetValues_(values, labels) {
118
+ return Object.entries(values ?? {}).map(([id, count]) => ({
119
+ id,
120
+ label: labels.get(id) ?? id,
121
+ count,
122
+ }));
123
+ }
124
+ toAttributeFacets_(values) {
125
+ const byHandle = new Map();
126
+ for (const [token, count] of Object.entries(values ?? {})) {
127
+ const [, handle, valueId] = token.split(":");
128
+ if (!handle || !valueId) {
129
+ continue;
130
+ }
131
+ const group = byHandle.get(handle) ?? [];
132
+ group.push({
133
+ id: valueId,
134
+ label: this.attributeValueLabels_.get(valueId) ?? valueId,
135
+ count,
136
+ });
137
+ byHandle.set(handle, group);
138
+ }
139
+ return [...byHandle.entries()].map(([handle, valuesForHandle]) => ({
140
+ handle,
141
+ label: this.attributeHandleLabels_.get(handle) ?? handle,
142
+ values: valuesForHandle,
143
+ }));
144
+ }
145
+ }
146
+ exports.OramaSearchProvider = OramaSearchProvider;
147
+ OramaSearchProvider.identifier = "search-orama";
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3NlYXJjaC9wcm92aWRlcnMvb3JhbWEvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3Q0FNcUI7QUFRckIsNkVBQXVFO0FBR3ZFLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLFFBQVE7SUFDZixXQUFXLEVBQUUsUUFBUTtJQUNyQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsUUFBUTtJQUNiLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLFlBQVksRUFBRSxRQUFRO0lBQ3RCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLGdCQUFnQixFQUFFLFFBQVE7Q0FDbEIsQ0FBQTtBQUVWLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUV2RSxnRkFBZ0Y7QUFDaEYsOEVBQThFO0FBQzlFLHdDQUF3QztBQUN4QyxNQUFhLG1CQUFvQixTQUFRLGlEQUFzQjtJQVU3RDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBTlUsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtRQUMzQywyQkFBc0IsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtRQUNsRCwwQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQTtRQUlsRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsY0FBTSxFQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFpQjtRQUNyQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElB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
@@ -0,0 +1,10 @@
1
+ import { SearchQueryBase } from "@mercurjs/types";
2
+ export interface OramaSearchQuery extends SearchQueryBase {
3
+ filters?: {
4
+ type?: "product" | "offer";
5
+ collection_ids?: string[];
6
+ category_ids?: string[];
7
+ seller_handle?: string;
8
+ attributes?: Record<string, string[]>;
9
+ };
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zZWFyY2gvcHJvdmlkZXJzL29yYW1hL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,2 @@
1
+ export { default as SearchProviderService } from "./search-provider-service";
2
+ export * from "./search-provider-service";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.SearchProviderService = void 0;
21
+ var search_provider_service_1 = require("./search-provider-service");
22
+ Object.defineProperty(exports, "SearchProviderService", { enumerable: true, get: function () { return __importDefault(search_provider_service_1).default; } });
23
+ __exportStar(require("./search-provider-service"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zZWFyY2gvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBNEU7QUFBbkUsaUpBQUEsT0FBTyxPQUF5QjtBQUN6Qyw0REFBeUMifQ==
@@ -0,0 +1,25 @@
1
+ import { IEventBusModuleService, InternalModuleDeclaration, Logger } from "@medusajs/framework/types";
2
+ import { ContainerRegistrationKeys, Modules } from "@medusajs/framework/utils";
3
+ import { SearchDoc, SearchQueryBase, SearchResults } from "@mercurjs/types";
4
+ import SearchProviderService from "./search-provider-service";
5
+ type InjectedDependencies = {
6
+ searchProviderService: SearchProviderService;
7
+ [ContainerRegistrationKeys.LOGGER]: Logger;
8
+ [Modules.EVENT_BUS]: IEventBusModuleService;
9
+ };
10
+ export default class SearchModuleService {
11
+ #private;
12
+ protected readonly searchProviderService_: SearchProviderService;
13
+ protected readonly logger_: Logger;
14
+ protected readonly eventBus_: IEventBusModuleService;
15
+ constructor(container: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
16
+ __hooks: {
17
+ onApplicationStart(this: SearchModuleService): Promise<void>;
18
+ };
19
+ protected onApplicationStart_(): Promise<void>;
20
+ getProviderIdentifier(): string;
21
+ index(docs: SearchDoc[]): Promise<void>;
22
+ remove(ids: string[]): Promise<void>;
23
+ search(query: SearchQueryBase): Promise<SearchResults>;
24
+ }
25
+ export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _SearchModuleService_isWorkerMode;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const utils_1 = require("@medusajs/framework/utils");
16
+ const reindex_1 = require("../lib/reindex");
17
+ class SearchModuleService {
18
+ constructor(container, moduleDeclaration) {
19
+ _SearchModuleService_isWorkerMode.set(this, false);
20
+ this.__hooks = {
21
+ onApplicationStart() {
22
+ return this.onApplicationStart_();
23
+ },
24
+ };
25
+ this.searchProviderService_ = container.searchProviderService;
26
+ this.logger_ = container[utils_1.ContainerRegistrationKeys.LOGGER];
27
+ this.eventBus_ = container[utils_1.Modules.EVENT_BUS];
28
+ __classPrivateFieldSet(this, _SearchModuleService_isWorkerMode, moduleDeclaration.worker_mode !== "server", "f");
29
+ }
30
+ // The module service is constructed with the awilix cradle, not the app
31
+ // container, so it can't run the cross-module reindex itself. It emits an
32
+ // event instead; the `search-reindex` subscriber handles it with the real
33
+ // request-scoped container.
34
+ async onApplicationStart_() {
35
+ if (!__classPrivateFieldGet(this, _SearchModuleService_isWorkerMode, "f")) {
36
+ return;
37
+ }
38
+ try {
39
+ await this.eventBus_.emit({ name: reindex_1.SEARCH_REINDEX_EVENT, data: {} });
40
+ }
41
+ catch (e) {
42
+ this.logger_.error(e);
43
+ }
44
+ }
45
+ getProviderIdentifier() {
46
+ return this.searchProviderService_.getIdentifier();
47
+ }
48
+ async index(docs) {
49
+ return await this.searchProviderService_.index(docs);
50
+ }
51
+ async remove(ids) {
52
+ return await this.searchProviderService_.remove(ids);
53
+ }
54
+ async search(query) {
55
+ return await this.searchProviderService_.search(query);
56
+ }
57
+ }
58
+ _SearchModuleService_isWorkerMode = new WeakMap();
59
+ exports.default = SearchModuleService;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc2VhcmNoL3NlcnZpY2VzL3NlYXJjaC1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUtBLHFEQUE4RTtBQU85RSw0Q0FBcUQ7QUFTckQsTUFBcUIsbUJBQW1CO0lBTXRDLFlBQ0UsU0FBK0IsRUFDL0IsaUJBQTRDO1FBSjlDLDRDQUFnQixLQUFLLEVBQUE7UUFZckIsWUFBTyxHQUFHO1lBQ1Isa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1lBQ25DLENBQUM7U0FDRixDQUFBO1FBVkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQTtRQUM3RCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDN0MsdUJBQUEsSUFBSSxxQ0FBaUIsaUJBQWlCLENBQUMsV0FBVyxLQUFLLFFBQVEsTUFBQSxDQUFBO0lBQ2pFLENBQUM7SUFRRCx3RUFBd0U7SUFDeEUsMEVBQTBFO0lBQzFFLDBFQUEwRTtJQUMxRSw0QkFBNEI7SUFDbEIsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsdUJBQUEsSUFBSSx5Q0FBYyxFQUFFLENBQUM7WUFDeEIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLDhCQUFvQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBaUI7UUFDM0IsT0FBTyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBYTtRQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFzQjtRQUNqQyxPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0NBQ0Y7O2tCQXJEb0IsbUJBQW1CIn0=
@@ -0,0 +1,15 @@
1
+ import { SearchDoc, SearchProvider, SearchQueryBase, SearchResults } from "@mercurjs/types";
2
+ export declare const SearchProviderIdentifierRegistrationName = "search_providers_identifier";
3
+ export declare const SearchProviderRegistrationPrefix = "search_";
4
+ type InjectedDependencies = {
5
+ [key: `${typeof SearchProviderRegistrationPrefix}${string}`]: SearchProvider;
6
+ };
7
+ export default class SearchProviderService {
8
+ protected readonly searchProvider_: SearchProvider;
9
+ constructor(container: InjectedDependencies);
10
+ getIdentifier(): string;
11
+ index(docs: SearchDoc[]): Promise<void>;
12
+ remove(ids: string[]): Promise<void>;
13
+ search(query: SearchQueryBase): Promise<SearchResults>;
14
+ }
15
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SearchProviderRegistrationPrefix = exports.SearchProviderIdentifierRegistrationName = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.SearchProviderIdentifierRegistrationName = "search_providers_identifier";
6
+ exports.SearchProviderRegistrationPrefix = "search_";
7
+ class SearchProviderService {
8
+ constructor(container) {
9
+ const searchProviderKeys = Object.keys(container).filter((k) => k.startsWith(exports.SearchProviderRegistrationPrefix));
10
+ if (searchProviderKeys.length !== 1) {
11
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Search module should be initialized with exactly one provider`);
12
+ }
13
+ this.searchProvider_ = container[searchProviderKeys[0]];
14
+ }
15
+ getIdentifier() {
16
+ const provider = this.searchProvider_;
17
+ return provider.getIdentifier?.() ?? "unknown";
18
+ }
19
+ async index(docs) {
20
+ return await this.searchProvider_.index(docs);
21
+ }
22
+ async remove(ids) {
23
+ return await this.searchProvider_.remove(ids);
24
+ }
25
+ async search(query) {
26
+ return await this.searchProvider_.search(query);
27
+ }
28
+ }
29
+ exports.default = SearchProviderService;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXByb3ZpZGVyLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zZWFyY2gvc2VydmljZXMvc2VhcmNoLXByb3ZpZGVyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXVEO0FBUTFDLFFBQUEsd0NBQXdDLEdBQ25ELDZCQUE2QixDQUFBO0FBRWxCLFFBQUEsZ0NBQWdDLEdBQUcsU0FBUyxDQUFBO0FBTXpELE1BQXFCLHFCQUFxQjtJQUd4QyxZQUFZLFNBQStCO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM3RCxDQUFDLENBQUMsVUFBVSxDQUFDLHdDQUFnQyxDQUFDLENBQy9DLENBQUE7UUFFRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwrREFBK0QsQ0FDaEUsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FDOUIsa0JBQWtCLENBQUMsQ0FBQyxDQUErQixDQUNsQyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBRXJCLENBQUE7UUFDRCxPQUFPLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLFNBQVMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFpQjtRQUMzQixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBYTtRQUN4QixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBc0I7UUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pELENBQUM7Q0FDRjtBQXRDRCx3Q0FzQ0MifQ==
@@ -0,0 +1,6 @@
1
+ import { SubscriberArgs, SubscriberConfig } from "@medusajs/framework";
2
+ export default function searchOfferChangedHandler({ event, container, }: SubscriberArgs<{
3
+ id: string;
4
+ product_id?: string;
5
+ }>): Promise<void>;
6
+ export declare const config: SubscriberConfig;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = searchOfferChangedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const events_1 = require("../workflows/events");
7
+ const sync_1 = require("../modules/search/lib/sync");
8
+ async function searchOfferChangedHandler({ event, container, }) {
9
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ const { id, product_id } = event.data;
11
+ try {
12
+ if (event.name === events_1.OfferWorkflowEvents.DELETED) {
13
+ await (0, sync_1.removeOfferDocs)(container, [id]);
14
+ }
15
+ if (product_id) {
16
+ await (0, sync_1.reindexProductsById)(container, [product_id]);
17
+ }
18
+ }
19
+ catch (error) {
20
+ logger.error(`Search sync failed for offer ${id}:`, error);
21
+ throw error;
22
+ }
23
+ }
24
+ exports.config = {
25
+ event: [
26
+ events_1.OfferWorkflowEvents.CREATED,
27
+ events_1.OfferWorkflowEvents.UPDATED,
28
+ events_1.OfferWorkflowEvents.DELETED,
29
+ ],
30
+ context: {
31
+ subscriberId: "search-offer-changed-handler",
32
+ },
33
+ };
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLW9mZmVyLWNoYW5nZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvc2VhcmNoLW9mZmVyLWNoYW5nZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsNENBa0JDO0FBMUJELHFEQUFxRTtBQUVyRSxnREFBeUQ7QUFDekQscURBR21DO0FBRXBCLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxFQUN0RCxLQUFLLEVBQ0wsU0FBUyxHQUMyQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQTtJQUVyQyxJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssNEJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFBLHNCQUFlLEVBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN4QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBQSwwQkFBbUIsRUFBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFLEtBQWMsQ0FBQyxDQUFBO1FBQ25FLE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBcUI7SUFDdEMsS0FBSyxFQUFFO1FBQ0wsNEJBQW1CLENBQUMsT0FBTztRQUMzQiw0QkFBbUIsQ0FBQyxPQUFPO1FBQzNCLDRCQUFtQixDQUFDLE9BQU87S0FDNUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUUsOEJBQThCO0tBQzdDO0NBQ0YsQ0FBQSJ9
@@ -0,0 +1,5 @@
1
+ import { SubscriberArgs, SubscriberConfig } from "@medusajs/framework";
2
+ export default function searchProductChangedHandler({ event, container, }: SubscriberArgs<{
3
+ id: string;
4
+ }>): Promise<void>;
5
+ export declare const config: SubscriberConfig;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = searchProductChangedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const events_1 = require("../workflows/product/events");
7
+ const sync_1 = require("../modules/search/lib/sync");
8
+ async function searchProductChangedHandler({ event, container, }) {
9
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
10
+ try {
11
+ await (0, sync_1.reindexProductsById)(container, [event.data.id]);
12
+ }
13
+ catch (error) {
14
+ logger.error(`Search sync failed for product ${event.data.id}:`, error);
15
+ throw error;
16
+ }
17
+ }
18
+ exports.config = {
19
+ event: [
20
+ events_1.ProductWorkflowEvents.PUBLISHED,
21
+ events_1.ProductWorkflowEvents.REJECTED,
22
+ "product.updated",
23
+ "product.product.updated",
24
+ ],
25
+ context: {
26
+ subscriberId: "search-product-changed-handler",
27
+ },
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXByb2R1Y3QtY2hhbmdlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zZWFyY2gtcHJvZHVjdC1jaGFuZ2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLDhDQWNDO0FBbkJELHFEQUFxRTtBQUVyRSx3REFBbUU7QUFDbkUscURBQWdFO0FBRWpELEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxFQUN4RCxLQUFLLEVBQ0wsU0FBUyxHQUNzQjtJQUMvQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLElBQUksQ0FBQztRQUNILE1BQU0sSUFBQSwwQkFBbUIsRUFBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsS0FBSyxDQUNWLGtDQUFrQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUNsRCxLQUFjLENBQ2YsQ0FBQTtRQUNELE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBcUI7SUFDdEMsS0FBSyxFQUFFO1FBQ0wsOEJBQXFCLENBQUMsU0FBUztRQUMvQiw4QkFBcUIsQ0FBQyxRQUFRO1FBQzlCLGlCQUFpQjtRQUNqQix5QkFBeUI7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUUsZ0NBQWdDO0tBQy9DO0NBQ0YsQ0FBQSJ9
@@ -0,0 +1,5 @@
1
+ import { SubscriberArgs, SubscriberConfig } from "@medusajs/framework";
2
+ export default function searchProductDeletedHandler({ event, container, }: SubscriberArgs<{
3
+ id: string;
4
+ }>): Promise<void>;
5
+ export declare const config: SubscriberConfig;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = searchProductDeletedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const sync_1 = require("../modules/search/lib/sync");
7
+ async function searchProductDeletedHandler({ event, container, }) {
8
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
9
+ try {
10
+ await (0, sync_1.removeProductAndOffers)(container, [event.data.id]);
11
+ }
12
+ catch (error) {
13
+ logger.error(`Search delete failed for product ${event.data.id}:`, error);
14
+ throw error;
15
+ }
16
+ }
17
+ exports.config = {
18
+ event: ["product.deleted", "product.product.deleted"],
19
+ context: {
20
+ subscriberId: "search-product-deleted-handler",
21
+ },
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXByb2R1Y3QtZGVsZXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zZWFyY2gtcHJvZHVjdC1kZWxldGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLDhDQWNDO0FBbEJELHFEQUFxRTtBQUVyRSxxREFBbUU7QUFFcEQsS0FBSyxVQUFVLDJCQUEyQixDQUFDLEVBQ3hELEtBQUssRUFDTCxTQUFTLEdBQ3NCO0lBQy9CLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFBLDZCQUFzQixFQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQ1Ysb0NBQW9DLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQ3BELEtBQWMsQ0FDZixDQUFBO1FBQ0QsTUFBTSxLQUFLLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx5QkFBeUIsQ0FBQztJQUNyRCxPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUUsZ0NBQWdDO0tBQy9DO0NBQ0YsQ0FBQSJ9
@@ -0,0 +1,3 @@
1
+ import { SubscriberArgs, SubscriberConfig } from "@medusajs/framework";
2
+ export default function searchReindexHandler({ container, }: SubscriberArgs): Promise<void>;
3
+ export declare const config: SubscriberConfig;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = searchReindexHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const search_1 = require("../modules/search");
7
+ async function searchReindexHandler({ container, }) {
8
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
9
+ try {
10
+ await (0, search_1.reindexAll)(container);
11
+ }
12
+ catch (error) {
13
+ logger.error("Full search reindex failed:", error);
14
+ throw error;
15
+ }
16
+ }
17
+ exports.config = {
18
+ event: search_1.SEARCH_REINDEX_EVENT,
19
+ context: {
20
+ subscriberId: "search-reindex-handler",
21
+ },
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvc2VhcmNoLXJlaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsdUNBVUM7QUFkRCxxREFBcUU7QUFFckUsOENBQW9FO0FBRXJELEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxFQUNqRCxTQUFTLEdBQ007SUFDZixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLElBQUksQ0FBQztRQUNILE1BQU0sSUFBQSxtQkFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFjLENBQUMsQ0FBQTtRQUMzRCxNQUFNLEtBQUssQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSw2QkFBb0I7SUFDM0IsT0FBTyxFQUFFO1FBQ1AsWUFBWSxFQUFFLHdCQUF3QjtLQUN2QztDQUNGLENBQUEifQ==
@@ -0,0 +1,5 @@
1
+ import { SubscriberArgs, SubscriberConfig } from "@medusajs/framework";
2
+ export default function searchSellerChangedHandler({ event, container, }: SubscriberArgs<{
3
+ id: string;
4
+ }>): Promise<void>;
5
+ export declare const config: SubscriberConfig;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = searchSellerChangedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const events_1 = require("../workflows/events");
7
+ const sync_1 = require("../modules/search/lib/sync");
8
+ // unterminated lands on SUSPENDED, still not OPEN, so its offers stay dropped.
9
+ const DEACTIVATING = new Set([
10
+ events_1.SellerWorkflowEvents.SUSPENDED,
11
+ events_1.SellerWorkflowEvents.TERMINATED,
12
+ events_1.SellerWorkflowEvents.UNTERMINATED,
13
+ events_1.SellerWorkflowEvents.DELETED,
14
+ ]);
15
+ async function searchSellerChangedHandler({ event, container, }) {
16
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
17
+ const sellerId = event.data.id;
18
+ try {
19
+ const { offerIds, productIds } = await (0, sync_1.offersForSeller)(container, sellerId);
20
+ if (DEACTIVATING.has(event.name)) {
21
+ await (0, sync_1.removeOfferDocs)(container, offerIds);
22
+ }
23
+ await (0, sync_1.reindexProductsById)(container, productIds);
24
+ }
25
+ catch (error) {
26
+ logger.error(`Search sync failed for seller ${sellerId} (${event.name}):`, error);
27
+ throw error;
28
+ }
29
+ }
30
+ exports.config = {
31
+ event: [
32
+ events_1.SellerWorkflowEvents.APPROVED,
33
+ events_1.SellerWorkflowEvents.UNSUSPENDED,
34
+ events_1.SellerWorkflowEvents.UPDATED,
35
+ events_1.SellerWorkflowEvents.SUSPENDED,
36
+ events_1.SellerWorkflowEvents.TERMINATED,
37
+ events_1.SellerWorkflowEvents.UNTERMINATED,
38
+ events_1.SellerWorkflowEvents.DELETED,
39
+ ],
40
+ context: {
41
+ subscriberId: "search-seller-changed-handler",
42
+ },
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlbGxlci1jaGFuZ2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3NlYXJjaC1zZWxsZXItY2hhbmdlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrQkEsNkNBcUJDO0FBdENELHFEQUFxRTtBQUVyRSxnREFBMEQ7QUFDMUQscURBSW1DO0FBRW5DLCtFQUErRTtBQUMvRSxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUNuQyw2QkFBb0IsQ0FBQyxTQUFTO0lBQzlCLDZCQUFvQixDQUFDLFVBQVU7SUFDL0IsNkJBQW9CLENBQUMsWUFBWTtJQUNqQyw2QkFBb0IsQ0FBQyxPQUFPO0NBQzdCLENBQUMsQ0FBQTtBQUVhLEtBQUssVUFBVSwwQkFBMEIsQ0FBQyxFQUN2RCxLQUFLLEVBQ0wsU0FBUyxHQUNzQjtJQUMvQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0lBRTlCLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLEVBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTNFLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUEsc0JBQWUsRUFBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDNUMsQ0FBQztRQUNELE1BQU0sSUFBQSwwQkFBbUIsRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsS0FBSyxDQUNWLGlDQUFpQyxRQUFRLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxFQUM1RCxLQUFjLENBQ2YsQ0FBQTtRQUNELE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBcUI7SUFDdEMsS0FBSyxFQUFFO1FBQ0wsNkJBQW9CLENBQUMsUUFBUTtRQUM3Qiw2QkFBb0IsQ0FBQyxXQUFXO1FBQ2hDLDZCQUFvQixDQUFDLE9BQU87UUFDNUIsNkJBQW9CLENBQUMsU0FBUztRQUM5Qiw2QkFBb0IsQ0FBQyxVQUFVO1FBQy9CLDZCQUFvQixDQUFDLFlBQVk7UUFDakMsNkJBQW9CLENBQUMsT0FBTztLQUM3QjtJQUNELE9BQU8sRUFBRTtRQUNQLFlBQVksRUFBRSwrQkFBK0I7S0FDOUM7Q0FDRixDQUFBIn0=