@jbrowse/plugin-trix 1.7.11 → 2.0.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/TrixTextSearchAdapter/TrixTextSearchAdapter.js +166 -185
- package/dist/TrixTextSearchAdapter/TrixTextSearchAdapter.js.map +1 -0
- package/dist/TrixTextSearchAdapter/configSchema.js +27 -46
- package/dist/TrixTextSearchAdapter/configSchema.js.map +1 -0
- package/dist/TrixTextSearchAdapter/index.js +10 -22
- package/dist/TrixTextSearchAdapter/index.js.map +1 -0
- package/dist/index.js +41 -66
- package/dist/index.js.map +1 -0
- package/esm/TrixTextSearchAdapter/TrixTextSearchAdapter.d.ts +14 -0
- package/esm/TrixTextSearchAdapter/TrixTextSearchAdapter.js +77 -0
- package/esm/TrixTextSearchAdapter/TrixTextSearchAdapter.js.map +1 -0
- package/esm/TrixTextSearchAdapter/configSchema.d.ts +2 -0
- package/esm/TrixTextSearchAdapter/configSchema.js +29 -0
- package/esm/TrixTextSearchAdapter/configSchema.js.map +1 -0
- package/esm/TrixTextSearchAdapter/index.d.ts +2 -0
- package/esm/TrixTextSearchAdapter/index.js +3 -0
- package/esm/TrixTextSearchAdapter/index.js.map +1 -0
- package/esm/index.d.ts +6 -0
- package/esm/index.js +18 -0
- package/esm/index.js.map +1 -0
- package/package.json +16 -9
- package/dist/TrixTextSearchAdapter/TrixTextSearchAdapter.test.js +0 -76
|
@@ -1,191 +1,172 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (_) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
54
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
55
|
+
if (!m) return o;
|
|
56
|
+
var i = m.call(o), r, ar = [], e;
|
|
57
|
+
try {
|
|
58
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
59
|
+
}
|
|
60
|
+
catch (error) { e = { error: error }; }
|
|
61
|
+
finally {
|
|
62
|
+
try {
|
|
63
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
64
|
+
}
|
|
65
|
+
finally { if (e) throw e.error; }
|
|
66
|
+
}
|
|
67
|
+
return ar;
|
|
68
|
+
};
|
|
69
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
70
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
71
|
+
};
|
|
72
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
|
+
var trix_1 = __importDefault(require("@gmod/trix"));
|
|
74
|
+
var BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
75
|
+
var io_1 = require("@jbrowse/core/util/io");
|
|
76
|
+
var BaseResults_1 = __importDefault(require("@jbrowse/core/TextSearch/BaseResults"));
|
|
77
|
+
var configuration_1 = require("@jbrowse/core/configuration");
|
|
46
78
|
function decodeURIComponentNoThrow(uri) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
79
|
+
try {
|
|
80
|
+
return decodeURIComponent(uri);
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
// avoid throwing exception on a failure to decode URI component
|
|
84
|
+
return uri;
|
|
85
|
+
}
|
|
53
86
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
87
|
+
function shorten(str, term, w) {
|
|
88
|
+
if (w === void 0) { w = 15; }
|
|
89
|
+
var tidx = str.toLowerCase().indexOf(term);
|
|
90
|
+
return str.length < 40
|
|
91
|
+
? str
|
|
92
|
+
: (Math.max(0, tidx - w) > 0 ? '...' : '') +
|
|
93
|
+
str.slice(Math.max(0, tidx - w), tidx + term.length + w).trim() +
|
|
94
|
+
(tidx + term.length < str.length ? '...' : '');
|
|
59
95
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var ixFilePath = (0, _configuration.readConfObject)(config, 'ixFilePath');
|
|
75
|
-
var ixxFilePath = (0, _configuration.readConfObject)(config, 'ixxFilePath');
|
|
76
|
-
|
|
77
|
-
if (!ixFilePath) {
|
|
78
|
-
throw new Error('must provide out.ix');
|
|
96
|
+
var TrixTextSearchAdapter = /** @class */ (function (_super) {
|
|
97
|
+
__extends(TrixTextSearchAdapter, _super);
|
|
98
|
+
function TrixTextSearchAdapter(config, getSubAdapter, pluginManager) {
|
|
99
|
+
var _this = _super.call(this, config, getSubAdapter, pluginManager) || this;
|
|
100
|
+
var ixFilePath = (0, configuration_1.readConfObject)(config, 'ixFilePath');
|
|
101
|
+
var ixxFilePath = (0, configuration_1.readConfObject)(config, 'ixxFilePath');
|
|
102
|
+
if (!ixFilePath) {
|
|
103
|
+
throw new Error('must provide out.ix');
|
|
104
|
+
}
|
|
105
|
+
if (!ixxFilePath) {
|
|
106
|
+
throw new Error('must provide out.ixx');
|
|
107
|
+
}
|
|
108
|
+
_this.trixJs = new trix_1.default((0, io_1.openLocation)(ixxFilePath), (0, io_1.openLocation)(ixFilePath), 1500);
|
|
109
|
+
return _this;
|
|
79
110
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
var labelFieldIdx = rest.findIndex(function (elt) {
|
|
135
|
-
return !!elt;
|
|
136
|
-
});
|
|
137
|
-
var contextIdx = rest.map(function (elt) {
|
|
138
|
-
return elt.toLowerCase();
|
|
139
|
-
}).findIndex(function (f) {
|
|
140
|
-
return f.indexOf(term.toLowerCase()) !== -1;
|
|
141
|
-
});
|
|
142
|
-
var labelField = rest[labelFieldIdx];
|
|
143
|
-
var contextField = rest[contextIdx];
|
|
144
|
-
var context = contextIdx !== -1 ? shorten(contextField, term) : undefined;
|
|
145
|
-
var label = shorten(labelField, term);
|
|
146
|
-
var displayString = !context || label.toLowerCase() === context.toLowerCase() ? label : "".concat(label, " (").concat(context, ")");
|
|
147
|
-
return new _BaseResults.default({
|
|
148
|
-
locString: loc,
|
|
149
|
-
label: labelField,
|
|
150
|
-
displayString: displayString,
|
|
151
|
-
matchedObject: result.map(function (record) {
|
|
152
|
-
return decodeURIComponent(record);
|
|
153
|
-
}),
|
|
154
|
-
trackId: trackId
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
if (!(args.searchType === 'exact')) {
|
|
159
|
-
_context.next = 8;
|
|
160
|
-
break;
|
|
111
|
+
/*
|
|
112
|
+
* Returns list of results
|
|
113
|
+
* @param args - search options/arguments include: search query
|
|
114
|
+
* limit of results to return, searchType...prefix | full | exact", etc.
|
|
115
|
+
*/
|
|
116
|
+
TrixTextSearchAdapter.prototype.searchIndex = function (args) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
118
|
+
var query, strs, results, formatted;
|
|
119
|
+
return __generator(this, function (_a) {
|
|
120
|
+
switch (_a.label) {
|
|
121
|
+
case 0:
|
|
122
|
+
query = args.queryString.toLowerCase();
|
|
123
|
+
strs = query.split(' ');
|
|
124
|
+
return [4 /*yield*/, this.trixJs.search(query)];
|
|
125
|
+
case 1:
|
|
126
|
+
results = _a.sent();
|
|
127
|
+
formatted = results
|
|
128
|
+
// if multi-word search try to filter out relevant items
|
|
129
|
+
.filter(function (_a) {
|
|
130
|
+
var _b = __read(_a, 2), data = _b[1];
|
|
131
|
+
return strs.every(function (r) {
|
|
132
|
+
return decodeURIComponentNoThrow(data).toLowerCase().includes(r);
|
|
133
|
+
});
|
|
134
|
+
})
|
|
135
|
+
.map(function (_a) {
|
|
136
|
+
var _b = __read(_a, 2), term = _b[0], data = _b[1];
|
|
137
|
+
var result = JSON.parse(data.replace(/\|/g, ','));
|
|
138
|
+
var _c = __read(result.map(function (record) {
|
|
139
|
+
return decodeURIComponentNoThrow(record);
|
|
140
|
+
})), loc = _c[0], trackId = _c[1], rest = _c.slice(2);
|
|
141
|
+
var labelFieldIdx = rest.findIndex(function (elt) { return !!elt; });
|
|
142
|
+
var contextIdx = rest
|
|
143
|
+
.map(function (elt) { return elt.toLowerCase(); })
|
|
144
|
+
.findIndex(function (f) { return f.indexOf(term.toLowerCase()) !== -1; });
|
|
145
|
+
var labelField = rest[labelFieldIdx];
|
|
146
|
+
var contextField = rest[contextIdx];
|
|
147
|
+
var context = contextIdx !== -1 ? shorten(contextField, term) : undefined;
|
|
148
|
+
var label = shorten(labelField, term);
|
|
149
|
+
var displayString = !context || label.toLowerCase() === context.toLowerCase()
|
|
150
|
+
? label
|
|
151
|
+
: "".concat(label, " (").concat(context, ")");
|
|
152
|
+
return new BaseResults_1.default({
|
|
153
|
+
locString: loc,
|
|
154
|
+
label: labelField,
|
|
155
|
+
displayString: displayString,
|
|
156
|
+
matchedObject: result.map(function (record) { return decodeURIComponent(record); }),
|
|
157
|
+
trackId: trackId,
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
if (args.searchType === 'exact') {
|
|
161
|
+
return [2 /*return*/, formatted.filter(function (res) { return res.getLabel().toLowerCase() === args.queryString.toLowerCase(); })];
|
|
162
|
+
}
|
|
163
|
+
return [2 /*return*/, formatted];
|
|
161
164
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
case 9:
|
|
171
|
-
case "end":
|
|
172
|
-
return _context.stop();
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}, _callee, this);
|
|
176
|
-
}));
|
|
177
|
-
|
|
178
|
-
function searchIndex(_x) {
|
|
179
|
-
return _searchIndex.apply(this, arguments);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return searchIndex;
|
|
183
|
-
}()
|
|
184
|
-
}, {
|
|
185
|
-
key: "freeResources",
|
|
186
|
-
value: function freeResources() {}
|
|
187
|
-
}]);
|
|
188
|
-
return TrixTextSearchAdapter;
|
|
189
|
-
}(_BaseAdapter2.BaseAdapter);
|
|
190
|
-
|
|
191
|
-
exports.default = TrixTextSearchAdapter;
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
TrixTextSearchAdapter.prototype.freeResources = function () { };
|
|
169
|
+
return TrixTextSearchAdapter;
|
|
170
|
+
}(BaseAdapter_1.BaseAdapter));
|
|
171
|
+
exports.default = TrixTextSearchAdapter;
|
|
172
|
+
//# sourceMappingURL=TrixTextSearchAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrixTextSearchAdapter.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/TrixTextSearchAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _default = (0, _configuration.ConfigurationSchema)('TrixTextSearchAdapter', {
|
|
11
|
-
ixFilePath: {
|
|
12
|
-
type: 'fileLocation',
|
|
13
|
-
defaultValue: {
|
|
14
|
-
uri: 'out.ix',
|
|
15
|
-
locationType: 'UriLocation'
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var configuration_1 = require("@jbrowse/core/configuration");
|
|
4
|
+
exports.default = (0, configuration_1.ConfigurationSchema)('TrixTextSearchAdapter', {
|
|
5
|
+
ixFilePath: {
|
|
6
|
+
type: 'fileLocation',
|
|
7
|
+
defaultValue: { uri: 'out.ix', locationType: 'UriLocation' },
|
|
8
|
+
description: 'the location of the trix ix file',
|
|
16
9
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
defaultValue: {
|
|
22
|
-
uri: 'out.ixx',
|
|
23
|
-
locationType: 'UriLocation'
|
|
10
|
+
ixxFilePath: {
|
|
11
|
+
type: 'fileLocation',
|
|
12
|
+
defaultValue: { uri: 'out.ixx', locationType: 'UriLocation' },
|
|
13
|
+
description: 'the location of the trix ixx file',
|
|
24
14
|
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
defaultValue: {
|
|
30
|
-
uri: 'meta.json',
|
|
31
|
-
locationType: 'UriLocation'
|
|
15
|
+
metaFilePath: {
|
|
16
|
+
type: 'fileLocation',
|
|
17
|
+
defaultValue: { uri: 'meta.json', locationType: 'UriLocation' },
|
|
18
|
+
description: 'the location of the metadata json file for the trix index',
|
|
32
19
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}, {
|
|
46
|
-
explicitlyTyped: true,
|
|
47
|
-
explicitIdentifier: 'textSearchAdapterId'
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
exports.default = _default;
|
|
20
|
+
tracks: {
|
|
21
|
+
type: 'stringArray',
|
|
22
|
+
defaultValue: [],
|
|
23
|
+
description: 'List of tracks covered by text search adapter',
|
|
24
|
+
},
|
|
25
|
+
assemblyNames: {
|
|
26
|
+
type: 'stringArray',
|
|
27
|
+
defaultValue: [],
|
|
28
|
+
description: 'List of assemblies covered by text search adapter',
|
|
29
|
+
},
|
|
30
|
+
}, { explicitlyTyped: true, explicitIdentifier: 'textSearchAdapterId' });
|
|
31
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/configSchema.ts"],"names":[],"mappings":";;AAAA,6DAAiE;AAEjE,kBAAe,IAAA,mCAAmB,EAChC,uBAAuB,EACvB;IACE,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE;QAC5D,WAAW,EAAE,kCAAkC;KAChD;IACD,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE;QAC7D,WAAW,EAAE,mCAAmC;KACjD;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE;QAC/D,WAAW,EAAE,2DAA2D;KACzE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,+CAA+C;KAC7D;IACD,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,mDAAmD;KACjE;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CACrE,CAAA"}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "AdapterClass", {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "configSchema", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function get() {
|
|
17
|
-
return _configSchema.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
var _TrixTextSearchAdapter = _interopRequireDefault(require("./TrixTextSearchAdapter"));
|
|
22
|
-
|
|
23
|
-
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.configSchema = exports.AdapterClass = void 0;
|
|
7
|
+
var TrixTextSearchAdapter_1 = require("./TrixTextSearchAdapter");
|
|
8
|
+
Object.defineProperty(exports, "AdapterClass", { enumerable: true, get: function () { return __importDefault(TrixTextSearchAdapter_1).default; } });
|
|
9
|
+
var configSchema_1 = require("./configSchema");
|
|
10
|
+
Object.defineProperty(exports, "configSchema", { enumerable: true, get: function () { return __importDefault(configSchema_1).default; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/index.ts"],"names":[],"mappings":";;;;;;AAAA,iEAAiE;AAAxD,sIAAA,OAAO,OAAgB;AAChC,+CAAwD;AAA/C,6HAAA,OAAO,OAAgB"}
|
package/dist/index.js
CHANGED
|
@@ -1,69 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
31
|
-
|
|
32
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
33
|
-
|
|
34
|
-
var _default = /*#__PURE__*/function (_Plugin) {
|
|
35
|
-
(0, _inherits2.default)(_default, _Plugin);
|
|
36
|
-
|
|
37
|
-
var _super = _createSuper(_default);
|
|
38
|
-
|
|
39
|
-
function _default() {
|
|
40
|
-
var _this;
|
|
41
|
-
|
|
42
|
-
(0, _classCallCheck2.default)(this, _default);
|
|
43
|
-
|
|
44
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
45
|
-
args[_key] = arguments[_key];
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
var TextSearchAdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/TextSearchAdapterType"));
|
|
22
|
+
var Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
|
|
23
|
+
var TrixTextSearchAdapter_1 = require("./TrixTextSearchAdapter");
|
|
24
|
+
var default_1 = /** @class */ (function (_super) {
|
|
25
|
+
__extends(default_1, _super);
|
|
26
|
+
function default_1() {
|
|
27
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
28
|
+
_this.name = 'TrixPlugin';
|
|
29
|
+
return _this;
|
|
46
30
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
value: function install(pluginManager) {
|
|
56
|
-
pluginManager.addTextSearchAdapterType(function () {
|
|
57
|
-
return new _TextSearchAdapterType.default({
|
|
58
|
-
name: 'TrixTextSearchAdapter',
|
|
59
|
-
configSchema: _TrixTextSearchAdapter.configSchema,
|
|
60
|
-
AdapterClass: _TrixTextSearchAdapter.AdapterClass,
|
|
61
|
-
description: 'Trix adapter'
|
|
31
|
+
default_1.prototype.install = function (pluginManager) {
|
|
32
|
+
pluginManager.addTextSearchAdapterType(function () {
|
|
33
|
+
return new TextSearchAdapterType_1.default({
|
|
34
|
+
name: 'TrixTextSearchAdapter',
|
|
35
|
+
configSchema: TrixTextSearchAdapter_1.configSchema,
|
|
36
|
+
AdapterClass: TrixTextSearchAdapter_1.AdapterClass,
|
|
37
|
+
description: 'Trix adapter',
|
|
38
|
+
});
|
|
62
39
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
exports.default = _default;
|
|
40
|
+
};
|
|
41
|
+
return default_1;
|
|
42
|
+
}(Plugin_1.default));
|
|
43
|
+
exports.default = default_1;
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,oHAA6F;AAC7F,gEAAyC;AAEzC,iEAGgC;AAEhC;IAA6B,6BAAM;IAAnC;QAAA,qEAcC;QAbC,UAAI,GAAG,YAAY,CAAA;;IAarB,CAAC;IAXC,2BAAO,GAAP,UAAQ,aAA4B;QAClC,aAAa,CAAC,wBAAwB,CACpC;YACE,OAAA,IAAI,+BAAqB,CAAC;gBACxB,IAAI,EAAE,uBAAuB;gBAC7B,YAAY,EAAE,oCAAuB;gBACrC,YAAY,EAAE,oCAA0B;gBACxC,WAAW,EAAE,cAAc;aAC5B,CAAC;QALF,CAKE,CACL,CAAA;IACH,CAAC;IACH,gBAAC;AAAD,CAAC,AAdD,CAA6B,gBAAM,GAclC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Trix from '@gmod/trix';
|
|
2
|
+
import { BaseTextSearchAdapter, BaseArgs, BaseAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
4
|
+
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
5
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
6
|
+
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
7
|
+
export default class TrixTextSearchAdapter extends BaseAdapter implements BaseTextSearchAdapter {
|
|
8
|
+
indexingAttributes?: string[];
|
|
9
|
+
trixJs: Trix;
|
|
10
|
+
tracksNames?: string[];
|
|
11
|
+
constructor(config: AnyConfigurationModel, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
|
|
12
|
+
searchIndex(args: BaseArgs): Promise<BaseResult[]>;
|
|
13
|
+
freeResources(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import Trix from '@gmod/trix';
|
|
2
|
+
import { BaseAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { openLocation } from '@jbrowse/core/util/io';
|
|
4
|
+
import BaseResult from '@jbrowse/core/TextSearch/BaseResults';
|
|
5
|
+
import { readConfObject, } from '@jbrowse/core/configuration';
|
|
6
|
+
function decodeURIComponentNoThrow(uri) {
|
|
7
|
+
try {
|
|
8
|
+
return decodeURIComponent(uri);
|
|
9
|
+
}
|
|
10
|
+
catch (e) {
|
|
11
|
+
// avoid throwing exception on a failure to decode URI component
|
|
12
|
+
return uri;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function shorten(str, term, w = 15) {
|
|
16
|
+
const tidx = str.toLowerCase().indexOf(term);
|
|
17
|
+
return str.length < 40
|
|
18
|
+
? str
|
|
19
|
+
: (Math.max(0, tidx - w) > 0 ? '...' : '') +
|
|
20
|
+
str.slice(Math.max(0, tidx - w), tidx + term.length + w).trim() +
|
|
21
|
+
(tidx + term.length < str.length ? '...' : '');
|
|
22
|
+
}
|
|
23
|
+
export default class TrixTextSearchAdapter extends BaseAdapter {
|
|
24
|
+
constructor(config, getSubAdapter, pluginManager) {
|
|
25
|
+
super(config, getSubAdapter, pluginManager);
|
|
26
|
+
const ixFilePath = readConfObject(config, 'ixFilePath');
|
|
27
|
+
const ixxFilePath = readConfObject(config, 'ixxFilePath');
|
|
28
|
+
if (!ixFilePath) {
|
|
29
|
+
throw new Error('must provide out.ix');
|
|
30
|
+
}
|
|
31
|
+
if (!ixxFilePath) {
|
|
32
|
+
throw new Error('must provide out.ixx');
|
|
33
|
+
}
|
|
34
|
+
this.trixJs = new Trix(openLocation(ixxFilePath), openLocation(ixFilePath), 1500);
|
|
35
|
+
}
|
|
36
|
+
/*
|
|
37
|
+
* Returns list of results
|
|
38
|
+
* @param args - search options/arguments include: search query
|
|
39
|
+
* limit of results to return, searchType...prefix | full | exact", etc.
|
|
40
|
+
*/
|
|
41
|
+
async searchIndex(args) {
|
|
42
|
+
const query = args.queryString.toLowerCase();
|
|
43
|
+
const strs = query.split(' ');
|
|
44
|
+
const results = await this.trixJs.search(query);
|
|
45
|
+
const formatted = results
|
|
46
|
+
// if multi-word search try to filter out relevant items
|
|
47
|
+
.filter(([, data]) => strs.every(r => decodeURIComponentNoThrow(data).toLowerCase().includes(r)))
|
|
48
|
+
.map(([term, data]) => {
|
|
49
|
+
const result = JSON.parse(data.replace(/\|/g, ','));
|
|
50
|
+
const [loc, trackId, ...rest] = result.map(record => decodeURIComponentNoThrow(record));
|
|
51
|
+
const labelFieldIdx = rest.findIndex(elt => !!elt);
|
|
52
|
+
const contextIdx = rest
|
|
53
|
+
.map(elt => elt.toLowerCase())
|
|
54
|
+
.findIndex(f => f.indexOf(term.toLowerCase()) !== -1);
|
|
55
|
+
const labelField = rest[labelFieldIdx];
|
|
56
|
+
const contextField = rest[contextIdx];
|
|
57
|
+
const context = contextIdx !== -1 ? shorten(contextField, term) : undefined;
|
|
58
|
+
const label = shorten(labelField, term);
|
|
59
|
+
const displayString = !context || label.toLowerCase() === context.toLowerCase()
|
|
60
|
+
? label
|
|
61
|
+
: `${label} (${context})`;
|
|
62
|
+
return new BaseResult({
|
|
63
|
+
locString: loc,
|
|
64
|
+
label: labelField,
|
|
65
|
+
displayString,
|
|
66
|
+
matchedObject: result.map(record => decodeURIComponent(record)),
|
|
67
|
+
trackId,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
if (args.searchType === 'exact') {
|
|
71
|
+
return formatted.filter(res => res.getLabel().toLowerCase() === args.queryString.toLowerCase());
|
|
72
|
+
}
|
|
73
|
+
return formatted;
|
|
74
|
+
}
|
|
75
|
+
freeResources() { }
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=TrixTextSearchAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrixTextSearchAdapter.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/TrixTextSearchAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ConfigurationSchema } from '@jbrowse/core/configuration';
|
|
2
|
+
export default ConfigurationSchema('TrixTextSearchAdapter', {
|
|
3
|
+
ixFilePath: {
|
|
4
|
+
type: 'fileLocation',
|
|
5
|
+
defaultValue: { uri: 'out.ix', locationType: 'UriLocation' },
|
|
6
|
+
description: 'the location of the trix ix file',
|
|
7
|
+
},
|
|
8
|
+
ixxFilePath: {
|
|
9
|
+
type: 'fileLocation',
|
|
10
|
+
defaultValue: { uri: 'out.ixx', locationType: 'UriLocation' },
|
|
11
|
+
description: 'the location of the trix ixx file',
|
|
12
|
+
},
|
|
13
|
+
metaFilePath: {
|
|
14
|
+
type: 'fileLocation',
|
|
15
|
+
defaultValue: { uri: 'meta.json', locationType: 'UriLocation' },
|
|
16
|
+
description: 'the location of the metadata json file for the trix index',
|
|
17
|
+
},
|
|
18
|
+
tracks: {
|
|
19
|
+
type: 'stringArray',
|
|
20
|
+
defaultValue: [],
|
|
21
|
+
description: 'List of tracks covered by text search adapter',
|
|
22
|
+
},
|
|
23
|
+
assemblyNames: {
|
|
24
|
+
type: 'stringArray',
|
|
25
|
+
defaultValue: [],
|
|
26
|
+
description: 'List of assemblies covered by text search adapter',
|
|
27
|
+
},
|
|
28
|
+
}, { explicitlyTyped: true, explicitIdentifier: 'textSearchAdapterId' });
|
|
29
|
+
//# sourceMappingURL=configSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,eAAe,mBAAmB,CAChC,uBAAuB,EACvB;IACE,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE;QAC5D,WAAW,EAAE,kCAAkC;KAChD;IACD,WAAW,EAAE;QACX,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE;QAC7D,WAAW,EAAE,mCAAmC;KACjD;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE;QAC/D,WAAW,EAAE,2DAA2D;KACzE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,+CAA+C;KAC7D;IACD,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,mDAAmD;KACjE;CACF,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CACrE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/TrixTextSearchAdapter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|
package/esm/index.d.ts
ADDED
package/esm/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import TextSearchAdapterType from '@jbrowse/core/pluggableElementTypes/TextSearchAdapterType';
|
|
2
|
+
import Plugin from '@jbrowse/core/Plugin';
|
|
3
|
+
import { AdapterClass as TrixTextSearchAdapterClass, configSchema as trixAdapterConfigSchema, } from './TrixTextSearchAdapter';
|
|
4
|
+
export default class extends Plugin {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = 'TrixPlugin';
|
|
8
|
+
}
|
|
9
|
+
install(pluginManager) {
|
|
10
|
+
pluginManager.addTextSearchAdapterType(() => new TextSearchAdapterType({
|
|
11
|
+
name: 'TrixTextSearchAdapter',
|
|
12
|
+
configSchema: trixAdapterConfigSchema,
|
|
13
|
+
AdapterClass: TrixTextSearchAdapterClass,
|
|
14
|
+
description: 'Trix adapter',
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,2DAA2D,CAAA;AAC7F,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAEzC,OAAO,EACL,YAAY,IAAI,0BAA0B,EAC1C,YAAY,IAAI,uBAAuB,GACxC,MAAM,yBAAyB,CAAA;AAEhC,MAAM,CAAC,OAAO,MAAO,SAAQ,MAAM;IAAnC;;QACE,SAAI,GAAG,YAAY,CAAA;IAarB,CAAC;IAXC,OAAO,CAAC,aAA4B;QAClC,aAAa,CAAC,wBAAwB,CACpC,GAAG,EAAE,CACH,IAAI,qBAAqB,CAAC;YACxB,IAAI,EAAE,uBAAuB;YAC7B,YAAY,EAAE,uBAAuB;YACrC,YAAY,EAAE,0BAA0B;YACxC,WAAW,EAAE,cAAc;SAC5B,CAAC,CACL,CAAA;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/plugin-trix",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "JBrowse 2 trix text search adapter",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -20,24 +20,28 @@
|
|
|
20
20
|
"main": "dist/index.js",
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
|
23
|
-
"src"
|
|
23
|
+
"src",
|
|
24
|
+
"esm"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
|
-
"build": "
|
|
27
|
+
"build": "npm-run-all build:*",
|
|
27
28
|
"test": "cd ../..; jest plugins/trix",
|
|
28
29
|
"prepublishOnly": "yarn test",
|
|
29
30
|
"prepack": "yarn build; yarn useDist",
|
|
30
31
|
"postpack": "yarn useSrc",
|
|
31
32
|
"useDist": "node ../../scripts/useDist.js",
|
|
32
33
|
"useSrc": "node ../../scripts/useSrc.js",
|
|
33
|
-
"
|
|
34
|
+
"prebuild": "npm run clean",
|
|
35
|
+
"build:esm": "tsc --build tsconfig.build.esm.json",
|
|
36
|
+
"build:es5": "tsc --build tsconfig.build.es5.json",
|
|
37
|
+
"clean": "rimraf dist esm *.tsbuildinfo"
|
|
34
38
|
},
|
|
35
39
|
"peerDependencies": {
|
|
36
40
|
"@jbrowse/core": "^1.0.0",
|
|
37
|
-
"@material
|
|
38
|
-
"mobx": "^
|
|
39
|
-
"mobx-react": "^
|
|
40
|
-
"mobx-state-tree": "
|
|
41
|
+
"@mui/material": "^4.9.13",
|
|
42
|
+
"mobx": "^6.0.0",
|
|
43
|
+
"mobx-react": "^7.0.0",
|
|
44
|
+
"mobx-state-tree": "^5.0.0",
|
|
41
45
|
"prop-types": "^15.0.0",
|
|
42
46
|
"react": ">=16.8.0"
|
|
43
47
|
},
|
|
@@ -48,5 +52,8 @@
|
|
|
48
52
|
"publishConfig": {
|
|
49
53
|
"access": "public"
|
|
50
54
|
},
|
|
51
|
-
"
|
|
55
|
+
"distModule": "esm/index.js",
|
|
56
|
+
"srcModule": "src/index.ts",
|
|
57
|
+
"module": "esm/index.js",
|
|
58
|
+
"gitHead": "ecc7f5d47351a5ea04bc00f3a6eb6dfb607342e6"
|
|
52
59
|
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
-
|
|
7
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
-
|
|
9
|
-
var _BaseResults = _interopRequireDefault(require("@jbrowse/core/TextSearch/BaseResults"));
|
|
10
|
-
|
|
11
|
-
var _path = _interopRequireDefault(require("path"));
|
|
12
|
-
|
|
13
|
-
var _TrixTextSearchAdapter = _interopRequireDefault(require("./TrixTextSearchAdapter"));
|
|
14
|
-
|
|
15
|
-
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
16
|
-
|
|
17
|
-
test('adapter can fetch output files', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
18
|
-
var rootTemplate, urlPath, args, adapter, results, results2, test2;
|
|
19
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
20
|
-
while (1) {
|
|
21
|
-
switch (_context.prev = _context.next) {
|
|
22
|
-
case 0:
|
|
23
|
-
rootTemplate = _path.default.join(__dirname, '..', '..', '..', '..', 'test_data', 'volvox', 'trix').replace(/\\/g, '\\\\');
|
|
24
|
-
urlPath = decodeURI(new URL("file://".concat(rootTemplate)).href);
|
|
25
|
-
args = {
|
|
26
|
-
type: 'TrixTextSearchAdapter',
|
|
27
|
-
textSearchAdapterId: 'TrixTextSearchAdapterTest',
|
|
28
|
-
ixFilePath: {
|
|
29
|
-
uri: "".concat(urlPath, "/volvox.ix"),
|
|
30
|
-
locationType: 'UriLocation'
|
|
31
|
-
},
|
|
32
|
-
ixxFilePath: {
|
|
33
|
-
uri: "".concat(urlPath, "/volvox.ixx"),
|
|
34
|
-
locationType: 'UriLocation'
|
|
35
|
-
},
|
|
36
|
-
metaFilePath: {
|
|
37
|
-
uri: "".concat(urlPath, "/volvox_meta.json"),
|
|
38
|
-
locationType: 'UriLocation'
|
|
39
|
-
}
|
|
40
|
-
}; // create adapter
|
|
41
|
-
|
|
42
|
-
adapter = new _TrixTextSearchAdapter.default(_configSchema.default.create(args)); // prefix search
|
|
43
|
-
|
|
44
|
-
_context.next = 6;
|
|
45
|
-
return adapter.searchIndex({
|
|
46
|
-
queryString: 'apple'
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
case 6:
|
|
50
|
-
results = _context.sent;
|
|
51
|
-
// check results are of type BaseResult for prefix search
|
|
52
|
-
expect(results[0] instanceof _BaseResults.default).toBeTruthy();
|
|
53
|
-
expect(results[0].getLabel()).toEqual('Apple2');
|
|
54
|
-
expect(results[1].getLabel()).toEqual('Apple3'); // exact search
|
|
55
|
-
|
|
56
|
-
_context.next = 12;
|
|
57
|
-
return adapter.searchIndex({
|
|
58
|
-
queryString: 'apple3'
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
case 12:
|
|
62
|
-
results2 = _context.sent;
|
|
63
|
-
// check results are of type location for exact search
|
|
64
|
-
expect(results2.length).toEqual(1);
|
|
65
|
-
test2 = results2[0];
|
|
66
|
-
expect(test2 instanceof _BaseResults.default).toBeTruthy();
|
|
67
|
-
expect(test2.getLabel()).toEqual('Apple3');
|
|
68
|
-
expect(test2.getLocation()).toEqual('ctgA:17400..23000');
|
|
69
|
-
|
|
70
|
-
case 18:
|
|
71
|
-
case "end":
|
|
72
|
-
return _context.stop();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}, _callee);
|
|
76
|
-
})));
|