-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[typescript-angular] Added support for Angular v6 (by adding support for RxJS v6) #8155
Changes from 4 commits
887afa8
d1328f5
e6bc740
03b955b
e0a5019
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
#!/bin/sh | ||
|
||
SCRIPT="$0" | ||
|
||
while [ -h "$SCRIPT" ] ; do | ||
ls=`ls -ld "$SCRIPT"` | ||
link=`expr "$ls" : '.*-> \(.*\)$'` | ||
if expr "$link" : '/.*' > /dev/null; then | ||
SCRIPT="$link" | ||
else | ||
SCRIPT=`dirname "$SCRIPT"`/"$link" | ||
fi | ||
done | ||
|
||
if [ ! -d "${APP_DIR}" ]; then | ||
APP_DIR=`dirname "$SCRIPT"`/.. | ||
APP_DIR=`cd "${APP_DIR}"; pwd` | ||
fi | ||
|
||
executable="./modules/swagger-codegen-cli/target/swagger-codegen-cli.jar" | ||
|
||
if [ ! -f "$executable" ] | ||
then | ||
mvn clean package | ||
fi | ||
|
||
# if you've executed sbt assembly previously it will use that instead. | ||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" | ||
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l typescript-angular -c bin/typescript-petstore-npm.json -o samples/client/petstore/typescript-angular-v6/npm --additional-properties ngVersion=6" | ||
|
||
java $JAVA_OPTS -jar $executable $ags |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
set executable=.\modules\swagger-codegen-cli\target\swagger-codegen-cli.jar | ||
|
||
If Not Exist %executable% ( | ||
mvn clean package | ||
) | ||
|
||
REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M | ||
set ags=generate -i modules\swagger-codegen\src\test\resources\2_0\petstore.yaml -c bin\typescript-petstore-npm.json -l typescript-angular -o samples\client\petstore\typescript-angular-v6\npm --additional-properties ngVersion=6 | ||
|
||
java %JAVA_OPTS% -jar %executable% %ags% |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
## @swagger/[email protected] | ||
## @ | ||
|
||
### Building | ||
|
||
|
@@ -19,7 +19,7 @@ Navigate to the folder of your consuming project and run one of next commands. | |
_published:_ | ||
|
||
``` | ||
npm install @swagger/[email protected] --save | ||
npm install @ --save | ||
``` | ||
|
||
_without publishing (not recommended):_ | ||
|
@@ -37,7 +37,7 @@ npm link | |
|
||
In your project: | ||
``` | ||
npm link @swagger/angular2-typescript-petstore | ||
npm link | ||
``` | ||
|
||
__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages. | ||
|
@@ -52,7 +52,7 @@ In your Angular project: | |
|
||
``` | ||
// without configuring providers | ||
import { ApiModule } from '@swagger/angular2-typescript-petstore'; | ||
import { ApiModule } from ''; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why does the package-name disappear here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not sure about this one, I believe the package name should not disappear - but I was unfortunately not proficient enough to find the root cause of this. This behaviour is probably not caused by my pull request, though. The same happens, if I run Notabene, the same happened here: https://github.com/swagger-api/swagger-codegen/pull/8102/files#diff-ad35a6b2374dd58b5781c610802426c4 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @akehir I remember that the package name appears and disappears frequently, so I think it is a problem somewhere else, certainly not cause by your PR. If I generate the samples on Windows, the package name appears. Maybe this is the difference? |
||
|
||
import { HttpModule } from '@angular/http'; | ||
|
||
|
@@ -70,7 +70,7 @@ export class AppModule {} | |
|
||
``` | ||
// configuring providers | ||
import { ApiModule, Configuration, ConfigurationParameters } from '@swagger/angular2-typescript-petstore'; | ||
import { ApiModule, Configuration, ConfigurationParameters } from ''; | ||
|
||
export function apiConfigFactory (): Configuration => { | ||
const params: ConfigurationParameters = { | ||
|
@@ -89,7 +89,7 @@ export class AppModule {} | |
``` | ||
|
||
``` | ||
import { DefaultApi } from '@swagger/angular2-typescript-petstore'; | ||
import { DefaultApi } from ''; | ||
|
||
export class AppComponent { | ||
constructor(private apiGateway: DefaultApi) { } | ||
|
@@ -126,7 +126,7 @@ export class AppModule { | |
If different than the generated base path, during app bootstrap, you can provide the base path to your service. | ||
|
||
``` | ||
import { BASE_PATH } from '@swagger/angular2-typescript-petstore'; | ||
import { BASE_PATH } from ''; | ||
|
||
bootstrap(AppComponent, [ | ||
{ provide: BASE_PATH, useValue: 'https://your-web-service.com' }, | ||
|
@@ -135,7 +135,7 @@ bootstrap(AppComponent, [ | |
or | ||
|
||
``` | ||
import { BASE_PATH } from '@swagger/angular2-typescript-petstore'; | ||
import { BASE_PATH } from ''; | ||
|
||
@NgModule({ | ||
imports: [], | ||
|
@@ -159,7 +159,7 @@ export const environment = { | |
|
||
In the src/app/app.module.ts: | ||
``` | ||
import { BASE_PATH } from '@swagger/angular2-typescript-petstore'; | ||
import { BASE_PATH } from ''; | ||
import { environment } from '../environments/environment'; | ||
|
||
@NgModule({ | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,8 +11,7 @@ | |
*/ | ||
import { Headers } from '@angular/http'; | ||
|
||
import { Observable } from 'rxjs/Observable'; | ||
|
||
import { Observable } from 'rxjs/Observable'; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. did you re-generate the v2 sample files? this line should not change... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I re-generated by using |
||
|
||
import { User } from '../model/user'; | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the
import '../rxjs-operators';
should be moved inside the{{^useRxJS6}}{{/useRxJS6}}
block, see my general review comment.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, if I misunderstood, the rxjs-operators is imported in a
{{^useHttpClient}} {{/useHttpClient}}
- I (wrongly?) thought, this meant that these imports are only used if angular is older than 4.3, and that after 4.3 they are not imported anymore.For RxJS 6.1, the operators would need to be imported differently, if they are used - see: https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#howto-convert-to-pipe-syntax .
From what I can see, actually, of the operators, throw & catch are not used by the api service, only map is. However I just found out, that at least at one point map is used, which will need to be converted to a .pipe( map( ()=> {}), ) for rxjs 6. Let me update the PR and get back to you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, you are right, I missed that it is in a
{{^useHttpClient}}{{/useHttpClient}}
block.you don't need to convert the
.map()
to.pipe(map())
, since it is only used is here: https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/resources/typescript-angular/api.service.mustache#L89And since this line is only used for Angular <4.3, it should be fine as it is
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My bad, I misread. You want to move it to the
{{^useRxJS6}}{{/useRxJS6}}
block, which makes sense. I'll update the PR.The .map is only used in a
{{^useHttpClient}} {{/useHttpClient}}
block, so not relevant to angular 6.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
actually I think we shouldn't move it to the
{{^useRxJS6}}{{/useRxJS6}}
block, since this would also affect Angular>=4.3
and<6
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After moving it, angular 5 test fails =(
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, that's what I thought would happen. so you can simply ignore the initial review comment that stated