version: v1
managed:
  enabled: true
  go_package_prefix:
    default: github.com/usememos/memos/proto/gen
    except:
      - buf.build/googleapis/googleapis
plugins:
  - plugin: buf.build/protocolbuffers/go:v1.31.0
    out: gen
    opt:
      - paths=source_relative
  - plugin: buf.build/grpc/go:v1.3.0
    out: gen
    opt:
      - paths=source_relative
  - plugin: buf.build/grpc-ecosystem/gateway:v2.16.1
    out: gen
    opt:
      - paths=source_relative
  - plugin: buf.build/grpc-ecosystem/openapiv2:v2.19.0
    out: ../server/route/api/v2/
    opt: output_format=yaml,allow_merge=true
  # Build the TypeScript definitions for the web.
  - plugin: buf.build/community/stephenh-ts-proto:v1.152.1
    out: ../web/src/types/proto
    # reference: https://github.com/deeplay-io/nice-grpc/blob/master/packages/nice-grpc-web/README.md#using-ts-proto
    opt:
      - env=browser
      - useOptionals=messages
      - outputServices=generic-definitions
      - outputJsonMethods=false
      - useExactTypes=false
      - esModuleInterop=true
      - stringEnums=true
  - plugin: buf.build/community/pseudomuto-doc:v1.5.1
    out: gen
    opt:
      - markdown,README.md,source_relative
