@mercurjs/algolia 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +117 -0
- package/.medusa/server/src/admin/index.mjs +118 -0
- package/.medusa/server/src/api/admin/algolia/route.d.ts +61 -0
- package/.medusa/server/src/api/admin/algolia/route.js +79 -0
- package/.medusa/server/src/modules/algolia/index.d.ts +8 -0
- package/.medusa/server/src/modules/algolia/index.js +17 -0
- package/.medusa/server/src/modules/algolia/service.d.ts +25 -0
- package/.medusa/server/src/modules/algolia/service.js +110 -0
- package/.medusa/server/src/subscribers/algolia-products-changed.d.ts +5 -0
- package/.medusa/server/src/subscribers/algolia-products-changed.js +22 -0
- package/.medusa/server/src/subscribers/algolia-products-deleted.d.ts +5 -0
- package/.medusa/server/src/subscribers/algolia-products-deleted.js +17 -0
- package/.medusa/server/src/subscribers/utils/algolia-product.d.ts +58 -0
- package/.medusa/server/src/subscribers/utils/algolia-product.js +139 -0
- package/.medusa/server/src/subscribers/utils/algolia-reviews.d.ts +9 -0
- package/.medusa/server/src/subscribers/utils/algolia-reviews.js +23 -0
- package/.medusa/server/src/subscribers/utils/index.d.ts +2 -0
- package/.medusa/server/src/subscribers/utils/index.js +19 -0
- package/.medusa/server/src/workflows/algolia/steps/index.d.ts +1 -0
- package/.medusa/server/src/workflows/algolia/steps/index.js +18 -0
- package/.medusa/server/src/workflows/algolia/steps/sync-algolia-products.d.ts +1 -0
- package/.medusa/server/src/workflows/algolia/steps/sync-algolia-products.js +54 -0
- package/.medusa/server/src/workflows/algolia/workflows/index.d.ts +1 -0
- package/.medusa/server/src/workflows/algolia/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/algolia/workflows/sync-algolia.d.ts +1 -0
- package/.medusa/server/src/workflows/algolia/workflows/sync-algolia.js +9 -0
- package/.medusa/server/src/workflows/index.d.ts +2 -0
- package/.medusa/server/src/workflows/index.js +19 -0
- package/README.md +22 -0
- package/package.json +88 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const adminSdk = require("@medusajs/admin-sdk");
|
|
4
|
+
const ui = require("@medusajs/ui");
|
|
5
|
+
const reactQuery = require("@tanstack/react-query");
|
|
6
|
+
const mercurQuery = async (url, {
|
|
7
|
+
method,
|
|
8
|
+
body,
|
|
9
|
+
query,
|
|
10
|
+
headers
|
|
11
|
+
}) => {
|
|
12
|
+
const bearer = await window.localStorage.getItem("medusa_auth_token") || "";
|
|
13
|
+
const params = Object.entries(query || {}).reduce(
|
|
14
|
+
(acc, [key, value], index) => {
|
|
15
|
+
if (value && value !== void 0) {
|
|
16
|
+
const queryLength = Object.values(query || {}).filter(
|
|
17
|
+
(i) => i && i !== void 0
|
|
18
|
+
).length;
|
|
19
|
+
acc += `${key}=${value}${index + 1 <= queryLength ? "&" : ""}`;
|
|
20
|
+
}
|
|
21
|
+
return acc;
|
|
22
|
+
},
|
|
23
|
+
""
|
|
24
|
+
);
|
|
25
|
+
const response = await fetch(`${url}${params && `?${params}`}`, {
|
|
26
|
+
method,
|
|
27
|
+
headers: {
|
|
28
|
+
authorization: `Bearer ${bearer}`,
|
|
29
|
+
"Content-Type": "application/json",
|
|
30
|
+
...headers
|
|
31
|
+
},
|
|
32
|
+
body: body ? JSON.stringify(body) : null
|
|
33
|
+
});
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
const errorData = await response.json();
|
|
36
|
+
throw new Error(errorData.message || "Nieznany błąd serwera");
|
|
37
|
+
}
|
|
38
|
+
return response.json();
|
|
39
|
+
};
|
|
40
|
+
const useSyncAlgolia = () => {
|
|
41
|
+
return reactQuery.useMutation({
|
|
42
|
+
mutationFn: () => mercurQuery("/admin/algolia", {
|
|
43
|
+
method: "POST"
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const useAlgolia = () => {
|
|
48
|
+
return reactQuery.useQuery({
|
|
49
|
+
queryKey: ["algolia"],
|
|
50
|
+
queryFn: () => mercurQuery("/admin/algolia", { method: "GET" })
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const AlgoliaSearchEnginePage = () => {
|
|
54
|
+
const { data: algolia } = useAlgolia();
|
|
55
|
+
const { mutateAsync: triggerSynchronization } = useSyncAlgolia();
|
|
56
|
+
const handleTriggerSynchronization = async () => {
|
|
57
|
+
try {
|
|
58
|
+
await triggerSynchronization();
|
|
59
|
+
ui.toast.success("Synchronization triggered!");
|
|
60
|
+
} catch {
|
|
61
|
+
ui.toast.error("Error!");
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { children: [
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-6 py-4", children: [
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { children: "Algolia Search Engine" }),
|
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "text-ui-fg-subtle", size: "small", children: "Check Algolia Search Engine status" })
|
|
69
|
+
] }),
|
|
70
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { onClick: handleTriggerSynchronization, children: "Trigger Synchronization" })
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Body, { children: [
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: "Application ID" }),
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: algolia == null ? void 0 : algolia.appId })
|
|
76
|
+
] }),
|
|
77
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Table.Row, { children: [
|
|
78
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: "ProductIndex" }),
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Table.Cell, { children: (algolia == null ? void 0 : algolia.productIndex) ? /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: "green", children: "Exists" }) : /* @__PURE__ */ jsxRuntime.jsx(ui.StatusBadge, { color: "red", children: "Doesn't exist" }) })
|
|
80
|
+
] })
|
|
81
|
+
] }) })
|
|
82
|
+
] });
|
|
83
|
+
};
|
|
84
|
+
const config = adminSdk.defineRouteConfig({
|
|
85
|
+
label: "Algolia Search Engine"
|
|
86
|
+
});
|
|
87
|
+
const widgetModule = { widgets: [] };
|
|
88
|
+
const routeModule = {
|
|
89
|
+
routes: [
|
|
90
|
+
{
|
|
91
|
+
Component: AlgoliaSearchEnginePage,
|
|
92
|
+
path: "/algolia"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
};
|
|
96
|
+
const menuItemModule = {
|
|
97
|
+
menuItems: [
|
|
98
|
+
{
|
|
99
|
+
label: config.label,
|
|
100
|
+
icon: void 0,
|
|
101
|
+
path: "/algolia",
|
|
102
|
+
nested: void 0
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
};
|
|
106
|
+
const formModule = { customFields: {} };
|
|
107
|
+
const displayModule = {
|
|
108
|
+
displays: {}
|
|
109
|
+
};
|
|
110
|
+
const plugin = {
|
|
111
|
+
widgetModule,
|
|
112
|
+
routeModule,
|
|
113
|
+
menuItemModule,
|
|
114
|
+
formModule,
|
|
115
|
+
displayModule
|
|
116
|
+
};
|
|
117
|
+
module.exports = plugin;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { defineRouteConfig } from "@medusajs/admin-sdk";
|
|
3
|
+
import { Container, Heading, Text, Button, Table, StatusBadge, toast } from "@medusajs/ui";
|
|
4
|
+
import { useQuery, useMutation } from "@tanstack/react-query";
|
|
5
|
+
const mercurQuery = async (url, {
|
|
6
|
+
method,
|
|
7
|
+
body,
|
|
8
|
+
query,
|
|
9
|
+
headers
|
|
10
|
+
}) => {
|
|
11
|
+
const bearer = await window.localStorage.getItem("medusa_auth_token") || "";
|
|
12
|
+
const params = Object.entries(query || {}).reduce(
|
|
13
|
+
(acc, [key, value], index) => {
|
|
14
|
+
if (value && value !== void 0) {
|
|
15
|
+
const queryLength = Object.values(query || {}).filter(
|
|
16
|
+
(i) => i && i !== void 0
|
|
17
|
+
).length;
|
|
18
|
+
acc += `${key}=${value}${index + 1 <= queryLength ? "&" : ""}`;
|
|
19
|
+
}
|
|
20
|
+
return acc;
|
|
21
|
+
},
|
|
22
|
+
""
|
|
23
|
+
);
|
|
24
|
+
const response = await fetch(`${url}${params && `?${params}`}`, {
|
|
25
|
+
method,
|
|
26
|
+
headers: {
|
|
27
|
+
authorization: `Bearer ${bearer}`,
|
|
28
|
+
"Content-Type": "application/json",
|
|
29
|
+
...headers
|
|
30
|
+
},
|
|
31
|
+
body: body ? JSON.stringify(body) : null
|
|
32
|
+
});
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
const errorData = await response.json();
|
|
35
|
+
throw new Error(errorData.message || "Nieznany błąd serwera");
|
|
36
|
+
}
|
|
37
|
+
return response.json();
|
|
38
|
+
};
|
|
39
|
+
const useSyncAlgolia = () => {
|
|
40
|
+
return useMutation({
|
|
41
|
+
mutationFn: () => mercurQuery("/admin/algolia", {
|
|
42
|
+
method: "POST"
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const useAlgolia = () => {
|
|
47
|
+
return useQuery({
|
|
48
|
+
queryKey: ["algolia"],
|
|
49
|
+
queryFn: () => mercurQuery("/admin/algolia", { method: "GET" })
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
const AlgoliaSearchEnginePage = () => {
|
|
53
|
+
const { data: algolia } = useAlgolia();
|
|
54
|
+
const { mutateAsync: triggerSynchronization } = useSyncAlgolia();
|
|
55
|
+
const handleTriggerSynchronization = async () => {
|
|
56
|
+
try {
|
|
57
|
+
await triggerSynchronization();
|
|
58
|
+
toast.success("Synchronization triggered!");
|
|
59
|
+
} catch {
|
|
60
|
+
toast.error("Error!");
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return /* @__PURE__ */ jsxs(Container, { children: [
|
|
64
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-4", children: [
|
|
65
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
66
|
+
/* @__PURE__ */ jsx(Heading, { children: "Algolia Search Engine" }),
|
|
67
|
+
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", size: "small", children: "Check Algolia Search Engine status" })
|
|
68
|
+
] }),
|
|
69
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleTriggerSynchronization, children: "Trigger Synchronization" })
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsx(Table, { children: /* @__PURE__ */ jsxs(Table.Body, { children: [
|
|
72
|
+
/* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
73
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: "Application ID" }),
|
|
74
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: algolia == null ? void 0 : algolia.appId })
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ jsxs(Table.Row, { children: [
|
|
77
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: "ProductIndex" }),
|
|
78
|
+
/* @__PURE__ */ jsx(Table.Cell, { children: (algolia == null ? void 0 : algolia.productIndex) ? /* @__PURE__ */ jsx(StatusBadge, { color: "green", children: "Exists" }) : /* @__PURE__ */ jsx(StatusBadge, { color: "red", children: "Doesn't exist" }) })
|
|
79
|
+
] })
|
|
80
|
+
] }) })
|
|
81
|
+
] });
|
|
82
|
+
};
|
|
83
|
+
const config = defineRouteConfig({
|
|
84
|
+
label: "Algolia Search Engine"
|
|
85
|
+
});
|
|
86
|
+
const widgetModule = { widgets: [] };
|
|
87
|
+
const routeModule = {
|
|
88
|
+
routes: [
|
|
89
|
+
{
|
|
90
|
+
Component: AlgoliaSearchEnginePage,
|
|
91
|
+
path: "/algolia"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
};
|
|
95
|
+
const menuItemModule = {
|
|
96
|
+
menuItems: [
|
|
97
|
+
{
|
|
98
|
+
label: config.label,
|
|
99
|
+
icon: void 0,
|
|
100
|
+
path: "/algolia",
|
|
101
|
+
nested: void 0
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
};
|
|
105
|
+
const formModule = { customFields: {} };
|
|
106
|
+
const displayModule = {
|
|
107
|
+
displays: {}
|
|
108
|
+
};
|
|
109
|
+
const plugin = {
|
|
110
|
+
widgetModule,
|
|
111
|
+
routeModule,
|
|
112
|
+
menuItemModule,
|
|
113
|
+
formModule,
|
|
114
|
+
displayModule
|
|
115
|
+
};
|
|
116
|
+
export {
|
|
117
|
+
plugin as default
|
|
118
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MedusaRequest, MedusaResponse } from "@medusajs/framework";
|
|
2
|
+
/**
|
|
3
|
+
* @oas [post] /admin/algolia
|
|
4
|
+
* operationId: "AdminSyncAlgolia"
|
|
5
|
+
* summary: "Sync Algolia"
|
|
6
|
+
* description: "Initiates a synchronization process for Algolia indices."
|
|
7
|
+
* x-authenticated: true
|
|
8
|
+
* responses:
|
|
9
|
+
* "200":
|
|
10
|
+
* description: OK
|
|
11
|
+
* content:
|
|
12
|
+
* application/json:
|
|
13
|
+
* schema:
|
|
14
|
+
* type: object
|
|
15
|
+
* properties:
|
|
16
|
+
* message:
|
|
17
|
+
* type: string
|
|
18
|
+
* description: Confirmation message that sync is in progress
|
|
19
|
+
* example: "Sync in progress"
|
|
20
|
+
* tags:
|
|
21
|
+
* - Admin Algolia
|
|
22
|
+
* security:
|
|
23
|
+
* - api_token: []
|
|
24
|
+
* - cookie_auth: []
|
|
25
|
+
*/
|
|
26
|
+
export declare const POST: (req: MedusaRequest, res: MedusaResponse) => Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* @oas [get] /admin/algolia
|
|
29
|
+
* operationId: "AdminGetAlgoliaStatus"
|
|
30
|
+
* summary: "Get Algolia Status"
|
|
31
|
+
* description: "Retrieves the current status of Algolia configuration and product index."
|
|
32
|
+
* x-authenticated: true
|
|
33
|
+
* responses:
|
|
34
|
+
* "200":
|
|
35
|
+
* description: OK
|
|
36
|
+
* content:
|
|
37
|
+
* application/json:
|
|
38
|
+
* schema:
|
|
39
|
+
* type: object
|
|
40
|
+
* properties:
|
|
41
|
+
* appId:
|
|
42
|
+
* type: string
|
|
43
|
+
* description: The Algolia application ID
|
|
44
|
+
* example: "YOUR_ALGOLIA_APP_ID"
|
|
45
|
+
* productIndex:
|
|
46
|
+
* type: object
|
|
47
|
+
* description: The status of the product index
|
|
48
|
+
* properties:
|
|
49
|
+
* exists:
|
|
50
|
+
* type: boolean
|
|
51
|
+
* description: Whether the product index exists
|
|
52
|
+
* name:
|
|
53
|
+
* type: string
|
|
54
|
+
* description: The name of the product index
|
|
55
|
+
* tags:
|
|
56
|
+
* - Admin Algolia
|
|
57
|
+
* security:
|
|
58
|
+
* - api_token: []
|
|
59
|
+
* - cookie_auth: []
|
|
60
|
+
*/
|
|
61
|
+
export declare const GET: (req: MedusaRequest, res: MedusaResponse) => Promise<void>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = exports.POST = void 0;
|
|
4
|
+
const algolia_1 = require("../../../modules/algolia");
|
|
5
|
+
const framework_1 = require("@mercurjs/framework");
|
|
6
|
+
const sync_algolia_1 = require("../../../workflows/algolia/workflows/sync-algolia");
|
|
7
|
+
/**
|
|
8
|
+
* @oas [post] /admin/algolia
|
|
9
|
+
* operationId: "AdminSyncAlgolia"
|
|
10
|
+
* summary: "Sync Algolia"
|
|
11
|
+
* description: "Initiates a synchronization process for Algolia indices."
|
|
12
|
+
* x-authenticated: true
|
|
13
|
+
* responses:
|
|
14
|
+
* "200":
|
|
15
|
+
* description: OK
|
|
16
|
+
* content:
|
|
17
|
+
* application/json:
|
|
18
|
+
* schema:
|
|
19
|
+
* type: object
|
|
20
|
+
* properties:
|
|
21
|
+
* message:
|
|
22
|
+
* type: string
|
|
23
|
+
* description: Confirmation message that sync is in progress
|
|
24
|
+
* example: "Sync in progress"
|
|
25
|
+
* tags:
|
|
26
|
+
* - Admin Algolia
|
|
27
|
+
* security:
|
|
28
|
+
* - api_token: []
|
|
29
|
+
* - cookie_auth: []
|
|
30
|
+
*/
|
|
31
|
+
const POST = async (req, res) => {
|
|
32
|
+
await sync_algolia_1.syncAlgoliaWorkflow.run({
|
|
33
|
+
container: req.scope,
|
|
34
|
+
});
|
|
35
|
+
res.status(200).json({ message: "Sync in progress" });
|
|
36
|
+
};
|
|
37
|
+
exports.POST = POST;
|
|
38
|
+
/**
|
|
39
|
+
* @oas [get] /admin/algolia
|
|
40
|
+
* operationId: "AdminGetAlgoliaStatus"
|
|
41
|
+
* summary: "Get Algolia Status"
|
|
42
|
+
* description: "Retrieves the current status of Algolia configuration and product index."
|
|
43
|
+
* x-authenticated: true
|
|
44
|
+
* responses:
|
|
45
|
+
* "200":
|
|
46
|
+
* description: OK
|
|
47
|
+
* content:
|
|
48
|
+
* application/json:
|
|
49
|
+
* schema:
|
|
50
|
+
* type: object
|
|
51
|
+
* properties:
|
|
52
|
+
* appId:
|
|
53
|
+
* type: string
|
|
54
|
+
* description: The Algolia application ID
|
|
55
|
+
* example: "YOUR_ALGOLIA_APP_ID"
|
|
56
|
+
* productIndex:
|
|
57
|
+
* type: object
|
|
58
|
+
* description: The status of the product index
|
|
59
|
+
* properties:
|
|
60
|
+
* exists:
|
|
61
|
+
* type: boolean
|
|
62
|
+
* description: Whether the product index exists
|
|
63
|
+
* name:
|
|
64
|
+
* type: string
|
|
65
|
+
* description: The name of the product index
|
|
66
|
+
* tags:
|
|
67
|
+
* - Admin Algolia
|
|
68
|
+
* security:
|
|
69
|
+
* - api_token: []
|
|
70
|
+
* - cookie_auth: []
|
|
71
|
+
*/
|
|
72
|
+
const GET = async (req, res) => {
|
|
73
|
+
const algoliaService = req.scope.resolve(algolia_1.ALGOLIA_MODULE);
|
|
74
|
+
const appId = algoliaService.getAppId();
|
|
75
|
+
const productIndex = await algoliaService.checkIndex(framework_1.IndexType.PRODUCT);
|
|
76
|
+
res.status(200).json({ appId, productIndex });
|
|
77
|
+
};
|
|
78
|
+
exports.GET = GET;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2FsZ29saWEvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0RBQWdGO0FBQ2hGLG1EQUFnRDtBQUVoRCxvRkFBd0Y7QUFFeEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sa0NBQW1CLENBQUMsR0FBRyxDQUFDO1FBQzVCLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSztLQUNyQixDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBTlcsUUFBQSxJQUFJLFFBTWY7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUNHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sY0FBYyxHQUNsQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBdUIsd0JBQWMsQ0FBQyxDQUFDO0lBRTFELE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMscUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQVBXLFFBQUEsR0FBRyxPQU9kIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import AlgoliaModuleService from "./service";
|
|
2
|
+
export declare const ALGOLIA_MODULE = "algolia";
|
|
3
|
+
export { AlgoliaModuleService };
|
|
4
|
+
export { defaultProductSettings, defaultReviewSettings } from "./service";
|
|
5
|
+
declare const _default: import("@medusajs/types").ModuleExports<typeof AlgoliaModuleService> & {
|
|
6
|
+
linkable: Record<string, any>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
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.defaultReviewSettings = exports.defaultProductSettings = exports.AlgoliaModuleService = exports.ALGOLIA_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.AlgoliaModuleService = service_1.default;
|
|
10
|
+
exports.ALGOLIA_MODULE = "algolia";
|
|
11
|
+
var service_2 = require("./service");
|
|
12
|
+
Object.defineProperty(exports, "defaultProductSettings", { enumerable: true, get: function () { return service_2.defaultProductSettings; } });
|
|
13
|
+
Object.defineProperty(exports, "defaultReviewSettings", { enumerable: true, get: function () { return service_2.defaultReviewSettings; } });
|
|
14
|
+
exports.default = (0, utils_1.Module)(exports.ALGOLIA_MODULE, {
|
|
15
|
+
service: service_1.default,
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9hbGdvbGlhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFtRDtBQUVuRCx3REFBNkM7QUFHcEMsK0JBSEYsaUJBQW9CLENBR0U7QUFEaEIsUUFBQSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBRXhDLHFDQUEwRTtBQUFqRSxpSEFBQSxzQkFBc0IsT0FBQTtBQUFFLGdIQUFBLHFCQUFxQixPQUFBO0FBRXRELGtCQUFlLElBQUEsY0FBTSxFQUFDLHNCQUFjLEVBQUU7SUFDcEMsT0FBTyxFQUFFLGlCQUFvQjtDQUM5QixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IndexSettings } from "algoliasearch";
|
|
2
|
+
import { IndexType, AlgoliaEntity } from "@mercurjs/framework";
|
|
3
|
+
type ModuleOptions = {
|
|
4
|
+
appId: string;
|
|
5
|
+
apiKey: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const defaultProductSettings: IndexSettings;
|
|
8
|
+
export declare const defaultReviewSettings: IndexSettings;
|
|
9
|
+
declare class AlgoliaModuleService {
|
|
10
|
+
private options_;
|
|
11
|
+
private algolia_;
|
|
12
|
+
constructor(_: any, options: ModuleOptions);
|
|
13
|
+
getAppId(): string;
|
|
14
|
+
checkIndex(index: IndexType): Promise<boolean>;
|
|
15
|
+
updateSettings(index: IndexType, settings: IndexSettings): Promise<import("algoliasearch").UpdatedAtResponse>;
|
|
16
|
+
batch(type: IndexType, toAdd: AlgoliaEntity[], toDelete: string[]): Promise<import("algoliasearch").BatchResponse>;
|
|
17
|
+
batchUpsert(type: IndexType, entities: AlgoliaEntity[]): Promise<import("algoliasearch").BatchResponse>;
|
|
18
|
+
batchDelete(type: IndexType, ids: string[]): Promise<import("algoliasearch").BatchResponse>;
|
|
19
|
+
upsert(type: IndexType, entity: AlgoliaEntity): Promise<import("algoliasearch").UpdatedAtWithObjectIdResponse>;
|
|
20
|
+
delete(type: IndexType, id: string): Promise<import("algoliasearch").DeletedAtResponse>;
|
|
21
|
+
partialUpdate(type: IndexType, entity: Partial<AlgoliaEntity> & {
|
|
22
|
+
id: string;
|
|
23
|
+
}): Promise<import("algoliasearch").UpdatedAtWithObjectIdResponse>;
|
|
24
|
+
}
|
|
25
|
+
export default AlgoliaModuleService;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultReviewSettings = exports.defaultProductSettings = void 0;
|
|
4
|
+
const algoliasearch_1 = require("algoliasearch");
|
|
5
|
+
exports.defaultProductSettings = {
|
|
6
|
+
searchableAttributes: [
|
|
7
|
+
"title",
|
|
8
|
+
"subtitle",
|
|
9
|
+
"tags.value",
|
|
10
|
+
"type.value",
|
|
11
|
+
"categories.name",
|
|
12
|
+
"collection.title",
|
|
13
|
+
"variants.title",
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
exports.defaultReviewSettings = {
|
|
17
|
+
attributesForFaceting: ["filterOnly(reference_id)", "filterOnly(reference)"],
|
|
18
|
+
};
|
|
19
|
+
class AlgoliaModuleService {
|
|
20
|
+
constructor(_, options) {
|
|
21
|
+
this.options_ = options;
|
|
22
|
+
this.algolia_ = (0, algoliasearch_1.algoliasearch)(this.options_.appId, this.options_.apiKey);
|
|
23
|
+
}
|
|
24
|
+
getAppId() {
|
|
25
|
+
return this.options_.appId;
|
|
26
|
+
}
|
|
27
|
+
checkIndex(index) {
|
|
28
|
+
return this.algolia_.indexExists({
|
|
29
|
+
indexName: index,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
updateSettings(index, settings) {
|
|
33
|
+
return this.algolia_.setSettings({
|
|
34
|
+
indexName: index,
|
|
35
|
+
indexSettings: settings,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
batch(type, toAdd, toDelete) {
|
|
39
|
+
const requests = toAdd.map((entity) => {
|
|
40
|
+
return {
|
|
41
|
+
action: "addObject",
|
|
42
|
+
objectID: entity.id,
|
|
43
|
+
body: entity,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
requests.concat(toDelete.map((id) => {
|
|
47
|
+
return {
|
|
48
|
+
action: "deleteObject",
|
|
49
|
+
objectID: id,
|
|
50
|
+
body: {},
|
|
51
|
+
};
|
|
52
|
+
}));
|
|
53
|
+
return this.algolia_.batch({
|
|
54
|
+
indexName: type,
|
|
55
|
+
batchWriteParams: {
|
|
56
|
+
requests,
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
batchUpsert(type, entities) {
|
|
61
|
+
return this.algolia_.batch({
|
|
62
|
+
indexName: type,
|
|
63
|
+
batchWriteParams: {
|
|
64
|
+
requests: entities.map((entity) => {
|
|
65
|
+
return {
|
|
66
|
+
action: "addObject",
|
|
67
|
+
objectID: entity.id,
|
|
68
|
+
body: entity,
|
|
69
|
+
};
|
|
70
|
+
}),
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
batchDelete(type, ids) {
|
|
75
|
+
return this.algolia_.batch({
|
|
76
|
+
indexName: type,
|
|
77
|
+
batchWriteParams: {
|
|
78
|
+
requests: ids.map((id) => {
|
|
79
|
+
return {
|
|
80
|
+
action: "deleteObject",
|
|
81
|
+
objectID: id,
|
|
82
|
+
body: {},
|
|
83
|
+
};
|
|
84
|
+
}),
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
upsert(type, entity) {
|
|
89
|
+
return this.algolia_.addOrUpdateObject({
|
|
90
|
+
indexName: type,
|
|
91
|
+
objectID: entity.id,
|
|
92
|
+
body: entity,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
delete(type, id) {
|
|
96
|
+
return this.algolia_.deleteObject({
|
|
97
|
+
indexName: type,
|
|
98
|
+
objectID: id,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
partialUpdate(type, entity) {
|
|
102
|
+
return this.algolia_.partialUpdateObject({
|
|
103
|
+
indexName: type,
|
|
104
|
+
objectID: entity.id,
|
|
105
|
+
attributesToUpdate: { ...entity },
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.default = AlgoliaModuleService;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2FsZ29saWEvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFNdUI7QUFRVixRQUFBLHNCQUFzQixHQUFrQjtJQUNuRCxvQkFBb0IsRUFBRTtRQUNwQixPQUFPO1FBQ1AsVUFBVTtRQUNWLFlBQVk7UUFDWixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixnQkFBZ0I7S0FDakI7Q0FDRixDQUFDO0FBRVcsUUFBQSxxQkFBcUIsR0FBa0I7SUFDbEQscUJBQXFCLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSx1QkFBdUIsQ0FBQztDQUM3RSxDQUFDO0FBRUYsTUFBTSxvQkFBb0I7SUFJeEIsWUFBWSxDQUFDLEVBQUUsT0FBc0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLDZCQUFhLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBZ0IsRUFBRSxRQUF1QjtRQUN0RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxRQUFRO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZSxFQUFFLEtB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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = algoliaProductsChangedHandler;
|
|
5
|
+
const algolia_1 = require("../modules/algolia");
|
|
6
|
+
const framework_1 = require("@mercurjs/framework");
|
|
7
|
+
const utils_1 = require("../subscribers/utils");
|
|
8
|
+
async function algoliaProductsChangedHandler({ event, container, }) {
|
|
9
|
+
const algolia = container.resolve(algolia_1.ALGOLIA_MODULE);
|
|
10
|
+
const { published, other } = await (0, utils_1.filterProductsByStatus)(container, event.data.ids);
|
|
11
|
+
const productsToInsert = published.length
|
|
12
|
+
? await (0, utils_1.findAndTransformAlgoliaProducts)(container, published)
|
|
13
|
+
: [];
|
|
14
|
+
await algolia.batch(framework_1.IndexType.PRODUCT, productsToInsert, other);
|
|
15
|
+
}
|
|
16
|
+
exports.config = {
|
|
17
|
+
event: framework_1.AlgoliaEvents.PRODUCTS_CHANGED,
|
|
18
|
+
context: {
|
|
19
|
+
subscriberId: "algolia-products-changed-handler",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb2xpYS1wcm9kdWN0cy1jaGFuZ2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL2FsZ29saWEtcHJvZHVjdHMtY2hhbmdlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxnREFnQkM7QUF4QkQsZ0RBQTBFO0FBQzFFLG1EQUErRDtBQUUvRCxnREFHOEI7QUFFZixLQUFLLFVBQVUsNkJBQTZCLENBQUMsRUFDMUQsS0FBSyxFQUNMLFNBQVMsR0FDeUI7SUFDbEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBdUIsd0JBQWMsQ0FBQyxDQUFDO0lBRXhFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFBLDhCQUFzQixFQUN2RCxTQUFTLEVBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2YsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE1BQU07UUFDdkMsQ0FBQyxDQUFDLE1BQU0sSUFBQSx1Q0FBK0IsRUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQzdELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFUCxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUseUJBQWEsQ0FBQyxnQkFBZ0I7SUFDckMsT0FBTyxFQUFFO1FBQ1AsWUFBWSxFQUFFLGtDQUFrQztLQUNqRDtDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = algoliaProductsDeletedHandler;
|
|
5
|
+
const algolia_1 = require("../modules/algolia");
|
|
6
|
+
const framework_1 = require("@mercurjs/framework");
|
|
7
|
+
async function algoliaProductsDeletedHandler({ event, container, }) {
|
|
8
|
+
const algolia = container.resolve(algolia_1.ALGOLIA_MODULE);
|
|
9
|
+
await algolia.batchDelete(framework_1.IndexType.PRODUCT, event.data.ids);
|
|
10
|
+
}
|
|
11
|
+
exports.config = {
|
|
12
|
+
event: framework_1.AlgoliaEvents.PRODUCTS_DELETED,
|
|
13
|
+
context: {
|
|
14
|
+
subscriberId: "algolia-products-deleted-handler",
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb2xpYS1wcm9kdWN0cy1kZWxldGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL2FsZ29saWEtcHJvZHVjdHMtZGVsZXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxnREFPQztBQVZELGdEQUEwRTtBQUMxRSxtREFBK0Q7QUFFaEQsS0FBSyxVQUFVLDZCQUE2QixDQUFDLEVBQzFELEtBQUssRUFDTCxTQUFTLEdBQ3lCO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQXVCLHdCQUFjLENBQUMsQ0FBQztJQUV4RSxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSx5QkFBYSxDQUFDLGdCQUFnQjtJQUNyQyxPQUFPLEVBQUU7UUFDUCxZQUFZLEVBQUUsa0NBQWtDO0tBQ2pEO0NBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { MedusaContainer } from "@medusajs/framework";
|
|
2
|
+
export declare function filterProductsByStatus(container: MedusaContainer, ids?: string[]): Promise<{
|
|
3
|
+
published: any[];
|
|
4
|
+
other: any[];
|
|
5
|
+
}>;
|
|
6
|
+
export declare function findAndTransformAlgoliaProducts(container: MedusaContainer, ids?: string[]): Promise<{
|
|
7
|
+
id: string;
|
|
8
|
+
description: string | null;
|
|
9
|
+
handle: string;
|
|
10
|
+
seller: {
|
|
11
|
+
id: string;
|
|
12
|
+
handle?: string | null | undefined;
|
|
13
|
+
store_status?: import("@mercurjs/framework").StoreStatus | null | undefined;
|
|
14
|
+
} | null;
|
|
15
|
+
title: string;
|
|
16
|
+
subtitle: string | null;
|
|
17
|
+
thumbnail: string | null;
|
|
18
|
+
average_rating: number | null;
|
|
19
|
+
options: Record<string, string>[] | null;
|
|
20
|
+
supported_countries: string[] | null;
|
|
21
|
+
images?: {
|
|
22
|
+
id: string;
|
|
23
|
+
rank: number;
|
|
24
|
+
url: string;
|
|
25
|
+
}[] | null | undefined;
|
|
26
|
+
collection?: {
|
|
27
|
+
title: string;
|
|
28
|
+
} | null | undefined;
|
|
29
|
+
type?: {
|
|
30
|
+
value: string;
|
|
31
|
+
} | null | undefined;
|
|
32
|
+
tags?: {
|
|
33
|
+
value: string;
|
|
34
|
+
}[] | undefined;
|
|
35
|
+
categories?: {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}[] | undefined;
|
|
39
|
+
variants?: any;
|
|
40
|
+
attribute_values?: {
|
|
41
|
+
name: string;
|
|
42
|
+
value: string;
|
|
43
|
+
is_filterable: boolean;
|
|
44
|
+
ui_component: string;
|
|
45
|
+
}[] | undefined;
|
|
46
|
+
sku?: string | null | undefined;
|
|
47
|
+
ean?: string | null | undefined;
|
|
48
|
+
upc?: string | null | undefined;
|
|
49
|
+
barcode?: string | null | undefined;
|
|
50
|
+
hs_code?: string | null | undefined;
|
|
51
|
+
mid_code?: string | null | undefined;
|
|
52
|
+
weight?: number | null | undefined;
|
|
53
|
+
length?: number | null | undefined;
|
|
54
|
+
height?: number | null | undefined;
|
|
55
|
+
width?: number | null | undefined;
|
|
56
|
+
origin_country?: string | null | undefined;
|
|
57
|
+
material?: string | null | undefined;
|
|
58
|
+
}[]>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterProductsByStatus = filterProductsByStatus;
|
|
4
|
+
exports.findAndTransformAlgoliaProducts = findAndTransformAlgoliaProducts;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const framework_1 = require("@mercurjs/framework");
|
|
8
|
+
async function selectProductVariantsSupportedCountries(container, product_id) {
|
|
9
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
10
|
+
const { data: variants } = await query.graph({
|
|
11
|
+
entity: "product_variant",
|
|
12
|
+
fields: ["inventory_items.inventory.location_levels.location_id"],
|
|
13
|
+
filters: {
|
|
14
|
+
product_id,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
let location_ids = [];
|
|
18
|
+
for (const variant of variants) {
|
|
19
|
+
const inventory_items = variant.inventory_items?.map((item) => item.inventory) || [];
|
|
20
|
+
const locations = inventory_items
|
|
21
|
+
.flatMap((inventory_item) => inventory_item.location_levels || [])
|
|
22
|
+
.map((level) => level.location_id);
|
|
23
|
+
location_ids = location_ids.concat(locations);
|
|
24
|
+
}
|
|
25
|
+
const { data: stock_locations } = await query.graph({
|
|
26
|
+
entity: "stock_location",
|
|
27
|
+
fields: ["fulfillment_sets.service_zones.geo_zones.country_code"],
|
|
28
|
+
filters: {
|
|
29
|
+
id: location_ids,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
let country_codes = [];
|
|
33
|
+
for (const location of stock_locations) {
|
|
34
|
+
const fulfillmentSets = location.fulfillment_sets?.flatMap((set) => set.service_zones || []) ||
|
|
35
|
+
[];
|
|
36
|
+
const codes = fulfillmentSets
|
|
37
|
+
.flatMap((sz) => sz.geo_zones || [])
|
|
38
|
+
.map((gz) => gz.country_code);
|
|
39
|
+
country_codes = country_codes.concat(codes);
|
|
40
|
+
}
|
|
41
|
+
return [...new Set(country_codes)];
|
|
42
|
+
}
|
|
43
|
+
async function selectProductSeller(container, product_id) {
|
|
44
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
45
|
+
const { data: [product], } = await query.graph({
|
|
46
|
+
entity: "product",
|
|
47
|
+
fields: ["seller.id", "seller.handle", "seller.store_status"],
|
|
48
|
+
filters: {
|
|
49
|
+
id: product_id,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
return product && product.seller
|
|
53
|
+
? {
|
|
54
|
+
id: product.seller.id,
|
|
55
|
+
handle: product.seller.handle,
|
|
56
|
+
store_status: product.seller.store_status,
|
|
57
|
+
}
|
|
58
|
+
: null;
|
|
59
|
+
}
|
|
60
|
+
async function filterProductsByStatus(container, ids = []) {
|
|
61
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
62
|
+
const { data: products } = await query.graph({
|
|
63
|
+
entity: "product",
|
|
64
|
+
fields: ["id", "status"],
|
|
65
|
+
filters: {
|
|
66
|
+
id: ids,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const published = products.filter((p) => p.status === "published");
|
|
70
|
+
const other = (0, utils_1.arrayDifference)(products, published);
|
|
71
|
+
return {
|
|
72
|
+
published: published.map((p) => p.id),
|
|
73
|
+
other: other.map((p) => p.id),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async function findAndTransformAlgoliaProducts(container, ids = []) {
|
|
77
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
78
|
+
const { data: products } = await query.graph({
|
|
79
|
+
entity: "product",
|
|
80
|
+
fields: [
|
|
81
|
+
"*",
|
|
82
|
+
"categories.name",
|
|
83
|
+
"categories.id",
|
|
84
|
+
"collection.title ",
|
|
85
|
+
"tags.value",
|
|
86
|
+
"type.value",
|
|
87
|
+
"variants.*",
|
|
88
|
+
"variants.options.*",
|
|
89
|
+
"variants.options.prices.*",
|
|
90
|
+
"variants.prices.*",
|
|
91
|
+
"options.*",
|
|
92
|
+
"options.values.*",
|
|
93
|
+
"images.*",
|
|
94
|
+
"attribute_values.value",
|
|
95
|
+
"attribute_values.attribute.name",
|
|
96
|
+
"attribute_values.attribute.is_filterable",
|
|
97
|
+
"attribute_values.attribute.ui_component",
|
|
98
|
+
],
|
|
99
|
+
filters: ids.length
|
|
100
|
+
? {
|
|
101
|
+
id: ids,
|
|
102
|
+
status: "published",
|
|
103
|
+
}
|
|
104
|
+
: { status: "published" },
|
|
105
|
+
});
|
|
106
|
+
for (const product of products) {
|
|
107
|
+
product.average_rating = 0;
|
|
108
|
+
product.supported_countries = await selectProductVariantsSupportedCountries(container, product.id);
|
|
109
|
+
product.seller = await selectProductSeller(container, product.id);
|
|
110
|
+
product.options = product.options
|
|
111
|
+
?.map((option) => {
|
|
112
|
+
return option.values.map((value) => {
|
|
113
|
+
const entry = {};
|
|
114
|
+
entry[option.title.toLowerCase()] = value.value;
|
|
115
|
+
return entry;
|
|
116
|
+
});
|
|
117
|
+
})
|
|
118
|
+
.flat();
|
|
119
|
+
product.variants = zod_1.z.array(framework_1.AlgoliaVariantValidator).parse(product.variants);
|
|
120
|
+
product.variants = product.variants
|
|
121
|
+
?.map((variant) => {
|
|
122
|
+
return variant.options?.reduce((entry, item) => {
|
|
123
|
+
entry[item.option.title.toLowerCase()] = item.value;
|
|
124
|
+
return entry;
|
|
125
|
+
}, variant);
|
|
126
|
+
})
|
|
127
|
+
.flat();
|
|
128
|
+
product.attribute_values = product.attribute_values?.map((attribute) => {
|
|
129
|
+
return {
|
|
130
|
+
name: attribute.attribute.name,
|
|
131
|
+
value: attribute.value,
|
|
132
|
+
is_filterable: attribute.attribute.is_filterable,
|
|
133
|
+
ui_component: attribute.attribute.ui_component,
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return zod_1.z.array(framework_1.AlgoliaProductValidator).parse(products);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb2xpYS1wcm9kdWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3V0aWxzL2FsZ29saWEtcHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVGQSx3REFxQkM7QUFFRCwwRUF3RUM7QUF0TEQsNkJBQXdCO0FBR3hCLHFEQUdtQztBQUVuQyxtREFHNkI7QUFFN0IsS0FBSyxVQUFVLHVDQUF1QyxDQUNwRCxTQUEwQixFQUMxQixVQUFrQjtJQUVsQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNDLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsTUFBTSxFQUFFLENBQUMsdURBQXVELENBQUM7UUFDakUsT0FBTyxFQUFFO1lBQ1AsVUFBVTtTQUNYO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXRCLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxlQUFlLEdBQ25CLE9BQU8sQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELE1BQU0sU0FBUyxHQUFHLGVBQWU7YUFDOUIsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQzthQUNqRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVyQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNo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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MedusaContainer } from '@medusajs/framework';
|
|
2
|
+
export declare function findAndTransformAlgoliaReviews(container: MedusaContainer, ids?: string[]): Promise<{
|
|
3
|
+
id: string;
|
|
4
|
+
reference_id: string;
|
|
5
|
+
reference: string;
|
|
6
|
+
rating: number;
|
|
7
|
+
customer_note: string | null;
|
|
8
|
+
seller_note: string | null;
|
|
9
|
+
}[]>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findAndTransformAlgoliaReviews = findAndTransformAlgoliaReviews;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const framework_1 = require("@mercurjs/framework");
|
|
7
|
+
async function findAndTransformAlgoliaReviews(container, ids = []) {
|
|
8
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
9
|
+
const { data: reviews } = await query.graph({
|
|
10
|
+
entity: 'review',
|
|
11
|
+
fields: ['*', 'seller.id', 'product.id'],
|
|
12
|
+
filters: ids.length
|
|
13
|
+
? {
|
|
14
|
+
id: ids
|
|
15
|
+
}
|
|
16
|
+
: {}
|
|
17
|
+
});
|
|
18
|
+
for (const review of reviews) {
|
|
19
|
+
review.reference_id = review.seller?.id || review.product?.id;
|
|
20
|
+
}
|
|
21
|
+
return zod_1.z.array(framework_1.AlgoliaReviewValidator).parse(reviews);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxnb2xpYS1yZXZpZXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3V0aWxzL2FsZ29saWEtcmV2aWV3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLHdFQW9CQztBQTNCRCw2QkFBdUI7QUFHdkIscURBQXFFO0FBRXJFLG1EQUE0RDtBQUVyRCxLQUFLLFVBQVUsOEJBQThCLENBQ2xELFNBQTBCLEVBQzFCLE1BQWdCLEVBQUU7SUFFbEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQyxNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUN4QyxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDakIsQ0FBQyxDQUFDO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2FBQ1I7WUFDSCxDQUFDLENBQUMsRUFBRTtLQUNQLENBQUMsQ0FBQTtJQUVGLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsT0FBTyxPQUFDLENBQUMsS0FBSyxDQUFDLGtDQUFzQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3ZELENBQUMifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./algolia-product"), exports);
|
|
18
|
+
__exportStar(require("./algolia-reviews"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFpQztBQUNqQyxvREFBaUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sync-algolia-products';
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./sync-algolia-products"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2FsZ29saWEvc3RlcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUF1QyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const syncAlgoliaProductsStep: import("@medusajs/framework/workflows-sdk").StepFunction<void, unknown>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncAlgoliaProductsStep = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const algolia_1 = require("../../../modules/algolia");
|
|
7
|
+
const framework_1 = require("@mercurjs/framework");
|
|
8
|
+
const CHUNK_SIZE = 100;
|
|
9
|
+
exports.syncAlgoliaProductsStep = (0, workflows_sdk_1.createStep)("sync-algolia-products", async (_, { container }) => {
|
|
10
|
+
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
const algolia = container.resolve(algolia_1.ALGOLIA_MODULE);
|
|
12
|
+
const { data: productsToDelete } = await query.graph({
|
|
13
|
+
entity: "product",
|
|
14
|
+
filters: {
|
|
15
|
+
$or: [
|
|
16
|
+
{
|
|
17
|
+
deleted_at: {
|
|
18
|
+
$ne: null,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
status: {
|
|
23
|
+
$ne: "published",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
fields: ["id"],
|
|
29
|
+
});
|
|
30
|
+
await algolia.batchDelete(framework_1.IndexType.PRODUCT, productsToDelete.map((p) => p.id));
|
|
31
|
+
const { data: publishedProducts } = await query.graph({
|
|
32
|
+
entity: "product",
|
|
33
|
+
filters: {
|
|
34
|
+
status: "published",
|
|
35
|
+
},
|
|
36
|
+
fields: ["id"],
|
|
37
|
+
});
|
|
38
|
+
const productsToInsert = publishedProducts.map((p) => p.id);
|
|
39
|
+
const productChunks = [];
|
|
40
|
+
for (let i = 0; i < productsToInsert.length; i += CHUNK_SIZE) {
|
|
41
|
+
productChunks.push(productsToInsert.slice(i, i + CHUNK_SIZE));
|
|
42
|
+
}
|
|
43
|
+
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
|
|
44
|
+
for (const chunk of productChunks) {
|
|
45
|
+
await eventBus.emit({
|
|
46
|
+
name: framework_1.AlgoliaEvents.PRODUCTS_CHANGED,
|
|
47
|
+
data: {
|
|
48
|
+
ids: chunk,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return new workflows_sdk_1.StepResponse();
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hbGdvbGlhLXByb2R1Y3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hbGdvbGlhL3N0ZXBzL3N5bmMtYWxnb2xpYS1wcm9kdWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBK0U7QUFDL0UscUVBQTZFO0FBRTdFLHNEQUFnRjtBQUNoRixtREFBK0Q7QUFFL0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBRVYsUUFBQSx1QkFBdUIsR0FBRyxJQUFBLDBCQUFVLEVBQy9DLHVCQUF1QixFQUN2QixLQUFLLEVBQUUsQ0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQXVCLHdCQUFjLENBQUMsQ0FBQztJQUV4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ25ELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRTtnQkFDSDtvQkFDRSxVQUFVLEVBQUU7d0JBQ1YsR0FBRyxFQUFFLElBQUk7cUJBQ1Y7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLEdBQUcsRUFBRSxXQUFXO3FCQUNqQjtpQkFDRjthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDZixDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQ3ZCLHFCQUFTLENBQUMsT0FBTyxFQUNqQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDbEMsQ0FBQztJQUVGLE1BQU0sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEQsTUFBTSxFQUFFLFNBQVM7UUFDakIsT0FBTyxFQUFFO1lBQ1AsTUFBTSxFQUFFLFdBQVc7U0FDcEI7UUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDZixDQUFDLENBQUM7SUFFSCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sYUFBYSxHQUFlLEVBQUUsQ0FBQztJQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3RCxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEMsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLElBQUksRUFBRSx5QkFBYSxDQUFDLGdCQUFnQjtZQUNwQyxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEtBQUs7YUFDWDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksRUFBRSxDQUFDO0FBQzVCLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './sync-algolia';
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./sync-algolia"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2FsZ29saWEvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBOEIifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const syncAlgoliaWorkflow: import("@medusajs/workflows-sdk").ReturnWorkflow<unknown, unknown, []>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncAlgoliaWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/workflows-sdk");
|
|
5
|
+
const steps_1 = require("../steps");
|
|
6
|
+
exports.syncAlgoliaWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-algolia-workflow', function () {
|
|
7
|
+
return new workflows_sdk_1.WorkflowResponse((0, steps_1.syncAlgoliaProductsStep)());
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hbGdvbGlhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hbGdvbGlhL3dvcmtmbG93cy9zeW5jLWFsZ29saWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQTBFO0FBRTFFLG9DQUFrRDtBQUVyQyxRQUFBLG1CQUFtQixHQUFHLElBQUEsOEJBQWMsRUFDL0MsdUJBQXVCLEVBQ3ZCO0lBQ0UsT0FBTyxJQUFJLGdDQUFnQixDQUFDLElBQUEsK0JBQXVCLEdBQUUsQ0FBQyxDQUFBO0FBQ3hELENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./algolia/steps"), exports);
|
|
18
|
+
__exportStar(require("./algolia/workflows"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBZ0M7QUFDaEMsc0RBQW9DIn0=
|
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<h1>Mercur <br> Open Source Marketplace Platform</h1>
|
|
5
|
+
<!-- Shields.io Badges -->
|
|
6
|
+
<a href="https://github.com/mercurjs/mercur/tree/main?tab=MIT-1-ov-file">
|
|
7
|
+
<img alt="License" src="https://img.shields.io/badge/license-MIT-blue.svg" />
|
|
8
|
+
</a>
|
|
9
|
+
<a href="#">
|
|
10
|
+
<img alt="PRs Welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" />
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://rigbyjs.com/#contact">
|
|
13
|
+
<img alt="Support" src="https://img.shields.io/badge/support-contact%20author-blueviolet.svg" />
|
|
14
|
+
</a>
|
|
15
|
+
<p>
|
|
16
|
+
<a href="https://mercurjs.com/">Mercur</a> | <a href="https://docs.mercurjs.com/">Docs</a>
|
|
17
|
+
</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
# @mercurjs/algolia
|
|
21
|
+
|
|
22
|
+
This package is a part of MercurJS! Check our <a href="https://github.com/mercurjs/mercur">Github</a> for more information!
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mercurjs/algolia",
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"author": "MercurJS <hello@mercurjs.com> (https://mercurjs.com)",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/mercurjs/mercur"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"mercur",
|
|
12
|
+
"marketplace",
|
|
13
|
+
"medusajs",
|
|
14
|
+
"mercurjs"
|
|
15
|
+
],
|
|
16
|
+
"files": [
|
|
17
|
+
".medusa/server"
|
|
18
|
+
],
|
|
19
|
+
"exports": {
|
|
20
|
+
"./package.json": "./package.json",
|
|
21
|
+
"./workflows": "./.medusa/server/src/workflows/index.js",
|
|
22
|
+
"./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
23
|
+
"./modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
24
|
+
"./providers/*": "./.medusa/server/src/providers/*/index.js",
|
|
25
|
+
"./admin": {
|
|
26
|
+
"import": "./.medusa/server/src/admin/index.mjs",
|
|
27
|
+
"require": "./.medusa/server/src/admin/index.js",
|
|
28
|
+
"default": "./.medusa/server/src/admin/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./*": "./.medusa/server/src/*.js"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "medusa plugin:build",
|
|
34
|
+
"dev": "medusa plugin:develop",
|
|
35
|
+
"prepublishOnly": "medusa plugin:build"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@medusajs/admin-sdk": "2.8.6",
|
|
39
|
+
"@medusajs/cli": "2.8.6",
|
|
40
|
+
"@medusajs/framework": "2.8.6",
|
|
41
|
+
"@medusajs/icons": "2.8.6",
|
|
42
|
+
"@medusajs/medusa": "2.8.6",
|
|
43
|
+
"@medusajs/test-utils": "2.8.6",
|
|
44
|
+
"@medusajs/ui": "4.0.4",
|
|
45
|
+
"@mercurjs/framework": "*",
|
|
46
|
+
"@mikro-orm/cli": "6.4.3",
|
|
47
|
+
"@mikro-orm/core": "6.4.3",
|
|
48
|
+
"@mikro-orm/knex": "6.4.3",
|
|
49
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
50
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
51
|
+
"@swc/core": "1.5.7",
|
|
52
|
+
"@types/node": "^20.0.0",
|
|
53
|
+
"@types/react": "^18.3.2",
|
|
54
|
+
"@types/react-dom": "^18.2.25",
|
|
55
|
+
"awilix": "^8.0.1",
|
|
56
|
+
"pg": "^8.13.0",
|
|
57
|
+
"prop-types": "^15.8.1",
|
|
58
|
+
"react": "^18.2.0",
|
|
59
|
+
"react-dom": "^18.2.0",
|
|
60
|
+
"ts-node": "^10.9.2",
|
|
61
|
+
"typescript": "^5.6.2",
|
|
62
|
+
"vite": "^5.2.11",
|
|
63
|
+
"yalc": "^1.0.0-pre.53"
|
|
64
|
+
},
|
|
65
|
+
"peerDependencies": {
|
|
66
|
+
"@medusajs/admin-sdk": "2.8.6",
|
|
67
|
+
"@medusajs/cli": "2.8.6",
|
|
68
|
+
"@medusajs/framework": "2.8.6",
|
|
69
|
+
"@medusajs/icons": "2.8.6",
|
|
70
|
+
"@medusajs/medusa": "2.8.6",
|
|
71
|
+
"@medusajs/test-utils": "2.8.6",
|
|
72
|
+
"@medusajs/ui": "4.0.3",
|
|
73
|
+
"@mercurjs/framework": "*",
|
|
74
|
+
"@mikro-orm/cli": "6.4.3",
|
|
75
|
+
"@mikro-orm/core": "6.4.3",
|
|
76
|
+
"@mikro-orm/knex": "6.4.3",
|
|
77
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
78
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
79
|
+
"awilix": "^8.0.1",
|
|
80
|
+
"pg": "^8.13.0"
|
|
81
|
+
},
|
|
82
|
+
"engines": {
|
|
83
|
+
"node": ">=20"
|
|
84
|
+
},
|
|
85
|
+
"dependencies": {
|
|
86
|
+
"algoliasearch": "^5.40.0"
|
|
87
|
+
}
|
|
88
|
+
}
|