Guy Carmeli
Guy Carmeli
# The problem Clicking on TopBar buttons multiple times, emits multiple click events which is undesirable. Ideally we would want the button to be disabled until the onClick logic (both...
The PR changes the structure of the project to a monorepo. The project will be split into two packages: 1. `@obsidian/react-obsidian` - The library 2. `@obsidian/eslint-plugin-obsidian` - an ESLint plugin...
This PR introduces a `@LazyInject` decorator. The standard `@Inject` decorator resolves dependencies on class creation. The `@LazyInject` decorator resolves dependencies only when they are used for the first time. ##...
#### Background We should probably add another means to [subscribe](https://github.com/wix-incubator/obsidian/blob/1d4fe937ac8e1523215ef05efeb8465c96e8bc6a/src/observable/Observable.ts#L20) to Observables. Perhaps add a new `subscribeUnique()` method and use it from the [useObserver hook](https://github.com/wix-incubator/obsidian/blob/1d4fe937ac8e1523215ef05efeb8465c96e8bc6a/src/observable/useObserver.ts#L12). #### API ```ts useObserver(observable: Observable,...
[Plop](https://plopjs.com/documentation/#getting-started) is kind of a templating framework that lets users generate code with ease. We should explore how it can be used to generate: 1. Graphs 2. MVVM folder structure...
The Observable's `initialValue` constructor param is marked as optional. This can make the code unpredictable as developers can forget to pass an initial value. We might want to change the...
This differs from the `@LateInject` decorator in that the dependency will be resolved the first time it's accessed without needing to call `Obsidian.inject(this)` explicitly. ### API ```ts @Injectable(ApplicationGraph) class Injected...
When a provider requests a dependency that's not provided by any graph (usually happens due to typos), Obsidian will throw an error only in runtime when that provider is executed....
Since dependencies and their relations are declared in graphs, we can use static code analysis to detect circular dependencies even before executing code. This will alow Obsidian to fail fast...
The script should take care of the following: * Add required npm packages * Update babel config * Import 'reflect-metadata' in index.js * Update tsconfig * ask to reinstall node...