annosearch 0.0.9 → 0.1.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/dist/search.js +6 -7
- package/dist/search.js.map +1 -1
- package/dist/server.js +1 -11
- package/dist/server.js.map +1 -1
- package/dist/utils.js +0 -20
- package/dist/utils.js.map +1 -1
- package/dist/validate.js +52 -0
- package/dist/validate.js.map +1 -0
- package/package.json +1 -1
package/dist/search.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.searchIndex = searchIndex;
|
|
|
13
13
|
const quickwit_1 = require("./quickwit");
|
|
14
14
|
const errors_1 = require("./errors");
|
|
15
15
|
const iiif_1 = require("./iiif");
|
|
16
|
+
const validate_1 = require("./validate");
|
|
16
17
|
const contentType = 'application/json';
|
|
17
18
|
const quickwitClient = (0, quickwit_1.createClient)(contentType);
|
|
18
19
|
function buildDateQueryFromString(dateRangesString) {
|
|
@@ -32,16 +33,14 @@ function buildDateQueryFromString(dateRangesString) {
|
|
|
32
33
|
function searchIndex(indexId, q, motivation, maxHits, page, searchUrl, date) {
|
|
33
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
35
|
const startOffset = page * maxHits;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
36
|
+
(0, validate_1.validateQueryParameter)(q);
|
|
37
|
+
(0, validate_1.validatePageNumber)(page);
|
|
38
|
+
(0, validate_1.validateMaxHits)(maxHits);
|
|
39
|
+
(0, validate_1.validateDateRanges)(date);
|
|
40
|
+
(0, validate_1.validateOffset)(startOffset);
|
|
41
41
|
const qQuery = `body.value:${q}`;
|
|
42
42
|
const motivationQuery = motivation ? ` AND motivation:${motivation}` : '';
|
|
43
43
|
const dateQuery = date ? ` AND (${buildDateQueryFromString(date)})` : '';
|
|
44
|
-
//console.log(`Searching index ${indexId} with query: ${qQuery}${motivationQuery}${dateQuery}`);
|
|
45
44
|
const response = yield quickwitClient.post(`${indexId}/search`, {
|
|
46
45
|
query: `${qQuery}${motivationQuery}${dateQuery}`,
|
|
47
46
|
max_hits: maxHits,
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":";;;;;;;;;;;AAyBA,kCAqBC;AA9CD,yCAA0C;AAC1C,qCAAqD;AACrD,iCAA4C;AAC5C,yCAA6H;AAE7H,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAGjD,SAAS,wBAAwB,CAAC,gBAAwB;IACtD,8DAA8D;IAC9D,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/C,2DAA2D;IAC3D,OAAO,UAAU;SACZ,GAAG,CAAC,KAAK,CAAC,EAAE;QACT,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,kCAAyB,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,YAAY,KAAK,OAAO,GAAG,GAAG,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAsB,WAAW,CAAC,OAAe,EAAE,CAAS,EAAE,UAAkB,EAAE,OAAe,EAAE,IAAY,EAAE,SAAiB,EAAE,IAAY;;QAC5I,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC;QACnC,IAAA,iCAAsB,EAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,6BAAkB,EAAC,IAAI,CAAC,CAAC;QACzB,IAAA,0BAAe,EAAC,OAAO,CAAC,CAAC;QACzB,IAAA,6BAAkB,EAAC,IAAI,CAAC,CAAC;QACzB,IAAA,yBAAc,EAAC,WAAW,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,SAAS,EAAE;YAC5D,KAAK,EAAE,GAAG,MAAM,GAAG,eAAe,GAAG,SAAS,EAAE;YAChD,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;SAC5B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAA,yBAAkB,EAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;CAAA"}
|
package/dist/server.js
CHANGED
|
@@ -53,17 +53,7 @@ function serve(client) {
|
|
|
53
53
|
try {
|
|
54
54
|
const { index = '' } = req.params;
|
|
55
55
|
const { q = '', page = '0', motivation = undefined, date = undefined } = req.query;
|
|
56
|
-
const pageNumber =
|
|
57
|
-
const maxHits = client.getMaxHits();
|
|
58
|
-
// Validate the 'page' parameter
|
|
59
|
-
if (!Number.isInteger(pageNumber) || pageNumber < 0) {
|
|
60
|
-
throw new errors_1.AnnoSearchValidationError('Invalid "page" parameter: must be a non-negative integer');
|
|
61
|
-
}
|
|
62
|
-
// Validate the 'maxHits' parameter
|
|
63
|
-
if (!Number.isInteger(maxHits) || maxHits <= 0) {
|
|
64
|
-
throw new errors_1.AnnoSearchValidationError('Invalid "maxHits" configuration: must be a positive integer');
|
|
65
|
-
}
|
|
66
|
-
(0, utils_1.validateDateRanges)(date);
|
|
56
|
+
const pageNumber = Number(page);
|
|
67
57
|
const results = yield client.searchIndex(index, q, motivation, pageNumber, date);
|
|
68
58
|
res.json(results);
|
|
69
59
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUlB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUlB,sBAoCC;AA5CD,sDAA8B;AAE9B,kDAA0C,CAAC,mCAAmC;AAC9E,mCAAyC;AACzC,mDAAmD,CAAC,uBAAuB;AAC3E,0DAAiC;AACjC,qCAAmD;AAEnD,SAAsB,KAAK,CAAC,MAAkB;;QAC1C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACtB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAE7B,GAAG,CAAC,GAAG,CAAC,IAAA,mBAAQ,EAAC,EAAE,MAAM,EAAN,gBAAM,EAAE,CAAC,CAAC,CAAC;QAE9B,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,CAAC;gBACD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAClC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,UAAU,GAAG,SAAS,EAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;gBACpF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAe,EAAE,CAAW,EAAE,UAAoB,EAAE,UAAU,EAAE,IAAc,CAAC,CAAC;gBACzH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAA,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAP,sBAAO,EAAE,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAA,sBAAc,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAA,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,gCAAuB,CAAC,kBAAkB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7F,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,wBAAe,CAAC,CAAC;QAEzB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC;CAAA"}
|
package/dist/utils.js
CHANGED
|
@@ -18,7 +18,6 @@ exports.handleError = handleError;
|
|
|
18
18
|
exports.handleWebError = handleWebError;
|
|
19
19
|
exports.fetchJson = fetchJson;
|
|
20
20
|
exports.createJsonl = createJsonl;
|
|
21
|
-
exports.validateDateRanges = validateDateRanges;
|
|
22
21
|
const axios_1 = __importDefault(require("axios"));
|
|
23
22
|
const errors_1 = require("./errors");
|
|
24
23
|
const axios_2 = require("axios");
|
|
@@ -116,23 +115,4 @@ function createJsonl(data) {
|
|
|
116
115
|
return JSON.stringify(data) + '\n';
|
|
117
116
|
}
|
|
118
117
|
}
|
|
119
|
-
function validateDateRanges(ranges) {
|
|
120
|
-
// Split the ranges by space
|
|
121
|
-
const rangeList = ranges.split(" ");
|
|
122
|
-
// Define the regex pattern for a valid date range in ISO8601 format
|
|
123
|
-
const rangePattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z\/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
|
|
124
|
-
// Check each range
|
|
125
|
-
for (const range of rangeList) {
|
|
126
|
-
if (!rangePattern.test(range)) {
|
|
127
|
-
throw new errors_1.AnnoSearchValidationError(`Invalid range format: ${range}`);
|
|
128
|
-
}
|
|
129
|
-
// Further validate that the start date is before the end date
|
|
130
|
-
const [start, end] = range.split("/");
|
|
131
|
-
const startDate = new Date(start);
|
|
132
|
-
const endDate = new Date(end);
|
|
133
|
-
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime()) || startDate > endDate) {
|
|
134
|
-
throw new errors_1.AnnoSearchValidationError(`Invalid date range: ${range}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
118
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAQA,8BAEC;AAGD,4BAoBC;AAKD,kCAGC;AAED,wCAwCC;AAID,8BAOC;AAED,kCAMC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateQueryParameter = validateQueryParameter;
|
|
4
|
+
exports.validateOffset = validateOffset;
|
|
5
|
+
exports.validatePageNumber = validatePageNumber;
|
|
6
|
+
exports.validateMaxHits = validateMaxHits;
|
|
7
|
+
exports.validateDateRanges = validateDateRanges;
|
|
8
|
+
const errors_1 = require("./errors");
|
|
9
|
+
function validateQueryParameter(query) {
|
|
10
|
+
if (!query.trim()) {
|
|
11
|
+
throw new errors_1.AnnoSearchValidationError('Missing query parameter');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function validateOffset(offset) {
|
|
15
|
+
if (offset < 0) {
|
|
16
|
+
throw new errors_1.AnnoSearchValidationError('Invalid paging');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function validatePageNumber(pageNumber) {
|
|
20
|
+
if (!Number.isInteger(pageNumber) || pageNumber < 0) {
|
|
21
|
+
throw new errors_1.AnnoSearchValidationError('Invalid "page" parameter: must be a non-negative integer');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function validateMaxHits(maxHits) {
|
|
25
|
+
if (!Number.isInteger(maxHits) || maxHits <= 0) {
|
|
26
|
+
throw new errors_1.AnnoSearchValidationError('Invalid "maxHits" configuration: must be a positive integer');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function validateDateRanges(ranges) {
|
|
30
|
+
// handle when not included
|
|
31
|
+
if (ranges === undefined) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Split the ranges by space
|
|
35
|
+
const rangeList = ranges.split(" ");
|
|
36
|
+
// Define the regex pattern for a valid date range in ISO8601 format
|
|
37
|
+
const rangePattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z\/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
|
|
38
|
+
// Check each range
|
|
39
|
+
for (const range of rangeList) {
|
|
40
|
+
if (!rangePattern.test(range)) {
|
|
41
|
+
throw new errors_1.AnnoSearchValidationError(`Invalid range format: ${range}`);
|
|
42
|
+
}
|
|
43
|
+
// Further validate that the start date is before the end date
|
|
44
|
+
const [start, end] = range.split("/");
|
|
45
|
+
const startDate = new Date(start);
|
|
46
|
+
const endDate = new Date(end);
|
|
47
|
+
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime()) || startDate > endDate) {
|
|
48
|
+
throw new errors_1.AnnoSearchValidationError(`Invalid date range: ${range}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":";;AAEA,wDAIC;AAED,wCAIC;AAED,gDAIC;AAED,0CAIC;AAED,gDAwBC;AAlDD,qCAAqD;AAErD,SAAgB,sBAAsB,CAAC,KAAa;IAChD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,CAAC,CAAC;IACnE,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,MAAc;IACzC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,kCAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAkB;IACjD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,kCAAyB,CAAC,0DAA0D,CAAC,CAAC;IACpG,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,kCAAyB,CAAC,6DAA6D,CAAC,CAAC;IACvG,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAe;IAC9C,2BAA2B;IAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAM;IACV,CAAC;IACD,4BAA4B;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,oEAAoE;IACpE,MAAM,YAAY,GAAG,8EAA8E,CAAC;IACpG,mBAAmB;IACnB,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,8DAA8D;QAC9D,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;YAChF,MAAM,IAAI,kCAAyB,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;AACL,CAAC"}
|