fix(core): update

This commit is contained in:
Philipp Kunz 2019-09-25 15:28:39 +02:00
parent 0f34c5de55
commit 1cf78441e2
9 changed files with 604 additions and 511 deletions

28
.gitignore vendored
View File

@ -1,6 +1,22 @@
.nogit/
node_modules/
coverage/
public/
pages/
.yarn/
.nogit/
# artifacts
coverage/
public/
pages/
# installs
node_modules/
# caches
.yarn/
.cache/
.rpt2_cache
# builds
dist/
dist_web/
dist_serve/
dist_ts_web/
# custom

View File

@ -1,5 +1,5 @@
# gitzone standard
image: hosttoday/ht-docker-node:npmci
# gitzone ci_default
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
@ -38,19 +38,7 @@ snyk:
# test stage
# ====================
testLTS:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
testSTABLE:
testStable:
stage: test
script:
- npmci npm prepare
@ -60,6 +48,18 @@ testSTABLE:
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- priv
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
release:
@ -78,19 +78,11 @@ release:
# ====================
codequality:
stage: metadata
image: docker:stable
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [codeclimate.json]
- npmci command npm install -g tslint typescript
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- docker
- priv
@ -106,13 +98,15 @@ trigger:
- notpriv
pages:
image: hosttoday/ht-docker-node:npmci
image: hosttoday/ht-docker-dbase:npmci
services:
- docker:stable-dind
stage: metadata
script:
- npmci command npm install -g typedoc typescript
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci npm install
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
- npmci command tsdoc
tags:
- docker
- notpriv

941
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -13,15 +13,27 @@
"format": "(gitzone format)"
},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.8",
"@gitzone/tstest": "^1.0.20",
"@pushrocks/tapbundle": "^3.0.9",
"@types/node": "^11.13.8",
"tslint": "^5.16.0",
"@gitzone/tsbuild": "^2.1.17",
"@gitzone/tstest": "^1.0.24",
"@pushrocks/tapbundle": "^3.0.13",
"@types/node": "^12.7.7",
"tslint": "^5.20.0",
"tslint-config-prettier": "^1.18.0"
},
"dependencies": {
"@pushrocks/lik": "^3.0.5",
"rxjs": "^6.5.1"
}
"@pushrocks/lik": "^3.0.11",
"@pushrocks/smartpromise": "^3.0.5",
"rxjs": "^6.5.3"
},
"files": [
"ts/*",
"ts_web/*",
"dist/*",
"dist_web/*",
"dist_ts_web/*",
"assets/*",
"cli.js",
"npmextra.json",
"readme.md"
]
}

View File

@ -21,6 +21,6 @@ a package that handles state in a good way
For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com)
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

View File

@ -9,7 +9,7 @@ export class Smartstate<StatePartNameType> {
constructor() {}
getStatePart<PayloadType>(
public getStatePart<PayloadType>(
statePartNameArg: StatePartNameType,
initialArg?: PayloadType
): StatePart<StatePartNameType, PayloadType> {
@ -33,7 +33,7 @@ export class Smartstate<StatePartNameType> {
/**
* creates a statepart
* @param statePartName
* @param initialPayloadArg
* @param initialPayloadArg
*/
private createStatePart<PayloadType>(
statePartName: StatePartNameType,
@ -48,5 +48,5 @@ export class Smartstate<StatePartNameType> {
/**
* dispatches an action on the main level
*/
dispatch() {}
public dispatch() {}
}

View File

@ -9,5 +9,9 @@ export interface IActionDef<TStateType, TActionPayloadType> {
* an actionmodifier for the state
*/
export class StateAction<TStateType, TActionPayloadType> {
constructor(public actionDef: IActionDef<TStateType, TActionPayloadType>) {}
constructor(public statePartRef: StatePart<any, any>, public actionDef: IActionDef<TStateType, TActionPayloadType>) {}
public trigger(payload: TActionPayloadType) {
this.statePartRef.dispatchAction(this, payload);
}
}

View File

@ -6,9 +6,9 @@ import { startWith, takeUntil, map } from 'rxjs/operators';
import { StateAction, IActionDef } from './smartstate.classes.stateaction';
export class StatePart<TStatePartName, TStatePayload> {
name: TStatePartName;
state = new Subject<TStatePayload>();
stateStore: TStatePayload;
public name: TStatePartName;
public state = new Subject<TStatePayload>();
public stateStore: TStatePayload;
constructor(nameArg: TStatePartName) {
this.name = nameArg;
@ -17,7 +17,7 @@ export class StatePart<TStatePartName, TStatePayload> {
/**
* gets the state from the state store
*/
getState(): TStatePayload {
public getState(): TStatePayload {
return this.stateStore;
}
@ -25,7 +25,7 @@ export class StatePart<TStatePartName, TStatePayload> {
* sets the stateStore to the new state
* @param newStateArg
*/
setState(newStateArg: TStatePayload) {
public setState(newStateArg: TStatePayload) {
this.stateStore = newStateArg;
this.notifyChange();
}
@ -33,21 +33,27 @@ export class StatePart<TStatePartName, TStatePayload> {
/**
* notifies of a change on the state
*/
notifyChange() {
public notifyChange() {
this.state.next(this.stateStore);
}
/**
* selects a state or a substate
*/
select<T = TStatePayload>(selectorFn?: (state: TStatePayload) => T): Observable<T> {
public select<T = TStatePayload>(selectorFn?: (state: TStatePayload) => T): Observable<T> {
if (!selectorFn) {
selectorFn = (state: TStatePayload) => <T>(<any>state);
}
const mapped = this.state.pipe(
startWith(this.getState()),
map(selectorFn)
map((stateArg) => {
try {
return selectorFn(stateArg);
} catch (e) {
// Nothing here
}
})
);
return mapped;
@ -56,17 +62,33 @@ export class StatePart<TStatePartName, TStatePayload> {
/**
* creates an action capable of modifying the state
*/
createAction<TActionPayload>(
public createAction<TActionPayload>(
actionDef: IActionDef<TStatePayload, TActionPayload>
): StateAction<TStatePayload, TActionPayload> {
return new StateAction(actionDef);
return new StateAction(this, actionDef);
}
/**
* dispatches an action on the statepart level
*/
async dispatchAction<T>(stateAction: StateAction<TStatePayload, T>, actionPayload: T) {
public async dispatchAction<T>(stateAction: StateAction<TStatePayload, T>, actionPayload: T) {
const newState = await stateAction.actionDef(this, actionPayload);
this.setState(newState);
}
/**
* waits until a certain part of the state becomes available
* @param selectorFn
*/
public async waitUntilPresent<T = TStatePayload>(selectorFn?: (state: TStatePayload) => T): Promise<T> {
const done = plugins.smartpromise.defer<T>();
const selectedObservable = this.select(selectorFn);
const subscription = selectedObservable.subscribe(value => {
if (value) {
subscription.unsubscribe();
done.resolve(value);
}
});
return await done.promise;
}
}

View File

@ -5,3 +5,9 @@ const rxjsPart = {
};
export { rxjsPart };
import * as smartpromise from '@pushrocks/smartpromise';
export {
smartpromise
};