diff --git a/package.json b/package.json index 203fb83..ee0b13e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "strx", - "version": "0.0.13", + "version": "0.0.14", "description": "Unified Turing Machine", "main": "index.js", "scripts": { diff --git a/src/concepts/axium/qualities/addConceptsFromQue.quality.ts b/src/concepts/axium/qualities/addConceptsFromQue.quality.ts index 94d13c3..eff461a 100644 --- a/src/concepts/axium/qualities/addConceptsFromQue.quality.ts +++ b/src/concepts/axium/qualities/addConceptsFromQue.quality.ts @@ -1,4 +1,4 @@ -import { Subject, Subscriber } from 'rxjs'; +import { Observable, Subject, Subscriber, catchError } from 'rxjs'; import { defaultMethodCreator } from '../../../model/concept'; import { AxiumState } from '../axium.concept'; import { Action, ActionType } from '../../../model/action'; @@ -18,6 +18,13 @@ function addConceptsFromQueReducer(state: AxiumState, _ : Action) { concept.qualities.forEach(quality => { if (quality.methodCreator) { [quality.method, quality.subject] = quality.methodCreator(state.subConcepts$); + quality.method.pipe( + catchError((err: unknown, caught: Observable) => { + if (state.logging) { + console.error('METHOD ERROR', err); + } + return caught; + })); const methodSub = quality.method.subscribe((action: Action) => { const action$ = state.action$ as Subject; blockingMethodSubscription(action$, action); diff --git a/src/concepts/axium/qualities/setBlockingMode.quality.ts b/src/concepts/axium/qualities/setBlockingMode.quality.ts index 893444b..482bd18 100644 --- a/src/concepts/axium/qualities/setBlockingMode.quality.ts +++ b/src/concepts/axium/qualities/setBlockingMode.quality.ts @@ -1,4 +1,4 @@ -import { Subject, Subscriber } from 'rxjs'; +import { Observable, Subject, Subscriber, catchError } from 'rxjs'; import { Concept, defaultMethodCreator } from '../../../model/concept'; import { Action, ActionType } from '../../../model/action'; import { AxiumState } from '../axium.concept'; diff --git a/src/model/axium.ts b/src/model/axium.ts index 956e7b2..aae3285 100644 --- a/src/model/axium.ts +++ b/src/model/axium.ts @@ -6,7 +6,7 @@ import { catchError, } from 'rxjs'; import { Action, createAction, createCacheSemaphores } from './action'; -import { ActionNode, ActionStrategy, ActionStrategyParameters, createStrategy, puntStrategy, strategyBegin } from './actionStrategy'; +import { strategyBegin } from './actionStrategy'; import { Concept, Mode } from './concept'; import { createAxiumConcept, @@ -19,7 +19,6 @@ import { AppendActionListToDialogPayload, axiumAppendActionListToDialogType } from '../concepts/axium/qualities/appendActionListToDialog.quality'; -import { axiumConcludeType } from '../concepts/axium/qualities/conclude.quality'; export const blockingMethodSubscription = (action$: Subject, action: Action) => { if ( @@ -70,16 +69,22 @@ export const defaultMethodSubscription = (action$: Subject, action: Acti }; export function createAxium(initialConcepts: Concept[], logging?: boolean, storeDialog?: boolean) { - // const action$: Subject = new Subject(); const concepts: Concept[] = [createAxiumConcept(logging, storeDialog), ...initialConcepts]; let axiumState = concepts[0].state as AxiumState; axiumState.cachedSemaphores = createCacheSemaphores(concepts); concepts.forEach((concept, _index) => { - concept.qualities.forEach((quality, index) => { + concept.qualities.forEach(quality => { if (quality.methodCreator) { const [method, subject] = quality.methodCreator(axiumState.subConcepts$); quality.method = method; quality.subject = subject; + quality.method.pipe( + catchError((err: unknown, caught: Observable) => { + if (axiumState.logging) { + console.error('METHOD ERROR', err); + } + return caught; + })); const methodSub = quality.method.subscribe((action: Action) => { blockingMethodSubscription(axiumState.action$, action); }) as Subscriber; @@ -107,7 +112,6 @@ export function createAxium(initialConcepts: Concept[], logging?: boolean, store // As Such is a Unique Principle in the Scope of State Management // This will also allow for Actions to be added to the Stream to Update to most Recent Values catchError((err: unknown, caught: Observable<[Action, Concept[]]>) => { - // Will need to Refine this Function Continuously if (axiumState.logging) { console.error('ACTION STREAM ERROR', err); } @@ -116,7 +120,6 @@ export function createAxium(initialConcepts: Concept[], logging?: boolean, store ) .subscribe(([action, _concepts]: [Action, Concept[]]) => { // Would be notifying methods - // console.log('Check Length', concepts.length) const _axiumState = _concepts[0].state as AxiumState; const modeIndex = _axiumState.modeIndex; const modes = _concepts[0].mode as Mode[];