Skip to content

Commit 05924d1

Browse files
committed
chore: types for context providers
1 parent 3f12b20 commit 05924d1

17 files changed

+289
-534
lines changed

dist/js/context/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { JSONSchemaFormDataProvider } from "./json_schema_provider";
2-
import { ApplicationContextMixin, JobContextMixin, MaterialContextMixin, MaterialsContextMixin, MaterialsSetContextMixin, MethodDataContextMixin, WorkflowContextMixin } from "./mixins";
2+
import { ApplicationContextMixin } from "./mixins";
33
import { JobContextPickKeysForMixin, WorkflowContextPickKeysForMixin } from "./pickers";
44
import { ContextProvider } from "./provider";
55
import { ContextProviderRegistryContainer, createAndPatchRegistry, extendAndPatchRegistry } from "./registry";
6-
export { ContextProvider, ContextProviderRegistryContainer, extendAndPatchRegistry, createAndPatchRegistry, JobContextPickKeysForMixin, JSONSchemaFormDataProvider, WorkflowContextPickKeysForMixin, ApplicationContextMixin, MaterialContextMixin, MaterialsContextMixin, MaterialsSetContextMixin, MethodDataContextMixin, JobContextMixin, WorkflowContextMixin, };
6+
export { ContextProvider, ContextProviderRegistryContainer, extendAndPatchRegistry, createAndPatchRegistry, JobContextPickKeysForMixin, JSONSchemaFormDataProvider, WorkflowContextPickKeysForMixin, ApplicationContextMixin, };

dist/js/context/index.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.WorkflowContextMixin = exports.JobContextMixin = exports.MethodDataContextMixin = exports.MaterialsSetContextMixin = exports.MaterialsContextMixin = exports.MaterialContextMixin = exports.ApplicationContextMixin = exports.WorkflowContextPickKeysForMixin = exports.JSONSchemaFormDataProvider = exports.JobContextPickKeysForMixin = exports.createAndPatchRegistry = exports.extendAndPatchRegistry = exports.ContextProviderRegistryContainer = exports.ContextProvider = void 0;
3+
exports.ApplicationContextMixin = exports.WorkflowContextPickKeysForMixin = exports.JSONSchemaFormDataProvider = exports.JobContextPickKeysForMixin = exports.createAndPatchRegistry = exports.extendAndPatchRegistry = exports.ContextProviderRegistryContainer = exports.ContextProvider = void 0;
44
const json_schema_provider_1 = require("./json_schema_provider");
55
Object.defineProperty(exports, "JSONSchemaFormDataProvider", { enumerable: true, get: function () { return json_schema_provider_1.JSONSchemaFormDataProvider; } });
66
const mixins_1 = require("./mixins");
77
Object.defineProperty(exports, "ApplicationContextMixin", { enumerable: true, get: function () { return mixins_1.ApplicationContextMixin; } });
8-
Object.defineProperty(exports, "JobContextMixin", { enumerable: true, get: function () { return mixins_1.JobContextMixin; } });
9-
Object.defineProperty(exports, "MaterialContextMixin", { enumerable: true, get: function () { return mixins_1.MaterialContextMixin; } });
10-
Object.defineProperty(exports, "MaterialsContextMixin", { enumerable: true, get: function () { return mixins_1.MaterialsContextMixin; } });
11-
Object.defineProperty(exports, "MaterialsSetContextMixin", { enumerable: true, get: function () { return mixins_1.MaterialsSetContextMixin; } });
12-
Object.defineProperty(exports, "MethodDataContextMixin", { enumerable: true, get: function () { return mixins_1.MethodDataContextMixin; } });
13-
Object.defineProperty(exports, "WorkflowContextMixin", { enumerable: true, get: function () { return mixins_1.WorkflowContextMixin; } });
148
const pickers_1 = require("./pickers");
159
Object.defineProperty(exports, "JobContextPickKeysForMixin", { enumerable: true, get: function () { return pickers_1.JobContextPickKeysForMixin; } });
1610
Object.defineProperty(exports, "WorkflowContextPickKeysForMixin", { enumerable: true, get: function () { return pickers_1.WorkflowContextPickKeysForMixin; } });

