annosearch 0.1.1 → 0.1.3
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/iiif.js +3 -3
- package/dist/iiif.js.map +1 -1
- package/dist/server.js +9 -4
- package/dist/server.js.map +1 -1
- package/dist/validate.js +6 -2
- package/dist/validate.js.map +1 -1
- package/package.json +6 -3
package/dist/iiif.js
CHANGED
|
@@ -5,10 +5,10 @@ function makeSearchResponse(indexId, data, searchUrl, query, motivation, maxHits
|
|
|
5
5
|
const totalPages = Math.ceil(data.num_hits / maxHits);
|
|
6
6
|
const nextPage = page + 1 < totalPages ? page + 1 : null;
|
|
7
7
|
const prevPage = page > 0 ? page - 1 : null;
|
|
8
|
-
const
|
|
9
|
-
const motivationParam = motivation ? `&motivation=${motivation}` : '';
|
|
8
|
+
const queryParam = encodeURIComponent(query);
|
|
9
|
+
const motivationParam = motivation ? `&motivation=${encodeURIComponent(motivation)}` : '';
|
|
10
10
|
const dateParam = date ? `&date=${encodeURIComponent(date)}` : '';
|
|
11
|
-
const id = `${searchUrl}/${indexId}/search?q=${
|
|
11
|
+
const id = `${searchUrl}/${indexId}/search?q=${queryParam}${motivationParam}${dateParam}`;
|
|
12
12
|
return {
|
|
13
13
|
"@context": "http://www.w3.org/ns/anno.jsonld",
|
|
14
14
|
id: `${id}&page=${page}`,
|
package/dist/iiif.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;AAEA,gDAuCC;AAvCD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY;IAC5J,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,OAAO,aAAa,UAAU,GAAG,eAAe,GAAG,SAAS,EAAE,CAAC;IAE1F,OAAO;QACH,UAAU,EAAE,kCAAkC;QAC9C,EAAE,EAAE,GAAG,EAAE,SAAS,IAAI,EAAE;QACxB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,KAAK,EAAE;gBACH,EAAE,EAAE,GAAG,EAAE,SAAS;gBAClB,IAAI,EAAE,gBAAgB;aACzB;YACD,IAAI,EAAE;gBACF,EAAE,EAAE,GAAG,EAAE,SAAS,UAAU,GAAG,CAAC,EAAE;gBAClC,IAAI,EAAE,gBAAgB;aACzB;SACJ,CAAC,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,IAAI,GAAG,OAAO;QAC1B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,UAAU,EAAE,kCAAkC;YAC9C,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;SAC7B,CAAC,CAAC;QACH,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QAC9D,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC;AACN,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -43,6 +43,7 @@ const utils_1 = require("./utils");
|
|
|
43
43
|
const logger_1 = __importStar(require("./logger")); // Import shared logger
|
|
44
44
|
const pino_http_1 = __importDefault(require("pino-http"));
|
|
45
45
|
const errors_1 = require("./errors");
|
|
46
|
+
const validator_1 = __importDefault(require("validator"));
|
|
46
47
|
function serve(client) {
|
|
47
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
49
|
const app = (0, express_1.default)();
|
|
@@ -51,10 +52,14 @@ function serve(client) {
|
|
|
51
52
|
app.use((0, pino_http_1.default)({ logger: logger_1.default }));
|
|
52
53
|
app.get('/:index/search', (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
53
54
|
try {
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
const
|
|
55
|
+
// Sanitize path parameter
|
|
56
|
+
const index = validator_1.default.escape(req.params.index || '');
|
|
57
|
+
// Sanitize query parameters
|
|
58
|
+
const q = validator_1.default.escape(req.query.q || '');
|
|
59
|
+
const page = validator_1.default.toInt(req.query.page || '0');
|
|
60
|
+
const motivation = validator_1.default.escape(req.query.motivation || '');
|
|
61
|
+
const date = validator_1.default.escape(req.query.date || '');
|
|
62
|
+
const results = yield client.searchIndex(index, q, motivation, page, date);
|
|
58
63
|
res.json(results);
|
|
59
64
|
}
|
|
60
65
|
catch (error) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWlB,sBAwCC;AAjDD,sDAA8B;AAE9B,kDAA0C,CAAC,mCAAmC;AAC9E,mCAAyC;AACzC,mDAAmD,CAAC,uBAAuB;AAC3E,0DAAiC;AACjC,qCAAmD;AACnD,0DAAkC;AAElC,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,0BAA0B;gBAC1B,MAAM,KAAK,GAAG,mBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBACvD,4BAA4B;gBAC5B,MAAM,CAAC,GAAG,mBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAW,IAAI,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,mBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAc,IAAI,GAAG,CAAC,CAAC;gBAC9D,MAAM,UAAU,GAAG,mBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAoB,IAAI,EAAE,CAAC,CAAC;gBAC1E,MAAM,IAAI,GAAG,mBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAc,IAAI,EAAE,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC3E,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/validate.js
CHANGED
|
@@ -38,13 +38,17 @@ function validateMaxHits(maxHits) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
function validateMotivation(motivation) {
|
|
41
|
-
|
|
41
|
+
// handle when not included
|
|
42
|
+
if (!motivation) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (!exports.motivations.includes(motivation)) {
|
|
42
46
|
throw new errors_1.AnnoSearchValidationError('Invalid motivation parameter');
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
function validateDateRanges(ranges) {
|
|
46
50
|
// handle when not included
|
|
47
|
-
if (ranges
|
|
51
|
+
if (!ranges) {
|
|
48
52
|
return;
|
|
49
53
|
}
|
|
50
54
|
// Split the ranges by space
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":";;;AAYA,wDAIC;AAED,wCAIC;AAED,gDAIC;AAED,0CAIC;AAED,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":";;;AAYA,wDAIC;AAED,wCAIC;AAED,gDAIC;AAED,0CAIC;AAED,gDASC;AAED,gDAwBC;AAvED,qCAAqD;AAExC,QAAA,WAAW,GAAG;IACvB,UAAU;IACV,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,SAAS;CACZ,CAAC;AAEF,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,UAAkB;IACjD,2BAA2B;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,IAAI,CAAC,mBAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,kCAAyB,CAAC,8BAA8B,CAAC,CAAC;IACxE,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAc;IAC7C,2BAA2B;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "annosearch",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"Search",
|
|
19
19
|
"W3C web annotation",
|
|
20
20
|
"IIIF Content Search API"
|
|
21
|
-
],
|
|
21
|
+
],
|
|
22
|
+
"author": "John P. T. Moore",
|
|
22
23
|
"license": "MIT",
|
|
23
24
|
"description": "W3C web annotation search using the IIIF content search API",
|
|
24
25
|
"devDependencies": {
|
|
@@ -29,12 +30,14 @@
|
|
|
29
30
|
"typescript": "^5.6.3"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
|
-
"
|
|
33
|
+
"@types/validator": "^13.12.2",
|
|
33
34
|
"axios": "^1.7.7",
|
|
34
35
|
"express": "^4.21.1",
|
|
36
|
+
"maniiifest": "^1.2.9",
|
|
35
37
|
"pino": "^9.5.0",
|
|
36
38
|
"pino-http": "^10.3.0",
|
|
37
39
|
"pino-pretty": "^12.1.0",
|
|
40
|
+
"validator": "^13.12.0",
|
|
38
41
|
"yaml": "^2.6.0",
|
|
39
42
|
"yargs": "^17.7.2"
|
|
40
43
|
}
|