react-obsidian 0.0.11 → 0.0.15

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.
Files changed (167) hide show
  1. package/README.md +105 -10
  2. package/babel.config.js +4 -3
  3. package/dist/src/GraphProperties.d.ts +1 -0
  4. package/dist/src/GraphProperties.d.ts.map +1 -1
  5. package/dist/src/GraphProperties.js +3 -0
  6. package/dist/src/GraphProperties.js.map +1 -1
  7. package/dist/src/Obsidian.d.ts +1 -0
  8. package/dist/src/Obsidian.d.ts.map +1 -1
  9. package/dist/src/Obsidian.js +4 -0
  10. package/dist/src/Obsidian.js.map +1 -1
  11. package/dist/src/ProvidedPropertiesStore.d.ts +1 -0
  12. package/dist/src/ProvidedPropertiesStore.d.ts.map +1 -1
  13. package/dist/src/ProvidedPropertiesStore.js +4 -0
  14. package/dist/src/ProvidedPropertiesStore.js.map +1 -1
  15. package/dist/src/decorators/Graph.d.ts +2 -3
  16. package/dist/src/decorators/Graph.d.ts.map +1 -1
  17. package/dist/src/decorators/Graph.js +2 -3
  18. package/dist/src/decorators/Graph.js.map +1 -1
  19. package/dist/src/decorators/Singleton.d.ts +4 -0
  20. package/dist/src/decorators/Singleton.d.ts.map +1 -0
  21. package/dist/src/decorators/Singleton.js +12 -0
  22. package/dist/src/decorators/Singleton.js.map +1 -0
  23. package/dist/src/decorators/inject/Inject.d.ts +2 -0
  24. package/dist/src/decorators/inject/Inject.d.ts.map +1 -0
  25. package/dist/src/decorators/inject/Inject.js +21 -0
  26. package/dist/src/decorators/inject/Inject.js.map +1 -0
  27. package/dist/src/decorators/inject/Injectable.d.ts +4 -0
  28. package/dist/src/decorators/inject/Injectable.d.ts.map +1 -0
  29. package/dist/src/decorators/inject/Injectable.js +13 -0
  30. package/dist/src/decorators/inject/Injectable.js.map +1 -0
  31. package/dist/src/decorators/inject/LazyInject.d.ts +2 -0
  32. package/dist/src/decorators/inject/LazyInject.d.ts.map +1 -0
  33. package/dist/src/decorators/inject/LazyInject.js +15 -0
  34. package/dist/src/decorators/inject/LazyInject.js.map +1 -0
  35. package/dist/src/decorators/provides/MemoizeDescriptor.d.ts.map +1 -1
  36. package/dist/src/decorators/provides/MemoizeDescriptor.js +4 -4
  37. package/dist/src/decorators/provides/MemoizeDescriptor.js.map +1 -1
  38. package/dist/src/decorators/provides/Provides.d.ts +0 -2
  39. package/dist/src/decorators/provides/Provides.d.ts.map +1 -1
  40. package/dist/src/decorators/provides/Provides.js.map +1 -1
  41. package/dist/src/graph/ObjectGraph.d.ts +0 -2
  42. package/dist/src/graph/ObjectGraph.d.ts.map +1 -1
  43. package/dist/src/graph/ObjectGraph.js +2 -2
  44. package/dist/src/graph/ObjectGraph.js.map +1 -1
  45. package/dist/src/graph/ProviderBinder.d.ts +3 -0
  46. package/dist/src/graph/ProviderBinder.d.ts.map +1 -0
  47. package/dist/src/graph/ProviderBinder.js +17 -0
  48. package/dist/src/graph/ProviderBinder.js.map +1 -0
  49. package/dist/src/graph/registry/GraphRegistry.d.ts +10 -8
  50. package/dist/src/graph/registry/GraphRegistry.d.ts.map +1 -1
  51. package/dist/src/graph/registry/GraphRegistry.js +29 -22
  52. package/dist/src/graph/registry/GraphRegistry.js.map +1 -1
  53. package/dist/src/index.d.ts +4 -2
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +9 -5
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/injectors/class/ClassInjector.d.ts +12 -0
  58. package/dist/src/injectors/class/ClassInjector.d.ts.map +1 -0
  59. package/dist/src/injectors/class/ClassInjector.js +60 -0
  60. package/dist/src/injectors/class/ClassInjector.js.map +1 -0
  61. package/dist/src/injectors/class/ConstructorArgs.d.ts +8 -0
  62. package/dist/src/injectors/class/ConstructorArgs.d.ts.map +1 -0
  63. package/dist/src/injectors/class/ConstructorArgs.js +25 -0
  64. package/dist/src/injectors/class/ConstructorArgs.js.map +1 -0
  65. package/dist/src/injectors/class/InjectionMetadata.d.ts +15 -0
  66. package/dist/src/injectors/class/InjectionMetadata.d.ts.map +1 -0
  67. package/dist/src/injectors/class/InjectionMetadata.js +41 -0
  68. package/dist/src/injectors/class/InjectionMetadata.js.map +1 -0
  69. package/dist/src/injectors/class/LazyInjector.d.ts +8 -0
  70. package/dist/src/injectors/class/LazyInjector.d.ts.map +1 -0
  71. package/dist/src/injectors/class/LazyInjector.js +28 -0
  72. package/dist/src/injectors/class/LazyInjector.js.map +1 -0
  73. package/dist/src/injectors/components/ComponentInjector.d.ts +0 -1
  74. package/dist/src/injectors/components/ComponentInjector.d.ts.map +1 -1
  75. package/dist/src/injectors/components/ComponentInjector.js +0 -1
  76. package/dist/src/injectors/components/ComponentInjector.js.map +1 -1
  77. package/dist/src/types/index.d.ts +0 -1
  78. package/dist/src/types/index.d.ts.map +1 -1
  79. package/dist/test/integration/fixtures/MainGraph.d.ts +1 -0
  80. package/dist/test/integration/fixtures/MainGraph.d.ts.map +1 -1
  81. package/dist/test/integration/fixtures/MainGraph.js +10 -0
  82. package/dist/test/integration/fixtures/MainGraph.js.map +1 -1
  83. package/dist/test/integration/fixtures/SingletonGraph.d.ts +6 -0
  84. package/dist/test/integration/fixtures/SingletonGraph.d.ts.map +1 -0
  85. package/dist/test/integration/fixtures/SingletonGraph.js +53 -0
  86. package/dist/test/integration/fixtures/SingletonGraph.js.map +1 -0
  87. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts +8 -0
  88. package/dist/test/integration/fixtures/UniqueNumberGraph.d.ts.map +1 -0
  89. package/dist/test/integration/fixtures/UniqueNumberGraph.js +62 -0
  90. package/dist/test/integration/fixtures/UniqueNumberGraph.js.map +1 -0
  91. package/dist/test/integration/fixtures/injectedValues.d.ts +1 -0
  92. package/dist/test/integration/fixtures/injectedValues.d.ts.map +1 -1
  93. package/dist/test/integration/fixtures/injectedValues.js +1 -0
  94. package/dist/test/integration/fixtures/injectedValues.js.map +1 -1
  95. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.d.ts +4 -2
  96. package/dist/transformers/babel-plugin-obsidian/helpers/index.d.ts.map +1 -0
  97. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.js +28 -4
  98. package/dist/transformers/babel-plugin-obsidian/helpers/index.js.map +1 -0
  99. package/dist/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/index.d.ts +0 -0
  100. package/dist/transformers/babel-plugin-obsidian/index.d.ts.map +1 -0
  101. package/dist/transformers/babel-plugin-obsidian/index.js +45 -0
  102. package/dist/transformers/babel-plugin-obsidian/index.js.map +1 -0
  103. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts +10 -0
  104. package/dist/transformers/babel-plugin-obsidian/unmagler/index.d.ts.map +1 -0
  105. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js +14 -0
  106. package/dist/transformers/babel-plugin-obsidian/unmagler/index.js.map +1 -0
  107. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts +4 -0
  108. package/dist/transformers/babel-plugin-obsidian/unmagler/method.d.ts.map +1 -0
  109. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js +26 -0
  110. package/dist/transformers/babel-plugin-obsidian/unmagler/method.js.map +1 -0
  111. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts +4 -0
  112. package/dist/transformers/babel-plugin-obsidian/unmagler/property.d.ts.map +1 -0
  113. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js +14 -0
  114. package/dist/transformers/babel-plugin-obsidian/unmagler/property.js.map +1 -0
  115. package/example/babel.config.js +2 -2
  116. package/example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  117. package/jest.config.js +4 -0
  118. package/jest.setup-after-env.js +1 -0
  119. package/jest.setup.ts +1 -0
  120. package/package.json +5 -3
  121. package/src/GraphProperties.ts +4 -0
  122. package/src/Obsidian.ts +5 -0
  123. package/src/ProvidedPropertiesStore.ts +4 -0
  124. package/src/decorators/Graph.ts +2 -5
  125. package/src/decorators/Singleton.ts +14 -0
  126. package/src/decorators/inject/Inject.ts +17 -0
  127. package/src/decorators/inject/Injectable.ts +8 -0
  128. package/src/decorators/inject/LazyInject.ts +8 -0
  129. package/src/decorators/provides/MemoizeDescriptor.ts +3 -4
  130. package/src/decorators/provides/Provides.ts +0 -2
  131. package/src/graph/ObjectGraph.ts +2 -5
  132. package/src/graph/ProviderBinder.ts +11 -0
  133. package/src/graph/registry/GraphRegistry.ts +34 -32
  134. package/src/index.ts +4 -2
  135. package/src/injectors/class/ClassInjector.ts +49 -0
  136. package/src/injectors/class/ConstructorArgs.ts +20 -0
  137. package/src/injectors/class/InjectionMetadata.ts +57 -0
  138. package/src/injectors/class/LazyInjector.ts +22 -0
  139. package/src/injectors/components/ComponentInjector.tsx +0 -1
  140. package/src/types/index.ts +0 -2
  141. package/testkit/index.ts +1 -1
  142. package/transformers/{babel-plugin-obsidian-provide → babel-plugin-obsidian}/helpers/index.ts +38 -2
  143. package/transformers/babel-plugin-obsidian/index.ts +46 -0
  144. package/transformers/babel-plugin-obsidian/unmagler/index.ts +9 -0
  145. package/transformers/babel-plugin-obsidian/unmagler/method.ts +31 -0
  146. package/transformers/babel-plugin-obsidian/unmagler/property.ts +21 -0
  147. package/dist/src/ScopedValuesRegistry.d.ts +0 -11
  148. package/dist/src/ScopedValuesRegistry.d.ts.map +0 -1
  149. package/dist/src/ScopedValuesRegistry.js +0 -25
  150. package/dist/src/ScopedValuesRegistry.js.map +0 -1
  151. package/dist/src/decorators/injectClass.d.ts +0 -7
  152. package/dist/src/decorators/injectClass.d.ts.map +0 -1
  153. package/dist/src/decorators/injectClass.js +0 -34
  154. package/dist/src/decorators/injectClass.js.map +0 -1
  155. package/dist/src/utils/autobind.d.ts +0 -2
  156. package/dist/src/utils/autobind.d.ts.map +0 -1
  157. package/dist/src/utils/autobind.js +0 -19
  158. package/dist/src/utils/autobind.js.map +0 -1
  159. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.d.ts.map +0 -1
  160. package/dist/transformers/babel-plugin-obsidian-provide/helpers/index.js.map +0 -1
  161. package/dist/transformers/babel-plugin-obsidian-provide/index.d.ts.map +0 -1
  162. package/dist/transformers/babel-plugin-obsidian-provide/index.js +0 -39
  163. package/dist/transformers/babel-plugin-obsidian-provide/index.js.map +0 -1
  164. package/src/ScopedValuesRegistry.ts +0 -26
  165. package/src/decorators/injectClass.ts +0 -28
  166. package/src/utils/autobind.ts +0 -12
  167. package/transformers/babel-plugin-obsidian-provide/index.ts +0 -47
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../transformers/babel-plugin-obsidian-provide/helpers/index.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,oCAAyC;AASzC,iCAA6B;AAE7B,SAAgB,kBAAkB,CAAC,SAAoB;IACrD,IAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,YAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,CAAC;YAChC,IAAI,YAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBACzB,OAAO,YAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;aACvD;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,SAAS,CAAC;KAClB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAXD,gDAWC;AAED,SAAgB,0BAA0B,CAAC,IAAiB,EAAE,SAAoB;;IAChF,IAAM,QAAQ,GAAG,MAAA,oBAAoB,CAAC,SAAS,CAAC,mCAAI,YAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC3E,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAC,CAAC,cAAc,CACvC,YAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EACpB,YAAC,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACrC,CAAC,CAAC;IACF,SAAS,CAAC,UAA6B,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAPD,gEAOC;AAED,SAAgB,oBAAoB,CAAC,SAAoB;IACvD,IAAI,YAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;QAC5C,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,YAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAvB,CAAuB,CAAqB,CAAC;KAChG;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AALD,oDAKC;AAED,SAAgB,aAAa,CAAC,IAAiB;IAC7C,IAAI,YAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACnD,MAAM,IAAI,KAAK,CAAC,0EAAmE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;AACtG,CAAC;AAHD,sCAGC;AAED,SAAgB,oBAAoB,CAAC,UAA+C;IAClF,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,UAAC,SAAS,IAAK,OAAA,IAAA,YAAG,EAAC,SAAS,EAAE,wBAAwB,CAAC,KAAK,UAAU,EAAvD,CAAuD,CAAC,CAAC;AAClG,CAAC;AAFD,oDAEC;AAED,SAAgB,gBAAgB,CAAC,SAAqB;IACpD,OAAO,IAAA,YAAG,EAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAClD,CAAC;AAFD,4CAEC;AAED,SAAgB,+BAA+B,CAAC,MAA4B;IAC1E,OAAO,YAAC,CAAC,aAAa,CAAC,MAAM;SAC1B,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,YAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC;SAChC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,YAAC,CAAC,cAAc,CAAC,YAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,YAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAA5D,CAA4D,CAAC,CAAC,CAAC;AAC/E,CAAC;AAJD,0EAIC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAC;AA0ClD,MAAM,CAAC,OAAO,UAAU,MAAM,gDAE7B"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var helpers_1 = require("./helpers");
4
- var providerArgumentsTransformer = {
5
- visitor: {
6
- Program: function (path) {
7
- path.traverse(internalVisitor);
8
- },
9
- },
10
- };
11
- var internalVisitor = {
12
- ClassMethod: {
13
- enter: function (_a) {
14
- var node = _a.node;
15
- var decorator = (0, helpers_1.getProviderDecorator)(node.decorators);
16
- if ((0, helpers_1.getDecoratorName)(decorator) === 'Provides') {
17
- convertProviderParamsToDestructuringAssignment(node);
18
- saveUnmangledMethodNameInProviderArguments(node, decorator);
19
- }
20
- },
21
- },
22
- };
23
- function convertProviderParamsToDestructuringAssignment(node) {
24
- if (node.params.length === 0)
25
- return;
26
- var destructuredParams = (0, helpers_1.paramsToDestructuringAssignment)(node.params);
27
- node.params.length = 0;
28
- node.params.push(destructuredParams);
29
- }
30
- function saveUnmangledMethodNameInProviderArguments(node, decorator) {
31
- if ((0, helpers_1.providerIsNotNamed)(decorator)) {
32
- (0, helpers_1.addNameToProviderArguments)(node, decorator);
33
- }
34
- }
35
- function plugin() {
36
- return providerArgumentsTransformer;
37
- }
38
- exports.default = plugin;
39
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../transformers/babel-plugin-obsidian-provide/index.ts"],"names":[],"mappings":";;AAGA,qCAMmB;AAEnB,IAAM,4BAA4B,GAAc;IAC9C,OAAO,EAAE;QACP,OAAO,EAAP,UAAQ,IAAuB;YAC7B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;KACF;CACF,CAAC;AAEF,IAAM,eAAe,GAAG;IACtB,WAAW,EAAE;QACX,KAAK,EAAL,UAAM,EAA+B;gBAA7B,IAAI,UAAA;YACV,IAAM,SAAS,GAAG,IAAA,8BAAoB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,IAAA,0BAAgB,EAAC,SAAS,CAAC,KAAK,UAAU,EAAE;gBAC9C,8CAA8C,CAAC,IAAI,CAAC,CAAC;gBACrD,0CAA0C,CAAC,IAAI,EAAE,SAAU,CAAC,CAAC;aAC9D;QACH,CAAC;KACF;CACF,CAAC;AAEF,SAAS,8CAA8C,CAAC,IAAiB;IACvE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACrC,IAAM,kBAAkB,GAAG,IAAA,yCAA+B,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,0CAA0C,CAAC,IAAiB,EAAE,SAAoB;IACzF,IAAI,IAAA,4BAAkB,EAAC,SAAS,CAAC,EAAE;QACjC,IAAA,oCAA0B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC7C;AACH,CAAC;AAED,SAAwB,MAAM;IAC5B,OAAO,4BAA4B,CAAC;AACtC,CAAC;AAFD,yBAEC"}
@@ -1,26 +0,0 @@
1
- import { Scope } from './types';
2
-
3
- class ScopedValuesRegistry {
4
- private readonly values: Map<string, any> = new Map();
5
-
6
- has(scope: Scope, property: string): boolean {
7
- return this.values.has(scope.toString() + property);
8
- }
9
-
10
- get(scope: Scope, property: string): any {
11
- if (this.values.has(scope.toString() + property)) {
12
- return this.values.get(scope.toString() + property);
13
- }
14
- throw new Error(`Property ${property} does not exist`);
15
- }
16
-
17
- set(scope: Scope, property: string, value: any) {
18
- this.values.set(scope.toString() + property, value);
19
- }
20
-
21
- clear(scope: Scope, property: string) {
22
- this.values.delete(scope.toString() + property);
23
- }
24
- }
25
-
26
- export default new ScopedValuesRegistry();
@@ -1,28 +0,0 @@
1
- import { Constructable } from '../types';
2
- import graphRegistry from '../graph/registry/GraphRegistry';
3
- import { ObjectGraph } from '../graph/ObjectGraph';
4
-
5
- const injectionMetadataKey = 'injectionMetadata';
6
-
7
- export function Injectable<T extends { new(...args: any[]): any }>(Graph: Constructable<ObjectGraph>): any {
8
- return (Target: T) => {
9
- const proxy = {
10
- construct(target: any, args: any[], newTarget: any): new() => {} {
11
- const keysToInject: string[] = Reflect.getMetadata(injectionMetadataKey, target) ?? [];
12
-
13
- const createdObject = Reflect.construct(target, args, newTarget);
14
- const graph = graphRegistry.resolve(Graph);
15
- for (const key of keysToInject) {
16
- Reflect.set(createdObject, key, graph.retrieve(key));
17
- }
18
- return createdObject;
19
- },
20
- };
21
- return new Proxy(Target, proxy);
22
- };
23
- }
24
-
25
- export function Inject(target: Object, propertyKey: string) {
26
- const keysToInject = Reflect.getMetadata(injectionMetadataKey, target.constructor) ?? new Set();
27
- Reflect.defineMetadata(injectionMetadataKey, keysToInject.add(propertyKey), target.constructor);
28
- }
@@ -1,12 +0,0 @@
1
- import _ from 'lodash';
2
-
3
- /* eslint-disable no-param-reassign */
4
- export function autobind(target: Record<string, any>) {
5
- const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(target));
6
- methods
7
- .filter((method) => (method !== 'constructor'))
8
- .filter((method) => _.isFunction(target[method]))
9
- .forEach((method) => {
10
- target[method] = target[method].bind(target);
11
- });
12
- }
@@ -1,47 +0,0 @@
1
- /* eslint-disable no-param-reassign */
2
- import { ClassMethod, Decorator, Program } from '@babel/types';
3
- import { NodePath, PluginObj } from '@babel/core';
4
- import {
5
- addNameToProviderArguments,
6
- getDecoratorName,
7
- getProviderDecorator,
8
- paramsToDestructuringAssignment,
9
- providerIsNotNamed,
10
- } from './helpers';
11
-
12
- const providerArgumentsTransformer: PluginObj = {
13
- visitor: {
14
- Program(path: NodePath<Program>) {
15
- path.traverse(internalVisitor);
16
- },
17
- },
18
- };
19
-
20
- const internalVisitor = {
21
- ClassMethod: {
22
- enter({ node }: NodePath<ClassMethod>) {
23
- const decorator = getProviderDecorator(node.decorators);
24
- if (getDecoratorName(decorator) === 'Provides') {
25
- convertProviderParamsToDestructuringAssignment(node);
26
- saveUnmangledMethodNameInProviderArguments(node, decorator!);
27
- }
28
- },
29
- },
30
- };
31
-
32
- function convertProviderParamsToDestructuringAssignment(node: ClassMethod) {
33
- if (node.params.length === 0) return;
34
- const destructuredParams = paramsToDestructuringAssignment(node.params);
35
- node.params.length = 0;
36
- node.params.push(destructuredParams);
37
- }
38
-
39
- function saveUnmangledMethodNameInProviderArguments(node: ClassMethod, decorator: Decorator) {
40
- if (providerIsNotNamed(decorator)) {
41
- addNameToProviderArguments(node, decorator);
42
- }
43
- }
44
-
45
- export default function plugin() {
46
- return providerArgumentsTransformer;
47
- }