Skip to content
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

GraphQL mapped types composition not displaying properties #3313

Open
3 of 15 tasks
pedroaraujo1952 opened this issue Aug 22, 2024 · 1 comment
Open
3 of 15 tasks

GraphQL mapped types composition not displaying properties #3313

pedroaraujo1952 opened this issue Aug 22, 2024 · 1 comment

Comments

@pedroaraujo1952
Copy link

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

  1. Use nest-cli.json compilerOptions.builder.swc:true compilerOptions.typeCheck:true
  2. Import metadata.ts file in GraphQLModule config
  3. Use a composition of GraphQL Mapped Types to a class with @InputType() decorator
@InputType()
export class UpdateInput extends PartialType(
  // PickType(CreateInput, ['description'] as const),
  // or any other mapped type like:
  OmitType(CreateInput, ['omitUpdateProperty'] as const),
) {
  @IsNumber()
  id: number;
}
  1. The generated schema (code first aproach) generate the type for the input without the properties from CreateInput class
input CreateInput {
  name: String!
  description: String!
  omitUpdateProperty: String!
}

input UpdateInput {
  id: Float!
}
  1. Using compilerOptions.builder.tsc:true works fine

Minimum reproduction code

https://github.com/pedroaraujo1952/nestjs-gql-mapped-types-error

Steps to reproduce

  1. npm ci
  2. npm run start:dev or npm run start

Expected behavior

Expected generated schema.gql:

input CreateInput {
  name: String!
  description: String!
  omitUpdateProperty: String!
}

input UpdateInput {
  name: String
  description: String
  id: Float!
}

Package

  • I don't know. Or some 3rd-party package
  • @nestjs/common
  • @nestjs/core
  • @nestjs/microservices
  • @nestjs/platform-express
  • @nestjs/platform-fastify
  • @nestjs/platform-socket.io
  • @nestjs/platform-ws
  • @nestjs/testing
  • @nestjs/websockets
  • Other (see below)

Other package

@nestjs/cli @nestjs/graphql @swc/cli

NestJS version

^10.0.0

Packages versions

{
  "name": "test-swc-graphql-cli",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@apollo/server": "^4.11.0",
    "@apollo/server-plugin-response-cache": "^4.1.3",
    "@nestjs/apollo": "^12.2.0",
    "@nestjs/common": "^10.0.0",
    "@nestjs/config": "^3.2.3",
    "@nestjs/core": "^10.0.0",
    "@nestjs/graphql": "^12.2.0",
    "@nestjs/platform-express": "^10.0.0",
    "apollo-server-cache-redis": "^3.3.1",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.1",
    "graphql": "^16.9.0",
    "ioredis": "^5.4.1",
    "reflect-metadata": "^0.2.0",
    "rxjs": "^7.8.1"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.0.0",
    "@nestjs/schematics": "^10.0.0",
    "@nestjs/testing": "^10.0.0",
    "@swc/cli": "^0.4.0",
    "@swc/core": "^1.7.14",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.2",
    "@types/node": "^20.3.1",
    "@types/supertest": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "eslint": "^8.42.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "jest": "^29.5.0",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^7.0.0",
    "ts-jest": "^29.1.0",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

Node.js version

20.17.0

In which operating systems have you tested?

  • macOS
  • Windows
  • Linux

Other

No response

@micalevisk
Copy link
Member

come one, guys. Don't spam us with those "+1 comments", use the 👍 reaction instead.

@kamilmysliwiec kamilmysliwiec transferred this issue from nestjs/nest Sep 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants