react-obsidian 2.10.2 → 2.11.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/GraphProperties.js +1 -3
- package/dist/src/GraphProperties.js.map +1 -1
- package/dist/src/ProvidedPropertiesStore.js +4 -9
- package/dist/src/ProvidedPropertiesStore.js.map +1 -1
- package/dist/src/ReferenceCounter.js +2 -5
- package/dist/src/ReferenceCounter.js.map +1 -1
- package/dist/src/decorators/Graph.js +1 -2
- package/dist/src/decorators/Graph.js.map +1 -1
- package/dist/src/decorators/LifecycleBound.js +2 -4
- package/dist/src/decorators/LifecycleBound.js.map +1 -1
- package/dist/src/decorators/Memoize.d.ts.map +1 -1
- package/dist/src/decorators/Memoize.js +1 -2
- package/dist/src/decorators/Memoize.js.map +1 -1
- package/dist/src/decorators/Singleton.d.ts.map +1 -1
- package/dist/src/decorators/Singleton.js +1 -2
- package/dist/src/decorators/Singleton.js.map +1 -1
- package/dist/src/decorators/inject/Inject.d.ts +1 -1
- package/dist/src/decorators/inject/Inject.d.ts.map +1 -1
- package/dist/src/decorators/inject/Inject.js +1 -2
- package/dist/src/decorators/inject/Inject.js.map +1 -1
- package/dist/src/decorators/inject/Injectable.js +1 -2
- package/dist/src/decorators/inject/Injectable.js.map +1 -1
- package/dist/src/decorators/inject/LateInject.js +1 -2
- package/dist/src/decorators/inject/LateInject.js.map +1 -1
- package/dist/src/decorators/provides/MemoizeDescriptor.d.ts.map +1 -1
- package/dist/src/decorators/provides/MemoizeDescriptor.js +1 -3
- package/dist/src/decorators/provides/MemoizeDescriptor.js.map +1 -1
- package/dist/src/decorators/provides/Provides.js +1 -2
- package/dist/src/decorators/provides/Provides.js.map +1 -1
- package/dist/src/graph/CircularDependenciesDetector.js +2 -1
- package/dist/src/graph/CircularDependenciesDetector.js.map +1 -1
- package/dist/src/graph/ObjectGraph.d.ts +1 -1
- package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
- package/dist/src/graph/ObjectGraph.js +6 -6
- package/dist/src/graph/ObjectGraph.js.map +1 -1
- package/dist/src/graph/PropertyRetriever.d.ts +1 -1
- package/dist/src/graph/PropertyRetriever.d.ts.map +1 -1
- package/dist/src/graph/PropertyRetriever.js +3 -2
- package/dist/src/graph/PropertyRetriever.js.map +1 -1
- package/dist/src/graph/PropertyRetrieverDelegate.d.ts +1 -1
- package/dist/src/graph/PropertyRetrieverDelegate.d.ts.map +1 -1
- package/dist/src/graph/ProviderBinder.d.ts.map +1 -1
- package/dist/src/graph/ProviderBinder.js +2 -4
- package/dist/src/graph/ProviderBinder.js.map +1 -1
- package/dist/src/graph/ServiceLocatorFactory.d.ts.map +1 -1
- package/dist/src/graph/VisitedNodes.js +2 -4
- package/dist/src/graph/VisitedNodes.js.map +1 -1
- package/dist/src/graph/registry/GraphMiddlewareChain.js +1 -0
- package/dist/src/graph/registry/GraphMiddlewareChain.js.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
- package/dist/src/graph/registry/GraphRegistry.js +19 -26
- package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
- package/dist/src/graph/registry/Middleware.js +1 -0
- package/dist/src/graph/registry/Middleware.js.map +1 -1
- package/dist/src/graph/registry/ObtainLifecycleBoundGraphException.js.map +1 -1
- package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -1
- package/dist/src/injectors/class/ClassInjector.js +6 -5
- package/dist/src/injectors/class/ClassInjector.js.map +1 -1
- package/dist/src/injectors/class/ConstructorArgs.js +1 -3
- package/dist/src/injectors/class/ConstructorArgs.js.map +1 -1
- package/dist/src/injectors/class/InjectionMetadata.js +5 -9
- package/dist/src/injectors/class/InjectionMetadata.js.map +1 -1
- package/dist/src/injectors/class/LateInjector.js +1 -1
- package/dist/src/injectors/class/LateInjector.js.map +1 -1
- package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
- package/dist/src/injectors/components/InjectComponent.d.ts +1 -1
- package/dist/src/injectors/components/InjectComponent.d.ts.map +1 -1
- package/dist/src/injectors/components/InjectComponent.js.map +1 -1
- package/dist/src/injectors/components/PropsInjector.d.ts.map +1 -1
- package/dist/src/injectors/components/PropsInjector.js +1 -1
- package/dist/src/injectors/components/PropsInjector.js.map +1 -1
- package/dist/src/injectors/components/useGraph.d.ts +1 -1
- package/dist/src/injectors/components/useGraph.d.ts.map +1 -1
- package/dist/src/injectors/components/useGraph.js +1 -1
- package/dist/src/injectors/components/useGraph.js.map +1 -1
- package/dist/src/injectors/components/useInjectionToken.d.ts.map +1 -1
- package/dist/src/injectors/components/useInjectionToken.js +1 -1
- package/dist/src/injectors/components/useInjectionToken.js.map +1 -1
- package/dist/src/injectors/hooks/HookInjector.js +2 -1
- package/dist/src/injectors/hooks/HookInjector.js.map +1 -1
- package/dist/src/injectors/hooks/InjectHook.d.ts.map +1 -1
- package/dist/src/injectors/hooks/InjectHook.js +2 -3
- package/dist/src/injectors/hooks/InjectHook.js.map +1 -1
- package/dist/src/model/Model.js.map +1 -1
- package/dist/src/observable/Observable.d.ts.map +1 -1
- package/dist/src/observable/Observable.js +3 -2
- package/dist/src/observable/Observable.js.map +1 -1
- package/dist/src/observable/cold/ColdMediatorObservable.d.ts.map +1 -1
- package/dist/src/observable/cold/ColdMediatorObservable.js +3 -4
- package/dist/src/observable/cold/ColdMediatorObservable.js.map +1 -1
- package/dist/src/observable/cold/useColdObservers.js +1 -2
- package/dist/src/observable/cold/useColdObservers.js.map +1 -1
- package/dist/src/observable/mapObservablesToValues.js +1 -2
- package/dist/src/observable/mapObservablesToValues.js.map +1 -1
- package/dist/src/observable/mediator/MediatorObservable.js.map +1 -1
- package/dist/src/observable/useObserver.d.ts.map +1 -1
- package/dist/src/observable/useObserver.js +1 -3
- package/dist/src/observable/useObserver.js.map +1 -1
- package/dist/src/observable/useObservers.d.ts +2 -1
- package/dist/src/observable/useObservers.d.ts.map +1 -1
- package/dist/src/observable/useObservers.js +2 -3
- package/dist/src/observable/useObservers.js.map +1 -1
- package/dist/src/utils/React.d.ts.map +1 -1
- package/dist/src/utils/React.js +2 -3
- package/dist/src/utils/React.js.map +1 -1
- package/dist/src/utils/isDev.js +4 -8
- package/dist/src/utils/isDev.js.map +1 -1
- package/dist/src/utils/isNumber.js +1 -2
- package/dist/src/utils/isNumber.js.map +1 -1
- package/dist/src/utils/uniqueId.js +2 -3
- package/dist/src/utils/uniqueId.js.map +1 -1
- package/dist/test/fixtures/CircularDependencyFromSubgraph.d.ts +1 -1
- package/dist/test/fixtures/CircularDependencyFromSubgraph.d.ts.map +1 -1
- package/dist/test/fixtures/CircularDependencyFromSubgraph.js +2 -2
- package/dist/test/fixtures/CircularDependencyFromSubgraph.js.map +1 -1
- package/dist/test/fixtures/CircularDependencyGraph.d.ts.map +1 -1
- package/dist/test/fixtures/CircularDependencyGraph.js +3 -2
- package/dist/test/fixtures/CircularDependencyGraph.js.map +1 -1
- package/dist/test/fixtures/CircularDependencyGraph2.d.ts.map +1 -1
- package/dist/test/fixtures/CircularDependencyGraph2.js +3 -2
- package/dist/test/fixtures/CircularDependencyGraph2.js.map +1 -1
- package/dist/test/fixtures/GraphWithMultipleDependencies.js +2 -2
- package/dist/test/fixtures/GraphWithMultipleDependencies.js.map +1 -1
- package/dist/test/fixtures/GraphWithOnBind.d.ts +1 -1
- package/dist/test/fixtures/GraphWithOnBind.d.ts.map +1 -1
- package/dist/test/fixtures/GraphWithOnBind.js +3 -2
- package/dist/test/fixtures/GraphWithOnBind.js.map +1 -1
- package/dist/test/fixtures/LifecycleBoundGraph.js +6 -4
- package/dist/test/fixtures/LifecycleBoundGraph.js.map +1 -1
- package/dist/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.d.ts.map +1 -1
- package/dist/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.js +2 -2
- package/dist/test/fixtures/LifecycleBoundWithLifecycleBoundSubgraph.js.map +1 -1
- package/dist/test/fixtures/MainGraph.js.map +1 -1
- package/dist/test/fixtures/ScopedLifecycleBoundGraph.js +2 -2
- package/dist/test/fixtures/ScopedLifecycleBoundGraph.js.map +1 -1
- package/dist/test/fixtures/SingletonGraph.js +1 -4
- package/dist/test/fixtures/SingletonGraph.js.map +1 -1
- package/dist/test/fixtures/StringProvider.js +1 -0
- package/dist/test/fixtures/StringProvider.js.map +1 -1
- package/dist/test/fixtures/Subgraph.js.map +1 -1
- package/dist/test/fixtures/SubgraphWithCircularDependency.d.ts.map +1 -1
- package/dist/test/fixtures/SubgraphWithCircularDependency.js +3 -2
- package/dist/test/fixtures/SubgraphWithCircularDependency.js.map +1 -1
- package/dist/test/fixtures/ThrowingMainGraph.js.map +1 -1
- package/dist/test/fixtures/UniqueNumberGraph.d.ts.map +1 -1
- package/dist/test/fixtures/UniqueNumberGraph.js +3 -3
- package/dist/test/fixtures/UniqueNumberGraph.js.map +1 -1
- package/dist/testkit/index.d.ts.map +1 -1
- package/dist/testkit/index.js +0 -1
- package/dist/testkit/index.js.map +1 -1
- package/dist/testkit/mockGraphs.js +1 -2
- package/dist/testkit/mockGraphs.js.map +1 -1
- package/dist/testkit/mockModel.js +1 -2
- package/dist/testkit/mockModel.js.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts +2 -2
- package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/helpers/index.js +13 -16
- package/dist/transformers/babel-plugin-obsidian/helpers/index.js.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/index.d.ts.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/index.js +1 -1
- package/dist/transformers/babel-plugin-obsidian/index.js.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/unmagler/method.js +1 -3
- package/dist/transformers/babel-plugin-obsidian/unmagler/method.js.map +1 -1
- package/dist/transformers/babel-plugin-obsidian/unmagler/property.js.map +1 -1
- package/eslint.config.mjs +140 -0
- package/package.json +27 -25
- package/src/decorators/Memoize.ts +0 -1
- package/src/decorators/inject/Inject.ts +1 -1
- package/src/decorators/provides/MemoizeDescriptor.ts +0 -1
- package/src/graph/ObjectGraph.ts +2 -4
- package/src/graph/PropertyRetriever.ts +4 -4
- package/src/graph/PropertyRetrieverDelegate.ts +1 -1
- package/src/graph/ProviderBinder.ts +1 -2
- package/src/graph/registry/GraphRegistry.ts +7 -7
- package/src/graph/registry/ObtainLifecycleBoundGraphException.ts +1 -1
- package/src/injectors/class/ClassInjector.ts +2 -2
- package/src/injectors/components/ComponentInjector.tsx +1 -1
- package/src/injectors/components/InjectComponent.ts +3 -3
- package/src/injectors/components/PropsInjector.ts +0 -1
- package/src/injectors/components/useGraph.ts +1 -2
- package/src/injectors/hooks/InjectHook.ts +0 -1
- package/src/observable/Observable.ts +2 -2
- package/src/observable/cold/ColdMediatorObservable.ts +0 -1
- package/src/observable/cold/useColdObservers.ts +1 -1
- package/src/observable/mediator/MediatorObservable.ts +1 -1
- package/src/observable/useObserver.ts +1 -2
- package/src/observable/useObservers.ts +4 -3
- package/src/utils/isDev.ts +1 -2
- package/testkit/index.ts +0 -1
- package/transformers/babel-plugin-obsidian/helpers/index.ts +8 -8
- package/transformers/babel-plugin-obsidian/index.ts +0 -1
- package/transformers/babel-plugin-obsidian/unmagler/method.ts +1 -2
|
@@ -32,7 +32,7 @@ export default class ComponentInjector {
|
|
|
32
32
|
const proxiedProps = new PropsInjector(graph).inject(passedProps);
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
|
-
<GraphContext.Provider value={{injectionToken}}>
|
|
35
|
+
<GraphContext.Provider value={{ injectionToken }}>
|
|
36
36
|
{Target(proxiedProps as unknown as PropsWithChildren<P>)}
|
|
37
37
|
</GraphContext.Provider>
|
|
38
38
|
);
|
|
@@ -18,9 +18,9 @@ export const injectComponent = <OwnProps = Discriminator, InjectedProps = Discri
|
|
|
18
18
|
assertGraph(Graph, Target);
|
|
19
19
|
|
|
20
20
|
return componentInjector.inject(Target, Graph) as React.FunctionComponent<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
InjectedProps extends Discriminator ?
|
|
22
|
+
OwnProps extends Discriminator ? Partial<OwnProps> : OwnProps :
|
|
23
|
+
OwnProps extends InjectedProps ? Partial<OwnProps> : OwnProps & Partial<InjectedProps>
|
|
24
24
|
>;
|
|
25
25
|
};
|
|
26
26
|
function assertGraph(Graph: Constructable<ObjectGraph<unknown>>, Target: any) {
|
|
@@ -4,7 +4,6 @@ export default class PropsInjector<Props> {
|
|
|
4
4
|
constructor(private graph: ObjectGraph) {}
|
|
5
5
|
|
|
6
6
|
inject(passedProps: Props): Partial<Props> {
|
|
7
|
-
// eslint-disable-next-line prefer-object-spread
|
|
8
7
|
return new Proxy(Object.assign({}, passedProps), {
|
|
9
8
|
get: (target: object, p: string, receiver: any): any => {
|
|
10
9
|
return p in target ? Reflect.get(target, p, receiver) : this.graph.retrieve(p, receiver);
|
|
@@ -10,7 +10,6 @@ export default <P>(
|
|
|
10
10
|
props?: Partial<P>,
|
|
11
11
|
injectionToken?: string,
|
|
12
12
|
) => {
|
|
13
|
-
|
|
14
13
|
const [graph] = useState(() => {
|
|
15
14
|
const resolvedGraph = graphRegistry.resolve(Graph, 'lifecycleOwner', props, injectionToken);
|
|
16
15
|
resolvedGraph.onBind(target);
|
|
@@ -18,7 +17,7 @@ export default <P>(
|
|
|
18
17
|
});
|
|
19
18
|
useEffect(() => {
|
|
20
19
|
referenceCounter.retain(graph);
|
|
21
|
-
return () => referenceCounter.release(graph,
|
|
20
|
+
return () => referenceCounter.release(graph, g => graphRegistry.clear(g));
|
|
22
21
|
}, [graph]);
|
|
23
22
|
return graph;
|
|
24
23
|
};
|
|
@@ -14,7 +14,7 @@ export class Observable<T> implements IObservable<T> {
|
|
|
14
14
|
|
|
15
15
|
public set value(value: T) {
|
|
16
16
|
this.currentValue = value;
|
|
17
|
-
this.subscribers.forEach(
|
|
17
|
+
this.subscribers.forEach(subscriber => subscriber(value));
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
async first(): Promise<T> {
|
|
@@ -35,7 +35,7 @@ export class Observable<T> implements IObservable<T> {
|
|
|
35
35
|
return () => this.subscribers.delete(onNext);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
public unsubscribe(onNext:OnNext<T>) {
|
|
38
|
+
public unsubscribe(onNext: OnNext<T>) {
|
|
39
39
|
if (!this.subscribers.has(onNext)) {
|
|
40
40
|
throw new Error(`Can't unsubscribe, subscriber doesn't exist`);
|
|
41
41
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Observable } from '../Observable';
|
|
2
2
|
import { MediatorObservable } from '../mediator/MediatorObservable';
|
|
3
3
|
import { OnNext } from '../types';
|
|
4
|
-
|
|
5
4
|
export class ColdMediatorObservable<T extends object> extends MediatorObservable<T> {
|
|
6
5
|
constructor(obj: T, private readonly handler = new PropertyAccessTrackingProxy<T>()) {
|
|
7
6
|
super(new Proxy(obj, handler));
|
|
@@ -10,7 +10,7 @@ export function useColdObservables<T extends Record<string, any>>(observables: T
|
|
|
10
10
|
const [values, setValues] = useState(() => mediator.value as ObservedValues<T>);
|
|
11
11
|
|
|
12
12
|
useEffect(() => {
|
|
13
|
-
Object.keys(observables
|
|
13
|
+
Object.keys(observables).forEach((key) => {
|
|
14
14
|
mediator.addSource(observables[key], (value) => {
|
|
15
15
|
mediator.setValue(key, value);
|
|
16
16
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
1
|
import {
|
|
3
2
|
useCallback,
|
|
4
3
|
useEffect,
|
|
@@ -26,6 +25,6 @@ export function useObserver<T>(observableOrGenerator: ObservableOrGenerator<T>):
|
|
|
26
25
|
return [value, onNext];
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
function getOrGenerateObservable(observableOrGenerator: ObservableOrGenerator<
|
|
28
|
+
function getOrGenerateObservable<T>(observableOrGenerator: ObservableOrGenerator<T>): Observable<T> {
|
|
30
29
|
return observableOrGenerator instanceof Observable ? observableOrGenerator : observableOrGenerator();
|
|
31
30
|
}
|
|
@@ -2,15 +2,16 @@ import { useEffect, useState } from 'react';
|
|
|
2
2
|
import { MediatorObservable } from './mediator/MediatorObservable';
|
|
3
3
|
import { ObservedValues, Unsubscribe } from './types';
|
|
4
4
|
import { mapObservablesToValues } from './mapObservablesToValues';
|
|
5
|
+
import type { Observable } from './Observable';
|
|
5
6
|
|
|
6
|
-
export function useObservers<T extends Record<string, any
|
|
7
|
+
export function useObservers<T extends Record<string, Observable<any>>>(observables: T): ObservedValues<T> {
|
|
7
8
|
const [values, setValues] = useState(() => mapObservablesToValues(observables));
|
|
8
9
|
|
|
9
10
|
useEffect(() => {
|
|
10
11
|
const mediator = new MediatorObservable();
|
|
11
12
|
const unsubscribers: Unsubscribe[] = [];
|
|
12
13
|
|
|
13
|
-
Object.keys(observables
|
|
14
|
+
Object.keys(observables).forEach((key) => {
|
|
14
15
|
const onNext = (value: any) => setValues({ ...values, [key]: value });
|
|
15
16
|
mediator.addSource(observables[key], onNext);
|
|
16
17
|
|
|
@@ -19,7 +20,7 @@ export function useObservers<T extends Record<string, any>>(observables: T): Obs
|
|
|
19
20
|
});
|
|
20
21
|
});
|
|
21
22
|
|
|
22
|
-
return () => unsubscribers.forEach(
|
|
23
|
+
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
|
|
23
24
|
}, []);
|
|
24
25
|
|
|
25
26
|
return values;
|
package/src/utils/isDev.ts
CHANGED
|
@@ -3,11 +3,10 @@ export function isDev(): boolean {
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
function isNodeDev(): boolean {
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
7
6
|
return ['test', 'development'].includes(process.env['NODE_ENV'] ?? '');
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
function isReactNativeDev(): boolean {
|
|
11
|
-
// @ts-
|
|
10
|
+
// @ts-expect-error __DEV__ is a global variable in React Native
|
|
12
11
|
return __DEV__ as boolean ?? false;
|
|
13
12
|
}
|
package/testkit/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ class TestKit {
|
|
|
7
7
|
* @deprecated testKit.mockGraphs is deprecated, use mockGraphs instead
|
|
8
8
|
*/
|
|
9
9
|
public mockGraphs(graphNameToGraph: Record<string, Constructable<ObjectGraph> | ((props: any) => ObjectGraph)>) {
|
|
10
|
-
// eslint-disable-next-line no-console
|
|
11
10
|
console.warn('testKit.mockGraphs is deprecated, use mockGraphs instead');
|
|
12
11
|
return mockGraphs(graphNameToGraph);
|
|
13
12
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
1
|
import { types as t } from '@babel/core';
|
|
3
2
|
import {
|
|
4
3
|
CallExpression,
|
|
@@ -9,6 +8,7 @@ import {
|
|
|
9
8
|
ObjectExpression,
|
|
10
9
|
ObjectPattern,
|
|
11
10
|
TSParameterProperty,
|
|
11
|
+
Node,
|
|
12
12
|
} from '@babel/types';
|
|
13
13
|
|
|
14
14
|
const never = '';
|
|
@@ -39,7 +39,7 @@ export function addNameToProviderArguments(node: ClassMethod, decorator: Decorat
|
|
|
39
39
|
|
|
40
40
|
export function getDecoratorArgument(decorator: Decorator): ObjectExpression | undefined {
|
|
41
41
|
if (t.isCallExpression(decorator.expression)) {
|
|
42
|
-
return decorator.expression.arguments.find(
|
|
42
|
+
return decorator.expression.arguments.find(a => t.isObjectExpression(a)) as ObjectExpression;
|
|
43
43
|
}
|
|
44
44
|
return undefined;
|
|
45
45
|
}
|
|
@@ -53,17 +53,17 @@ export function getDecoratorByName(
|
|
|
53
53
|
decorators: Array<Decorator> | undefined | null,
|
|
54
54
|
decoratorName: string,
|
|
55
55
|
): Decorator | undefined {
|
|
56
|
-
return decorators?.find(
|
|
56
|
+
return decorators?.find(decorator => get(decorator, 'expression.callee.name') === decoratorName);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
export function getDecoratorName(decorator?: Decorator): string | undefined {
|
|
60
60
|
return get(decorator, 'expression.callee.name');
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
export function paramsToDestructuringAssignment(params:
|
|
63
|
+
export function paramsToDestructuringAssignment(params: Node[]): ObjectPattern {
|
|
64
64
|
return t.objectPattern(params
|
|
65
|
-
.filter(
|
|
66
|
-
.map(
|
|
65
|
+
.filter(p => t.isIdentifier(p))
|
|
66
|
+
.map(p => t.objectProperty(t.identifier(p.name), t.identifier(p.name))));
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
export function passParamNameAsInjectArgument(
|
|
@@ -93,9 +93,9 @@ function getNodeName(node: AcceptedNodeType): string {
|
|
|
93
93
|
return node.name;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
function get(node: any, path: string):
|
|
96
|
+
function get<T>(node: any, path: string): T | undefined {
|
|
97
97
|
if (node === undefined || node === null) return undefined;
|
|
98
98
|
const [key, ...rest] = path.split('.');
|
|
99
|
-
if (rest.length === 0) return node[key];
|
|
99
|
+
if (rest.length === 0) return node[key] as T;
|
|
100
100
|
return get(node[key], rest.join('.'));
|
|
101
101
|
}
|
|
@@ -16,9 +16,8 @@ function saveMethod(name: string, node: ClassMethod) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
function convertProviderParamsToDestructuringAssignment(node: ClassMethod) {
|
|
19
|
-
if (node.params.length === 0)
|
|
19
|
+
if (node.params.length === 0) return;
|
|
20
20
|
const destructuredParams = paramsToDestructuringAssignment(node.params);
|
|
21
|
-
// eslint-disable-next-line no-param-reassign
|
|
22
21
|
node.params.length = 0;
|
|
23
22
|
node.params.push(destructuredParams);
|
|
24
23
|
}
|