@jbrowse/plugin-trix 1.6.9 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +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
- }
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,191 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+
18
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
+
20
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
+
22
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
23
+
24
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
+
26
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
27
+
28
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
29
+
30
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
+
32
+ var _trix = _interopRequireDefault(require("@gmod/trix"));
33
+
34
+ var _BaseAdapter2 = require("@jbrowse/core/data_adapters/BaseAdapter");
35
+
36
+ var _io = require("@jbrowse/core/util/io");
37
+
38
+ var _BaseResults = _interopRequireDefault(require("@jbrowse/core/TextSearch/BaseResults"));
39
+
40
+ var _configuration = require("@jbrowse/core/configuration");
41
+
42
+ 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); }; }
43
+
44
+ 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; } }
45
+
46
+ function decodeURIComponentNoThrow(uri) {
47
+ try {
48
+ return decodeURIComponent(uri);
49
+ } catch (e) {
50
+ // avoid throwing exception on a failure to decode URI component
51
+ return uri;
52
+ }
53
+ }
54
+
55
+ function shorten(str, term) {
56
+ var w = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 15;
57
+ var tidx = str.toLowerCase().indexOf(term);
58
+ return str.length < 40 ? str : (Math.max(0, tidx - w) > 0 ? '...' : '') + str.slice(Math.max(0, tidx - w), tidx + term.length + w).trim() + (tidx + term.length < str.length ? '...' : '');
59
+ }
60
+
61
+ var TrixTextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
62
+ (0, _inherits2["default"])(TrixTextSearchAdapter, _BaseAdapter);
63
+
64
+ var _super = _createSuper(TrixTextSearchAdapter);
65
+
66
+ function TrixTextSearchAdapter(config, getSubAdapter, pluginManager) {
67
+ var _this;
68
+
69
+ (0, _classCallCheck2["default"])(this, TrixTextSearchAdapter);
70
+ _this = _super.call(this, config, getSubAdapter, pluginManager);
71
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "indexingAttributes", void 0);
72
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "trixJs", void 0);
73
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tracksNames", void 0);
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');
79
+ }
80
+
81
+ if (!ixxFilePath) {
82
+ throw new Error('must provide out.ixx');
83
+ }
84
+
85
+ _this.trixJs = new _trix["default"]((0, _io.openLocation)(ixxFilePath), (0, _io.openLocation)(ixFilePath), 1500);
86
+ return _this;
87
+ }
88
+ /*
89
+ * Returns list of results
90
+ * @param args - search options/arguments include: search query
91
+ * limit of results to return, searchType...prefix | full | exact", etc.
92
+ */
93
+
94
+
95
+ (0, _createClass2["default"])(TrixTextSearchAdapter, [{
96
+ key: "searchIndex",
97
+ value: function () {
98
+ var _searchIndex = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(args) {
99
+ var query, strs, results, formatted;
100
+ return _regenerator["default"].wrap(function _callee$(_context) {
101
+ while (1) {
102
+ switch (_context.prev = _context.next) {
103
+ case 0:
104
+ query = args.queryString.toLowerCase();
105
+ strs = query.split(' ');
106
+ _context.next = 4;
107
+ return this.trixJs.search(query);
108
+
109
+ case 4:
110
+ results = _context.sent;
111
+ formatted = results // if multi-word search try to filter out relevant items
112
+ .filter(function (_ref) {
113
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
114
+ data = _ref2[1];
115
+
116
+ return strs.every(function (r) {
117
+ return decodeURIComponentNoThrow(data).toLowerCase().includes(r);
118
+ });
119
+ }).map(function (_ref3) {
120
+ var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
121
+ term = _ref4[0],
122
+ data = _ref4[1];
123
+
124
+ var result = JSON.parse(data.replace(/\|/g, ','));
125
+
126
+ var _result$map = result.map(function (record) {
127
+ return decodeURIComponentNoThrow(record);
128
+ }),
129
+ _result$map2 = (0, _toArray2["default"])(_result$map),
130
+ loc = _result$map2[0],
131
+ trackId = _result$map2[1],
132
+ rest = _result$map2.slice(2);
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;
161
+ }
162
+
163
+ return _context.abrupt("return", formatted.filter(function (res) {
164
+ return res.getLabel().toLowerCase() === args.queryString.toLowerCase();
165
+ }));
166
+
167
+ case 8:
168
+ return _context.abrupt("return", formatted);
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;
@@ -0,0 +1,76 @@
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
+ })));
@@ -1,2 +1,2 @@
1
- declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
- export default _default;
1
+ declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2
+ export default _default;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _configuration = require("@jbrowse/core/configuration");
9
+
10
+ var _default = (0, _configuration.ConfigurationSchema)('TrixTextSearchAdapter', {
11
+ ixFilePath: {
12
+ type: 'fileLocation',
13
+ defaultValue: {
14
+ uri: 'out.ix',
15
+ locationType: 'UriLocation'
16
+ },
17
+ description: 'the location of the trix ix file'
18
+ },
19
+ ixxFilePath: {
20
+ type: 'fileLocation',
21
+ defaultValue: {
22
+ uri: 'out.ixx',
23
+ locationType: 'UriLocation'
24
+ },
25
+ description: 'the location of the trix ixx file'
26
+ },
27
+ metaFilePath: {
28
+ type: 'fileLocation',
29
+ defaultValue: {
30
+ uri: 'meta.json',
31
+ locationType: 'UriLocation'
32
+ },
33
+ description: 'the location of the metadata json file for the trix index'
34
+ },
35
+ tracks: {
36
+ type: 'stringArray',
37
+ defaultValue: [],
38
+ description: 'List of tracks covered by text search adapter'
39
+ },
40
+ assemblyNames: {
41
+ type: 'stringArray',
42
+ defaultValue: [],
43
+ description: 'List of assemblies covered by text search adapter'
44
+ }
45
+ }, {
46
+ explicitlyTyped: true,
47
+ explicitIdentifier: 'textSearchAdapterId'
48
+ });
49
+
50
+ exports["default"] = _default;
@@ -1,2 +1,2 @@
1
- export { default as AdapterClass } from './TrixTextSearchAdapter';
2
- export { default as configSchema } from './configSchema';
1
+ export { default as AdapterClass } from './TrixTextSearchAdapter';
2
+ export { default as configSchema } from './configSchema';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "AdapterClass", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _TrixTextSearchAdapter["default"];
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"));
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import Plugin from '@jbrowse/core/Plugin';
2
- import PluginManager from '@jbrowse/core/PluginManager';
3
- export default class extends Plugin {
4
- name: string;
5
- install(pluginManager: PluginManager): void;
6
- }
1
+ import Plugin from '@jbrowse/core/Plugin';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ export default class extends Plugin {
4
+ name: string;
5
+ install(pluginManager: PluginManager): void;
6
+ }
package/dist/index.js CHANGED
@@ -1,8 +1,69 @@
1
+ "use strict";
1
2
 
2
- 'use strict'
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./plugin-trix.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./plugin-trix.cjs.development.js')
8
- }
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _TextSearchAdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/TextSearchAdapterType"));
25
+
26
+ var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
27
+
28
+ var _TrixTextSearchAdapter = require("./TrixTextSearchAdapter");
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];
46
+ }
47
+
48
+ _this = _super.call.apply(_super, [this].concat(args));
49
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'TrixPlugin');
50
+ return _this;
51
+ }
52
+
53
+ (0, _createClass2["default"])(_default, [{
54
+ key: "install",
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'
62
+ });
63
+ });
64
+ }
65
+ }]);
66
+ return _default;
67
+ }(_Plugin2["default"]);
68
+
69
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-trix",
3
- "version": "1.6.9",
3
+ "version": "1.7.3",
4
4
  "description": "JBrowse 2 trix text search adapter",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -18,21 +18,19 @@
