private generateInterfaces()

in projenrc/projects/type-safe-api-project.ts [127:233]


  private generateInterfaces() {
    new ProjenStruct(this, {
      name: "PartialManagedRuleGroupStatementProperty",
      filePath: `${this.srcdir}/construct/waf/generated-types.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(
        Struct.fromFqn(
          "aws-cdk-lib.aws_wafv2.CfnWebACL.ManagedRuleGroupStatementProperty"
        )
      )
      .withoutDeprecated()
      .allOptional()
      .update("name", { optional: false })
      .omit("vendorName");

    new ProjenStruct(this, {
      name: "WebSocketApiProps",
      filePath: `${this.srcdir}/construct/websocket/websocket-api-props.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("aws-cdk-lib.aws_apigatewayv2.WebSocketApiProps"))
      .withoutDeprecated()
      .allOptional()
      .omit(
        "routeSelectionExpression",
        "connectRouteOptions",
        "disconnectRouteOptions",
        "defaultRouteOptions"
      );

    new ProjenStruct(this, {
      name: "WebSocketStageProps",
      filePath: `${this.srcdir}/construct/websocket/websocket-stage-props.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("aws-cdk-lib.aws_apigatewayv2.WebSocketStageProps"))
      .withoutDeprecated()
      .allOptional()
      .omit("webSocketApi");

    new ProjenStruct(this, {
      name: "TypeScriptProjectOptions",
      filePath: `${this.srcdir}/project/typescript-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.typescript.TypeScriptProjectOptions"))
      .allOptional();

    new ProjenStruct(this, {
      name: "JavaProjectOptions",
      filePath: `${this.srcdir}/project/java-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.java.JavaProjectOptions"))
      .allOptional();

    new ProjenStruct(this, {
      name: "PythonProjectOptions",
      filePath: `${this.srcdir}/project/python-project-options.ts`,
      outputFileOptions: {
        readonly: false, // Needed as EsLint will complain otherwise
      },
    })
      .mixin(Struct.fromFqn("projen.python.PythonProjectOptions"))
      .allOptional()
      .omit(
        "pip",
        "venv",
        "venvOptions",
        "poetry",
        "projenrcPython",
        "projenrcJs",
        "projenrcJsOptions",
        "projenrcTs",
        "projenrcTsOptions"
      );

    this.eslint?.addIgnorePattern(
      `${this.srcdir}/construct/waf/generated-types.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/construct/websocket/websocket-api-props.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/construct/websocket/websocket-stage-props.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/project/typescript-project-options.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/project/java-project-options.ts`
    );
    this.eslint?.addIgnorePattern(
      `${this.srcdir}/project/python-project-options.ts`
    );
  }