examples to new tsrpc-cli
This commit is contained in:
@@ -4,22 +4,22 @@
|
||||
"main": "index.js",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"proto": "tsrpc proto -i src/shared/protocols -o src/shared/protocols/serviceProto.ts",
|
||||
"sync": "tsrpc sync --from src/shared --to ../frontend/src/shared",
|
||||
"api": "tsrpc api -i src/shared/protocols/serviceProto.ts -o src/api",
|
||||
"dev": "onchange \"src/**/*.ts\" -i -k -- ts-node \"src/index.ts\"",
|
||||
"build": "tsrpc build"
|
||||
"proto": "tsrpc proto --config tsrpc.config.ts",
|
||||
"sync": "tsrpc sync --config tsrpc.config.ts",
|
||||
"api": "tsrpc api --config tsrpc.config.ts",
|
||||
"dev": "tsrpc dev --config tsrpc.config.ts",
|
||||
"build": "tsrpc build --config tsrpc.config.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^15.12.3",
|
||||
"@types/uuid": "^8.3.0",
|
||||
"@types/node": "^15.14.9",
|
||||
"@types/uuid": "^8.3.1",
|
||||
"onchange": "^7.1.0",
|
||||
"ts-node": "^9.1.1",
|
||||
"tsrpc-cli": "^2.0.3",
|
||||
"typescript": "^4.3.4"
|
||||
"tsrpc-cli": "^2.0.8",
|
||||
"typescript": "^4.4.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"tsrpc": "^3.0.2",
|
||||
"tsrpc": "^3.0.9",
|
||||
"uuid": "^8.3.2"
|
||||
}
|
||||
}
|
||||
|
36
examples/session-and-cookie/backend/tsrpc.config.ts
Normal file
36
examples/session-and-cookie/backend/tsrpc.config.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { TsrpcConfig } from 'tsrpc-cli';
|
||||
|
||||
const tsrpcConf: TsrpcConfig = {
|
||||
// Generate ServiceProto
|
||||
proto: [
|
||||
{
|
||||
ptlDir: 'src/shared/protocols', // Protocol dir
|
||||
output: 'src/shared/protocols/serviceProto.ts', // Path for generated ServiceProto
|
||||
apiDir: 'src/api' // API dir
|
||||
}
|
||||
],
|
||||
// Sync shared code
|
||||
sync: [
|
||||
{
|
||||
from: 'src/shared',
|
||||
to: '../frontend/src/shared',
|
||||
type: 'symlink' // Change this to 'copy' if your environment not support symlink
|
||||
}
|
||||
],
|
||||
// Dev server
|
||||
dev: {
|
||||
autoProto: true, // Auto regenerate proto
|
||||
autoSync: true, // Auto sync when file changed
|
||||
autoApi: true, // Auto create API when ServiceProto updated
|
||||
watch: 'src', // Restart dev server when these files changed
|
||||
entry: 'src/index.ts', // Dev server command: node -r ts-node/register {entry}
|
||||
},
|
||||
// Build config
|
||||
build: {
|
||||
autoProto: true, // Auto generate proto before build
|
||||
autoSync: true, // Auto sync before build
|
||||
autoApi: true, // Auto generate API before build
|
||||
outDir: 'dist', // Clean this dir before build
|
||||
}
|
||||
}
|
||||
export default tsrpcConf;
|
@@ -7,15 +7,15 @@
|
||||
"build": "webpack --mode=production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"copy-webpack-plugin": "^9.0.0",
|
||||
"html-webpack-plugin": "^5.3.1",
|
||||
"ts-loader": "^9.2.3",
|
||||
"typescript": "^4.3.4",
|
||||
"webpack": "^5.39.1",
|
||||
"webpack-cli": "^4.7.2",
|
||||
"copy-webpack-plugin": "^9.0.1",
|
||||
"html-webpack-plugin": "^5.3.2",
|
||||
"ts-loader": "^9.2.6",
|
||||
"typescript": "^4.4.3",
|
||||
"webpack": "^5.57.1",
|
||||
"webpack-cli": "^4.9.0",
|
||||
"webpack-dev-server": "^3.11.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"tsrpc-browser": "^3.0.3"
|
||||
"tsrpc-browser": "^3.0.7"
|
||||
}
|
||||
}
|
||||
|
1
examples/session-and-cookie/frontend/src/shared
Symbolic link
1
examples/session-and-cookie/frontend/src/shared
Symbolic link
@@ -0,0 +1 @@
|
||||
../../backend/src/shared
|
@@ -1,9 +0,0 @@
|
||||
import { BaseRequest, BaseResponse } from './base';
|
||||
|
||||
export interface ReqClear extends BaseRequest {
|
||||
|
||||
}
|
||||
|
||||
export interface ResClear extends BaseResponse {
|
||||
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
import { BaseRequest, BaseResponse } from './base'
|
||||
|
||||
export interface ReqSetCookie extends BaseRequest {
|
||||
|
||||
}
|
||||
|
||||
export interface ResSetCookie extends BaseResponse {
|
||||
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
import { BaseRequest, BaseResponse } from './base'
|
||||
|
||||
export interface ReqSetSession extends BaseRequest {
|
||||
|
||||
}
|
||||
|
||||
export interface ResSetSession extends BaseResponse {
|
||||
|
||||
}
|
@@ -1,10 +0,0 @@
|
||||
import { BaseRequest, BaseResponse } from './base';
|
||||
|
||||
export interface ReqTest extends BaseRequest {
|
||||
|
||||
}
|
||||
|
||||
export interface ResTest extends BaseResponse {
|
||||
// From Session
|
||||
testSession?: string
|
||||
}
|
@@ -1,12 +0,0 @@
|
||||
export interface BaseRequest {
|
||||
__cookie?: Cookie;
|
||||
}
|
||||
|
||||
export interface BaseResponse {
|
||||
__cookie?: Cookie;
|
||||
}
|
||||
|
||||
export interface Cookie {
|
||||
sessionId?: string,
|
||||
[key: string]: any
|
||||
}
|
@@ -1,209 +0,0 @@
|
||||
import { ServiceProto } from 'tsrpc-proto';
|
||||
import { ReqClear, ResClear } from './PtlClear';
|
||||
import { ReqSetCookie, ResSetCookie } from './PtlSetCookie';
|
||||
import { ReqSetSession, ResSetSession } from './PtlSetSession';
|
||||
import { ReqTest, ResTest } from './PtlTest';
|
||||
|
||||
export interface ServiceType {
|
||||
api: {
|
||||
"Clear": {
|
||||
req: ReqClear,
|
||||
res: ResClear
|
||||
},
|
||||
"SetCookie": {
|
||||
req: ReqSetCookie,
|
||||
res: ResSetCookie
|
||||
},
|
||||
"SetSession": {
|
||||
req: ReqSetSession,
|
||||
res: ResSetSession
|
||||
},
|
||||
"Test": {
|
||||
req: ReqTest,
|
||||
res: ResTest
|
||||
}
|
||||
},
|
||||
msg: {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export const serviceProto: ServiceProto<ServiceType> = {
|
||||
"services": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Clear",
|
||||
"type": "api"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "SetCookie",
|
||||
"type": "api"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "SetSession",
|
||||
"type": "api"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "Test",
|
||||
"type": "api"
|
||||
}
|
||||
],
|
||||
"types": {
|
||||
"PtlClear/ReqClear": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseRequest"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"base/BaseRequest": {
|
||||
"type": "Interface",
|
||||
"properties": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "__cookie",
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/Cookie"
|
||||
},
|
||||
"optional": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"base/Cookie": {
|
||||
"type": "Interface",
|
||||
"properties": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "sessionId",
|
||||
"type": {
|
||||
"type": "String"
|
||||
},
|
||||
"optional": true
|
||||
}
|
||||
],
|
||||
"indexSignature": {
|
||||
"keyType": "String",
|
||||
"type": {
|
||||
"type": "Any"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PtlClear/ResClear": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseResponse"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"base/BaseResponse": {
|
||||
"type": "Interface",
|
||||
"properties": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "__cookie",
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/Cookie"
|
||||
},
|
||||
"optional": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlSetCookie/ReqSetCookie": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseRequest"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlSetCookie/ResSetCookie": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseResponse"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlSetSession/ReqSetSession": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseRequest"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlSetSession/ResSetSession": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseResponse"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlTest/ReqTest": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseRequest"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"PtlTest/ResTest": {
|
||||
"type": "Interface",
|
||||
"extends": [
|
||||
{
|
||||
"id": 0,
|
||||
"type": {
|
||||
"type": "Reference",
|
||||
"target": "base/BaseResponse"
|
||||
}
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "testSession",
|
||||
"type": {
|
||||
"type": "String"
|
||||
},
|
||||
"optional": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user