@jbrowse/core 2.2.2 → 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.
Files changed (80) hide show
  1. package/PluginManager.d.ts +4 -0
  2. package/PluginManager.js +12 -0
  3. package/README.md +6 -2
  4. package/package.json +3 -3
  5. package/pluggableElementTypes/AdapterType.d.ts +4 -4
  6. package/pluggableElementTypes/AdapterType.js +0 -1
  7. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +3 -3
  8. package/pluggableElementTypes/ConnectionType.d.ts +0 -1
  9. package/pluggableElementTypes/ConnectionType.js +0 -1
  10. package/pluggableElementTypes/DisplayType.d.ts +9 -0
  11. package/pluggableElementTypes/DisplayType.js +1 -0
  12. package/pluggableElementTypes/PluggableElementBase.d.ts +3 -0
  13. package/pluggableElementTypes/PluggableElementBase.js +4 -0
  14. package/pluggableElementTypes/TextSearchAdapterType.d.ts +1 -0
  15. package/pluggableElementTypes/TrackType.d.ts +2 -1
  16. package/pluggableElementTypes/ViewType.d.ts +4 -3
  17. package/pluggableElementTypes/WidgetType.d.ts +10 -9
  18. package/pluggableElementTypes/models/BaseDisplayModel.js +1 -0
  19. package/pluggableElementTypes/models/BaseTrackModel.d.ts +19 -8
  20. package/pluggableElementTypes/models/BaseTrackModel.js +32 -26
  21. package/pluggableElementTypes/renderers/BoxRendererType.js +1 -14
  22. package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +9 -0
  23. package/pluggableElementTypes/renderers/CircularChordRendererType.js +23 -0
  24. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +4 -1
  25. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +4 -4
  26. package/pluggableElementTypes/renderers/FeatureRendererType.js +11 -13
  27. package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
  28. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +8 -0
  29. package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +60 -0
  30. package/pluggableElementTypes/renderers/ServerSideRenderedContent.d.ts +2 -2
  31. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +6 -6
  32. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +4 -4
  33. package/pluggableElementTypes/renderers/ServerSideRendererType.js +13 -12
  34. package/rpc/BaseRpcDriver.d.ts +1 -1
  35. package/rpc/BaseRpcDriver.js +7 -17
  36. package/rpc/coreRpcMethods.d.ts +11 -99
  37. package/rpc/coreRpcMethods.js +17 -241
  38. package/rpc/methods/CoreEstimateRegionStats.d.ts +18 -0
  39. package/rpc/methods/CoreEstimateRegionStats.js +37 -0
  40. package/rpc/methods/CoreFreeResources.d.ts +12 -0
  41. package/rpc/methods/CoreFreeResources.js +35 -0
  42. package/rpc/methods/CoreGetFeatureDetails.d.ts +16 -0
  43. package/rpc/methods/CoreGetFeatureDetails.js +44 -0
  44. package/rpc/methods/CoreGetFeatures.d.ts +17 -0
  45. package/rpc/methods/CoreGetFeatures.js +44 -0
  46. package/rpc/methods/CoreGetFileInfo.d.ts +10 -0
  47. package/rpc/methods/CoreGetFileInfo.js +24 -0
  48. package/rpc/methods/CoreGetMetadata.d.ts +10 -0
  49. package/rpc/methods/CoreGetMetadata.js +24 -0
  50. package/rpc/methods/CoreGetRefNames.d.ts +10 -0
  51. package/rpc/methods/CoreGetRefNames.js +25 -0
  52. package/rpc/methods/CoreRender.d.ts +14 -0
  53. package/rpc/methods/CoreRender.js +57 -0
  54. package/rpc/methods/util.d.ts +14 -0
  55. package/rpc/methods/util.js +21 -0
  56. package/rpc/remoteAbortSignals.d.ts +3 -1
  57. package/rpc/remoteAbortSignals.js +3 -1
  58. package/tsconfig.build.tsbuildinfo +1 -1
  59. package/ui/App.js +9 -77
  60. package/ui/AppLogo.d.ts +8 -0
  61. package/ui/AppLogo.js +22 -0
  62. package/ui/AppToolbar.d.ts +19 -0
  63. package/ui/AppToolbar.js +56 -0
  64. package/ui/AssemblySelector.d.ts +5 -3
  65. package/ui/AssemblySelector.js +4 -4
  66. package/ui/PrerenderedCanvas.d.ts +3 -20
  67. package/ui/PrerenderedCanvas.js +1 -19
  68. package/ui/Snackbar.js +7 -53
  69. package/ui/ViewLauncher.d.ts +18 -0
  70. package/ui/ViewLauncher.js +50 -0
  71. package/ui/index.d.ts +9 -9
  72. package/ui/index.js +19 -19
  73. package/util/Base1DUtils.js +1 -1
  74. package/util/dedupe.d.ts +3 -0
  75. package/util/dedupe.js +18 -0
  76. package/util/index.d.ts +1 -1
  77. package/util/index.js +2 -5
  78. package/util/offscreenCanvasUtils.js +1 -1
  79. package/util/stats.d.ts +7 -3
  80. package/util/stats.js +33 -24
