The State Value Observer is an atomic implementation of the value observation pattern.
- Implemented in dependency injection methodology.
- Provide setter and getter functions of an observed value.
- Provide interfaces for callbacks and callback adapters.
- Provide an listener adapter.
const adapter: IObserverAdapter<string> = {
onChange: function (newValue: string): void {
console.log('Observed value was changed to:', newValue);
}
};
const observer: Observer<string> = new Observer<string>('initial value', adapter);
observer.value = 'Hello World!';
const adapter: ListenerAdapter<string> = new ListenerAdapter<string>();
const observer: Observer<string> = new Observer<string>('initial value', adapter);
function valueConsumer(newValue: string): void {
console.log('Observed value was changed to:', newValue);
}
adapter.addListener(valueConsumer.bind(window));
observer.value = 'Hello World!';
const adapter: ListenerAdapter<string> = new ListenerAdapter<string>(false);
const observer: Observer<string> = new Observer<string>('initial value', adapter);
function valueConsumer(newValue: string): void {
console.log('Observed value was changed to:', newValue);
}
adapter.addListener(valueConsumer.bind(window));
observer.value = 'Hello World!';
This library is providing in ECMAScript® 2020 language. When you use jest, you get this error by using my library:
Details:
<YOUR_PATH>\node_modules\@enbock\state-value-observer\ListenerAdapter.js:1
export default class ListenerAdapter {
^^^^^^
SyntaxError: Unexpected token 'export'
at compileFunction (vm.js:341:18)
See more: https://jestjs.io/docs/en/tutorial-react-native#transformignorepatterns-customization
Jest running internally on ES5, that does not know the ES6-imports.
To solve this, you have to exclude all my libraries from the exclusion-list:
"transformIgnorePatterns": [
"/node_modules/(?!(@enbock)/)"
]
babel.config.js
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript'
]
};
See more: https://github.com/facebook/jest#using-typescript
yarn test
yarn build