dist/js/context/mixins.d.ts

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
import { ApplicationSchemaBase } from "@mat3ra/esse/dist/js/types";
2-
import type { OrderedInMemoryEntityInSet } from "../entity/set/ordered/OrderedInMemoryEntityInSetMixin";
3-
import { JobContextMixin } from "./JobContextMixin";
4-
import { MaterialContextMixin } from "./MaterialContextMixin";
5-
import { MaterialsContextMixin } from "./MaterialsContextMixin";
6-
import { MethodDataContextMixin } from "./MethodDataContextMixin";
7-
import { WorkflowContextMixin } from "./WorkflowContextMixin";
82
type Constructor<T = any> = new (...args: any[]) => T;
93
export declare function ApplicationContextMixin<T extends Constructor>(superclass: T): {
104
new (...args: any): {
@@ -13,14 +7,4 @@ export declare function ApplicationContextMixin<T extends Constructor>(superclas
137
readonly application: ApplicationSchemaBase;
148
};
159
} & T;
16-
export { MaterialContextMixin, MaterialsContextMixin, MethodDataContextMixin, WorkflowContextMixin, JobContextMixin, };
17-
export declare function MaterialsSetContextMixin<T extends Constructor>(superclass: T): {
18-
new (...params: any): {
19-
[x: string]: any;
20-
_materialsSet: any;
21-
readonly materialsSet: any;
22-
sortMaterialsByIndexInSet(materials?: OrderedInMemoryEntityInSet[]): {
23-
getIndexByIdInOrderedSet(setId: string): number;
24-
}[];
25-
};
26-
} & T;
10+
export {};

dist/js/context/mixins.js

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.JobContextMixin = exports.WorkflowContextMixin = exports.MethodDataContextMixin = exports.MaterialsContextMixin = exports.MaterialContextMixin = void 0;
43
exports.ApplicationContextMixin = ApplicationContextMixin;
5-
exports.MaterialsSetContextMixin = MaterialsSetContextMixin;
6-
const utils_1 = require("../entity/set/ordered/utils");
7-
const JobContextMixin_1 = require("./JobContextMixin");
8-
Object.defineProperty(exports, "JobContextMixin", { enumerable: true, get: function () { return JobContextMixin_1.JobContextMixin; } });
9-
const MaterialContextMixin_1 = require("./MaterialContextMixin");
10-
Object.defineProperty(exports, "MaterialContextMixin", { enumerable: true, get: function () { return MaterialContextMixin_1.MaterialContextMixin; } });
11-
const MaterialsContextMixin_1 = require("./MaterialsContextMixin");
12-
Object.defineProperty(exports, "MaterialsContextMixin", { enumerable: true, get: function () { return MaterialsContextMixin_1.MaterialsContextMixin; } });
13-
const MethodDataContextMixin_1 = require("./MethodDataContextMixin");
14-
Object.defineProperty(exports, "MethodDataContextMixin", { enumerable: true, get: function () { return MethodDataContextMixin_1.MethodDataContextMixin; } });
15-
const WorkflowContextMixin_1 = require("./WorkflowContextMixin");
16-
Object.defineProperty(exports, "WorkflowContextMixin", { enumerable: true, get: function () { return WorkflowContextMixin_1.WorkflowContextMixin; } });
174
function ApplicationContextMixin(superclass) {
185
return class ApplicationContextMixin extends superclass {
196
constructor(...args) {
@@ -33,20 +20,28 @@ function ApplicationContextMixin(superclass) {
3320
}
3421
};
3522
}
36-
function MaterialsSetContextMixin(superclass) {
37-
return class MaterialsSetContextMixin extends superclass {
38-
constructor(...params) {
39-
super(...params);
40-
this._materialsSet = this.config.context && this.config.context.materialsSet;
41-
}
42-
get materialsSet() {
43-
return this._materialsSet;
44-
}
45-
sortMaterialsByIndexInSet(materials = []) {
46-
// DO NOT SORT IN PLACE AS IT CHANGES THE ORDER IN `this.materials` AND HAS SIDE EFFECTS (MaterialViewer).
47-
return materials.concat().sort((a, b) => {
48-
return (0, utils_1.compareEntitiesInOrderedSetForSorting)(a, b, this.materialsSet._id, false);
49-
});
50-
}
51-
};
52-
}
23+
// export {
24+
// MaterialContextMixin,
25+
// MaterialsContextMixin,
26+
// MethodDataContextMixin,
27+
// WorkflowContextMixin,
28+
// JobContextMixin,
29+
// };
30+
// export function MaterialsSetContextMixin<T extends Constructor>(superclass: T) {
31+
// return class MaterialsSetContextMixin extends superclass {
32+
// _materialsSet: any;
33+
// constructor(...params: any) {
34+
// super(...params);
35+
// this._materialsSet = this.config.context && this.config.context.materialsSet;
36+
// }
37+
// get materialsSet() {
38+
// return this._materialsSet;
39+
// }
40+
// sortMaterialsByIndexInSet(materials: OrderedInMemoryEntityInSet[] = []) {
41+
// // DO NOT SORT IN PLACE AS IT CHANGES THE ORDER IN `this.materials` AND HAS SIDE EFFECTS (MaterialViewer).
42+
// return materials.concat().sort((a, b) => {
43+
// return compareEntitiesInOrderedSetForSorting(a, b, this.materialsSet._id, false);
44+
// });
45+
// }
46+
// };
47+
// }

dist/js/context/provider.d.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { ContextProviderInstance } from "./registry";
12
export interface ContextProviderConfig {
23
name: string;
34
domain?: string;
@@ -7,6 +8,12 @@ export interface ContextProviderConfig {
78
isEdited?: boolean;
89
context?: object;
910
}
11+
export interface ContextProviderStatic {
12+
getConstructorConfig: (config: ContextProviderConfig) => ContextProviderInstance;
13+
createConfigFromContext: (config: ContextProviderConfig) => ContextProviderConfig;
14+
getExtraDataKeyByName: (name: string) => string;
15+
getIsEditedKeyByName: (name: string) => string;
16+
}
1017
export declare class ContextProvider {
1118
config: ContextProviderConfig;
1219
name: string;
@@ -16,10 +23,7 @@ export declare class ContextProvider {
1623
extraData?: object;
1724
isEdited?: boolean;
1825
constructor(config: ContextProviderConfig);
19-
static getConstructorConfig(config: ContextProviderConfig): {
20-
constructor: Function;
21-
config: ContextProviderConfig;
22-
};
26+
static getConstructorConfig(config: ContextProviderConfig): ContextProviderInstance;
2327
static createConfigFromContext(config: ContextProviderConfig): ContextProviderConfig & ({
2428
data: any;
2529
extraData: any;

dist/js/context/registry.d.ts

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,49 @@
1-
export class ContextProviderRegistryContainer {
2-
_providers: any[];
3-
set providers(p: any[]);
4-
get providers(): any[];
1+
import type { ContextProvider, ContextProviderConfig, ContextProviderStatic } from "./provider";
2+
export interface ContextProviderInstance {
3+
constructor: typeof ContextProvider;
4+
config: ContextProviderConfig;
5+
}
6+
export declare class ContextProviderRegistryContainer {
7+
_providers: {
8+
name: string;
9+
instance: ContextProviderInstance;
10+
}[];
11+
constructor();
12+
get providers(): {
13+
name: string;
14+
instance: ContextProviderInstance;
15+
}[];
16+
set providers(p: {
17+
name: string;
18+
instance: ContextProviderInstance;
19+
}[]);
520
addProvider({ name, instance }: {
6-
name: any;
7-
instance: any;
21+
name: string;
22+
instance: ContextProviderInstance;
823
}): void;
9-
findProviderInstanceByName(name: any): any;
10-
removeProvider(providerCls: any): void;
11-
removeProviderByName(name: any): void;
24+
findProviderInstanceByName(name: string): ContextProviderInstance | undefined;
25+
removeProvider(providerCls: ContextProvider): void;
26+
removeProviderByName(name: string): void;
1227
}
13-
export function extendAndPatchRegistry(registryContainer: ContextProviderRegistryContainer, classConfigMap: Object, classesToPatch?: Object, defaultSettings?: {}): ContextProviderRegistryContainer;
14-
export function createAndPatchRegistry(classConfigMap: Object, classesToPatch?: {
15-
Material: SpecificMockMaterial;
16-
}, defaultSettings?: {}): ContextProviderRegistryContainer;
28+
/** Extends an existing context provider registry container and patches static class variables if applicable.
29+
* @example
30+
* const classConfigMap = {
31+
* PlanewaveCutoffDataManager: {
32+
* providerCls: PlanewaveCutoffsContextProvider,
33+
* config: _makeImportant({ name: "cutoffs", entityName: "subworkflow" })
34+
* },
35+
* };
36+
*/
37+
export declare const extendAndPatchRegistry: (registryContainer: ContextProviderRegistryContainer, classConfigMap: Record<string, {
38+
providerCls: typeof ContextProvider;
39+
config: ContextProviderConfig;
40+
}>, classesToPatch?: Partial<ContextProviderStatic>, defaultSettings?: Partial<Record<string, ContextProviderStatic>>) => ContextProviderRegistryContainer;
41+
/** Creates a new context provider registry container and patches static class variables if applicable.
42+
*
43+
* @param {Object} classConfigMap
44+
* @param {{Material: SpecificMockMaterial}} classesToPatch
45+
*/
46+
export declare const createAndPatchRegistry: (classConfigMap: Record<string, {
47+
providerCls: typeof ContextProvider;
48+
config: ContextProviderConfig;
49+
}>, classesToPatch?: Partial<ContextProviderStatic>, defaultSettings?: Partial<Record<string, ContextProviderStatic>>) => ContextProviderRegistryContainer;

dist/js/context/registry.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,28 @@ class ContextProviderRegistryContainer {
3030
}
3131
exports.ContextProviderRegistryContainer = ContextProviderRegistryContainer;
3232
/** Extends an existing context provider registry container and patches static class variables if applicable.
33-
*
34-
* @param {ContextProviderRegistryContainer} registryContainer
35-
* @param {Object} classConfigMap
36-
* @param {Object} classesToPatch
3733
* @example
3834
* const classConfigMap = {
3935
* PlanewaveCutoffDataManager: {
4036
* providerCls: PlanewaveCutoffsContextProvider,
4137
* config: _makeImportant({ name: "cutoffs", entityName: "subworkflow" })
4238
* },
4339
* };
44-
*
4540
*/
4641
const extendAndPatchRegistry = (registryContainer, classConfigMap, classesToPatch = {}, defaultSettings = {}) => {
4742
Object.entries(classConfigMap).forEach(([name, { providerCls, config }]) => {
48-
Object.entries(classesToPatch).forEach(([clsName, cls]) => {
43+
const entries = Object.entries(classesToPatch);
44+
entries.forEach(([clsName, cls]) => {
4945
if (providerCls[clsName]) {
46+
// @ts-expect-error
5047
providerCls[clsName] = cls;
5148
}
5249
const providerDefaultSettings = defaultSettings[providerCls.name];
5350
if (providerDefaultSettings) {
54-
Object.entries(providerDefaultSettings).forEach(([key, value]) => {
51+
const providerDefaultSettingsEntries = Object.entries(providerDefaultSettings);
52+
providerDefaultSettingsEntries.forEach(([key, value]) => {
5553
if (providerCls[key]) {
54+
// @ts-expect-error
5655
providerCls[key] = value;
5756
}
5857
});

src/js/context/JobContextMixin.ts

Lines changed: 0 additions & 59 deletions
This file was deleted.

src/js/context/MaterialContextMixin.ts

Lines changed: 0 additions & 53 deletions
This file was deleted.

0 commit comments

Comments
 (0)