annosearch 0.2.2 → 0.2.5

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/README.md CHANGED
@@ -10,13 +10,13 @@ AnnoSearch uses [Quickwit](https://quickwit.io) as its backend database to effic
10
10
  We first need to create an index.
11
11
  ```
12
12
  ❯ annosearch init --index cookbook
13
- Index created successfully
13
+ Index cookbook created successfully
14
14
  ```
15
15
  We can now load the index with the annotations referenced in a IIIF manifest.
16
16
  ```
17
17
  ❯ annosearch load --index cookbook --type Manifest --uri https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json
18
18
  Loading Manifest from https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json into index cookbook
19
- |+|
19
+ Data loaded successfully
20
20
  ```
21
21
  After Quickwit finishes ingesting and indexing the data we can perform a search.
22
22
  ```
@@ -36,7 +36,13 @@ After Quickwit finishes ingesting and indexing the data we can perform a search.
36
36
  },
37
37
  "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1/annopage-2/anno-1",
38
38
  "motivation": "commenting",
39
- "target": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1",
39
+ "target": {
40
+ "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/canvas-1",
41
+ "partOf": {
42
+ "id": "https://iiif.io/api/cookbook/recipe/0266-full-canvas-annotation/manifest.json",
43
+ "type": "Manifest"
44
+ }
45
+ },
40
46
  "type": "Annotation"
41
47
  }
42
48
  ]
@@ -134,7 +140,6 @@ Adjust these values as needed to customize AnnoSearch’s configuration and beha
134
140
 
135
141
  ## Todo
136
142
 
137
- - Implement the autocomplete service
138
143
  - Implement extended API responses
139
144
 
140
145
 
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const search_1 = require("./search");
13
+ const search_2 = require("./search");
13
14
  const init_1 = require("./init");
14
15
  const delete_1 = require("./delete");
15
16
  const load_1 = require("./load");
@@ -62,6 +63,11 @@ class AnnoSearch {
62
63
  return (0, search_1.searchIndex)(indexId, query, motivation, this.maxHits, page, this.searchUrl, date, user);
63
64
  });
64
65
  }
66
+ searchAutocomplete(indexId, query, ignoredParams) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ return yield (0, search_2.searchAutocomplete)(indexId, query, this.maxHits, this.searchUrl, ignoredParams);
69
+ });
70
+ }
65
71
  initIndex(indexId) {
66
72
  return __awaiter(this, void 0, void 0, function* () {
67
73
  return yield (0, init_1.initIndex)(indexId);
@@ -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,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,SAAiB;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEK,SAAS,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,MAAe;;YACvE,OAAO,MAAM,IAAA,gBAAY,EAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;;YAC1G,OAAO,IAAA,oBAAc,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtG,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"}
1
+ {"version":3,"file":"AnnoSearch.js","sourceRoot":"","sources":["../src/AnnoSearch.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAyD;AACzD,qCAAsE;AACtE,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,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,SAAiB;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEK,SAAS,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,MAAe;;YACvE,OAAO,MAAM,IAAA,gBAAY,EAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;;YAC1G,OAAO,IAAA,oBAAc,EAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtG,CAAC;KAAA;IAEK,kBAAkB,CAAC,OAAe,EAAE,KAAa,EAAE,aAAuB;;YAC5E,OAAO,MAAM,IAAA,2BAAoB,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACnG,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/delete.js CHANGED
@@ -14,18 +14,25 @@ const quickwit_1 = require("./quickwit");
14
14
  const errors_1 = require("./errors");
15
15
  const contentType = 'application/json';
16
16
  const quickwitClient = (0, quickwit_1.createClient)(contentType);
17
- function deleteIndex(indexId) {
17
+ function deleteIndexWorker(indexId) {
18
18
  return __awaiter(this, void 0, void 0, function* () {
19
19
  if (!indexId.trim()) {
20
20
  throw new errors_1.AnnoSearchValidationError('Invalid index parameter');
21
21
  }
22
22
  const response = yield quickwitClient.delete(`indexes/${indexId}`);
23
23
  if (response.status === 200 && response.data) {
24
- console.log('Index deleted successfully');
24
+ //console.log(`Index ${indexId} successfully deleted`);
25
25
  }
26
26
  else {
27
27
  throw new errors_1.AnnoSearchValidationError('Failed to delete index');
28
28
  }
29
29
  });
30
30
  }
31
+ function deleteIndex(indexId) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ yield deleteIndexWorker(indexId + '_annotations');
34
+ yield deleteIndexWorker(indexId + '_autocomplete');
35
+ console.log(`Index ${indexId} successfully deleted`);
36
+ });
37
+ }
31
38
  //# sourceMappingURL=delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../src/delete.ts"],"names":[],"mappings":";;;;;;;;;;;AAMA,kCAUC;AAhBD,yCAA0C;AAC1C,qCAAqD;AAErD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAEjD,SAAsB,WAAW,CAAC,OAAe;;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;CAAA"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../src/delete.ts"],"names":[],"mappings":";;;;;;;;;;;AAkBA,kCAIC;AAtBD,yCAA0C;AAC1C,qCAAqD;AAErD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAEjD,SAAe,iBAAiB,CAAC,OAAe;;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,uDAAuD;QAC3D,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,WAAW,CAAC,OAAe;;QAC7C,MAAM,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;QAClD,MAAM,iBAAiB,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,uBAAuB,CAAC,CAAC;IACzD,CAAC;CAAA"}
package/dist/iiif.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeSearchResponse = makeSearchResponse;
4
+ exports.makeAutocompleteResponse = makeAutocompleteResponse;
4
5
  function makeSearchResponse(indexId, data, searchUrl, query, motivation, user, maxHits, page, date) {
5
6
  const totalPages = Math.ceil(data.num_hits / maxHits);
6
7
  const nextPage = page + 1 < totalPages ? page + 1 : null;
@@ -33,4 +34,10 @@ function makeSearchResponse(indexId, data, searchUrl, query, motivation, user, m
33
34
  prev: prevPage !== null ? `${id}&page=${prevPage}` : undefined,
34
35
  };
35
36
  }
37
+ function makeAutocompleteResponse(data, searchUrl, query, ignoredParams) {
38
+ const response = Object.assign(Object.assign({ "@context": "http://iiif.io/api/search/2/context.json", id: `${searchUrl}/autocomplete?q=${encodeURIComponent(query)}`, type: "TermPage" }, (ignoredParams.length > 0 && { ignored: ignoredParams })), { items: data.hits.map((hit) => ({
39
+ value: hit.term
40
+ })) });
41
+ return response;
42
+ }
36
43
  //# sourceMappingURL=iiif.js.map
package/dist/iiif.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;AAEA,gDAkCC;AAlCD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY;IAC1K,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,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,GAAG,SAAS,EAAE,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,0CAA0C;QACtD,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,mBAC5B,GAAG,EACR,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"}
1
+ {"version":3,"file":"iiif.js","sourceRoot":"","sources":["../src/iiif.ts"],"names":[],"mappings":";;AAEA,gDAkCC;AAED,4DAYC;AAhDD,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,IAAY,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY;IAC1K,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,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,GAAG,SAAS,EAAE,CAAC;IAEtG,OAAO;QACH,UAAU,EAAE,0CAA0C;QACtD,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,mBAC5B,GAAG,EACR,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;AAED,SAAgB,wBAAwB,CAAC,IAAS,EAAE,SAAiB,EAAE,KAAa,EAAE,aAAuB;IACzG,MAAM,QAAQ,iCACV,UAAU,EAAE,0CAA0C,EACtD,EAAE,EAAE,GAAG,SAAS,mBAAmB,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAC9D,IAAI,EAAE,UAAU,IACb,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,KAC3D,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAChC,KAAK,EAAE,GAAG,CAAC,IAAI;SAClB,CAAC,CAAC,GACN,CAAC;IAEF,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -9,7 +9,3 @@ doc_mapping:
9
9
  record: position
10
10
  expand_dots: true
11
11
  fast: true
12
-
13
-
14
-
15
-
package/dist/init.js CHANGED
@@ -30,8 +30,7 @@ function modifyConfig(config, indexId) {
30
30
  config.index_id = indexId;
31
31
  return yaml_1.default.stringify(config);
32
32
  }
33
- // Initialization function
34
- function initIndex(indexId) {
33
+ function initIndexWorker(indexId) {
35
34
  return __awaiter(this, void 0, void 0, function* () {
36
35
  if (!indexId.trim()) {
37
36
  throw new errors_1.AnnoSearchValidationError('Invalid index parameter');
@@ -41,11 +40,18 @@ function initIndex(indexId) {
41
40
  const modifiedYamlData = modifyConfig(config, indexId);
42
41
  const response = yield quickwitClient.post('indexes', modifiedYamlData);
43
42
  if (response.status === 200 && response.data) {
44
- console.log('Index created successfully');
43
+ //console.log(`Index ${indexId} created successfully`);
45
44
  }
46
45
  else {
47
46
  throw new errors_1.AnnoSearchValidationError('Failed to create index');
48
47
  }
49
48
  });
50
49
  }
50
+ function initIndex(indexId) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ yield initIndexWorker(indexId + '_annotations');
53
+ yield initIndexWorker(indexId + '_autocomplete');
54
+ console.log(`Index ${indexId} created successfully`);
55
+ });
56
+ }
51
57
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAwBA,8BAcC;AAtCD,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,yCAA0C;AAC1C,qCAAqD;AAGrD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAEjD,2CAA2C;AAC3C,SAAS,cAAc,CAAC,QAAgB;IACpC,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,MAAW,EAAE,OAAe;IAC9C,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,OAAO,cAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAGD,0BAA0B;AAC1B,SAAsB,SAAS,CAAC,OAAe;;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC;IAEL,CAAC;CAAA"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAsCA,8BAIC;AA1CD,4CAAoB;AACpB,gDAAwB;AACxB,gDAAwB;AACxB,yCAA0C;AAC1C,qCAAqD;AAErD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AACvC,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC;AAEjD,2CAA2C;AAC3C,SAAS,cAAc,CAAC,QAAgB;IACpC,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,cAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,MAAW,EAAE,OAAe;IAC9C,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,OAAO,cAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAGD,SAAe,eAAe,CAAC,OAAe;;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,kCAAyB,CAAC,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,uDAAuD;QAC3D,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,kCAAyB,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC;IAEL,CAAC;CAAA;AAED,SAAsB,SAAS,CAAC,OAAe;;QAC3C,MAAM,eAAe,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;QAChD,MAAM,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,uBAAuB,CAAC,CAAC;IACzD,CAAC;CAAA"}
package/dist/load.js CHANGED
@@ -16,27 +16,96 @@ const errors_1 = require("./errors");
16
16
  const quickwit_1 = require("./quickwit");
17
17
  const contentType = 'application/x-ndjson';
18
18
  const quickwitClient = (0, quickwit_1.createClient)(contentType);
19
- function processAnnotations(indexId, parser, commit) {
19
+ const termFrequencies = new Map();
20
+ function* chunkMapToJson(map, chunkSize) {
21
+ let chunk = [];
22
+ for (const [term, frequency] of map.entries()) {
23
+ chunk.push({ term, frequency });
24
+ if (chunk.length === chunkSize) {
25
+ yield chunk;
26
+ chunk = [];
27
+ }
28
+ }
29
+ if (chunk.length > 0) {
30
+ yield chunk;
31
+ }
32
+ }
33
+ function ingestData(indexId, annotations, commit) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (annotations.length > 0) {
36
+ const payload = (0, utils_1.createJsonl)(annotations);
37
+ const url = commit ? `${indexId}/ingest?commit=force` : `${indexId}/ingest`;
38
+ const response = yield quickwitClient.post(url, payload);
39
+ if (!response.data) {
40
+ throw new errors_1.AnnoSearchValidationError('No response data received from Quickwit');
41
+ }
42
+ // Check if the response is successful and has data
43
+ if (response.status === 200 && response.data) {
44
+ // Print a line of '+' symbols based on the batch length
45
+ //console.log('writing to index ' + indexId);
46
+ //console.log('|' + '+'.repeat(annotations.length) + '|');
47
+ }
48
+ else {
49
+ throw new errors_1.AnnoSearchValidationError('Failed to ingest data: Invalid response from Quickwit');
50
+ }
51
+ }
52
+ });
53
+ }
54
+ function modifyAnnotationTarget(parser, uri, type) {
55
+ const target = parser.getAnnotationTarget();
56
+ const partOf = {
57
+ id: uri,
58
+ type: type,
59
+ };
60
+ const modifySingleTarget = (singleTarget) => {
61
+ if (typeof singleTarget === "string") {
62
+ // If the target is a string, return it wrapped in the specified object structure
63
+ return { id: singleTarget, partOf: partOf };
64
+ }
65
+ else if (typeof singleTarget === "object" && singleTarget !== null) {
66
+ // If the target is already an object, add or merge the partOf field
67
+ return Object.assign(Object.assign({}, singleTarget), { partOf: partOf });
68
+ }
69
+ // Return the target as-is for unexpected types
70
+ return singleTarget;
71
+ };
72
+ if (Array.isArray(target)) {
73
+ return { target: target.map(modifySingleTarget) };
74
+ }
75
+ else {
76
+ return { target: modifySingleTarget(target) };
77
+ }
78
+ }
79
+ function incrementTerm(term) {
80
+ termFrequencies.set(term, (termFrequencies.get(term) || 0) + 1);
81
+ }
82
+ function processAutocompleteTerms(parser) {
83
+ for (const body of parser.iterateAnnotationPageAnnotationTextualBody()) {
84
+ for (const term of body.value.split(/\s+/)) {
85
+ const normalizedTerm = term
86
+ .trim()
87
+ .toLowerCase()
88
+ .replace(/[^a-z0-9\u00C0-\u024F]/g, ""); // Allow Unicode Latin characters
89
+ if (normalizedTerm.length > 3) {
90
+ incrementTerm(normalizedTerm);
91
+ }
92
+ }
93
+ }
94
+ }
95
+ function* processAnnotationsWorker(parser, uri, type) {
96
+ for (const annotation of parser.iterateAnnotationPageAnnotation()) {
97
+ const annotation_parser = new maniiifest_1.Maniiifest(annotation, "Annotation");
98
+ const modifiedTarget = modifyAnnotationTarget(annotation_parser, uri, type).target;
99
+ yield Object.assign(Object.assign({}, annotation), { target: modifiedTarget });
100
+ }
101
+ }
102
+ function processAnnotations(indexId, uri, type, parser, commit) {
20
103
  return __awaiter(this, void 0, void 0, function* () {
21
104
  let currentParser = parser;
22
105
  while (currentParser) {
23
- const annotations = Array.from(currentParser.iterateAnnotationPageAnnotation());
24
- if (annotations.length > 0) {
25
- const payload = (0, utils_1.createJsonl)(annotations);
26
- const url = commit ? `${indexId}/ingest?commit=force` : `${indexId}/ingest`;
27
- const response = yield quickwitClient.post(url, payload);
28
- if (!response.data) {
29
- throw new errors_1.AnnoSearchValidationError('No response data received from Quickwit');
30
- }
31
- // Check if the response is successful and has data
32
- if (response.status === 200 && response.data) {
33
- // Print a line of '+' symbols based on the batch length
34
- console.log('|' + '+'.repeat(annotations.length) + '|');
35
- }
36
- else {
37
- throw new errors_1.AnnoSearchValidationError('Failed to ingest data: Invalid response from Quickwit');
38
- }
39
- }
106
+ processAutocompleteTerms(currentParser);
107
+ const annotations = Array.from(processAnnotationsWorker(currentParser, uri, type));
108
+ yield ingestData(indexId + '_annotations', annotations, commit);
40
109
  // Move to the next annotation page if available
41
110
  const nextPageUrl = currentParser.getAnnotationPage().next;
42
111
  if (nextPageUrl) {
@@ -52,17 +121,17 @@ function processAnnotations(indexId, parser, commit) {
52
121
  }
53
122
  });
54
123
  }
55
- function processAnnotationPageRef(indexId, annotationPageUrl, commit) {
124
+ function processAnnotationPageRef(indexId, uri, type, annotationPageUrl, commit) {
56
125
  return __awaiter(this, void 0, void 0, function* () {
57
126
  const jsonData = yield (0, utils_1.fetchJson)(annotationPageUrl);
58
127
  const parser = new maniiifest_1.Maniiifest(jsonData, "AnnotationPage");
59
- yield processAnnotations(indexId, parser, commit);
128
+ yield processAnnotations(indexId, uri, type, parser, commit);
60
129
  });
61
130
  }
62
- function processAnnotationPage(indexId, page, commit) {
131
+ function processAnnotationPage(indexId, uri, type, page, commit) {
63
132
  return __awaiter(this, void 0, void 0, function* () {
64
133
  const parser = new maniiifest_1.Maniiifest(page, "AnnotationPage");
65
- yield processAnnotations(indexId, parser, commit);
134
+ yield processAnnotations(indexId, uri, type, parser, commit);
66
135
  });
67
136
  }
68
137
  function processManifest(indexId, manifestUrl, commit) {
@@ -76,10 +145,10 @@ function processManifest(indexId, manifestUrl, commit) {
76
145
  const annotationPages = parser.iterateManifestCanvasW3cAnnotationPage();
77
146
  for (const page of annotationPages) {
78
147
  if (page.items) {
79
- yield processAnnotationPage(indexId, page, commit);
148
+ yield processAnnotationPage(indexId, manifestUrl, type, page, commit);
80
149
  }
81
150
  else {
82
- yield processAnnotationPageRef(indexId, page.id, commit);
151
+ yield processAnnotationPageRef(indexId, manifestUrl, type, page.id, commit);
83
152
  }
84
153
  }
85
154
  });
@@ -115,10 +184,18 @@ function processAnnotationCollection(indexId, annotationCollectionUrl, commit) {
115
184
  }
116
185
  const firstPage = parser.getAnnotationCollectionFirst();
117
186
  if (typeof firstPage === 'string') { // means it is a URI
118
- yield processAnnotationPageRef(indexId, firstPage, commit);
187
+ yield processAnnotationPageRef(indexId, annotationCollectionUrl, type, firstPage, commit);
119
188
  }
120
189
  else {
121
- yield processAnnotationPage(indexId, firstPage, commit);
190
+ yield processAnnotationPage(indexId, annotationCollectionUrl, type, firstPage, commit);
191
+ }
192
+ });
193
+ }
194
+ function ingestAutocompleteTerms(indexId, commit) {
195
+ return __awaiter(this, void 0, void 0, function* () {
196
+ const chunks = chunkMapToJson(termFrequencies, 1000);
197
+ for (const chunk of chunks) {
198
+ yield ingestData(indexId + '_autocomplete', chunk, commit);
122
199
  }
123
200
  });
124
201
  }
@@ -128,7 +205,7 @@ function loadIndex(indexId, uri, type, commit) {
128
205
  throw new errors_1.AnnoSearchValidationError('Invalid index or uri parameter');
129
206
  }
130
207
  // we won't allow loading data into an index that already contains data
131
- const indexContents = yield quickwitClient.get(`/indexes/${indexId}/describe`);
208
+ const indexContents = yield quickwitClient.get(`/indexes/${indexId + '_annotations'}/describe`);
132
209
  if (indexContents.data.num_published_docs > 0) {
133
210
  throw new errors_1.AnnoSearchValidationError(`Index ${indexId} already contains data`);
134
211
  }
@@ -146,6 +223,8 @@ function loadIndex(indexId, uri, type, commit) {
146
223
  default:
147
224
  throw new errors_1.AnnoSearchValidationError('unsupported type');
148
225
  }
226
+ yield ingestAutocompleteTerms(indexId, commit);
227
+ console.log('Data loaded successfully');
149
228
  });
150
229
  }
151
230
  //# sourceMappingURL=load.js.map
package/dist/load.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"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"}
package/dist/search.js CHANGED
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.searchIndex = searchIndex;
13
+ exports.searchAutocomplete = searchAutocomplete;
13
14
  const quickwit_1 = require("./quickwit");
14
15
  const errors_1 = require("./errors");
15
16
  const iiif_1 = require("./iiif");
@@ -38,7 +39,7 @@ function buildUserQueryFromString(userString) {
38
39
  .map(user => `(creator:"${user}" OR creator.id:"${user}")`)
39
40
  .join(" OR ");
40
41
  }
41
- function buildQFromString(qString) {
42
+ function buildSearchQueryFromString(qString) {
42
43
  const terms = qString.split(" ");
43
44
  return terms
44
45
  .map(term => `(body.value:"${term}")`)
@@ -47,20 +48,20 @@ function buildQFromString(qString) {
47
48
  function searchIndex(indexId, q, motivation, maxHits, page, searchUrl, date, user) {
48
49
  return __awaiter(this, void 0, void 0, function* () {
49
50
  const startOffset = page * maxHits;
50
- (0, validate_1.validateQueryParameter)(q);
51
+ (0, validate_1.validateSearchQueryParameter)(q);
51
52
  (0, validate_1.validatePageNumber)(page);
52
53
  (0, validate_1.validateMaxHits)(maxHits);
53
54
  (0, validate_1.validateDateRanges)(date);
54
55
  (0, validate_1.validateOffset)(startOffset);
55
56
  (0, validate_1.validateMotivation)(motivation);
56
57
  (0, validate_1.validateUser)(user);
57
- const qQuery = buildQFromString(q);
58
+ const qQuery = buildSearchQueryFromString(q);
58
59
  const motivationQuery = motivation ? ` AND motivation:"${motivation}"` : '';
59
60
  const dateQuery = date ? ` AND (${buildDateQueryFromString(date)})` : '';
60
61
  const userQuery = user ? ` AND (${buildUserQueryFromString(user)})` : '';
61
62
  const fullQuery = `${qQuery}${motivationQuery}${dateQuery}${userQuery}`;
62
63
  //console.log(`Constructed query: ${fullQuery}`);
63
- const response = yield quickwitClient.post(`${indexId}/search`, {
64
+ const response = yield quickwitClient.post(`${indexId + '_annotations'}/search`, {
64
65
  query: fullQuery,
65
66
  max_hits: maxHits,
66
67
  start_offset: startOffset,
@@ -73,4 +74,25 @@ function searchIndex(indexId, q, motivation, maxHits, page, searchUrl, date, use
73
74
  }
74
75
  });
75
76
  }
77
+ function buildAutocompleteQueryFromString(qString) {
78
+ return `term:${qString}*`;
79
+ }
80
+ function searchAutocomplete(indexId, q, maxHits, searchUrl, ignoredParams) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ (0, validate_1.validateAutocompleteQueryParameter)(q);
83
+ (0, validate_1.validateMaxHits)(maxHits);
84
+ const fullQuery = buildAutocompleteQueryFromString(q);
85
+ const response = yield quickwitClient.post(`${indexId + '_autocomplete'}/search`, {
86
+ query: fullQuery,
87
+ sort_by: "frequency",
88
+ max_hits: maxHits,
89
+ });
90
+ if (response.status === 200 && response.data) {
91
+ return (0, iiif_1.makeAutocompleteResponse)(response.data, searchUrl, q, ignoredParams);
92
+ }
93
+ else {
94
+ throw new errors_1.AnnoSearchValidationError('Failed to search autocomplete index');
95
+ }
96
+ });
97
+ }
76
98
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -46,6 +46,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
46
46
  return (mod && mod.__esModule) ? mod : { "default": mod };
47
47
  };
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.buildIgnoredTerms = buildIgnoredTerms;
49
50
  exports.serve = serve;
50
51
  const express_1 = __importDefault(require("express"));
51
52
  const package_json_1 = require("../package.json"); // Import version from package.json
@@ -53,6 +54,16 @@ const utils_1 = require("./utils");
53
54
  const logger_1 = __importStar(require("./logger")); // Import shared logger
54
55
  const pino_http_1 = __importDefault(require("pino-http"));
55
56
  const errors_1 = require("./errors");
57
+ function buildIgnoredTerms(queryParams) {
58
+ const ignoredParams = ['date', 'motivation', 'user', 'min'];
59
+ const ignoredTerms = [];
60
+ for (const param of ignoredParams) {
61
+ if (queryParams.hasOwnProperty(param)) {
62
+ ignoredTerms.push(param);
63
+ }
64
+ }
65
+ return ignoredTerms;
66
+ }
56
67
  function serve(client) {
57
68
  return __awaiter(this, void 0, void 0, function* () {
58
69
  const app = (0, express_1.default)();
@@ -74,6 +85,18 @@ function serve(client) {
74
85
  (0, utils_1.handleWebError)(error, res);
75
86
  }
76
87
  }));
88
+ app.get('/:index/autocomplete', (req, res) => __awaiter(this, void 0, void 0, function* () {
89
+ try {
90
+ const ignoredParams = buildIgnoredTerms(req.query);
91
+ const index = req.params.index || '';
92
+ const q = req.query.q || '';
93
+ const results = yield client.searchAutocomplete(index, q, ignoredParams);
94
+ res.json(results);
95
+ }
96
+ catch (error) {
97
+ (0, utils_1.handleWebError)(error, res);
98
+ }
99
+ }));
77
100
  app.get('/version', (req, res) => __awaiter(this, void 0, void 0, function* () {
78
101
  try {
79
102
  res.json({ version: package_json_1.version });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAAA,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUlB,sBAuCC;AA/CD,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,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAW,IAAI,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAc,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAoB,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAc,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAc,IAAI,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjF,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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/validate.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.motivations = void 0;
4
- exports.validateQueryParameter = validateQueryParameter;
4
+ exports.validateSearchQueryParameter = validateSearchQueryParameter;
5
+ exports.validateAutocompleteQueryParameter = validateAutocompleteQueryParameter;
5
6
  exports.validateOffset = validateOffset;
6
7
  exports.validatePageNumber = validatePageNumber;
7
8
  exports.validateMaxHits = validateMaxHits;
@@ -18,9 +19,36 @@ exports.motivations = [
18
19
  'commenting',
19
20
  'tagging'
20
21
  ];
21
- function validateQueryParameter(query) {
22
- if (!query.trim()) {
23
- throw new errors_1.AnnoSearchValidationError('Missing query parameter');
22
+ function validateSearchQueryParameter(query) {
23
+ const trimmedQuery = query.trim();
24
+ if (!trimmedQuery) {
25
+ throw new errors_1.AnnoSearchValidationError('Missing query parameter.');
26
+ }
27
+ const minKeywordLength = 3;
28
+ const whitelistedShortKeywords = new Set(["uk", "ai", "us"]);
29
+ const invalidCharPattern = /[^\p{L}\p{N}\-]/u; // Allow letters, numbers, and hyphens
30
+ const keywords = trimmedQuery.split(/\s+/);
31
+ for (const keyword of keywords) {
32
+ if (keyword.length < minKeywordLength && !whitelistedShortKeywords.has(keyword.toLowerCase())) {
33
+ throw new errors_1.AnnoSearchValidationError(`Keyword "${keyword}" must be at least ${minKeywordLength} characters long.`);
34
+ }
35
+ if (invalidCharPattern.test(keyword)) {
36
+ throw new errors_1.AnnoSearchValidationError(`Keyword "${keyword}" contains invalid characters.`);
37
+ }
38
+ }
39
+ }
40
+ function validateAutocompleteQueryParameter(query) {
41
+ const trimmedQuery = query.trim();
42
+ const minQueryLength = 3;
43
+ const invalidCharPattern = /[^\p{L}\p{N}\-]/u; // Allow Latin letters, numbers, and hyphens
44
+ if (!trimmedQuery) {
45
+ throw new errors_1.AnnoSearchValidationError('Missing autocomplete query parameter.');
46
+ }
47
+ if (trimmedQuery.length < minQueryLength) {
48
+ throw new errors_1.AnnoSearchValidationError(`Autocomplete query must be at least ${minQueryLength} characters long.`);
49
+ }
50
+ if (invalidCharPattern.test(trimmedQuery)) {
51
+ throw new errors_1.AnnoSearchValidationError('Autocomplete query contains invalid characters. Only Latin letters, numbers, and hyphens are allowed.');
24
52
  }
25
53
  }
26
54
  function validateOffset(offset) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "annosearch",
3
- "version": "0.2.2",
3
+ "version": "0.2.5",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist/**/*"
@@ -34,7 +34,7 @@
34
34
  "axios": "^1.7.9",
35
35
  "express": "^4.21.2",
36
36
  "jest": "^29.7.0",
37
- "maniiifest": "^1.3.2",
37
+ "maniiifest": "^1.3.4",
38
38
  "nock": "^13.5.6",
39
39
  "pino": "^9.5.0",
40
40
  "pino-http": "^10.3.0",