@@ -0,0 +1,12 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ /**
3
+ * free up any resources (e.g. cached adapter objects)
4
+ * that are only associated with the given track ID.
5
+ *
6
+ * returns number of objects deleted
7
+ */
8
+ export default class CoreFreeResources extends RpcMethodType {
9
+ name: string;
10
+ execute(specification: {}): Promise<number>;
11
+ serializeArguments(args: {}, _rpcDriver: string): Promise<{}>;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
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
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
7
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
8
+ /**
9
+ * free up any resources (e.g. cached adapter objects)
10
+ * that are only associated with the given track ID.
11
+ *
12
+ * returns number of objects deleted
13
+ */
14
+ class CoreFreeResources extends RpcMethodType_1.default {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.name = 'CoreFreeResources';
18
+ }
19
+ async execute(specification) {
20
+ let deleteCount = 0;
21
+ deleteCount += (0, dataAdapterCache_1.freeAdapterResources)(specification);
22
+ // pass the freeResources hint along to all the renderers as well
23
+ this.pluginManager.getRendererTypes().forEach(renderer => {
24
+ const count = renderer.freeResources( /* specification */);
25
+ if (count) {
26
+ deleteCount += count;
27
+ }
28
+ });
29
+ return deleteCount;
30
+ }
31
+ async serializeArguments(args, _rpcDriver) {
32
+ return args;
33
+ }
34
+ }
35
+ exports.default = CoreFreeResources;
@@ -0,0 +1,16 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RenderArgs } from './util';
3
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
4
+ import { RenderArgsSerialized } from './util';
5
+ /**
6
+ * fetches features from an adapter and call a renderer with them
7
+ */
8
+ export default class CoreGetFeatureDetails extends RpcMethodType {
9
+ name: string;
10
+ serializeArguments(args: RenderArgs, rpcDriver: string): Promise<import("../../pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized | RenderArgs>;
11
+ execute(args: RenderArgsSerialized & {
12
+ signal?: RemoteAbortSignal;
13
+ }, rpcDriver: string): Promise<{
14
+ feature: any;
15
+ }>;
16
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
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
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const util_1 = require("../../util");
9
+ const util_2 = require("./util");
10
+ /**
11
+ * fetches features from an adapter and call a renderer with them
12
+ */
13
+ class CoreGetFeatureDetails extends RpcMethodType_1.default {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.name = 'CoreGetFeatureDetails';
17
+ }
18
+ async serializeArguments(args, rpcDriver) {
19
+ const { rootModel } = this.pluginManager;
20
+ const assemblyManager = rootModel.session.assemblyManager;
21
+ const renamedArgs = await (0, util_1.renameRegionsIfNeeded)(assemblyManager, args);
22
+ const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver));
23
+ if (rpcDriver === 'MainThreadRpcDriver') {
24
+ return superArgs;
25
+ }
26
+ const { rendererType } = args;
27
+ const RendererType = (0, util_2.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
28
+ return RendererType.serializeArgsInClient(superArgs);
29
+ }
30
+ async execute(args, rpcDriver) {
31
+ let deserializedArgs = args;
32
+ if (rpcDriver !== 'MainThreadRpcDriver') {
33
+ deserializedArgs = await this.deserializeArguments(args, rpcDriver);
34
+ }
35
+ const { rendererType, featureId } = deserializedArgs;
36
+ const RendererType = (0, util_2.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
37
+ // @ts-ignore
38
+ const sess = RendererType.sessions[(0, util_1.getLayoutId)(args)];
39
+ const { layout } = sess.cachedLayout;
40
+ const xref = layout.getDataByID(featureId);
41
+ return { feature: xref.toJSON() };
42
+ }
43
+ }
44
+ exports.default = CoreGetFeatureDetails;
@@ -0,0 +1,17 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RenderArgs } from './util';
3
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
4
+ import { Region } from '../../util';
5
+ import SimpleFeature, { SimpleFeatureSerialized } from '../../util/simpleFeature';
6
+ export default class CoreGetFeatures extends RpcMethodType {
7
+ name: string;
8
+ deserializeReturn(feats: SimpleFeatureSerialized[], args: unknown, rpcDriver: string): Promise<SimpleFeature[]>;
9
+ serializeArguments(args: RenderArgs, rpcDriver: string): Promise<RenderArgs>;
10
+ execute(args: {
11
+ sessionId: string;
12
+ regions: Region[];
13
+ adapterConfig: {};
14
+ signal?: RemoteAbortSignal;
15
+ opts?: any;
16
+ }, rpcDriver: string): Promise<SimpleFeatureSerialized[]>;
17
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
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
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
7
+ const operators_1 = require("rxjs/operators");
8
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
9
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
10
+ const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
11
+ const util_1 = require("../../util");
12
+ const simpleFeature_1 = __importDefault(require("../../util/simpleFeature"));
13
+ class CoreGetFeatures extends RpcMethodType_1.default {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.name = 'CoreGetFeatures';
17
+ }
18
+ async deserializeReturn(feats, args, rpcDriver) {
19
+ const superDeserialized = (await super.deserializeReturn(feats, args, rpcDriver));
20
+ return superDeserialized.map(feat => new simpleFeature_1.default(feat));
21
+ }
22
+ async serializeArguments(args, rpcDriver) {
23
+ const { rootModel } = this.pluginManager;
24
+ const assemblyManager = rootModel.session.assemblyManager;
25
+ const renamedArgs = await (0, util_1.renameRegionsIfNeeded)(assemblyManager, args);
26
+ return super.serializeArguments(renamedArgs, rpcDriver);
27
+ }
28
+ async execute(args, rpcDriver) {
29
+ const pm = this.pluginManager;
30
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
31
+ const { signal, sessionId, adapterConfig, regions, opts } = deserializedArgs;
32
+ const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
33
+ if (!(0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) {
34
+ throw new Error('Adapter does not support retrieving features');
35
+ }
36
+ const ret = dataAdapter.getFeaturesInMultipleRegions(regions, {
37
+ ...opts,
38
+ signal,
39
+ });
40
+ const r = await ret.pipe((0, operators_1.toArray)()).toPromise();
41
+ return r.map(f => f.toJSON());
42
+ }
43
+ }
44
+ exports.default = CoreGetFeatures;
@@ -0,0 +1,10 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
3
+ export default class CoreGetFileInfo extends RpcMethodType {
4
+ name: string;
5
+ execute(args: {
6
+ sessionId: string;
7
+ signal: RemoteAbortSignal;
8
+ adapterConfig: {};
9
+ }, rpcDriver: string): Promise<unknown>;
10
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
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
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
9
+ class CoreGetFileInfo extends RpcMethodType_1.default {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'CoreGetInfo';
13
+ }
14
+ async execute(args, rpcDriver) {
15
+ const pm = this.pluginManager;
16
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
17
+ const { sessionId, adapterConfig } = deserializedArgs;
18
+ const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
19
+ return (0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)
20
+ ? dataAdapter.getHeader(deserializedArgs)
21
+ : null;
22
+ }
23
+ }
24
+ exports.default = CoreGetFileInfo;
@@ -0,0 +1,10 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
3
+ export default class CoreGetMetadata extends RpcMethodType {
4
+ name: string;
5
+ execute(args: {
6
+ sessionId: string;
7
+ signal: RemoteAbortSignal;
8
+ adapterConfig: {};
9
+ }, rpcDriver: string): Promise<unknown>;
10
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
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
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
9
+ class CoreGetMetadata extends RpcMethodType_1.default {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'CoreGetMetadata';
13
+ }
14
+ async execute(args, rpcDriver) {
15
+ const pm = this.pluginManager;
16
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
17
+ const { sessionId, adapterConfig } = deserializedArgs;
18
+ const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
19
+ return (0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)
20
+ ? dataAdapter.getMetadata(deserializedArgs)
21
+ : null;
22
+ }
23
+ }
24
+ exports.default = CoreGetMetadata;
@@ -0,0 +1,10 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
3
+ export default class CoreGetRefNames extends RpcMethodType {
4
+ name: string;
5
+ execute(args: {
6
+ sessionId: string;
7
+ signal: RemoteAbortSignal;
8
+ adapterConfig: {};
9
+ }, rpcDriver: string): Promise<string[]>;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
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
+ const dataAdapterCache_1 = require("../../data_adapters/dataAdapterCache");
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const BaseAdapter_1 = require("../../data_adapters/BaseAdapter");
9
+ class CoreGetRefNames extends RpcMethodType_1.default {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'CoreGetRefNames';
13
+ }
14
+ async execute(args, rpcDriver) {
15
+ const pm = this.pluginManager;
16
+ const deserializedArgs = await this.deserializeArguments(args, rpcDriver);
17
+ const { sessionId, adapterConfig } = deserializedArgs;
18
+ const { dataAdapter } = await (0, dataAdapterCache_1.getAdapter)(pm, sessionId, adapterConfig);
19
+ if ((0, BaseAdapter_1.isFeatureAdapter)(dataAdapter)) {
20
+ return dataAdapter.getRefNames(deserializedArgs);
21
+ }
22
+ return [];
23
+ }
24
+ }
25
+ exports.default = CoreGetRefNames;
@@ -0,0 +1,14 @@
1
+ import RpcMethodType from '../../pluggableElementTypes/RpcMethodType';
2
+ import { RenderResults, ResultsSerialized, RenderArgs, RenderArgsSerialized } from './util';
3
+ import { RemoteAbortSignal } from '../remoteAbortSignals';
4
+ /**
5
+ * fetches features from an adapter and call a renderer with them
6
+ */
7
+ export default class CoreRender extends RpcMethodType {
8
+ name: string;
9
+ serializeArguments(args: RenderArgs, rpcDriver: string): Promise<import("../../pluggableElementTypes/renderers/ServerSideRendererType").RenderArgsSerialized | RenderArgs>;
10
+ execute(args: RenderArgsSerialized & {
11
+ signal?: RemoteAbortSignal;
12
+ }, rpcDriver: string): Promise<ResultsSerialized | RenderResults>;
13
+ deserializeReturn(serializedReturn: RenderResults | ResultsSerialized, args: RenderArgs, rpcDriver: string): Promise<unknown>;
14
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const RpcMethodType_1 = __importDefault(require("../../pluggableElementTypes/RpcMethodType"));
8
+ const util_1 = require("./util");
9
+ const util_2 = require("../../util");
10
+ /**
11
+ * fetches features from an adapter and call a renderer with them
12
+ */
13
+ class CoreRender extends RpcMethodType_1.default {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.name = 'CoreRender';
17
+ }
18
+ async serializeArguments(args, rpcDriver) {
19
+ const { rootModel } = this.pluginManager;
20
+ const assemblyManager = rootModel.session.assemblyManager;
21
+ const renamedArgs = await (0, util_2.renameRegionsIfNeeded)(assemblyManager, args);
22
+ const superArgs = (await super.serializeArguments(renamedArgs, rpcDriver));
23
+ if (rpcDriver === 'MainThreadRpcDriver') {
24
+ return superArgs;
25
+ }
26
+ const { rendererType } = args;
27
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
28
+ return RendererType.serializeArgsInClient(superArgs);
29
+ }
30
+ async execute(args, rpcDriver) {
31
+ let deserializedArgs = args;
32
+ if (rpcDriver !== 'MainThreadRpcDriver') {
33
+ deserializedArgs = await this.deserializeArguments(args, rpcDriver);
34
+ }
35
+ const { sessionId, rendererType, signal } = deserializedArgs;
36
+ if (!sessionId) {
37
+ throw new Error('must pass a unique session id');
38
+ }
39
+ (0, util_2.checkAbortSignal)(signal);
40
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
41
+ const result = rpcDriver === 'MainThreadRpcDriver'
42
+ ? await RendererType.render(deserializedArgs)
43
+ : await RendererType.renderInWorker(deserializedArgs);
44
+ (0, util_2.checkAbortSignal)(signal);
45
+ return result;
46
+ }
47
+ async deserializeReturn(serializedReturn, args, rpcDriver) {
48
+ const des = await super.deserializeReturn(serializedReturn, args, rpcDriver);
49
+ if (rpcDriver === 'MainThreadRpcDriver') {
50
+ return des;
51
+ }
52
+ const { rendererType } = args;
53
+ const RendererType = (0, util_1.validateRendererType)(rendererType, this.pluginManager.getRendererType(rendererType));
54
+ return RendererType.deserializeResultsInClient(des, args);
55
+ }
56
+ }
57
+ exports.default = CoreRender;
@@ -0,0 +1,14 @@
1
+ import ServerSideRendererType, { RenderArgs as ServerSideRenderArgs, RenderArgsSerialized as ServerSideRenderArgsSerialized, RenderResults, ResultsSerialized } from '../../pluggableElementTypes/renderers/ServerSideRendererType';
2
+ import { Region } from '../../util';
3
+ export interface RenderArgs extends ServerSideRenderArgs {
4
+ adapterConfig: {};
5
+ rendererType: string;
6
+ }
7
+ export interface RenderArgsSerialized extends ServerSideRenderArgsSerialized {
8
+ assemblyName: string;
9
+ regions: Region[];
10
+ adapterConfig: {};
11
+ rendererType: string;
12
+ }
13
+ export type { RenderResults, ResultsSerialized };
14
+ export declare function validateRendererType<T>(rendererType: string, RendererType: T): T & ServerSideRendererType;
@@ -0,0 +1,21 @@
1
+ "use strict";
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.validateRendererType = void 0;
7
+ const ServerSideRendererType_1 = __importDefault(require("../../pluggableElementTypes/renderers/ServerSideRendererType"));
8
+ function validateRendererType(rendererType, RendererType) {
9
+ if (!RendererType) {
10
+ throw new Error(`renderer "${rendererType}" not found`);
11
+ }
12
+ // @ts-ignore
13
+ if (!RendererType.ReactComponent) {
14
+ throw new Error(`renderer ${rendererType} has no ReactComponent, it may not be completely implemented yet`);
15
+ }
16
+ if (!(RendererType instanceof ServerSideRendererType_1.default)) {
17
+ throw new Error('CoreRender requires a renderer that is a subclass of ServerSideRendererType');
18
+ }
19
+ return RendererType;
20
+ }
21
+ exports.validateRendererType = validateRendererType;
@@ -2,7 +2,9 @@ export type RemoteAbortSignal = {
2
2
  abortSignalId: number;
3
3
  };
4
4
  /**
5
- * assign an ID to the given abort signal and return a plain object representation
5
+ * assign an ID to the given abort signal and return a plain object
6
+ * representation
7
+ *
6
8
  * @param signal - the signal to serialize
7
9
  * @param callfunc - function used to call
8
10
  * a remote method, will be called like callfunc('signalAbort', signalId)
@@ -5,7 +5,9 @@ exports.remoteAbortRpcHandler = exports.remoteAbort = exports.deserializeAbortSi
5
5
  let abortSignalCounter = 0;
6
6
  const abortSignalIds = new WeakMap(); // map of abortsignal => numerical ID
7
7
  /**
8
- * assign an ID to the given abort signal and return a plain object representation
8
+ * assign an ID to the given abort signal and return a plain object
9
+ * representation
10
+ *
9
11
  * @param signal - the signal to serialize
10
12
  * @param callfunc - function used to call
11
13
  * a remote method, will be called like callfunc('signalAbort', signalId)