feat: add auth contract
Some checks failed
Publish / Publish npm package action (push) Failing after 7s

This commit is contained in:
Sergey Krylov 2026-01-21 05:15:53 +03:00
commit c5aedf698f
6 changed files with 144 additions and 0 deletions

View File

@ -0,0 +1,26 @@
name: Publish
on:
push:
branches:
- main
jobs:
Publish npm package action:
runs-on: ubuntu-latest
steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
- name: 'Setup dependencies'
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: 'https://git.ksv741.keenetic.pro/api/packages/teacinema/npm/'
- name: 'Install dependencies'
run: yarn install --frozen-lockfile
- name: 'Generate contracts'
run: yarn generate
- name: 'Publish to Gitea npm registry'
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
/node_modules/
dist/
build/
pnpm-lock.yaml
.env
.DS_Store
.log
.vscode/

47
gen/auth.ts Normal file
View File

@ -0,0 +1,47 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.11.0
// protoc v6.33.4
// source: auth.proto
/* eslint-disable */
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
import { Observable } from "rxjs";
export const protobufPackage = "auth.v1";
export interface SendOtpRequest {
identifier: string;
type: string;
}
export interface SendOtpResponse {
ok: boolean;
}
export const AUTH_V1_PACKAGE_NAME = "auth.v1";
export interface AuthServiceClient {
sendOtp(request: SendOtpRequest): Observable<SendOtpResponse>;
}
export interface AuthServiceController {
sendOtp(request: SendOtpRequest): Promise<SendOtpResponse> | Observable<SendOtpResponse> | SendOtpResponse;
}
export function AuthServiceControllerMethods() {
return function (constructor: Function) {
const grpcMethods: string[] = ["sendOtp"];
for (const method of grpcMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcMethod("AuthService", method)(constructor.prototype[method], method, descriptor);
}
const grpcStreamMethods: string[] = [];
for (const method of grpcStreamMethods) {
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
GrpcStreamMethod("AuthService", method)(constructor.prototype[method], method, descriptor);
}
};
}
export const AUTH_SERVICE_NAME = "AuthService";

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "@teacinema/contracts",
"version": "1.0.0",
"description": "Protocol Buffers contracts for microservices",
"scripts": {
"generate": "protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen --ts_proto_opt=nestJs=true,package=omit"
},
"files": [
"gen",
"proto"
],
"publishConfig": {
"access": "public"
},
"dependencies": {
"@nestjs/microservices": "^11.1.12",
"rxjs": "^7.8.2"
}
}

16
proto/auth.proto Normal file
View File

@ -0,0 +1,16 @@
syntax = "proto3";
package auth.v1;
service AuthService {
rpc SendOtp(SendOtpRequest) returns (SendOtpResponse);
}
message SendOtpRequest {
string identifier = 1;
string type = 2;
}
message SendOtpResponse {
bool ok = 1;
}

28
yarn.lock Normal file
View File

@ -0,0 +1,28 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@nestjs/microservices@^11.1.12":
version "11.1.12"
resolved "https://registry.yarnpkg.com/@nestjs/microservices/-/microservices-11.1.12.tgz#05c497eb5ddcae09ae8ac0d3aa1bcd0b7336816b"
integrity sha512-WhkQPvqRJukzWJ0NXE2PJuFcurejRgiPmQ2jumcphkTi/oFu/uEXfTa3Bz6CSKp3eh2fkqtG6YGPoVbUdJS9/A==
dependencies:
iterare "1.2.1"
tslib "2.8.1"
iterare@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042"
integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==
rxjs@^7.8.2:
version "7.8.2"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
dependencies:
tslib "^2.1.0"
tslib@2.8.1, tslib@^2.1.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==