@jbrowse/core 3.1.0 → 3.2.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/CorePlugin.js +2 -2
- package/PluginLoader.js +3 -3
- package/PluginManager.js +15 -14
- package/configuration/configurationSchema.js +2 -2
- package/configuration/util.js +2 -2
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +9 -2
- package/data_adapters/BaseAdapter/BaseOptions.d.ts +0 -1
- package/data_adapters/BaseAdapter/types.d.ts +1 -1
- package/data_adapters/CytobandAdapter/configSchema.js +17 -2
- package/data_adapters/dataAdapterCache.js +4 -4
- package/package.json +2 -2
- package/pluggableElementTypes/RpcMethodTypeWithFiltersAndRenameRegions.d.ts +3 -1
- package/pluggableElementTypes/models/BaseTrackModel.js +3 -1
- package/pluggableElementTypes/models/baseTrackConfig.js +2 -2
- package/pluggableElementTypes/renderers/FeatureRendererType.js +1 -0
- package/rpc/methods/CoreFreeResources.js +2 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/util/Base1DUtils.js +1 -1
- package/util/analytics.js +2 -2
- package/util/idMaker.d.ts +1 -1
- package/util/idMaker.js +1 -1
- package/util/index.d.ts +3 -1
- package/util/index.js +36 -10
- package/util/layouts/PrecomputedMultiLayout.js +2 -2
- package/util/map-obj.js +2 -2
- package/util/rxjs.d.ts +1 -1
- package/util/rxjs.js +3 -1
- package/util/stopToken.d.ts +1 -1
package/util/Base1DUtils.js
CHANGED
|
@@ -44,7 +44,7 @@ function moveTo(self, start, end) {
|
|
|
44
44
|
extraBp = ((newBpPerPx - targetBpPerPx) * self.width) / 2;
|
|
45
45
|
}
|
|
46
46
|
let bpToStart = -extraBp;
|
|
47
|
-
for (let i = 0; i < self.displayedRegions.length; i
|
|
47
|
+
for (let i = 0; i < self.displayedRegions.length; i++) {
|
|
48
48
|
const region = self.displayedRegions[i];
|
|
49
49
|
if (start.index === i) {
|
|
50
50
|
bpToStart += start.offset;
|
package/util/analytics.js
CHANGED
|
@@ -68,9 +68,9 @@ async function writeGAAnalytics(rootModel, initialTimestamp) {
|
|
|
68
68
|
analyticsScript += `ga('create', '${jbrowseUser}', 'auto', 'jbrowseTracker');`;
|
|
69
69
|
const gaData = {};
|
|
70
70
|
const googleDimensions = 'tracks-count ver electron loadTime pluginNames';
|
|
71
|
-
googleDimensions.split(/\s+/).
|
|
71
|
+
for (const [index, key] of googleDimensions.split(/\s+/).entries()) {
|
|
72
72
|
gaData[`dimension${index + 1}`] = stats[key];
|
|
73
|
-
}
|
|
73
|
+
}
|
|
74
74
|
gaData.metric1 = Math.round(stats.loadTime);
|
|
75
75
|
analyticsScript += `ga('jbrowseTracker.send', 'pageview',${JSON.stringify(gaData)});`;
|
|
76
76
|
const analyticsScriptNode = document.createElement('script');
|
package/util/idMaker.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function idMaker(args: Record<string, unknown>, id?: string, len?: number): number;
|
|
1
|
+
export default function idMaker(args: Record<string, unknown>, id?: string, len?: number): string | number;
|
package/util/idMaker.js
CHANGED
package/util/index.d.ts
CHANGED
|
@@ -192,7 +192,8 @@ export interface ViewSnap {
|
|
|
192
192
|
})[];
|
|
193
193
|
}
|
|
194
194
|
export declare function isSupportedIndexingAdapter(type?: string): boolean;
|
|
195
|
-
export declare function getBpDisplayStr(
|
|
195
|
+
export declare function getBpDisplayStr(total: number): string;
|
|
196
|
+
export declare function getProgressDisplayStr(current: number, total: number): string;
|
|
196
197
|
export declare function toLocale(n: number): string;
|
|
197
198
|
export declare function getTickDisplayStr(totalBp: number, bpPerPx: number): string;
|
|
198
199
|
export declare function getViewParams(model: IAnyStateTreeNode, exportSVG?: boolean): {
|
|
@@ -257,6 +258,7 @@ export declare function fetchAndMaybeUnzipText(loc: GenericFilehandle, opts?: Ba
|
|
|
257
258
|
export declare function isObject(x: unknown): x is Record<string | symbol | number, unknown>;
|
|
258
259
|
export declare function localStorageGetNumber(key: string, defaultVal: number): number;
|
|
259
260
|
export declare function localStorageGetBoolean(key: string, defaultVal: boolean): boolean;
|
|
261
|
+
export declare function forEachWithStopTokenCheck<T>(iter: Iterable<T>, stopToken: string | undefined, arg: (arg: T) => void, durationMs?: number): void;
|
|
260
262
|
export declare function testAdapter(fileName: string, regex: RegExp, adapterHint: string | undefined, expected: string): boolean;
|
|
261
263
|
export { type Feature, type SimpleFeatureSerialized, type SimpleFeatureSerializedNoId, default as SimpleFeature, isFeature, } from './simpleFeature';
|
|
262
264
|
export { blobToDataURL } from './blobToDataURL';
|
package/util/index.js
CHANGED
|
@@ -63,6 +63,7 @@ exports.objectHash = objectHash;
|
|
|
63
63
|
exports.bytesForRegions = bytesForRegions;
|
|
64
64
|
exports.isSupportedIndexingAdapter = isSupportedIndexingAdapter;
|
|
65
65
|
exports.getBpDisplayStr = getBpDisplayStr;
|
|
66
|
+
exports.getProgressDisplayStr = getProgressDisplayStr;
|
|
66
67
|
exports.toLocale = toLocale;
|
|
67
68
|
exports.getTickDisplayStr = getTickDisplayStr;
|
|
68
69
|
exports.getViewParams = getViewParams;
|
|
@@ -94,6 +95,7 @@ exports.fetchAndMaybeUnzipText = fetchAndMaybeUnzipText;
|
|
|
94
95
|
exports.isObject = isObject;
|
|
95
96
|
exports.localStorageGetNumber = localStorageGetNumber;
|
|
96
97
|
exports.localStorageGetBoolean = localStorageGetBoolean;
|
|
98
|
+
exports.forEachWithStopTokenCheck = forEachWithStopTokenCheck;
|
|
97
99
|
exports.testAdapter = testAdapter;
|
|
98
100
|
const react_1 = require("react");
|
|
99
101
|
const bgzf_filehandle_1 = require("@gmod/bgzf-filehandle");
|
|
@@ -589,8 +591,8 @@ function reverse(str) {
|
|
|
589
591
|
function complement(str) {
|
|
590
592
|
var _a;
|
|
591
593
|
let comp = '';
|
|
592
|
-
for (
|
|
593
|
-
comp += (_a = exports.complementTable[
|
|
594
|
+
for (const element of str) {
|
|
595
|
+
comp += (_a = exports.complementTable[element]) !== null && _a !== void 0 ? _a : element;
|
|
594
596
|
}
|
|
595
597
|
return comp;
|
|
596
598
|
}
|
|
@@ -691,7 +693,7 @@ exports.defaultCodonTable = {
|
|
|
691
693
|
};
|
|
692
694
|
function generateCodonTable(table) {
|
|
693
695
|
const tempCodonTable = {};
|
|
694
|
-
Object.keys(table)
|
|
696
|
+
for (const codon of Object.keys(table)) {
|
|
695
697
|
const aa = table[codon];
|
|
696
698
|
const nucs = [];
|
|
697
699
|
for (let i = 0; i < 3; i++) {
|
|
@@ -711,7 +713,7 @@ function generateCodonTable(table) {
|
|
|
711
713
|
}
|
|
712
714
|
}
|
|
713
715
|
}
|
|
714
|
-
}
|
|
716
|
+
}
|
|
715
717
|
return tempCodonTable;
|
|
716
718
|
}
|
|
717
719
|
async function updateStatus(msg, cb, fn) {
|
|
@@ -760,15 +762,29 @@ function isSupportedIndexingAdapter(type = '') {
|
|
|
760
762
|
'VcfAdapter',
|
|
761
763
|
].includes(type);
|
|
762
764
|
}
|
|
763
|
-
function getBpDisplayStr(
|
|
764
|
-
if (Math.floor(
|
|
765
|
-
return `${
|
|
765
|
+
function getBpDisplayStr(total) {
|
|
766
|
+
if (Math.floor(total / 1000000) > 0) {
|
|
767
|
+
return `${r(total / 1000000)}Mbp`;
|
|
768
|
+
}
|
|
769
|
+
else if (Math.floor(total / 1000) > 0) {
|
|
770
|
+
return `${r(total / 1000)}Kbp`;
|
|
771
|
+
}
|
|
772
|
+
else {
|
|
773
|
+
return `${Math.floor(total)}bp`;
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
function r(s) {
|
|
777
|
+
return toLocale(Number.parseFloat(s.toPrecision(3)));
|
|
778
|
+
}
|
|
779
|
+
function getProgressDisplayStr(current, total) {
|
|
780
|
+
if (Math.floor(total / 1000000) > 0) {
|
|
781
|
+
return `${r(current / 1000000)}/${r(total / 1000000)}Mb`;
|
|
766
782
|
}
|
|
767
|
-
else if (Math.floor(
|
|
768
|
-
return `${
|
|
783
|
+
else if (Math.floor(total / 1000) > 0) {
|
|
784
|
+
return `${r(current / 1000)}/${r(total / 1000)}Kb`;
|
|
769
785
|
}
|
|
770
786
|
else {
|
|
771
|
-
return `${
|
|
787
|
+
return `${r(current)}/${r(total)}}bytes`;
|
|
772
788
|
}
|
|
773
789
|
}
|
|
774
790
|
function toLocale(n) {
|
|
@@ -988,6 +1004,16 @@ function localStorageGetNumber(key, defaultVal) {
|
|
|
988
1004
|
function localStorageGetBoolean(key, defaultVal) {
|
|
989
1005
|
return Boolean(JSON.parse(localStorageGetItem(key) || JSON.stringify(defaultVal)));
|
|
990
1006
|
}
|
|
1007
|
+
function forEachWithStopTokenCheck(iter, stopToken, arg, durationMs = 400) {
|
|
1008
|
+
let start = performance.now();
|
|
1009
|
+
for (const t of iter) {
|
|
1010
|
+
if (performance.now() - start > durationMs) {
|
|
1011
|
+
(0, stopToken_1.checkStopToken)(stopToken);
|
|
1012
|
+
start = performance.now();
|
|
1013
|
+
}
|
|
1014
|
+
arg(t);
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
991
1017
|
function testAdapter(fileName, regex, adapterHint, expected) {
|
|
992
1018
|
return (regex.test(fileName) && !adapterHint) || adapterHint === expected;
|
|
993
1019
|
}
|
|
@@ -13,9 +13,9 @@ class ThrowingLayout {
|
|
|
13
13
|
class PrecomputedMultiLayout extends MultiLayout_1.default {
|
|
14
14
|
constructor(json) {
|
|
15
15
|
super(ThrowingLayout);
|
|
16
|
-
|
|
16
|
+
for (const [layoutName, sublayoutJson] of Object.entries(json)) {
|
|
17
17
|
this.subLayouts.set(layoutName, new PrecomputedLayout_1.default(sublayoutJson));
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
exports.default = PrecomputedMultiLayout;
|
package/util/map-obj.js
CHANGED
|
@@ -13,12 +13,12 @@ function map(object, mapper, isSeen = new WeakSet()) {
|
|
|
13
13
|
}
|
|
14
14
|
isSeen.add(object);
|
|
15
15
|
const mapArray = (array) => {
|
|
16
|
-
|
|
16
|
+
for (const element of array) {
|
|
17
17
|
mapper(element);
|
|
18
18
|
if (isObject(element)) {
|
|
19
19
|
map(element, mapper, isSeen);
|
|
20
20
|
}
|
|
21
|
-
}
|
|
21
|
+
}
|
|
22
22
|
};
|
|
23
23
|
if (Array.isArray(object)) {
|
|
24
24
|
mapArray(object);
|
package/util/rxjs.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import type { Observer } from 'rxjs';
|
|
3
|
-
export declare function ObservableCreate<T>(func: (arg: Observer<T>) => void | Promise<void>,
|
|
3
|
+
export declare function ObservableCreate<T>(func: (arg: Observer<T>) => void | Promise<void>, stopToken?: string): Observable<T>;
|
package/util/rxjs.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObservableCreate = ObservableCreate;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
|
-
|
|
5
|
+
const stopToken_1 = require("./stopToken");
|
|
6
|
+
function ObservableCreate(func, stopToken) {
|
|
7
|
+
(0, stopToken_1.checkStopToken)(stopToken);
|
|
6
8
|
return new rxjs_1.Observable((observer) => {
|
|
7
9
|
try {
|
|
8
10
|
const ret = func(observer);
|
package/util/stopToken.d.ts
CHANGED