annosearch 0.0.8 → 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/AnnoSearch.js +2 -2
- package/dist/AnnoSearch.js.map +1 -1
- package/dist/iiif.js +1 -0
- package/dist/iiif.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/search.js +24 -8
- package/dist/search.js.map +1 -1
- package/dist/server.js +3 -12
- package/dist/server.js.map +1 -1
- package/dist/validate.js +52 -0
- package/dist/validate.js.map +1 -0
- package/package.json +2 -2
package/dist/AnnoSearch.js
CHANGED
|
@@ -45,9 +45,9 @@ class AnnoSearch {
|
|
|
45
45
|
return yield (0, load_1.loadIndex)(indexId, uri, type);
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
searchIndex(indexId, query, motivation, page) {
|
|
48
|
+
searchIndex(indexId, query, motivation, page, date) {
|
|
49
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
return (0, search_1.searchIndex)(indexId, query, motivation, this.maxHits, page, this.searchUrl);
|
|
50
|
+
return (0, search_1.searchIndex)(indexId, query, motivation, this.maxHits, page, this.searchUrl, date);
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
initIndex(indexId) {
|
package/dist/AnnoSearch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnoSearch.js","sourceRoot":"","sources":["../src/AnnoSearch.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAyD;AACzD,iCAAmD;AACnD,qCAAyD;AACzD,iCAAmD;AASnD,SAAS,UAAU;IACf,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC1D,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;QACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW;QAChD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,uBAAuB;KAC1E,CAAC;AACN,CAAC;AAED,MAAM,UAAU;IAMZ,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,KAAa,UAAU,EAAE;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEK,SAAS,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY;;YACtD,OAAO,MAAM,IAAA,gBAAY,EAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY;;
|
|
1
|
+
{"version":3,"file":"AnnoSearch.js","sourceRoot":"","sources":["../src/AnnoSearch.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAyD;AACzD,iCAAmD;AACnD,qCAAyD;AACzD,iCAAmD;AASnD,SAAS,UAAU;IACf,OAAO;QACH,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC1D,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;QACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW;QAChD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,uBAAuB;KAC1E,CAAC;AACN,CAAC;AAED,MAAM,UAAU;IAMZ,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,KAAa,UAAU,EAAE;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEK,SAAS,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY;;YACtD,OAAO,MAAM,IAAA,gBAAY,EAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,IAAY;;YAC5F,OAAO,IAAA,oBAAc,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChG,CAAC;KAAA;IAEK,SAAS,CAAC,OAAe;;YAC3B,OAAO,MAAM,IAAA,gBAAY,EAAC,OAAO,CAAC,CAAC;QACvC,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe;;YAC7B,OAAO,MAAM,IAAA,oBAAc,EAAC,OAAO,CAAC,CAAC;QACzC,CAAC;KAAA;CACJ;AAED,kBAAe,UAAU,CAAC"}
|
package/dist/iiif.js
CHANGED
|
@@ -30,6 +30,7 @@ function makeSearchResponse(indexId, data, searchUrl, query, motivation, maxHits
|
|
|
30
30
|
"@context": "http://www.w3.org/ns/anno.jsonld",
|
|
31
31
|
id: hit.id,
|
|
32
32
|
type: hit.type,
|
|
33
|
+
created: hit.created,
|
|
33
34
|
body: hit.body,
|
|
34
35
|
target: hit.target,
|
|
35
36
|
motivation: hit.motivation,
|
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":";;AAyCA,gDAsCC;AAtCD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,OAAe,EAAE,IAAY;IAC9I,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,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,OAAO,aAAa,CAAC,IAAI,eAAe,EAAE,CAAC;IAEtE,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/index.js
CHANGED
|
@@ -41,6 +41,12 @@ function searchOptions(yargs) {
|
|
|
41
41
|
description: 'Motivation',
|
|
42
42
|
choices: ['painting', 'supplementing', 'contextualizing', 'contentState', 'highlighting', 'commenting', 'tagging'],
|
|
43
43
|
demandOption: false,
|
|
44
|
+
})
|
|
45
|
+
.option('date', {
|
|
46
|
+
alias: 'd',
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Date range',
|
|
49
|
+
demandOption: false,
|
|
44
50
|
})
|
|
45
51
|
.option('page', {
|
|
46
52
|
alias: 'p',
|
|
@@ -53,7 +59,7 @@ function searchOptions(yargs) {
|
|
|
53
59
|
function searchCommand(argv) {
|
|
54
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
55
61
|
try {
|
|
56
|
-
const results = yield client.searchIndex(argv.index, argv.query, argv.motivation, argv.page);
|
|
62
|
+
const results = yield client.searchIndex(argv.index, argv.query, argv.motivation, argv.page, argv.date);
|
|
57
63
|
(0, utils_1.printJson)(results);
|
|
58
64
|
}
|
|
59
65
|
catch (error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,kDAAsC;AACtC,2CAAwC;AACxC,8DAAsC;AACtC,qCAAiC;AACjC,mCAA8C;AAC9C,kDAA0C,CAAC,mCAAmC;AAG9E,MAAM,MAAM,GAAG,IAAI,oBAAU,EAAE,CAAC;AAEhC,SAAe,aAAa,CAAC,KAAU;;QACnC,OAAO,KAAK;aACP,MAAM,CAAC,OAAO,EAAE;YACb,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,IAAI;SACrB,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACb,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,cAAc;YAC3B,YAAY,EAAE,IAAI;SACrB,CAAC;aACD,MAAM,CAAC,YAAY,EAAE;YAClB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC;YAClH,YAAY,EAAE,KAAK;SACtB,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACZ,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,aAAa;YAC1B,OAAO,EAAE,CAAC,EAAE,uCAAuC;SACtD,CAAC,CAAC;IACX,CAAC;CAAA;AAED,SAAe,aAAa,CAAC,IAAS;;QAClC,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAe,EAAE,IAAI,CAAC,KAAe,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/search.js
CHANGED
|
@@ -13,20 +13,36 @@ 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
|
-
function
|
|
19
|
+
function buildDateQueryFromString(dateRangesString) {
|
|
20
|
+
// Split the string into an array using space as the delimiter
|
|
21
|
+
const dateRanges = dateRangesString.split(" ");
|
|
22
|
+
// Map each range into a Quickwit-compatible query fragment
|
|
23
|
+
return dateRanges
|
|
24
|
+
.map(range => {
|
|
25
|
+
const [start, end] = range.split("/");
|
|
26
|
+
if (!start || !end) {
|
|
27
|
+
throw new errors_1.AnnoSearchValidationError(`Invalid date range format: ${range}`);
|
|
28
|
+
}
|
|
29
|
+
return `created:[${start} TO ${end}]`;
|
|
30
|
+
})
|
|
31
|
+
.join(" OR ");
|
|
32
|
+
}
|
|
33
|
+
function searchIndex(indexId, q, motivation, maxHits, page, searchUrl, date) {
|
|
19
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
35
|
const startOffset = page * maxHits;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
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
|
+
const qQuery = `body.value:${q}`;
|
|
27
42
|
const motivationQuery = motivation ? ` AND motivation:${motivation}` : '';
|
|
43
|
+
const dateQuery = date ? ` AND (${buildDateQueryFromString(date)})` : '';
|
|
28
44
|
const response = yield quickwitClient.post(`${indexId}/search`, {
|
|
29
|
-
query:
|
|
45
|
+
query: `${qQuery}${motivationQuery}${dateQuery}`,
|
|
30
46
|
max_hits: maxHits,
|
|
31
47
|
start_offset: startOffset,
|
|
32
48
|
});
|
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
|
@@ -52,18 +52,9 @@ function serve(client) {
|
|
|
52
52
|
app.get('/:index/search', (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
53
53
|
try {
|
|
54
54
|
const { index = '' } = req.params;
|
|
55
|
-
const { q = '', page = '0', motivation = undefined } = req.query;
|
|
56
|
-
const pageNumber =
|
|
57
|
-
const
|
|
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
|
-
const results = yield client.searchIndex(index, q, motivation, pageNumber);
|
|
55
|
+
const { q = '', page = '0', motivation = undefined, date = undefined } = req.query;
|
|
56
|
+
const pageNumber = Number(page);
|
|
57
|
+
const results = yield client.searchIndex(index, q, motivation, pageNumber, date);
|
|
67
58
|
res.json(results);
|
|
68
59
|
}
|
|
69
60
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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/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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "annosearch",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**/*"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"IIIF Content Search API"
|
|
21
21
|
], "author": "John P. T. Moore",
|
|
22
22
|
"license": "MIT",
|
|
23
|
-
"description": "W3C web annotation search using the IIIF content search
|
|
23
|
+
"description": "W3C web annotation search using the IIIF content search API",
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/express": "^5.0.0",
|
|
26
26
|
"@types/node": "^22.8.4",
|