@abcagency/hc-ui-components 1.5.3 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export function initializeAlgoliaSearch(appId: string, apiKey: string, indexName: string): boolean;
|
|
2
2
|
export function isAlgoliaAvailable(): boolean;
|
|
3
|
-
export function searchAlgolia(query: string): Promise<
|
|
4
|
-
|
|
3
|
+
export function searchAlgolia(query: string): Promise<{
|
|
4
|
+
referenceNumbers: number[];
|
|
5
|
+
ids: string[];
|
|
6
|
+
}>;
|
|
7
|
+
export function filterListingsByAlgoliaSearch(listings: any, query: any): Promise<any>;
|
|
@@ -35,11 +35,11 @@ var isAlgoliaAvailable = function isAlgoliaAvailable() {
|
|
|
35
35
|
/**
|
|
36
36
|
* Search using Algolia and return matching listing IDs
|
|
37
37
|
* @param {string} query - Search query
|
|
38
|
-
* @returns {Promise<number[]>}
|
|
38
|
+
* @returns {Promise<{referenceNumbers: number[], ids: string[]}>} Object with arrays of referenceNumbers and ids
|
|
39
39
|
*/
|
|
40
40
|
var searchAlgolia = /*#__PURE__*/function () {
|
|
41
41
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(query) {
|
|
42
|
-
var _results$, _yield$algoliaClient$, results, hits,
|
|
42
|
+
var _results$, _yield$algoliaClient$, results, hits, referenceNumbers, ids;
|
|
43
43
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
44
44
|
while (1) switch (_context.prev = _context.next) {
|
|
45
45
|
case 0:
|
|
@@ -63,39 +63,45 @@ var searchAlgolia = /*#__PURE__*/function () {
|
|
|
63
63
|
results = _yield$algoliaClient$.results;
|
|
64
64
|
// Extract IDs from the results
|
|
65
65
|
hits = ((_results$ = results[0]) === null || _results$ === void 0 ? void 0 : _results$.hits) || [];
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
console.log('Algolia search returned', hits.length, 'hits');
|
|
67
|
+
referenceNumbers = [];
|
|
68
|
+
ids = [];
|
|
69
|
+
hits.forEach(function (hit) {
|
|
70
|
+
if (hit.referenceNumber) {
|
|
71
|
+
referenceNumbers.push(parseInt(hit.referenceNumber));
|
|
72
|
+
}
|
|
73
|
+
if (hit.id) {
|
|
74
|
+
ids.push(hit.id);
|
|
75
|
+
}
|
|
72
76
|
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
console.log('Extracted', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids from Algolia');
|
|
78
|
+
return _context.abrupt("return", {
|
|
79
|
+
referenceNumbers: referenceNumbers,
|
|
80
|
+
ids: ids
|
|
81
|
+
});
|
|
82
|
+
case 16:
|
|
83
|
+
_context.prev = 16;
|
|
76
84
|
_context.t0 = _context["catch"](2);
|
|
77
85
|
console.error('Algolia search failed:', _context.t0);
|
|
78
86
|
throw _context.t0;
|
|
79
|
-
case
|
|
87
|
+
case 20:
|
|
80
88
|
case "end":
|
|
81
89
|
return _context.stop();
|
|
82
90
|
}
|
|
83
|
-
}, _callee, null, [[2,
|
|
91
|
+
}, _callee, null, [[2, 16]]);
|
|
84
92
|
}));
|
|
85
93
|
return function searchAlgolia(_x) {
|
|
86
94
|
return _ref.apply(this, arguments);
|
|
87
95
|
};
|
|
88
|
-
}();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
* @returns {Promise<Array>} Filtered listings
|
|
95
|
-
*/
|
|
96
|
+
}(); /**
|
|
97
|
+
* Filter listings by Algolia search results
|
|
98
|
+
* @param {Array} listings - All listings to filter
|
|
99
|
+
* @param {string} query - Search query
|
|
100
|
+
* @returns {Promise<Array>} Filtered listings
|
|
101
|
+
*/
|
|
96
102
|
var filterListingsByAlgoliaSearch = /*#__PURE__*/function () {
|
|
97
103
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(listings, query) {
|
|
98
|
-
var
|
|
104
|
+
var _yield$searchAlgolia, referenceNumbers, ids, filtered;
|
|
99
105
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
100
106
|
while (1) switch (_context2.prev = _context2.next) {
|
|
101
107
|
case 0:
|
|
@@ -109,20 +115,35 @@ var filterListingsByAlgoliaSearch = /*#__PURE__*/function () {
|
|
|
109
115
|
_context2.next = 5;
|
|
110
116
|
return searchAlgolia(query);
|
|
111
117
|
case 5:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
118
|
+
_yield$searchAlgolia = _context2.sent;
|
|
119
|
+
referenceNumbers = _yield$searchAlgolia.referenceNumbers;
|
|
120
|
+
ids = _yield$searchAlgolia.ids;
|
|
121
|
+
console.log('Filtering', listings.length, 'listings against', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids');
|
|
122
|
+
console.log('Sample listing referenceNumbers:', listings.slice(0, 5).map(function (l) {
|
|
123
|
+
return l.referenceNumber;
|
|
124
|
+
}));
|
|
125
|
+
console.log('Sample listing ids:', listings.slice(0, 5).map(function (l) {
|
|
126
|
+
return l.id;
|
|
115
127
|
}));
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
console.log('Sample Algolia referenceNumbers:', referenceNumbers.slice(0, 5));
|
|
129
|
+
console.log('Sample Algolia ids:', ids.slice(0, 5));
|
|
130
|
+
|
|
131
|
+
// Filter listings by matching referenceNumber OR id
|
|
132
|
+
filtered = listings.filter(function (listing) {
|
|
133
|
+
return referenceNumbers.includes(listing.referenceNumber) || ids.includes(listing.id);
|
|
134
|
+
});
|
|
135
|
+
console.log('Filtered result:', filtered.length, 'listings matched');
|
|
136
|
+
return _context2.abrupt("return", filtered);
|
|
137
|
+
case 18:
|
|
138
|
+
_context2.prev = 18;
|
|
118
139
|
_context2.t0 = _context2["catch"](2);
|
|
119
140
|
console.error('Failed to filter by Algolia search, returning all listings:', _context2.t0);
|
|
120
141
|
return _context2.abrupt("return", listings);
|
|
121
|
-
case
|
|
142
|
+
case 22:
|
|
122
143
|
case "end":
|
|
123
144
|
return _context2.stop();
|
|
124
145
|
}
|
|
125
|
-
}, _callee2, null, [[2,
|
|
146
|
+
}, _callee2, null, [[2, 18]]);
|
|
126
147
|
}));
|
|
127
148
|
return function filterListingsByAlgoliaSearch(_x2, _x3) {
|
|
128
149
|
return _ref2.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"algoliaSearchUtil.js","sources":["../../src/util/algoliaSearchUtil.js"],"sourcesContent":["import { liteClient as algoliasearch } from 'algoliasearch/lite';\n\nlet algoliaClient = null;\nlet algoliaIndexName = null;\n\n/**\n * Initialize Algolia search client\n * @param {string} appId - Algolia Application ID\n * @param {string} apiKey - Algolia Search API Key\n * @param {string} indexName - Algolia Index Name\n */\nexport const initializeAlgoliaSearch = (appId, apiKey, indexName) => {\n\tif (!appId || !apiKey || !indexName) {\n\t\tconsole.warn('Algolia search not initialized: missing configuration');\n\t\treturn false;\n\t}\n\
|
|
1
|
+
{"version":3,"file":"algoliaSearchUtil.js","sources":["../../src/util/algoliaSearchUtil.js"],"sourcesContent":["import { liteClient as algoliasearch } from 'algoliasearch/lite';\n\nlet algoliaClient = null;\nlet algoliaIndexName = null;\n\n/**\n * Initialize Algolia search client\n * @param {string} appId - Algolia Application ID\n * @param {string} apiKey - Algolia Search API Key\n * @param {string} indexName - Algolia Index Name\n */\nexport const initializeAlgoliaSearch = (appId, apiKey, indexName) => {\n\tif (!appId || !apiKey || !indexName) {\n\t\tconsole.warn('Algolia search not initialized: missing configuration');\n\t\treturn false;\n\t}\n\n\ttry {\n\t\talgoliaClient = algoliasearch(appId, apiKey);\n\t\talgoliaIndexName = indexName;\n\t\treturn true;\n\t} catch (error) {\n\t\tconsole.error('Failed to initialize Algolia:', error);\n\t\treturn false;\n\t}\n};\n\n/**\n * Check if Algolia is initialized and available\n */\nexport const isAlgoliaAvailable = () => {\n\treturn algoliaClient !== null && algoliaIndexName !== null;\n};\n\n/**\n * Search using Algolia and return matching listing IDs\n * @param {string} query - Search query\n * @returns {Promise<{referenceNumbers: number[], ids: string[]}>} Object with arrays of referenceNumbers and ids\n */\nexport const searchAlgolia = async (query) => {\n\tif (!isAlgoliaAvailable()) {\n\t\tthrow new Error('Algolia search is not initialized');\n\t}\n\n\ttry {\n\t\tconst { results } = await algoliaClient.search({\n\t\t\trequests: [\n\t\t\t\t{\n\t\t\t\t\tindexName: algoliaIndexName,\n\t\t\t\t\tquery: query,\n\t\t\t\t\thitsPerPage: 1000 // Adjust based on your needs\n\t\t\t\t}\n\t\t\t]\n\t\t});\n\n\t\t// Extract IDs from the results\n\t\tconst hits = results[0]?.hits || [];\n\t\tconsole.log('Algolia search returned', hits.length, 'hits');\n\t\t\n\t\tconst referenceNumbers = [];\n\t\tconst ids = [];\n\t\t\n\t\thits.forEach(hit => {\n\t\t\tif (hit.referenceNumber) {\n\t\t\t\treferenceNumbers.push(parseInt(hit.referenceNumber));\n\t\t\t}\n\t\t\tif (hit.id) {\n\t\t\t\tids.push(hit.id);\n\t\t\t}\n\t\t});\n\n\t\tconsole.log('Extracted', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids from Algolia');\n\t\treturn { referenceNumbers, ids };\n\t} catch (error) {\n\t\tconsole.error('Algolia search failed:', error);\n\t\tthrow error;\n\t}\n};/**\n * Filter listings by Algolia search results\n * @param {Array} listings - All listings to filter\n * @param {string} query - Search query\n * @returns {Promise<Array>} Filtered listings\n */\nexport const filterListingsByAlgoliaSearch = async (listings, query) => {\n\tif (!query || !isAlgoliaAvailable()) {\n\t\treturn listings;\n\t}\n\n\ttry {\n\t\tconst { referenceNumbers, ids } = await searchAlgolia(query);\n\t\t\n\t\tconsole.log('Filtering', listings.length, 'listings against', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids');\n\t\tconsole.log('Sample listing referenceNumbers:', listings.slice(0, 5).map(l => l.referenceNumber));\n\t\tconsole.log('Sample listing ids:', listings.slice(0, 5).map(l => l.id));\n\t\tconsole.log('Sample Algolia referenceNumbers:', referenceNumbers.slice(0, 5));\n\t\tconsole.log('Sample Algolia ids:', ids.slice(0, 5));\n\t\t\n\t\t// Filter listings by matching referenceNumber OR id\n\t\tconst filtered = listings.filter(listing => \n\t\t\treferenceNumbers.includes(listing.referenceNumber) || ids.includes(listing.id)\n\t\t);\n\t\t\n\t\tconsole.log('Filtered result:', filtered.length, 'listings matched');\n\t\treturn filtered;\n\t} catch (error) {\n\t\tconsole.error('Failed to filter by Algolia search, returning all listings:', error);\n\t\treturn listings;\n\t}\n};\n"],"names":["algoliaClient","algoliaIndexName","initializeAlgoliaSearch","appId","apiKey","indexName","console","warn","algoliasearch","error","isAlgoliaAvailable","searchAlgolia","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_results$","_yield$algoliaClient$","results","hits","referenceNumbers","ids","wrap","_callee$","_context","prev","next","Error","search","requests","hitsPerPage","sent","log","length","forEach","hit","referenceNumber","push","parseInt","id","abrupt","t0","stop","_x","apply","arguments","filterListingsByAlgoliaSearch","_ref2","_callee2","listings","_yield$searchAlgolia","filtered","_callee2$","_context2","slice","map","l","filter","listing","includes","_x2","_x3"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@ export const initializeAlgoliaSearch = (appId, apiKey, indexName) => {
|
|
|
14
14
|
console.warn('Algolia search not initialized: missing configuration');
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
try {
|
|
19
19
|
algoliaClient = algoliasearch(appId, apiKey);
|
|
20
20
|
algoliaIndexName = indexName;
|
|
@@ -35,7 +35,7 @@ export const isAlgoliaAvailable = () => {
|
|
|
35
35
|
/**
|
|
36
36
|
* Search using Algolia and return matching listing IDs
|
|
37
37
|
* @param {string} query - Search query
|
|
38
|
-
* @returns {Promise<number[]>}
|
|
38
|
+
* @returns {Promise<{referenceNumbers: number[], ids: string[]}>} Object with arrays of referenceNumbers and ids
|
|
39
39
|
*/
|
|
40
40
|
export const searchAlgolia = async (query) => {
|
|
41
41
|
if (!isAlgoliaAvailable()) {
|
|
@@ -55,20 +55,27 @@ export const searchAlgolia = async (query) => {
|
|
|
55
55
|
|
|
56
56
|
// Extract IDs from the results
|
|
57
57
|
const hits = results[0]?.hits || [];
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
console.log('Algolia search returned', hits.length, 'hits');
|
|
59
|
+
|
|
60
|
+
const referenceNumbers = [];
|
|
61
|
+
const ids = [];
|
|
62
|
+
|
|
63
|
+
hits.forEach(hit => {
|
|
64
|
+
if (hit.referenceNumber) {
|
|
65
|
+
referenceNumbers.push(parseInt(hit.referenceNumber));
|
|
66
|
+
}
|
|
67
|
+
if (hit.id) {
|
|
68
|
+
ids.push(hit.id);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
63
71
|
|
|
64
|
-
|
|
72
|
+
console.log('Extracted', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids from Algolia');
|
|
73
|
+
return { referenceNumbers, ids };
|
|
65
74
|
} catch (error) {
|
|
66
75
|
console.error('Algolia search failed:', error);
|
|
67
76
|
throw error;
|
|
68
77
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
78
|
+
};/**
|
|
72
79
|
* Filter listings by Algolia search results
|
|
73
80
|
* @param {Array} listings - All listings to filter
|
|
74
81
|
* @param {string} query - Search query
|
|
@@ -80,10 +87,21 @@ export const filterListingsByAlgoliaSearch = async (listings, query) => {
|
|
|
80
87
|
}
|
|
81
88
|
|
|
82
89
|
try {
|
|
83
|
-
const
|
|
90
|
+
const { referenceNumbers, ids } = await searchAlgolia(query);
|
|
91
|
+
|
|
92
|
+
console.log('Filtering', listings.length, 'listings against', referenceNumbers.length, 'referenceNumbers and', ids.length, 'ids');
|
|
93
|
+
console.log('Sample listing referenceNumbers:', listings.slice(0, 5).map(l => l.referenceNumber));
|
|
94
|
+
console.log('Sample listing ids:', listings.slice(0, 5).map(l => l.id));
|
|
95
|
+
console.log('Sample Algolia referenceNumbers:', referenceNumbers.slice(0, 5));
|
|
96
|
+
console.log('Sample Algolia ids:', ids.slice(0, 5));
|
|
97
|
+
|
|
98
|
+
// Filter listings by matching referenceNumber OR id
|
|
99
|
+
const filtered = listings.filter(listing =>
|
|
100
|
+
referenceNumbers.includes(listing.referenceNumber) || ids.includes(listing.id)
|
|
101
|
+
);
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
return
|
|
103
|
+
console.log('Filtered result:', filtered.length, 'listings matched');
|
|
104
|
+
return filtered;
|
|
87
105
|
} catch (error) {
|
|
88
106
|
console.error('Failed to filter by Algolia search, returning all listings:', error);
|
|
89
107
|
return listings;
|