@letarette/client 0.1.3 → 0.1.6
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 +1 -1
- package/lib/agent.js +8 -7
- package/lib/docmanager.js +3 -3
- package/lib/index.js +14 -8
- package/lib/monitor.js +2 -2
- package/lib/natshelper.js +3 -3
- package/lib/protocol.js +1 -1
- package/package.json +6 -5
- package/CHANGELOG.md +0 -22
- package/lib/__tests__/agent.test.d.ts +0 -1
- package/lib/__tests__/agent.test.js +0 -77
- package/lib/__tests__/agent.test.js.map +0 -1
- package/lib/__tests__/client.test.d.ts +0 -1
- package/lib/__tests__/client.test.js +0 -77
- package/lib/__tests__/client.test.js.map +0 -1
- package/lib/agent.js.map +0 -1
- package/lib/cli.js +0 -44
- package/lib/cli.js.map +0 -1
- package/lib/client.d.ts +0 -16
- package/lib/client.js +0 -145
- package/lib/client.js.map +0 -1
- package/lib/docmanager.js.map +0 -1
- package/lib/example/docserver.d.ts +0 -1
- package/lib/example/docserver.js +0 -52
- package/lib/example/docserver.js.map +0 -1
- package/lib/example/search.d.ts +0 -1
- package/lib/example/search.js +0 -58
- package/lib/example/search.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/monitor.js.map +0 -1
- package/lib/natshelper.js.map +0 -1
- package/lib/protocol.js.map +0 -1
- package/lib/src/__tests__/client.test.d.ts +0 -1
- package/lib/src/__tests__/client.test.js +0 -73
- package/lib/src/__tests__/client.test.js.map +0 -1
- package/lib/src/client.d.ts +0 -19
- package/lib/src/client.js +0 -152
- package/lib/src/client.js.map +0 -1
- package/lib/src/docmanager.d.ts +0 -15
- package/lib/src/docmanager.js +0 -107
- package/lib/src/docmanager.js.map +0 -1
- package/lib/src/index.d.ts +0 -4
- package/lib/src/index.js +0 -10
- package/lib/src/index.js.map +0 -1
- package/lib/src/monitor.d.ts +0 -10
- package/lib/src/monitor.js +0 -53
- package/lib/src/monitor.js.map +0 -1
- package/lib/src/protocol.d.ts +0 -75
- package/lib/src/protocol.js +0 -55
- package/lib/src/protocol.js.map +0 -1
- package/lib/test.js +0 -39
- package/lib/test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Letarette client library for Node.js
|
|
2
2
|
|
|
3
|
-
A Typescript client library implementation for integrating the [Letarette](https://letarette.io) full-text search
|
|
3
|
+
A Typescript client library implementation for integrating the [Letarette](https://letarette.io) full-text search system into a Node.js application.
|
|
4
4
|
|
|
5
5
|
Provides Search Agent and Document Manager for performing searches on, and providing documents to, a Letarette search index.
|
|
6
6
|
|
package/lib/agent.js
CHANGED
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.mergeResponses = exports.SearchAgent = void 0;
|
|
12
13
|
const events_1 = require("events");
|
|
13
14
|
const monitor_1 = require("./monitor");
|
|
14
15
|
const natshelper_1 = require("./natshelper");
|
|
@@ -27,7 +28,7 @@ class SearchAgent extends events_1.EventEmitter {
|
|
|
27
28
|
}
|
|
28
29
|
connect() {
|
|
29
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
this.client = yield natshelper_1.connect(this.URLs, this.options);
|
|
31
|
+
this.client = yield (0, natshelper_1.connect)(this.URLs, this.options);
|
|
31
32
|
if (this.numShards === 0) {
|
|
32
33
|
yield this.monitor.connect();
|
|
33
34
|
}
|
|
@@ -38,10 +39,12 @@ class SearchAgent extends events_1.EventEmitter {
|
|
|
38
39
|
if (this.client === null) {
|
|
39
40
|
throw new Error("Must be connected");
|
|
40
41
|
}
|
|
42
|
+
const numShards = yield this.getNumShards();
|
|
43
|
+
const shardedLimit = Math.max(1, Math.trunc(pageLimit / numShards));
|
|
41
44
|
const req = {
|
|
42
45
|
Query: query,
|
|
43
46
|
Spaces: spaces,
|
|
44
|
-
PageLimit:
|
|
47
|
+
PageLimit: shardedLimit,
|
|
45
48
|
PageOffset: pageOffset,
|
|
46
49
|
Autocorrect: false,
|
|
47
50
|
};
|
|
@@ -53,7 +56,6 @@ class SearchAgent extends events_1.EventEmitter {
|
|
|
53
56
|
}
|
|
54
57
|
reject("Timeout waiting for search response");
|
|
55
58
|
}, 2000);
|
|
56
|
-
const shards = yield this.getNumShards();
|
|
57
59
|
const inbox = this.client.createInbox();
|
|
58
60
|
const responses = [];
|
|
59
61
|
subscription = yield this.client.subscribe(inbox, (err, msg) => {
|
|
@@ -62,12 +64,12 @@ class SearchAgent extends events_1.EventEmitter {
|
|
|
62
64
|
}
|
|
63
65
|
const res = msg.data;
|
|
64
66
|
responses.push(res);
|
|
65
|
-
if (responses.length ===
|
|
67
|
+
if (responses.length === numShards) {
|
|
66
68
|
clearTimeout(timeout);
|
|
67
69
|
resolve(responses);
|
|
68
70
|
}
|
|
69
|
-
}, { max:
|
|
70
|
-
subscription.unsubscribe(
|
|
71
|
+
}, { max: numShards });
|
|
72
|
+
subscription.unsubscribe(numShards);
|
|
71
73
|
this.client.publish(this.options.topic + ".q", req, inbox);
|
|
72
74
|
}));
|
|
73
75
|
const result = yield request;
|
|
@@ -133,4 +135,3 @@ function mergeResponses(responses) {
|
|
|
133
135
|
return merged;
|
|
134
136
|
}
|
|
135
137
|
exports.mergeResponses = mergeResponses;
|
|
136
|
-
//# sourceMappingURL=agent.js.map
|
package/lib/docmanager.js
CHANGED
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DocumentManager = void 0;
|
|
12
13
|
const events_1 = require("events");
|
|
13
14
|
const natshelper_1 = require("./natshelper");
|
|
14
15
|
// DocumentManager connects to the letarette cluster and processes indexing requests
|
|
@@ -21,7 +22,7 @@ class DocumentManager extends events_1.EventEmitter {
|
|
|
21
22
|
}
|
|
22
23
|
connect() {
|
|
23
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
this.client = yield natshelper_1.connect(this.URLs, this.options);
|
|
25
|
+
this.client = yield (0, natshelper_1.connect)(this.URLs, this.options);
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
close() {
|
|
@@ -49,7 +50,7 @@ class DocumentManager extends events_1.EventEmitter {
|
|
|
49
50
|
throw new Error("Must be connected");
|
|
50
51
|
}
|
|
51
52
|
const handle = (req) => {
|
|
52
|
-
const maxPayload = natshelper_1.getMaxPayload(this.client);
|
|
53
|
+
const maxPayload = (0, natshelper_1.getMaxPayload)(this.client);
|
|
53
54
|
const update = handler(req);
|
|
54
55
|
const updates = [update];
|
|
55
56
|
while (updates.length > 0) {
|
|
@@ -96,4 +97,3 @@ exports.DocumentManager = DocumentManager;
|
|
|
96
97
|
function truncateString(long, max) {
|
|
97
98
|
return long.slice(0, max) + "\u2026"; // ellipsis
|
|
98
99
|
}
|
|
99
|
-
//# sourceMappingURL=docmanager.js.map
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
}
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
13
|
+
__exportStar(require("./protocol"), exports);
|
|
14
|
+
__exportStar(require("./agent"), exports);
|
|
15
|
+
__exportStar(require("./monitor"), exports);
|
|
16
|
+
__exportStar(require("./docmanager"), exports);
|
package/lib/monitor.js
CHANGED
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Monitor = void 0;
|
|
12
13
|
const events_1 = require("events");
|
|
13
14
|
const natshelper_1 = require("./natshelper");
|
|
14
15
|
// Monitor listens to status broadcasts from a letarette cluster
|
|
@@ -21,7 +22,7 @@ class Monitor extends events_1.EventEmitter {
|
|
|
21
22
|
}
|
|
22
23
|
connect() {
|
|
23
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
this.client = yield natshelper_1.connect(this.URLs, this.options);
|
|
25
|
+
this.client = yield (0, natshelper_1.connect)(this.URLs, this.options);
|
|
25
26
|
this.client.subscribe(this.options.topic + ".status", (err, msg) => {
|
|
26
27
|
const status = msg.data;
|
|
27
28
|
this.emit("status", status);
|
|
@@ -35,4 +36,3 @@ class Monitor extends events_1.EventEmitter {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
exports.Monitor = Monitor;
|
|
38
|
-
//# sourceMappingURL=monitor.js.map
|
package/lib/natshelper.js
CHANGED
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getMaxPayload = exports.connect = void 0;
|
|
12
13
|
const fs_1 = require("fs");
|
|
13
14
|
const util_1 = require("util");
|
|
14
15
|
const ts_nats_1 = require("ts-nats");
|
|
@@ -25,12 +26,12 @@ function connect(URLs, options) {
|
|
|
25
26
|
connectionOptions.nkeyCreds = options.seedFile;
|
|
26
27
|
}
|
|
27
28
|
if (options.rootCAs) {
|
|
28
|
-
const loadedCAs = yield Promise.all(options.rootCAs.map((path) => util_1.promisify(fs_1.readFile)(path)));
|
|
29
|
+
const loadedCAs = yield Promise.all(options.rootCAs.map((path) => (0, util_1.promisify)(fs_1.readFile)(path)));
|
|
29
30
|
connectionOptions.tls = {
|
|
30
31
|
ca: loadedCAs,
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
|
-
const client = yield ts_nats_1.connect(connectionOptions);
|
|
34
|
+
const client = yield (0, ts_nats_1.connect)(connectionOptions);
|
|
34
35
|
client.on("connect", (c, URL, serverInfo) => {
|
|
35
36
|
const cAsAny = c;
|
|
36
37
|
cAsAny.maxPayload = serverInfo.max_payload;
|
|
@@ -44,4 +45,3 @@ function getMaxPayload(client) {
|
|
|
44
45
|
return cAsAny.maxPayload || 0;
|
|
45
46
|
}
|
|
46
47
|
exports.getMaxPayload = getMaxPayload;
|
|
47
|
-
//# sourceMappingURL=natshelper.js.map
|
package/lib/protocol.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.searchStatusCodeToString = exports.SearchStatusCode = exports.indexStatusCodeToString = exports.IndexStatusCode = exports.version = void 0;
|
|
3
4
|
exports.version = "0.5.0";
|
|
4
5
|
// Codes returned in index status updates
|
|
5
6
|
var IndexStatusCode;
|
|
@@ -56,4 +57,3 @@ function searchStatusCodeToString(code) {
|
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
exports.searchStatusCodeToString = searchStatusCodeToString;
|
|
59
|
-
//# sourceMappingURL=protocol.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letarette/client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/erkkah/letarette.js"
|
|
@@ -25,19 +25,20 @@
|
|
|
25
25
|
"scripts": {
|
|
26
26
|
"test": "jest --config jestconfig.json",
|
|
27
27
|
"build": "tsc",
|
|
28
|
+
"prepack": "rm -rf lib && tsc",
|
|
28
29
|
"lint": "tslint -p tsconfig.json"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@types/jest": "^24.0.23",
|
|
32
|
-
"@types/node": "^
|
|
33
|
+
"@types/node": "^16.7.10",
|
|
33
34
|
"jest": "^26.4.2",
|
|
34
35
|
"minimist": ">=1.2.2",
|
|
35
36
|
"ts-jest": "^26.3.0",
|
|
36
|
-
"ts-node": "^
|
|
37
|
+
"ts-node": "^10.2.1",
|
|
37
38
|
"tslint": "^6.1.3",
|
|
38
|
-
"typescript": "^
|
|
39
|
+
"typescript": "^4.4.2"
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"ts-nats": "^1.2.
|
|
42
|
+
"ts-nats": "^1.2.15"
|
|
42
43
|
}
|
|
43
44
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## [0.1.3] - 2020-09-03
|
|
4
|
-
### Changes
|
|
5
|
-
- Security updates
|
|
6
|
-
- Example doc update
|
|
7
|
-
|
|
8
|
-
## [0.1.2] - 2020-03-16
|
|
9
|
-
### Changes
|
|
10
|
-
- Security updates
|
|
11
|
-
|
|
12
|
-
## [0.1.1] - 2020-01-05
|
|
13
|
-
### Changes
|
|
14
|
-
- Package rename
|
|
15
|
-
|
|
16
|
-
## [0.1.0] - 2020-01-01
|
|
17
|
-
### First release
|
|
18
|
-
|
|
19
|
-
[0.1.3]: https://github.com/erkkah/letarette.js/compare/v0.1.2...v0.1.3
|
|
20
|
-
[0.1.2]: https://github.com/erkkah/letarette.js/compare/v0.1.1...v0.1.2
|
|
21
|
-
[0.1.1]: https://github.com/erkkah/letarette.js/compare/v0.1.0...v0.1.1
|
|
22
|
-
[0.1.0]: https://github.com/erkkah/letarette.js/releases/tag/v0.1.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const agent_1 = require("../agent");
|
|
4
|
-
const protocol_1 = require("../protocol");
|
|
5
|
-
describe("Search result merging", () => {
|
|
6
|
-
const responseA = {
|
|
7
|
-
Duration: 10,
|
|
8
|
-
Status: protocol_1.SearchStatusCode.NoHit,
|
|
9
|
-
Result: {
|
|
10
|
-
Hits: [
|
|
11
|
-
{
|
|
12
|
-
ID: "1",
|
|
13
|
-
Rank: 1,
|
|
14
|
-
Snippet: "1",
|
|
15
|
-
Space: "test",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
ID: "3",
|
|
19
|
-
Rank: 3,
|
|
20
|
-
Snippet: "3",
|
|
21
|
-
Space: "test",
|
|
22
|
-
},
|
|
23
|
-
],
|
|
24
|
-
TotalHits: 12,
|
|
25
|
-
Respelt: "",
|
|
26
|
-
RespeltDistance: 0,
|
|
27
|
-
Capped: true,
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
const responseB = {
|
|
31
|
-
Duration: 20,
|
|
32
|
-
Status: protocol_1.SearchStatusCode.QueryError,
|
|
33
|
-
Result: {
|
|
34
|
-
Hits: [
|
|
35
|
-
{
|
|
36
|
-
ID: "2",
|
|
37
|
-
Rank: 2,
|
|
38
|
-
Snippet: "2",
|
|
39
|
-
Space: "test",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
ID: "4",
|
|
43
|
-
Rank: 4,
|
|
44
|
-
Snippet: "4",
|
|
45
|
-
Space: "test",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
Respelt: "",
|
|
49
|
-
RespeltDistance: 0,
|
|
50
|
-
TotalHits: 34,
|
|
51
|
-
Capped: false,
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
it("merges durations correctly", () => {
|
|
55
|
-
const merged = agent_1.mergeResponses([responseA, responseB]);
|
|
56
|
-
expect(merged.Duration).toBe(20);
|
|
57
|
-
});
|
|
58
|
-
it("merges status correctly", () => {
|
|
59
|
-
const merged = agent_1.mergeResponses([responseA, responseB]);
|
|
60
|
-
expect(merged.Status).toBe(protocol_1.SearchStatusCode.QueryError);
|
|
61
|
-
});
|
|
62
|
-
it("merges total hits correctly", () => {
|
|
63
|
-
const merged = agent_1.mergeResponses([responseA, responseB]);
|
|
64
|
-
expect(merged.Result.TotalHits).toBe(46);
|
|
65
|
-
});
|
|
66
|
-
it("merges capped correctly", () => {
|
|
67
|
-
const merged = agent_1.mergeResponses([responseA, responseB]);
|
|
68
|
-
expect(merged.Result.Capped).toBeTruthy();
|
|
69
|
-
});
|
|
70
|
-
it("merges hits correctly", () => {
|
|
71
|
-
const merged = agent_1.mergeResponses([responseA, responseB]);
|
|
72
|
-
for (let i = 0; i < 4; i++) {
|
|
73
|
-
expect(merged.Result.Hits[i].ID).toBe("" + (i + 1));
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=agent.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../src/__tests__/agent.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const client_1 = require("../client");
|
|
4
|
-
const protocol_1 = require("../protocol");
|
|
5
|
-
describe("Search result merging", () => {
|
|
6
|
-
const responseA = {
|
|
7
|
-
Duration: 10,
|
|
8
|
-
Status: protocol_1.SearchStatusCode.NoHit,
|
|
9
|
-
Result: {
|
|
10
|
-
Hits: [
|
|
11
|
-
{
|
|
12
|
-
ID: "1",
|
|
13
|
-
Rank: 1,
|
|
14
|
-
Snippet: "1",
|
|
15
|
-
Space: "test",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
ID: "3",
|
|
19
|
-
Rank: 3,
|
|
20
|
-
Snippet: "3",
|
|
21
|
-
Space: "test",
|
|
22
|
-
},
|
|
23
|
-
],
|
|
24
|
-
TotalHits: 12,
|
|
25
|
-
Respelt: "",
|
|
26
|
-
RespeltDistance: 0,
|
|
27
|
-
Capped: true,
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
const responseB = {
|
|
31
|
-
Duration: 20,
|
|
32
|
-
Status: protocol_1.SearchStatusCode.QueryError,
|
|
33
|
-
Result: {
|
|
34
|
-
Hits: [
|
|
35
|
-
{
|
|
36
|
-
ID: "2",
|
|
37
|
-
Rank: 2,
|
|
38
|
-
Snippet: "2",
|
|
39
|
-
Space: "test",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
ID: "4",
|
|
43
|
-
Rank: 4,
|
|
44
|
-
Snippet: "4",
|
|
45
|
-
Space: "test",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
Respelt: "",
|
|
49
|
-
RespeltDistance: 0,
|
|
50
|
-
TotalHits: 34,
|
|
51
|
-
Capped: false,
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
it("merges durations correctly", () => {
|
|
55
|
-
const merged = client_1.mergeResponses([responseA, responseB]);
|
|
56
|
-
expect(merged.Duration).toBe(20);
|
|
57
|
-
});
|
|
58
|
-
it("merges status correctly", () => {
|
|
59
|
-
const merged = client_1.mergeResponses([responseA, responseB]);
|
|
60
|
-
expect(merged.Status).toBe(protocol_1.SearchStatusCode.QueryError);
|
|
61
|
-
});
|
|
62
|
-
it("merges total hits correctly", () => {
|
|
63
|
-
const merged = client_1.mergeResponses([responseA, responseB]);
|
|
64
|
-
expect(merged.Result.TotalHits).toBe(46);
|
|
65
|
-
});
|
|
66
|
-
it("merges capped correctly", () => {
|
|
67
|
-
const merged = client_1.mergeResponses([responseA, responseB]);
|
|
68
|
-
expect(merged.Result.Capped).toBeTruthy();
|
|
69
|
-
});
|
|
70
|
-
it("merges hits correctly", () => {
|
|
71
|
-
const merged = client_1.mergeResponses([responseA, responseB]);
|
|
72
|
-
for (let i = 0; i < 4; i++) {
|
|
73
|
-
expect(merged.Result.Hits[i].ID).toBe("" + (i + 1));
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=client.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":"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"}
|
package/lib/agent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const client_1 = require("./client");
|
|
13
|
-
const protocol_1 = require("./protocol");
|
|
14
|
-
const searchClient = new client_1.SearchClient("nats://localhost:4222");
|
|
15
|
-
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
try {
|
|
17
|
-
searchClient.on("error", (err) => {
|
|
18
|
-
console.log(err);
|
|
19
|
-
});
|
|
20
|
-
yield searchClient.connect();
|
|
21
|
-
const result = yield searchClient.search("cat", ["wp"], 10, 0);
|
|
22
|
-
showResponse(result);
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.log(err);
|
|
26
|
-
}
|
|
27
|
-
finally {
|
|
28
|
-
searchClient.close();
|
|
29
|
-
}
|
|
30
|
-
}))();
|
|
31
|
-
function showResponse(response) {
|
|
32
|
-
const duration = response.Duration;
|
|
33
|
-
const status = protocol_1.searchStatusCodeToString(response.Status);
|
|
34
|
-
console.log(`Query executed in ${duration} seconds with status "${status}"`);
|
|
35
|
-
const result = response.Result;
|
|
36
|
-
const numHits = result.Hits.length;
|
|
37
|
-
const totalHits = result.TotalHits;
|
|
38
|
-
const capped = result.Capped;
|
|
39
|
-
console.log(`Returning ${numHits} of ${totalHits} total hits, capped: ${capped}\n`);
|
|
40
|
-
for (const hit of result.Hits) {
|
|
41
|
-
console.log(`[${hit.ID}] ${hit.Snippet}`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAwC;AACxC,yCAAsE;AAEtE,MAAM,YAAY,GAAG,IAAI,qBAAY,CAAC,uBAAuB,CAAC,CAAC;AAE/D,CAAC,GAAS,EAAE;IACR,IAAI;QACA,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/D,YAAY,CAAC,MAAM,CAAC,CAAC;KACxB;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACpB;YAAS;QACN,YAAY,CAAC,KAAK,EAAE,CAAC;KACxB;AACL,CAAC,CAAA,CAAC,EAAE,CAAC;AAEL,SAAS,YAAY,CAAC,QAAwB;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,MAAM,GAAG,mCAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,yBAAyB,MAAM,GAAG,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,OAAO,SAAS,wBAAwB,MAAM,IAAI,CAAC,CAAC;IAEpF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KAC7C;AACL,CAAC"}
|
package/lib/client.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from "events";
|
|
3
|
-
import { SearchResponse } from "./protocol";
|
|
4
|
-
export declare class SearchAgent extends EventEmitter {
|
|
5
|
-
private client;
|
|
6
|
-
private readonly monitor;
|
|
7
|
-
private readonly url;
|
|
8
|
-
private readonly topic;
|
|
9
|
-
private numShards;
|
|
10
|
-
constructor(url: string, topic?: string, shardGroupSize?: number);
|
|
11
|
-
connect(): Promise<void>;
|
|
12
|
-
search(query: string, spaces: string[], pageLimit: number, pageOffset: number): Promise<SearchResponse>;
|
|
13
|
-
close(): void;
|
|
14
|
-
private getNumShards;
|
|
15
|
-
}
|
|
16
|
-
export declare function mergeResponses(responses: SearchResponse[]): SearchResponse;
|
package/lib/client.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const events_1 = require("events");
|
|
13
|
-
const ts_nats_1 = require("ts-nats");
|
|
14
|
-
const monitor_1 = require("./monitor");
|
|
15
|
-
// A Letarette Search Agent
|
|
16
|
-
class SearchAgent extends events_1.EventEmitter {
|
|
17
|
-
constructor(url, topic = "leta", shardGroupSize) {
|
|
18
|
-
super();
|
|
19
|
-
this.client = null;
|
|
20
|
-
this.numShards = 0;
|
|
21
|
-
this.url = url;
|
|
22
|
-
this.topic = topic;
|
|
23
|
-
if (shardGroupSize) {
|
|
24
|
-
this.numShards = shardGroupSize;
|
|
25
|
-
}
|
|
26
|
-
this.monitor = new monitor_1.Monitor(url, topic);
|
|
27
|
-
this.monitor.on("status", (status) => {
|
|
28
|
-
this.numShards = status.ShardgroupSize;
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
connect() {
|
|
32
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
this.client = yield ts_nats_1.connect({
|
|
34
|
-
payload: ts_nats_1.Payload.JSON,
|
|
35
|
-
url: this.url,
|
|
36
|
-
reconnect: true,
|
|
37
|
-
reconnectTimeWait: 500,
|
|
38
|
-
maxReconnectAttempts: -1,
|
|
39
|
-
});
|
|
40
|
-
if (this.numShards === 0) {
|
|
41
|
-
yield this.monitor.connect();
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
search(query, spaces, pageLimit, pageOffset) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
if (this.client === null) {
|
|
48
|
-
throw new Error("Must be connected");
|
|
49
|
-
}
|
|
50
|
-
const req = {
|
|
51
|
-
Query: query,
|
|
52
|
-
Spaces: spaces,
|
|
53
|
-
PageLimit: pageLimit,
|
|
54
|
-
PageOffset: pageOffset,
|
|
55
|
-
Autocorrect: false,
|
|
56
|
-
};
|
|
57
|
-
const request = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
let subscription;
|
|
59
|
-
const timeout = setTimeout(() => {
|
|
60
|
-
if (subscription) {
|
|
61
|
-
subscription.unsubscribe();
|
|
62
|
-
}
|
|
63
|
-
reject("Timeout waiting for search response");
|
|
64
|
-
}, 2000);
|
|
65
|
-
const shards = yield this.getNumShards();
|
|
66
|
-
const inbox = this.client.createInbox();
|
|
67
|
-
const responses = [];
|
|
68
|
-
subscription = yield this.client.subscribe(inbox, (err, msg) => {
|
|
69
|
-
if (err) {
|
|
70
|
-
reject(err);
|
|
71
|
-
}
|
|
72
|
-
const res = msg.data;
|
|
73
|
-
responses.push(res);
|
|
74
|
-
if (responses.length === shards) {
|
|
75
|
-
clearTimeout(timeout);
|
|
76
|
-
resolve(responses);
|
|
77
|
-
}
|
|
78
|
-
}, { max: shards });
|
|
79
|
-
subscription.unsubscribe(shards);
|
|
80
|
-
this.client.publish(this.topic + ".q", req, inbox);
|
|
81
|
-
}));
|
|
82
|
-
const result = yield request;
|
|
83
|
-
return mergeResponses(result);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
close() {
|
|
87
|
-
if (this.client) {
|
|
88
|
-
this.client.close();
|
|
89
|
-
}
|
|
90
|
-
this.monitor.close();
|
|
91
|
-
}
|
|
92
|
-
getNumShards() {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
if (this.numShards !== 0) {
|
|
95
|
-
return this.numShards;
|
|
96
|
-
}
|
|
97
|
-
return new Promise((resolve, reject) => {
|
|
98
|
-
const interval = setInterval(() => {
|
|
99
|
-
if (this.numShards !== 0) {
|
|
100
|
-
clearInterval(interval);
|
|
101
|
-
resolve(this.numShards);
|
|
102
|
-
}
|
|
103
|
-
}, 100);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
exports.SearchAgent = SearchAgent;
|
|
109
|
-
function mergeResponses(responses) {
|
|
110
|
-
const merged = {
|
|
111
|
-
Result: {
|
|
112
|
-
Hits: [],
|
|
113
|
-
Capped: false,
|
|
114
|
-
TotalHits: 0,
|
|
115
|
-
Respelt: "",
|
|
116
|
-
RespeltDistance: 0.0,
|
|
117
|
-
},
|
|
118
|
-
Status: 0,
|
|
119
|
-
Duration: 0,
|
|
120
|
-
};
|
|
121
|
-
for (const response of responses) {
|
|
122
|
-
if (merged.Duration < response.Duration) {
|
|
123
|
-
merged.Duration = response.Duration;
|
|
124
|
-
}
|
|
125
|
-
if (merged.Status < response.Status) {
|
|
126
|
-
merged.Status = response.Status;
|
|
127
|
-
}
|
|
128
|
-
merged.Result.Capped = merged.Result.Capped || response.Result.Capped;
|
|
129
|
-
merged.Result.TotalHits += response.Result.TotalHits;
|
|
130
|
-
if (response.Result.Hits) {
|
|
131
|
-
merged.Result.Hits.push(...response.Result.Hits);
|
|
132
|
-
}
|
|
133
|
-
if (merged.Result.Respelt === "" ||
|
|
134
|
-
(response.Result.RespeltDistance > 0 && merged.Result.RespeltDistance > response.Result.RespeltDistance)) {
|
|
135
|
-
merged.Result.Respelt = response.Result.Respelt;
|
|
136
|
-
merged.Result.RespeltDistance = response.Result.RespeltDistance;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
merged.Result.Hits = merged.Result.Hits.sort((a, b) => {
|
|
140
|
-
return a.Rank - b.Rank;
|
|
141
|
-
});
|
|
142
|
-
return merged;
|
|
143
|
-
}
|
|
144
|
-
exports.mergeResponses = mergeResponses;
|
|
145
|
-
//# sourceMappingURL=client.js.map
|
package/lib/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|