amplify-codegen
amplify-codegen copied to clipboard
Angular API.service.ts TS2352 errors from codegen
Before opening, please confirm:
- [X] I have searched for duplicate or closed issues and discussions.
- [X] I have read the guide for submitting bug reports.
- [X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
JavaScript Framework
Angular
Amplify APIs
GraphQL API
Amplify Categories
api
Environment information
System:
OS: macOS 13.0.1
CPU: (10) arm64 Apple M1 Max
Memory: 14.54 GB / 64.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.12.0 - ~/.asdf/installs/nodejs/16.12.0/bin/node
Yarn: 1.22.19 - ~/.asdf/installs/nodejs/16.12.0/bin/yarn
npm: 9.1.1 - ~/.asdf/plugins/nodejs/shims/npm
Browsers:
Chrome: 107.0.5304.110
Firefox: 100.0
npmPackages:
@angular-devkit/build-angular: ^14.2.9 => 14.2.9
@angular/animations: ^14.2.0 => 14.2.10
@angular/cli: ~14.2.9 => 14.2.9
@angular/common: ^14.2.0 => 14.2.10
@angular/compiler: ^14.2.0 => 14.2.10
@angular/compiler-cli: ^14.2.0 => 14.2.10
@angular/core: ^14.2.0 => 14.2.10
@angular/forms: ^14.2.0 => 14.2.10
@angular/platform-browser: ^14.2.0 => 14.2.10
@angular/platform-browser-dynamic: ^14.2.0 => 14.2.10
@angular/router: ^14.2.0 => 14.2.10
@aws-amplify/api-graphql: ^3.0.1 => 3.0.1
@aws-amplify/auth: ^5.0.1 => 5.0.1
@aws-amplify/core: ^5.0.1 => 5.0.1
@aws-amplify/datastore: ^4.0.1 => 4.0.1
@aws-amplify/storage: ^5.0.1 => 5.0.1
@aws-amplify/ui-angular: ^3.0.0 => 3.0.0
@types/jasmine: ~4.0.0 => 4.0.3
jasmine-core: ~4.3.0 => 4.3.0
karma: ~6.4.0 => 6.4.1
karma-chrome-launcher: ~3.1.0 => 3.1.1
karma-coverage: ~2.2.0 => 2.2.0
karma-jasmine: ~5.1.0 => 5.1.0
karma-jasmine-html-reporter: ~2.0.0 => 2.0.0
rxjs: ~7.5.0 => 7.5.7 (6.6.7)
rxjs/ajax: undefined ()
rxjs/fetch: undefined ()
rxjs/internal-compatibility: undefined ()
rxjs/operators: undefined ()
rxjs/testing: undefined ()
rxjs/webSocket: undefined ()
tslib: ^2.3.0 => 2.4.1 (1.14.1)
typescript: ~4.7.2 => 4.7.4
zen-observable-ts: ^1.1.0 => 1.1.0
zone.js: ~0.11.4 => 0.11.8
npmGlobalPackages:
@angular/cli: 14.2.9
@aws-amplify/cli: 10.4.1
corepack: 0.15.1
npm-check-updates: 16.4.1
npm: 9.1.1
sass: 1.56.1
Describe the bug
Error: src/app/API.service.ts:1388:12 - error TS2352: Conversion of type 'Observable<GraphQLResult<any>> | Promise<GraphQLResult<any>>' to type 'Observable<SubscriptionResponse<Pick<__SubscriptionContainer, "onUpdateComment">>>' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
Type 'Promise<GraphQLResult<any>>' is missing the following properties from type 'Observable<SubscriptionResponse<Pick<__SubscriptionContainer, "onUpdateComment">>>': subscribe, forEach, map, filter, and 4 more.
1388 return API.graphql(
~~~~~~~~~~~~
1389 graphqlOperation(statement, gqlAPIServiceArguments)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
1391 SubscriptionResponse<Pick<__SubscriptionContainer, "onUpdateComment">>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1392 >;
These repeat mostly for all GraphQLResults at bottom of file. Fails to compile. I attempted to roll back to older versions but have not made it go away.
Expected behavior
It compiles w/o error.
Reproduction steps
- Installed Node 16+, Angular 14+, Amplify CLI
- Created ng new 14Test project
- amplify init
- amplify add api
- Used graphql, boilerplate example
- performed codegen
- API.service.ts created
- add to project
- ng s -o (serve and open) - fails
I've attempted to roll back to older versions of @aws-amplify/api-graphql but that did not have any effect.
Code Snippet
OnCreateBlogListener(
filter?: ModelSubscriptionBlogFilterInput
): Observable<
SubscriptionResponse<Pick<__SubscriptionContainer, "onCreateBlog">>
> {
const statement = `subscription OnCreateBlog($filter: ModelSubscriptionBlogFilterInput) {
onCreateBlog(filter: $filter) {
__typename
id
name
posts {
__typename
nextToken
}
createdAt
updatedAt
}
}`;
const gqlAPIServiceArguments: any = {};
if (filter) {
gqlAPIServiceArguments.filter = filter;
}
return API.graphql(
graphqlOperation(statement, gqlAPIServiceArguments)
) as Observable<
SubscriptionResponse<Pick<__SubscriptionContainer, "onCreateBlog">>
>;
}
Log output
// Put your logs below this line
aws-exports.js
No response
Manual configuration
No response
Additional configuration
No response
Mobile Device
No response
Mobile Operating System
No response
Mobile Browser
No response
Mobile Browser Version
No response
Additional information and screenshots
No response
Believe I found a old project which uses: "@aws-amplify/api-graphql": "^2.3.6", "@aws-amplify/auth": "^4.5.6", "@aws-amplify/core": "^4.5.6", "zen-observable-ts": "0.8.19", <-- may be the better version vs 1.1.0
Ok so rolling back zen-observable-ts fixed graphql.
"@aws-amplify/storage": "^5.0.1", <-- Rolled back to 3.3.4 as this is a major update. Rework needed.
Comment: So going thru this on a new package the modular @aws-amplify/* don't get added to package.json. And pulling down latest zen-observable-ts seems to break current version of graphql. In case someone else runs into this rolling back to 0.8.19 fixed my graphql issues.