Skip to content

Commit

Permalink
Merge pull request #56 from Phuire-Research/UI
Browse files Browse the repository at this point in the history
UI
  • Loading branch information
REllEK-IO committed Oct 3, 2023
2 parents 743e0f4 + 85f9e2b commit 345f35a
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "strx",
"version": "0.0.13",
"version": "0.0.14",
"description": "Unified Turing Machine",
"main": "index.js",
"scripts": {
Expand Down
9 changes: 8 additions & 1 deletion src/concepts/axium/qualities/addConceptsFromQue.quality.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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<Action>) => {
if (state.logging) {
console.error('METHOD ERROR', err);
}
return caught;
}));
const methodSub = quality.method.subscribe((action: Action) => {
const action$ = state.action$ as Subject<Action>;
blockingMethodSubscription(action$, action);
Expand Down
2 changes: 1 addition & 1 deletion src/concepts/axium/qualities/setBlockingMode.quality.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down
15 changes: 9 additions & 6 deletions src/model/axium.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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: Action) => {
if (
Expand Down Expand Up @@ -70,16 +69,22 @@ export const defaultMethodSubscription = (action$: Subject<Action>, action: Acti
};

export function createAxium(initialConcepts: Concept[], logging?: boolean, storeDialog?: boolean) {
// const action$: Subject<Action> = 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<Action>) => {
if (axiumState.logging) {
console.error('METHOD ERROR', err);
}
return caught;
}));
const methodSub = quality.method.subscribe((action: Action) => {
blockingMethodSubscription(axiumState.action$, action);
}) as Subscriber<Action>;
Expand Down Expand Up @@ -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);
}
Expand All @@ -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[];
Expand Down

0 comments on commit 345f35a

Please sign in to comment.