From 4bb2abadab8ece34955f17c8b701c86effbf06a3 Mon Sep 17 00:00:00 2001 From: Val Erastov Date: Sun, 14 Aug 2022 20:52:56 -0700 Subject: [PATCH] get rid of CoreContext in favor of granular bundle contexts --- web/app/cad/context/index.ts | 2 -- web/app/cad/craft/craftBundle.ts | 4 ++-- web/app/cad/craft/e0/OCCUtils.ts | 4 ++-- web/app/cad/craft/e0/occIO.ts | 4 ++-- web/app/cad/craft/e0/occService.ts | 4 ++-- web/app/cad/craft/operationBundle.ts | 4 ++-- web/app/cad/craft/schema/initializeBySchema.ts | 6 +++--- web/app/cad/craft/schema/materializeParams.ts | 6 +++--- web/app/cad/craft/schema/schema.ts | 6 +++--- web/app/cad/craft/schema/types/arrayType.ts | 4 ++-- web/app/cad/craft/schema/types/booleanType.ts | 4 ++-- web/app/cad/craft/schema/types/entityType.ts | 6 +++--- web/app/cad/craft/schema/types/index.ts | 6 +++--- web/app/cad/craft/schema/types/numberType.ts | 9 ++++----- web/app/cad/craft/schema/types/objectType.ts | 6 +++--- web/app/cad/craft/schema/types/stringType.ts | 6 +++--- web/app/cad/expressions/expressionsBundle.ts | 4 ++-- web/app/cad/mdf/ui/AxisWidget.tsx | 4 ++-- web/app/cad/mdf/ui/DirectionWidget.tsx | 4 ++-- web/app/cad/sketch/sketchStorageBundle.ts | 4 ++-- web/app/cad/storage/storageBundle.ts | 4 ++-- web/app/cad/workbench/workbenchService.ts | 5 ++--- 22 files changed, 51 insertions(+), 55 deletions(-) diff --git a/web/app/cad/context/index.ts b/web/app/cad/context/index.ts index 7d59cf60..6d22b4df 100644 --- a/web/app/cad/context/index.ts +++ b/web/app/cad/context/index.ts @@ -50,7 +50,5 @@ export interface ApplicationContext extends WorkbenchBundleContext {} -export type CoreContext = ApplicationContext; - export default {} as ApplicationContext; diff --git a/web/app/cad/craft/craftBundle.ts b/web/app/cad/craft/craftBundle.ts index f68d7920..49d6cb5b 100644 --- a/web/app/cad/craft/craftBundle.ts +++ b/web/app/cad/craft/craftBundle.ts @@ -4,11 +4,11 @@ import materializeParams from './schema/materializeParams'; import CadError from '../../utils/errors'; import {MObject, MObjectIdGenerator} from '../model/mobject'; import {intercept} from "lstream/intercept"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {OperationParams} from "cad/craft/schema/schema"; import {clearImplicitModels} from "cad/craft/e0/occCommandInterface"; -export function activate(ctx: CoreContext) { +export function activate(ctx: ApplicationContext) { const modifications$ = state({ diff --git a/web/app/cad/craft/e0/OCCUtils.ts b/web/app/cad/craft/e0/OCCUtils.ts index 43161f91..01114d09 100644 --- a/web/app/cad/craft/e0/OCCUtils.ts +++ b/web/app/cad/craft/e0/OCCUtils.ts @@ -1,5 +1,5 @@ import {SketchGeom} from "cad/sketch/sketchReader"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import CSys from "math/csys"; import {OperationResult} from "cad/craft/craftBundle"; import {BooleanDefinition, BooleanKind} from "cad/craft/schema/common/BooleanDefinition"; @@ -27,7 +27,7 @@ export interface FaceRef extends WireRef { topoShape: Shell, } -export function createOCCUtils(ctx: CoreContext): OCCUtils { +export function createOCCUtils(ctx: ApplicationContext): OCCUtils { function sketchToFaces(sketch: SketchGeom, csys: CSys): FaceRef[] { const occ = ctx.occService; diff --git a/web/app/cad/craft/e0/occIO.ts b/web/app/cad/craft/e0/occIO.ts index d646c5e8..883d3a78 100644 --- a/web/app/cad/craft/e0/occIO.ts +++ b/web/app/cad/craft/e0/occIO.ts @@ -4,7 +4,7 @@ import {MObject} from "cad/model/mobject"; import {Interrogate} from "cad/craft/e0/interact"; import {readShellEntityFromJson} from "cad/scene/wrappers/entityIO"; import {createOCCSketchLoader, OCCSketchLoader} from "cad/craft/e0/occSketchLoader"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {ProductionAnalyzer} from "cad/craft/production/productionAnalyzer"; import {readBrep} from "brep/io/brepIO"; import {Shell} from "brep/topo/shell"; @@ -22,7 +22,7 @@ export interface OCCIO { sketchLoader: OCCSketchLoader } -export function createOCCIO(ctx: CoreContext): OCCIO { +export function createOCCIO(ctx: ApplicationContext): OCCIO { function getShell(shapeName: string, productionAnalyzer?: ProductionAnalyzer): MShell { const shapeJson = Interrogate(shapeName); diff --git a/web/app/cad/craft/e0/occService.ts b/web/app/cad/craft/e0/occService.ts index d92e92f1..6cc2191c 100644 --- a/web/app/cad/craft/e0/occService.ts +++ b/web/app/cad/craft/e0/occService.ts @@ -1,4 +1,4 @@ -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {OCCCommandInterface, OCI} from "cad/craft/e0/occCommandInterface"; import {createOCCIO, OCCIO} from "cad/craft/e0/occIO"; import {createOCCUtils, OCCUtils} from "cad/craft/e0/OCCUtils"; @@ -15,7 +15,7 @@ export interface OCCService { engineInterface: any } -export function createOCCService(ctx: CoreContext): OCCService { +export function createOCCService(ctx: ApplicationContext): OCCService { const oci = OCI; diff --git a/web/app/cad/craft/operationBundle.ts b/web/app/cad/craft/operationBundle.ts index 003809c4..4f09556f 100644 --- a/web/app/cad/craft/operationBundle.ts +++ b/web/app/cad/craft/operationBundle.ts @@ -2,7 +2,7 @@ import React from 'react'; import {state} from 'lstream'; import {IconType} from "react-icons"; import {ActionAppearance} from "../actions/actionSystemBundle"; -import {ApplicationContext, CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {OperationResult} from "./craftBundle"; import {OperationSchema, SchemaField, schemaIterator, unwrapMetadata} from "cad/craft/schema/schema"; import {FormDefinition} from "cad/mdf/ui/uiDefinition"; @@ -137,7 +137,7 @@ export interface OperationDescriptor { info: string; icon: OpIcon; actionParams?: any; - run: (params: {}, ctx: CoreContext, rawParams: R) => OperationResult | Promise; + run: (params: {}, ctx: ApplicationContext, rawParams: R) => OperationResult | Promise; paramsInfo: (params: R) => string, previewGeomProvider?: (params: R) => OperationGeometryProvider, previewer?: any, diff --git a/web/app/cad/craft/schema/initializeBySchema.ts b/web/app/cad/craft/schema/initializeBySchema.ts index 5ecc2274..cb3eec33 100644 --- a/web/app/cad/craft/schema/initializeBySchema.ts +++ b/web/app/cad/craft/schema/initializeBySchema.ts @@ -1,8 +1,8 @@ import {Types} from "cad/craft/schema/types"; import {isValueNotProvided, OperationSchema, SchemaField} from "cad/craft/schema/schema"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; -export default function initializeBySchema(schema: OperationSchema, context: CoreContext) { +export default function initializeBySchema(schema: OperationSchema, context: ApplicationContext) { let fields = Object.keys(schema); let obj = {}; for (let field of fields) { @@ -43,7 +43,7 @@ export default function initializeBySchema(schema: OperationSchema, context: Cor } -export function fillUpMissingFields(params: any, schema: OperationSchema, context: CoreContext) { +export function fillUpMissingFields(params: any, schema: OperationSchema, context: ApplicationContext) { let fields = Object.keys(schema); for (let field of fields) { const md = schema[field] as SchemaField; diff --git a/web/app/cad/craft/schema/materializeParams.ts b/web/app/cad/craft/schema/materializeParams.ts index 452fdf18..67dd9f3a 100644 --- a/web/app/cad/craft/schema/materializeParams.ts +++ b/web/app/cad/craft/schema/materializeParams.ts @@ -1,5 +1,5 @@ import {TypeRegistry} from "cad/craft/schema/types"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import { isValueNotProvided, OperationParams, @@ -19,7 +19,7 @@ function createErrorReporter(path: string[], errors: OperationParamsError[]): Op return report; } -export default function materializeParams(ctx: CoreContext, +export default function materializeParams(ctx: ApplicationContext, params: OperationParams, schema: OperationSchema, result: any, @@ -28,7 +28,7 @@ export default function materializeParams(ctx: CoreContext, } -function materializeParamsImpl(ctx: CoreContext, +function materializeParamsImpl(ctx: ApplicationContext, params: OperationParams, schema: OperationSchema, result: any, diff --git a/web/app/cad/craft/schema/schema.ts b/web/app/cad/craft/schema/schema.ts index 03ac8949..94841a36 100644 --- a/web/app/cad/craft/schema/schema.ts +++ b/web/app/cad/craft/schema/schema.ts @@ -4,8 +4,8 @@ import {ArrayTypeSchema} from "cad/craft/schema/types/arrayType"; import {ObjectTypeSchema} from "cad/craft/schema/types/objectType"; import {StringTypeSchema} from "cad/craft/schema/types/stringType"; import {BooleanTypeSchema} from "cad/craft/schema/types/booleanType"; -import {Materializer, Types} from "cad/craft/schema/types"; -import {CoreContext} from "cad/context"; +import {Types} from "cad/craft/schema/types"; +import {ApplicationContext} from "cad/context"; import {ParamsPath} from "cad/craft/wizard/wizardTypes"; export type Coercable = any; @@ -55,7 +55,7 @@ export type OperationParamsErrorReporter = ((msg: string) => void) & { dot: (pathPart: string|number) => OperationParamsErrorReporter }; -export type ValueResolver = (ctx: CoreContext, +export type ValueResolver = (ctx: ApplicationContext, value: IN, md: SchemaField, reportError: OperationParamsErrorReporter) => OUT; diff --git a/web/app/cad/craft/schema/types/arrayType.ts b/web/app/cad/craft/schema/types/arrayType.ts index 974fe93c..de03f07e 100644 --- a/web/app/cad/craft/schema/types/arrayType.ts +++ b/web/app/cad/craft/schema/types/arrayType.ts @@ -1,5 +1,5 @@ import {Materializer, Type, TypeRegistry, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {BaseSchemaField, OperationParamsErrorReporter, SchemaField} from "cad/craft/schema/schema"; export interface ArrayTypeSchema extends BaseSchemaField { @@ -19,7 +19,7 @@ export interface ArrayTypeSchema extends BaseSchemaField { export const ArrayType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: any[], md: ArrayTypeSchema, reportError: OperationParamsErrorReporter, diff --git a/web/app/cad/craft/schema/types/booleanType.ts b/web/app/cad/craft/schema/types/booleanType.ts index 34c6ca03..c0be60fb 100644 --- a/web/app/cad/craft/schema/types/booleanType.ts +++ b/web/app/cad/craft/schema/types/booleanType.ts @@ -1,5 +1,5 @@ import {Materializer, Type, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {BaseSchemaField, OperationParamsErrorReporter} from "cad/craft/schema/schema"; export interface BooleanTypeSchema extends BaseSchemaField { @@ -10,7 +10,7 @@ export interface BooleanTypeSchema extends BaseSchemaField { export const BooleanType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: any, md: BooleanTypeSchema, reportError: OperationParamsErrorReporter, diff --git a/web/app/cad/craft/schema/types/entityType.ts b/web/app/cad/craft/schema/types/entityType.ts index 0c27b3a9..c21acd97 100644 --- a/web/app/cad/craft/schema/types/entityType.ts +++ b/web/app/cad/craft/schema/types/entityType.ts @@ -1,5 +1,5 @@ -import {Type, TypeRegistry, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; +import {Type, Types} from "cad/craft/schema/types/index"; +import {ApplicationContext} from "cad/context"; import {BaseSchemaField, OperationParamsErrorReporter} from "cad/craft/schema/schema"; import {EntityKind} from "cad/model/entities"; import {MObject} from "cad/model/mobject"; @@ -20,7 +20,7 @@ export type EntityCapture = (entity: MObject) => boolean; export const EntityType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: string, md: EntityTypeSchema, reportError: OperationParamsErrorReporter): MObject { diff --git a/web/app/cad/craft/schema/types/index.ts b/web/app/cad/craft/schema/types/index.ts index 61cbd85f..21400f5b 100644 --- a/web/app/cad/craft/schema/types/index.ts +++ b/web/app/cad/craft/schema/types/index.ts @@ -1,4 +1,4 @@ -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {OperationParams, OperationParamsErrorReporter, OperationSchema, SchemaField} from "cad/craft/schema/schema"; import {ArrayType} from "cad/craft/schema/types/arrayType"; import {EntityType} from "cad/craft/schema/types/entityType"; @@ -7,7 +7,7 @@ import {ObjectType} from "cad/craft/schema/types/objectType"; import {StringType} from "cad/craft/schema/types/stringType"; import {BooleanType} from "cad/craft/schema/types/booleanType"; -export type Materializer = (ctx: CoreContext, +export type Materializer = (ctx: ApplicationContext, params: OperationParams, schema: OperationSchema, result: any, @@ -15,7 +15,7 @@ export type Materializer = (ctx: CoreContext, export interface Type { - resolve(ctx: CoreContext, value: IN, md: METADATA, + resolve(ctx: ApplicationContext, value: IN, md: METADATA, reportError: OperationParamsErrorReporter, materializer: Materializer): OUT; diff --git a/web/app/cad/craft/schema/types/numberType.ts b/web/app/cad/craft/schema/types/numberType.ts index af7d7ffc..efc42f05 100644 --- a/web/app/cad/craft/schema/types/numberType.ts +++ b/web/app/cad/craft/schema/types/numberType.ts @@ -1,7 +1,6 @@ -import {Materializer, Type, TypeRegistry, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; -import {BaseSchemaField, OperationParamsErrorReporter, SchemaField} from "cad/craft/schema/schema"; -import {EntityType} from "cad/craft/schema/types/entityType"; +import {Materializer, Type, Types} from "cad/craft/schema/types/index"; +import {ApplicationContext} from "cad/context"; +import {BaseSchemaField, OperationParamsErrorReporter} from "cad/craft/schema/schema"; export interface NumberTypeSchema extends BaseSchemaField { @@ -15,7 +14,7 @@ export interface NumberTypeSchema extends BaseSchemaField { export const NumberType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: any, md: NumberTypeSchema, reportError: OperationParamsErrorReporter, diff --git a/web/app/cad/craft/schema/types/objectType.ts b/web/app/cad/craft/schema/types/objectType.ts index a9019a87..53bab87e 100644 --- a/web/app/cad/craft/schema/types/objectType.ts +++ b/web/app/cad/craft/schema/types/objectType.ts @@ -1,5 +1,5 @@ -import {Materializer, Type, TypeRegistry, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; +import {Materializer, Type, Types} from "cad/craft/schema/types/index"; +import {ApplicationContext} from "cad/context"; import {BaseSchemaField, OperationParamsErrorReporter, OperationSchema} from "cad/craft/schema/schema"; export interface ObjectTypeSchema extends BaseSchemaField { @@ -14,7 +14,7 @@ export interface ObjectTypeSchema extends BaseSchemaField { export const ObjectType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: any, md: ObjectTypeSchema, reportError: OperationParamsErrorReporter, diff --git a/web/app/cad/craft/schema/types/stringType.ts b/web/app/cad/craft/schema/types/stringType.ts index 7d16e000..c58a85de 100644 --- a/web/app/cad/craft/schema/types/stringType.ts +++ b/web/app/cad/craft/schema/types/stringType.ts @@ -1,5 +1,5 @@ -import {Materializer, Type, TypeRegistry, Types} from "cad/craft/schema/types/index"; -import {CoreContext} from "cad/context"; +import {Materializer, Type, Types} from "cad/craft/schema/types/index"; +import {ApplicationContext} from "cad/context"; import {BaseSchemaField, OperationParamsErrorReporter} from "cad/craft/schema/schema"; export interface StringTypeSchema extends BaseSchemaField { @@ -12,7 +12,7 @@ export interface StringTypeSchema extends BaseSchemaField { export const StringType: Type = { - resolve(ctx: CoreContext, + resolve(ctx: ApplicationContext, value: any, md: StringTypeSchema, reportError: OperationParamsErrorReporter, diff --git a/web/app/cad/expressions/expressionsBundle.ts b/web/app/cad/expressions/expressionsBundle.ts index 4722d609..006f1e34 100644 --- a/web/app/cad/expressions/expressionsBundle.ts +++ b/web/app/cad/expressions/expressionsBundle.ts @@ -1,10 +1,10 @@ import {merge, state, StateStream, Stream} from 'lstream'; import {indexArray} from 'gems/iterables'; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; export const BundleName = "@Expressions"; -export function activate(ctx: CoreContext) { +export function activate(ctx: ApplicationContext) { let _evaluateExpression: (string) => any = () => {}; const script$ = state(''); diff --git a/web/app/cad/mdf/ui/AxisWidget.tsx b/web/app/cad/mdf/ui/AxisWidget.tsx index 9b1f46ad..a93d6c0d 100644 --- a/web/app/cad/mdf/ui/AxisWidget.tsx +++ b/web/app/cad/mdf/ui/AxisWidget.tsx @@ -5,7 +5,7 @@ import {EntityKind} from "cad/model/entities"; import {SectionWidgetProps} from "cad/mdf/ui/SectionWidget"; import {MObject} from "cad/model/mobject"; import Axis from "math/axis"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {ObjectTypeSchema} from "cad/craft/schema/types/objectType"; export interface AxisInput { @@ -13,7 +13,7 @@ export interface AxisInput { flip: boolean } -export const AxisResolver: ValueResolver = (ctx: CoreContext, +export const AxisResolver: ValueResolver = (ctx: ApplicationContext, value: AxisInput, md: ObjectTypeSchema, reportError: OperationParamsErrorReporter): Axis => { diff --git a/web/app/cad/mdf/ui/DirectionWidget.tsx b/web/app/cad/mdf/ui/DirectionWidget.tsx index dad73e46..4fbe0408 100644 --- a/web/app/cad/mdf/ui/DirectionWidget.tsx +++ b/web/app/cad/mdf/ui/DirectionWidget.tsx @@ -1,11 +1,11 @@ import React from "react"; import {OperationParamsErrorReporter, ValueResolver} from "cad/craft/schema/schema"; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {ObjectTypeSchema} from "cad/craft/schema/types/objectType"; import {AxisBasedWidgetDefinition, AxisBasedWidgetProps, AxisInput, AxisResolver} from "cad/mdf/ui/AxisWidget"; import {UnitVector} from "math/vector"; -export const DirectionResolver: ValueResolver = (ctx: CoreContext, +export const DirectionResolver: ValueResolver = (ctx: ApplicationContext, value: AxisInput, md: ObjectTypeSchema, reportError: OperationParamsErrorReporter): UnitVector => { diff --git a/web/app/cad/sketch/sketchStorageBundle.ts b/web/app/cad/sketch/sketchStorageBundle.ts index 953ddd69..3807b138 100644 --- a/web/app/cad/sketch/sketchStorageBundle.ts +++ b/web/app/cad/sketch/sketchStorageBundle.ts @@ -1,7 +1,7 @@ -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {ReadSketch} from "./sketchReader"; -export function activate(ctx: CoreContext) { +export function activate(ctx: ApplicationContext) { function getAllSketches() { let nm = ctx.projectService.sketchStorageNamespace; diff --git a/web/app/cad/storage/storageBundle.ts b/web/app/cad/storage/storageBundle.ts index 0c709dfe..a7a748cc 100644 --- a/web/app/cad/storage/storageBundle.ts +++ b/web/app/cad/storage/storageBundle.ts @@ -1,5 +1,5 @@ import {stream} from 'lstream'; -import {CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; const updates$ = stream(); @@ -9,7 +9,7 @@ export function defineStreams(ctx) { } } -export function activate(ctx: CoreContext) { +export function activate(ctx: ApplicationContext) { const {services, streams} = ctx; diff --git a/web/app/cad/workbench/workbenchService.ts b/web/app/cad/workbench/workbenchService.ts index 5ec3e7db..0a65d15e 100644 --- a/web/app/cad/workbench/workbenchService.ts +++ b/web/app/cad/workbench/workbenchService.ts @@ -2,17 +2,16 @@ import {OperationDescriptor} from "cad/craft/operationBundle"; import {ActionDefinition} from "cad/actions/actionSystemBundle"; import {state} from "lstream"; import {Index} from "gems/indexType"; -import {ApplicationContext, CoreContext} from "cad/context"; +import {ApplicationContext} from "cad/context"; import {ActionRef} from "cad/dom/uiBundle"; import {IconDeclaration} from "cad/icons/IconDeclaration"; -import {CurrentWorkbenchIcon} from "cad/workbench/CurrentWorkbenchIcon"; export class WorkbenchService { workbenches$ = state>({}); currentWorkbench$ = state(null); - ctx: CoreContext; + ctx: ApplicationContext; constructor(ctx: ApplicationContext) { this.ctx = ctx;