( meta: R3ServiceMetadata, resolveForwardRefs: boolean, )
| 21 | } |
| 22 | |
| 23 | export function compileService( |
| 24 | meta: R3ServiceMetadata, |
| 25 | resolveForwardRefs: boolean, |
| 26 | ): R3CompiledExpression { |
| 27 | const def = new DefinitionMap<{ |
| 28 | token: o.Expression; |
| 29 | factory: o.Expression; |
| 30 | autoProvided: o.Expression; |
| 31 | }>(); |
| 32 | def.set('token', meta.type.value); |
| 33 | def.set( |
| 34 | 'factory', |
| 35 | meta.factory === undefined |
| 36 | ? delegateToFactory( |
| 37 | meta.type.value as o.WrappedNodeExpr<any>, |
| 38 | meta.type.value as o.WrappedNodeExpr<any>, |
| 39 | resolveForwardRefs, |
| 40 | ) |
| 41 | : o.arrowFn([], meta.factory.callFn([])), |
| 42 | ); |
| 43 | |
| 44 | // Only generate providedIn property if it's different from the default. |
| 45 | if (meta.autoProvided === false) { |
| 46 | def.set('autoProvided', o.literal(false)); |
| 47 | } |
| 48 | |
| 49 | const expression = o |
| 50 | .importExpr(Identifiers.defineService) |
| 51 | .callFn([def.toLiteralMap()], undefined, true); |
| 52 | |
| 53 | return { |
| 54 | expression, |
| 55 | type: createInjectableType(meta.type.type, meta.typeArgumentCount), |
| 56 | statements: [], |
| 57 | }; |
| 58 | } |
no test coverage detected
searching dependent graphs…