@jbrowse/core 2.2.1 → 2.3.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/BaseFeatureWidget/SequenceFeatureDetails.js +1 -0
- package/BaseFeatureWidget/SequenceFeatureSettingsDialog.js +2 -17
- package/BaseFeatureWidget/SequenceHelpDialog.js +3 -19
- package/PluginManager.d.ts +4 -0
- package/PluginManager.js +12 -0
- package/README.md +6 -2
- package/data_adapters/BaseAdapter.d.ts +1 -1
- package/package.json +3 -3
- package/pluggableElementTypes/AdapterType.d.ts +4 -4
- package/pluggableElementTypes/AdapterType.js +0 -1
- package/pluggableElementTypes/AddTrackWorkflowType.d.ts +3 -3
- package/pluggableElementTypes/ConnectionType.d.ts +0 -1
- package/pluggableElementTypes/ConnectionType.js +0 -1
- package/pluggableElementTypes/DisplayType.d.ts +9 -0
- package/pluggableElementTypes/DisplayType.js +1 -0
- package/pluggableElementTypes/PluggableElementBase.d.ts +3 -0
- package/pluggableElementTypes/PluggableElementBase.js +4 -0
- package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -0
- package/pluggableElementTypes/TrackType.d.ts +2 -1
- package/pluggableElementTypes/ViewType.d.ts +4 -3
- package/pluggableElementTypes/WidgetType.d.ts +10 -9
- package/pluggableElementTypes/models/BaseDisplayModel.js +1 -0
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +19 -8
- package/pluggableElementTypes/models/BaseTrackModel.js +32 -26
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +0 -3
- package/pluggableElementTypes/renderers/BoxRendererType.js +1 -14
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +9 -0
- package/pluggableElementTypes/renderers/CircularChordRendererType.js +23 -0
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +4 -1
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +4 -4
- package/pluggableElementTypes/renderers/FeatureRendererType.js +11 -13
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +8 -0
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +60 -0
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -2
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -6
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +5 -5
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +14 -13
- package/rpc/BaseRpcDriver.d.ts +1 -1
- package/rpc/BaseRpcDriver.js +8 -18
- package/rpc/coreRpcMethods.d.ts +11 -99
- package/rpc/coreRpcMethods.js +17 -241
- package/rpc/methods/CoreEstimateRegionStats.d.ts +18 -0
- package/rpc/methods/CoreEstimateRegionStats.js +37 -0
- package/rpc/methods/CoreFreeResources.d.ts +12 -0
- package/rpc/methods/CoreFreeResources.js +35 -0
- package/rpc/methods/CoreGetFeatureDetails.d.ts +16 -0
- package/rpc/methods/CoreGetFeatureDetails.js +44 -0
- package/rpc/methods/CoreGetFeatures.d.ts +17 -0
- package/rpc/methods/CoreGetFeatures.js +44 -0
- package/rpc/methods/CoreGetFileInfo.d.ts +10 -0
- package/rpc/methods/CoreGetFileInfo.js +24 -0
- package/rpc/methods/CoreGetMetadata.d.ts +10 -0
- package/rpc/methods/CoreGetMetadata.js +24 -0
- package/rpc/methods/CoreGetRefNames.d.ts +10 -0
- package/rpc/methods/CoreGetRefNames.js +25 -0
- package/rpc/methods/CoreRender.d.ts +14 -0
- package/rpc/methods/CoreRender.js +57 -0
- package/rpc/methods/util.d.ts +14 -0
- package/rpc/methods/util.js +21 -0
- package/rpc/remoteAbortSignals.d.ts +3 -1
- package/rpc/remoteAbortSignals.js +3 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AboutDialog.d.ts +1 -1
- package/ui/AboutDialog.js +8 -18
- package/ui/App.js +9 -77
- package/ui/AppLogo.d.ts +8 -0
- package/ui/AppLogo.js +22 -0
- package/ui/AppToolbar.d.ts +19 -0
- package/ui/AppToolbar.js +56 -0
- package/ui/AssemblySelector.d.ts +5 -3
- package/ui/AssemblySelector.js +4 -4
- package/ui/Dialog.d.ts +7 -0
- package/ui/Dialog.js +35 -0
- package/ui/FactoryResetDialog.js +8 -13
- package/ui/PrerenderedCanvas.d.ts +3 -20
- package/ui/PrerenderedCanvas.js +1 -19
- package/ui/ReturnToImportFormDialog.js +2 -17
- package/ui/Snackbar.js +7 -53
- package/ui/ViewLauncher.d.ts +18 -0
- package/ui/ViewLauncher.js +50 -0
- package/ui/index.d.ts +9 -8
- package/ui/index.js +19 -17
- package/util/Base1DUtils.js +1 -1
- package/util/analytics.js +3 -0
- package/util/dedupe.d.ts +3 -0
- package/util/dedupe.js +18 -0
- package/util/formatFastaStrings.d.ts +1 -1
- package/util/formatFastaStrings.js +1 -1
- package/util/index.d.ts +1 -0
- package/util/index.js +1 -0
- package/util/offscreenCanvasUtils.js +1 -1
- package/util/stats.d.ts +7 -3
- package/util/stats.js +33 -24
- package/util/tracks.d.ts +1 -1
- package/util/tracks.js +1 -1
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const operators_1 = require("rxjs/operators");
|
|
7
|
+
const clone_1 = __importDefault(require("clone"));
|
|
7
8
|
const util_1 = require("../../util");
|
|
8
9
|
const simpleFeature_1 = __importDefault(require("../../util/simpleFeature"));
|
|
9
10
|
const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
|
|
@@ -11,10 +12,10 @@ const ServerSideRendererType_1 = __importDefault(require("./ServerSideRendererTy
|
|
|
11
12
|
const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
|
|
12
13
|
class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
13
14
|
/**
|
|
14
|
-
* replaces the `displayModel` param (which on the client is a MST model)
|
|
15
|
-
* a stub that only contains the `selectedFeature`, since this is the only
|
|
16
|
-
* part of the track model that most renderers read. also serializes the
|
|
17
|
-
*
|
|
15
|
+
* replaces the `displayModel` param (which on the client is a MST model)
|
|
16
|
+
* with a stub that only contains the `selectedFeature`, since this is the only
|
|
17
|
+
* part of the track model that most renderers read. also serializes the config
|
|
18
|
+
* and regions to JSON from MST objects.
|
|
18
19
|
*
|
|
19
20
|
* @param args - the arguments passed to render
|
|
20
21
|
*/
|
|
@@ -26,7 +27,7 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
26
27
|
id: displayModel.id,
|
|
27
28
|
selectedFeatureId: displayModel.selectedFeatureId,
|
|
28
29
|
},
|
|
29
|
-
regions:
|
|
30
|
+
regions: (0, clone_1.default)(regions),
|
|
30
31
|
};
|
|
31
32
|
return super.serializeArgsInClient(serializedArgs);
|
|
32
33
|
}
|
|
@@ -37,11 +38,7 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
37
38
|
* @param args - the arguments passed to render
|
|
38
39
|
*/
|
|
39
40
|
deserializeResultsInClient(result, args) {
|
|
40
|
-
const deserializedFeatures = new Map();
|
|
41
|
-
result.features.forEach(j => {
|
|
42
|
-
const f = simpleFeature_1.default.fromJSON(j);
|
|
43
|
-
deserializedFeatures.set(String(f.id()), f);
|
|
44
|
-
});
|
|
41
|
+
const deserializedFeatures = new Map(result.features.map(f => simpleFeature_1.default.fromJSON(f)).map(f => [f.id(), f]));
|
|
45
42
|
const deserialized = super.deserializeResultsInClient({
|
|
46
43
|
...result,
|
|
47
44
|
features: deserializedFeatures,
|
|
@@ -83,8 +80,9 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
83
80
|
* @returns Map of features as `{ id => feature, ... }`
|
|
84
81
|
*/
|
|
85
82
|
async getFeatures(renderArgs) {
|
|
83
|
+
const pm = this.pluginManager;
|
|
86
84
|
const { signal, regions, sessionId, adapterConfig } = renderArgs;
|
|
87
|
-
const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(
|
|
85
|
+
const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
|
|
88
86
|
if (!(0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) {
|
|
89
87
|
throw new Error('Adapter does not support retrieving features');
|
|
90
88
|
}
|
|
@@ -92,9 +90,9 @@ class FeatureRendererType extends ServerSideRendererType_1.default {
|
|
|
92
90
|
if (!regions || regions.length === 0) {
|
|
93
91
|
return features;
|
|
94
92
|
}
|
|
93
|
+
// make sure the requested region's start and end are integers, if
|
|
94
|
+
// there is a region specification.
|
|
95
95
|
const requestRegions = regions.map((r) => {
|
|
96
|
-
// make sure the requested region's start and end are integers, if
|
|
97
|
-
// there is a region specification.
|
|
98
96
|
const requestRegion = { ...r };
|
|
99
97
|
if (requestRegion.start) {
|
|
100
98
|
requestRegion.start = Math.floor(requestRegion.start);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AnyReactComponentType, Feature } from '../../util';
|
|
3
|
+
declare const _default: (props: {
|
|
4
|
+
html: string;
|
|
5
|
+
features: Map<string, Feature>;
|
|
6
|
+
RenderingComponent: AnyReactComponentType;
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const react_1 = __importStar(require("react"));
|
|
27
|
+
const mobx_react_1 = require("mobx-react");
|
|
28
|
+
const react_dom_1 = require("react-dom");
|
|
29
|
+
const util_1 = require("../../util");
|
|
30
|
+
exports.default = (0, mobx_react_1.observer)(function (props) {
|
|
31
|
+
const { html, RenderingComponent } = props;
|
|
32
|
+
const ref = (0, react_1.useRef)(null);
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
const domNode = ref.current;
|
|
35
|
+
function doHydrate() {
|
|
36
|
+
if (domNode && html) {
|
|
37
|
+
if (domNode.innerHTML) {
|
|
38
|
+
(0, react_dom_1.unmountComponentAtNode)(domNode);
|
|
39
|
+
}
|
|
40
|
+
// setting outline:none fixes react "focusable" element issue. see
|
|
41
|
+
// https://github.com/GMOD/jbrowse-components/issues/2160
|
|
42
|
+
domNode.style.outline = 'none';
|
|
43
|
+
domNode.innerHTML = html;
|
|
44
|
+
// use requestIdleCallback to defer main-thread rendering
|
|
45
|
+
// and hydration for when we have some free time. helps
|
|
46
|
+
// keep the framerate up.
|
|
47
|
+
(0, util_1.rIC)(() => {
|
|
48
|
+
(0, react_dom_1.hydrate)(react_1.default.createElement(RenderingComponent, { ...props }), domNode);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
doHydrate();
|
|
53
|
+
return () => {
|
|
54
|
+
if (domNode) {
|
|
55
|
+
(0, react_dom_1.unmountComponentAtNode)(domNode);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}, [html, RenderingComponent, props]);
|
|
59
|
+
return react_1.default.createElement("g", { ref: ref });
|
|
60
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ResultsSerialized, RenderArgs } from './ServerSideRendererType';
|
|
3
|
-
interface
|
|
3
|
+
interface Props extends ResultsSerialized, RenderArgs {
|
|
4
4
|
RenderingComponent: React.ComponentType<any>;
|
|
5
5
|
}
|
|
6
|
-
export default function
|
|
6
|
+
export default function ({ theme, html, RenderingComponent, ...rest }: Props): JSX.Element;
|
|
7
7
|
export {};
|
|
@@ -26,14 +26,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
const react_1 = __importStar(require("react"));
|
|
27
27
|
const styles_1 = require("@mui/material/styles");
|
|
28
28
|
const react_dom_1 = require("react-dom");
|
|
29
|
+
// locals
|
|
29
30
|
const ui_1 = require("../../ui");
|
|
30
31
|
const util_1 = require("../../util");
|
|
31
|
-
function
|
|
32
|
-
const
|
|
33
|
-
const { theme, html, RenderingComponent, ...rest } = props;
|
|
32
|
+
function default_1({ theme, html, RenderingComponent, ...rest }) {
|
|
33
|
+
const ref = (0, react_1.useRef)(null);
|
|
34
34
|
const jbrowseTheme = (0, ui_1.createJBrowseTheme)(theme);
|
|
35
35
|
(0, react_1.useEffect)(() => {
|
|
36
|
-
const domNode =
|
|
36
|
+
const domNode = ref.current;
|
|
37
37
|
function doHydrate() {
|
|
38
38
|
if (domNode) {
|
|
39
39
|
if (domNode) {
|
|
@@ -60,6 +60,6 @@ function ServerSideRenderedContent(props) {
|
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
62
|
}, [html, jbrowseTheme, rest, RenderingComponent]);
|
|
63
|
-
return
|
|
63
|
+
return react_1.default.createElement("div", { ref: ref });
|
|
64
64
|
}
|
|
65
|
-
exports.default =
|
|
65
|
+
exports.default = default_1;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ThemeOptions } from '@mui/material';
|
|
2
2
|
import { SnapshotOrInstance, SnapshotIn } from 'mobx-state-tree';
|
|
3
|
-
import RendererType, { RenderProps, RenderResults } from './RendererType';
|
|
4
3
|
import SerializableFilterChain, { SerializedFilterChain } from './util/serializableFilterChain';
|
|
5
4
|
import { AnyConfigurationModel } from '../../configuration/configurationSchema';
|
|
6
5
|
import RpcManager from '../../rpc/RpcManager';
|
|
6
|
+
import RendererType, { RenderProps, RenderResults } from './RendererType';
|
|
7
7
|
interface BaseRenderArgs extends RenderProps {
|
|
8
8
|
sessionId: string;
|
|
9
9
|
signal?: AbortSignal;
|
|
10
|
-
theme:
|
|
10
|
+
theme: ThemeOptions;
|
|
11
11
|
exportSVG: {
|
|
12
12
|
rasterizeLayers?: boolean;
|
|
13
13
|
};
|
|
@@ -53,7 +53,7 @@ export default class ServerSideRenderer extends RendererType {
|
|
|
53
53
|
* @param results - the results of the render
|
|
54
54
|
* @param args - the arguments passed to render
|
|
55
55
|
*/
|
|
56
|
-
deserializeResultsInClient(
|
|
56
|
+
deserializeResultsInClient(res: ResultsSerialized, args: RenderArgs): ResultsDeserialized;
|
|
57
57
|
/**
|
|
58
58
|
* modifies the passed arguments object to inflate arguments as necessary.
|
|
59
59
|
* called in the worker process.
|
|
@@ -74,7 +74,7 @@ export default class ServerSideRenderer extends RendererType {
|
|
|
74
74
|
* Render method called on the client. Serializes args, then calls
|
|
75
75
|
* "CoreRender" with the RPC manager.
|
|
76
76
|
*
|
|
77
|
-
* @param rpcManager - RPC
|
|
77
|
+
* @param rpcManager - RPC manager
|
|
78
78
|
* @param args - render args
|
|
79
79
|
*/
|
|
80
80
|
renderInClient(rpcManager: RpcManager, args: RenderArgs): Promise<ResultsSerialized>;
|
|
@@ -31,13 +31,14 @@ const styles_1 = require("@mui/material/styles");
|
|
|
31
31
|
const canvas_sequencer_1 = require("canvas-sequencer");
|
|
32
32
|
const server_1 = require("react-dom/server");
|
|
33
33
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
34
|
+
// locals
|
|
34
35
|
const util_1 = require("../../util");
|
|
35
|
-
const RendererType_1 = __importDefault(require("./RendererType"));
|
|
36
36
|
const serializableFilterChain_1 = __importDefault(require("./util/serializableFilterChain"));
|
|
37
37
|
const ui_1 = require("../../ui");
|
|
38
|
+
const RendererType_1 = __importDefault(require("./RendererType"));
|
|
38
39
|
const ServerSideRenderedContent_1 = __importDefault(require("./ServerSideRenderedContent"));
|
|
39
|
-
function isSvgExport(
|
|
40
|
-
return 'canvasRecordedData' in
|
|
40
|
+
function isSvgExport(e) {
|
|
41
|
+
return 'canvasRecordedData' in e;
|
|
41
42
|
}
|
|
42
43
|
class ServerSideRenderer extends RendererType_1.default {
|
|
43
44
|
/**
|
|
@@ -48,12 +49,13 @@ class ServerSideRenderer extends RendererType_1.default {
|
|
|
48
49
|
* @returns the same object
|
|
49
50
|
*/
|
|
50
51
|
serializeArgsInClient(args) {
|
|
52
|
+
var _a;
|
|
51
53
|
return {
|
|
52
54
|
...args,
|
|
53
55
|
config: (0, mobx_state_tree_1.isStateTreeNode)(args.config)
|
|
54
56
|
? (0, mobx_state_tree_1.getSnapshot)(args.config)
|
|
55
57
|
: args.config,
|
|
56
|
-
filters: args.filters
|
|
58
|
+
filters: (_a = args.filters) === null || _a === void 0 ? void 0 : _a.toJSON().filters,
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
/**
|
|
@@ -64,24 +66,23 @@ class ServerSideRenderer extends RendererType_1.default {
|
|
|
64
66
|
* @param results - the results of the render
|
|
65
67
|
* @param args - the arguments passed to render
|
|
66
68
|
*/
|
|
67
|
-
deserializeResultsInClient(
|
|
68
|
-
const { html, ...rest } = results;
|
|
69
|
+
deserializeResultsInClient(res, args) {
|
|
69
70
|
// if we are rendering svg, we skip hydration
|
|
70
71
|
if (args.exportSVG) {
|
|
71
|
-
// only return the
|
|
72
|
+
// only return the res if the renderer explicitly has
|
|
72
73
|
// this.supportsSVG support to avoid garbage being rendered in SVG
|
|
73
74
|
// document
|
|
74
75
|
return {
|
|
75
|
-
...
|
|
76
|
+
...res,
|
|
76
77
|
html: this.supportsSVG
|
|
77
|
-
?
|
|
78
|
+
? res.html
|
|
78
79
|
: '<text y="12" fill="black">SVG export not supported for this track</text>',
|
|
79
80
|
};
|
|
80
81
|
}
|
|
81
|
-
// hydrate
|
|
82
|
+
// hydrate res using ServerSideRenderedContent
|
|
82
83
|
return {
|
|
83
|
-
...
|
|
84
|
-
reactElement: (react_1.default.createElement(ServerSideRenderedContent_1.default, { ...args, ...
|
|
84
|
+
...res,
|
|
85
|
+
reactElement: (react_1.default.createElement(ServerSideRenderedContent_1.default, { ...args, ...res, RenderingComponent: this.ReactComponent })),
|
|
85
86
|
};
|
|
86
87
|
}
|
|
87
88
|
/**
|
|
@@ -117,7 +118,7 @@ class ServerSideRenderer extends RendererType_1.default {
|
|
|
117
118
|
* Render method called on the client. Serializes args, then calls
|
|
118
119
|
* "CoreRender" with the RPC manager.
|
|
119
120
|
*
|
|
120
|
-
* @param rpcManager - RPC
|
|
121
|
+
* @param rpcManager - RPC manager
|
|
121
122
|
* @param args - render args
|
|
122
123
|
*/
|
|
123
124
|
async renderInClient(rpcManager, args) {
|
package/rpc/BaseRpcDriver.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface WorkerHandle {
|
|
|
15
15
|
export interface RpcDriverConstructorArgs {
|
|
16
16
|
config: AnyConfigurationModel;
|
|
17
17
|
}
|
|
18
|
-
export declare function watchWorker(worker: WorkerHandle, pingTime: number, rpcDriverClassName: string): Promise<
|
|
18
|
+
export declare function watchWorker(worker: WorkerHandle, pingTime: number, rpcDriverClassName: string): Promise<void>;
|
|
19
19
|
declare class LazyWorker {
|
|
20
20
|
driver: BaseRpcDriver;
|
|
21
21
|
workerP?: Promise<WorkerHandle> | undefined;
|
package/rpc/BaseRpcDriver.js
CHANGED
|
@@ -18,23 +18,13 @@ function isClonable(thing) {
|
|
|
18
18
|
// the worker times out
|
|
19
19
|
async function watchWorker(worker, pingTime, rpcDriverClassName) {
|
|
20
20
|
// after first ping succeeds, apply wait for timeout
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
delay();
|
|
30
|
-
}
|
|
31
|
-
catch (e) {
|
|
32
|
-
reject(e);
|
|
33
|
-
}
|
|
34
|
-
}, pingTime);
|
|
35
|
-
}
|
|
36
|
-
delay();
|
|
37
|
-
});
|
|
21
|
+
while (true) {
|
|
22
|
+
await worker.call('ping', [], {
|
|
23
|
+
timeout: pingTime * 2,
|
|
24
|
+
rpcDriverClassName,
|
|
25
|
+
});
|
|
26
|
+
await new Promise(resolve => setTimeout(resolve, pingTime));
|
|
27
|
+
}
|
|
38
28
|
}
|
|
39
29
|
exports.watchWorker = watchWorker;
|
|
40
30
|
function detectHardwareConcurrency() {
|
|
@@ -110,7 +100,7 @@ class BaseRpcDriver {
|
|
|
110
100
|
}
|
|
111
101
|
async remoteAbort(sessionId, functionName, signalId) {
|
|
112
102
|
const worker = await this.getWorker(sessionId);
|
|
113
|
-
worker.call(functionName, { signalId }, { timeout: 1000000, rpcDriverClassName: this.name });
|
|
103
|
+
await worker.call(functionName, { signalId }, { timeout: 1000000, rpcDriverClassName: this.name });
|
|
114
104
|
}
|
|
115
105
|
createWorkerPool() {
|
|
116
106
|
const hardwareConcurrency = detectHardwareConcurrency();
|
package/rpc/coreRpcMethods.d.ts
CHANGED
|
@@ -1,99 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}, rpcDriver: string): Promise<string[]>;
|
|
13
|
-
}
|
|
14
|
-
export declare class CoreGetFileInfo extends RpcMethodType {
|
|
15
|
-
name: string;
|
|
16
|
-
execute(args: {
|
|
17
|
-
sessionId: string;
|
|
18
|
-
signal: RemoteAbortSignal;
|
|
19
|
-
adapterConfig: {};
|
|
20
|
-
}, rpcDriver: string): Promise<unknown>;
|
|
21
|
-
}
|
|
22
|
-
export declare class CoreGetMetadata extends RpcMethodType {
|
|
23
|
-
name: string;
|
|
24
|
-
execute(args: {
|
|
25
|
-
sessionId: string;
|
|
26
|
-
signal: RemoteAbortSignal;
|
|
27
|
-
adapterConfig: {};
|
|
28
|
-
}, rpcDriver: string): Promise<unknown>;
|
|
29
|
-
}
|
|
30
|
-
export declare class CoreGetFeatures extends RpcMethodType {
|
|
31
|
-
name: string;
|
|
32
|
-
deserializeReturn(feats: SimpleFeatureSerialized[], args: unknown, rpcDriver: string): Promise<SimpleFeature[]>;
|
|
33
|
-
serializeArguments(args: RenderArgs, rpcDriver: string): Promise<RenderArgs>;
|
|
34
|
-
execute(args: {
|
|
35
|
-
sessionId: string;
|
|
36
|
-
regions: Region[];
|
|
37
|
-
adapterConfig: {};
|
|
38
|
-
signal?: RemoteAbortSignal;
|
|
39
|
-
opts?: any;
|
|
40
|
-
}, rpcDriver: string): Promise<SimpleFeatureSerialized[]>;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* free up any resources (e.g. cached adapter objects)
|
|
44
|
-
* that are only associated with the given track ID.
|
|
45
|
-
*
|
|
46
|
-
* returns number of objects deleted
|
|
47
|
-
*/
|
|
48
|
-
export declare class CoreFreeResources extends RpcMethodType {
|
|
49
|
-
name: string;
|
|
50
|
-
execute(specification: {}): Promise<number>;
|
|
51
|
-
serializeArguments(args: {}, _rpcDriver: string): Promise<{}>;
|
|
52
|
-
}
|
|
53
|
-
export interface RenderArgs extends ServerSideRenderArgs {
|
|
54
|
-
adapterConfig: {};
|
|
55
|
-
rendererType: string;
|
|
56
|
-
}
|
|
57
|
-
export interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {
|
|
58
|
-
assemblyName: string;
|
|
59
|
-
regions: Region[];
|
|
60
|
-
adapterConfig: {};
|
|
61
|
-
rendererType: string;
|
|
62
|
-
}
|
|
63
|
-
export declare class CoreEstimateRegionStats extends RpcMethodType {
|
|
64
|
-
name: string;
|
|
65
|
-
serializeArguments(args: RenderArgs & {
|
|
66
|
-
signal?: AbortSignal;
|
|
67
|
-
statusCallback?: (arg: string) => void;
|
|
68
|
-
}, rpcDriver: string): Promise<{}>;
|
|
69
|
-
execute(args: {
|
|
70
|
-
adapterConfig: {};
|
|
71
|
-
regions: Region[];
|
|
72
|
-
signal?: RemoteAbortSignal;
|
|
73
|
-
headers?: Record<string, string>;
|
|
74
|
-
sessionId: string;
|
|
75
|
-
}, rpcDriver: string): Promise<import("../data_adapters/BaseAdapter").Stats>;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* fetches features from an adapter and call a renderer with them
|
|
79
|
-
*/
|
|
80
|
-
export declare class CoreRender extends RpcMethodType {
|
|
81
|
-
name: string;
|
|
82
|
-
serializeArguments(args: RenderArgs, rpcDriver: string): Promise<ServerSideRenderArgsSerialized | RenderArgs>;
|
|
83
|
-
execute(args: RenderArgsSerialized & {
|
|
84
|
-
signal?: RemoteAbortSignal;
|
|
85
|
-
}, rpcDriver: string): Promise<ResultsSerialized | RenderResults>;
|
|
86
|
-
deserializeReturn(serializedReturn: RenderResults | ResultsSerialized, args: RenderArgs, rpcDriver: string): Promise<unknown>;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* fetches features from an adapter and call a renderer with them
|
|
90
|
-
*/
|
|
91
|
-
export declare class CoreGetFeatureDetails extends RpcMethodType {
|
|
92
|
-
name: string;
|
|
93
|
-
serializeArguments(args: RenderArgs, rpcDriver: string): Promise<ServerSideRenderArgsSerialized | RenderArgs>;
|
|
94
|
-
execute(args: RenderArgsSerialized & {
|
|
95
|
-
signal?: RemoteAbortSignal;
|
|
96
|
-
}, rpcDriver: string): Promise<{
|
|
97
|
-
feature: any;
|
|
98
|
-
}>;
|
|
99
|
-
}
|
|
1
|
+
import CoreGetRefNames from './methods/CoreGetRefNames';
|
|
2
|
+
import CoreGetMetadata from './methods/CoreGetMetadata';
|
|
3
|
+
import CoreGetFeatureDetails from './methods/CoreGetFeatureDetails';
|
|
4
|
+
import CoreGetFeatures from './methods/CoreGetFeatures';
|
|
5
|
+
import CoreGetFileInfo from './methods/CoreGetFileInfo';
|
|
6
|
+
import CoreFreeResources from './methods/CoreFreeResources';
|
|
7
|
+
import CoreRender from './methods/CoreRender';
|
|
8
|
+
import CoreEstimateRegionStats from './methods/CoreEstimateRegionStats';
|
|
9
|
+
import { RenderArgs } from './methods/util';
|
|
10
|
+
export type { RenderArgs };
|
|
11
|
+
export { CoreGetRefNames, CoreGetFileInfo, CoreGetMetadata, CoreGetFeatures, CoreRender, CoreGetFeatureDetails, CoreFreeResources, CoreEstimateRegionStats, };
|