18
18
  "distMain": "dist/index.js",
19
19
  "srcMain": "src/index.ts",
20
20
  "main": "dist/index.js",
21
- "distModule": "dist/plugin-trix.esm.js",
22
- "module": "dist/plugin-trix.esm.js",
23
21
  "files": [
24
22
  "dist",
25
23
  "src"
26
24
  ],
27
25
  "scripts": {
28
- "start": "tsdx watch --verbose --noClean",
29
- "build": "tsdx build",
26
+ "build": "babel src --root-mode upward --out-dir dist --extensions .ts,.js,.tsx,.jsx",
30
27
  "test": "cd ../..; jest plugins/trix",
31
28
  "prepublishOnly": "yarn test",
32
29
  "prepack": "yarn build; yarn useDist",
33
30
  "postpack": "yarn useSrc",
34
31
  "useDist": "node ../../scripts/useDist.js",
35
- "useSrc": "node ../../scripts/useSrc.js"
32
+ "useSrc": "node ../../scripts/useSrc.js",
33
+ "postbuild": "tsc --build tsconfig.build.json"
36
34
  },
37
35
  "peerDependencies": {
38
36
  "@jbrowse/core": "^1.0.0",
@@ -49,5 +47,5 @@
49
47
  "publishConfig": {
50
48
  "access": "public"
51
49
  },
52
- "gitHead": "f6c3d4edfadc26f7ac635a2fa7259f50f0c7e5e3"
50
+ "gitHead": "09b13c85acf4ac68dd71ab23af87656c7552fdaf"
53
51
  }