Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace Tora

Copyright (c) Plank Root.

This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.

Index

Common Annotation

Router Request

Router Modifier

Router Extend

Trigger Annotation

Tora Core

Common Annotation

Disabled

  • Disabled(disabled_options?: GenericTypeOfCustomMeta<typeof DisabledMeta>): (target: any, key?: string) => void
  • 用于标记一个 Class 或者 Class 中的一个方法为无效的。

    目前支持这个装饰器的位置只有 ToraRouter 中标记了 @Get,@Post 等装饰器的方法。
    无效化的是将该函数添加进处理函数列表的操作。

    import { Disabled, Post, ToraRouter } from 'tora'
    
    @ToraRouter('/')
    class TestRouter {
    
        constructor() {
        }
    
        // 这里标记为 `@Disabled()` 之后,加载 `TestRouter` 时,test 方法,将不会添加为监听函数。
        @Disabled()
        @Post()
        async test() {
            return 'OK'
        }
    }
    

    Parameters

    • Optional disabled_options: GenericTypeOfCustomMeta<typeof DisabledMeta>

      目前没有可用的选项内容,后续可能会添加一些。

    Returns (target: any, key?: string) => void

      • (target: any, key?: string): void
      • Parameters

        • target: any
        • Optional key: string

        Returns void

EchoDependencies

  • EchoDependencies(): (target: any, property_key?: string) => void
  • 这是一个调试用的装饰器。
    在一个 Tora 组件上使用 @EchoDependencies 会在加载组件时将入参类型打印到控制台。
    这里的类型是指在被 Inject 装饰器替换之前的。

    注意:由于在执行方法装饰器时无法拿到类名,所以使用 EchoDependencies 输出方法参数时,必须在 class 上同时使用。单独使用在方法上的 EchoDependencies 不会输出任何内容。

    import { Disabled, Post, ToraRouter, EchoDependencies, SessionContext, ApiParams } from 'tora'
    
    /**
     * 加载时会输出:
     * TestRouter dependencies [
     *      [class SomeDependency1],
     *      [class SomeDependency2],
     *      [class SomeDependency3],
     * ]
     */
    @EchoDependencies()
    @ToraRouter('/')
    class TestRouter {
    
        constructor(
            private dependency1: SomeDependency1,
            private dependency2: SomeDependency2,
            private dependency3: SomeDependency3,
        ) {
        }
    
        /**
         * 加载时会输出:
         * TestRouter.test dependencies [
         *     [class SessionContext],
         *     [class ApiParams extends Judgement]
         * ]
         */
        @EchoDependencies()
        @Post()
        async test(
            cs: SessionContext,
            params: ApiParams<{
                a: string
                b: number
            }>
        ) {
            return 'OK'
        }
    }
    

    Returns (target: any, property_key?: string) => void

      • (target: any, property_key?: string): void
      • Parameters

        • target: any
        • Optional property_key: string

        Returns void

Inject

  • Inject(token: any): (proto: any, key: string, index: number) => void
  • 当你需要使用 Class 和 Enum 以外的值进行依赖查找时,可以使用此装饰器。

    比如使用一些特殊的字符串。

    在 typescript 中实现依赖注入时,用来查找依赖项的 token 需要满足条件:即是值,又是类型

    在当前的 typescript 版本中(< 4.2.3),满足这个条件的概念只有 Class 和 Enum。

    要使用其他的值表示类型单纯通过 reflect-metadata 就做不到了。@Inject 就是一种辅助实现方式。

    在使用 @Inject 进行注入查找前需要先注册一个 Provider

    import { Post, ToraRouter } from 'tora'
    
    @ToraRouter('/', {
        providers: [
            // 这里进行注册。
            { provide: 'some_token', useValue: 'value_of_some_token' }
        ]
    })
    class TestRouter {
    
        constructor() {
        }
    
        @Post()
        async test(
            @Inject('some_token') params: string,
        ) {
            console.log(params) // 这里会打印 'value_of_some_token'。
            return 'OK'
        }
    }
    

    Parameters

    • token: any

      任何可以通过 === 进行相等判断的值。一般会选择具有某些含义的字符串。

    Returns (proto: any, key: string, index: number) => void

      • (proto: any, key: string, index: number): void
      • Parameters

        • proto: any
        • key: string
        • index: number

        Returns void

Meta

  • Meta<T>(meta: T): (target: any) => void
  • 向 Class 标记一些自定义元信息,在自定义装饰器工具 AnnotationTools 中会很有用。

    使用方式参考 AnnotationTools.create_decorator

    Type parameters

    • T: object = any

    Parameters

    • meta: T

    Returns (target: any) => void

      • (target: any): void
      • Parameters

        • target: any

        Returns void

Router Request

Delete

  • 将 Tora.ToraRouter 中的一个方法标记为 DELETE 请求处理函数。

    Type parameters

    • T: string

    Parameters

    Returns (target: any, key: string, desc: PropertyDescriptor) => void

      • (target: any, key: string, desc: PropertyDescriptor): void
      • Parameters

        • target: any
        • key: string
        • desc: PropertyDescriptor

        Returns void

Get

  • 将 Tora.ToraRouter 中的一个方法标记为 GET 请求处理函数。

    Type parameters

    • T: string

    Parameters

    Returns (target: any, key: string, desc: PropertyDescriptor) => void

      • (target: any, key: string, desc: PropertyDescriptor): void
      • Parameters

        • target: any
        • key: string
        • desc: PropertyDescriptor

        Returns void

Post

  • 将 Tora.ToraRouter 中的一个方法标记为 POST 请求处理函数。

    Type parameters

    • T: string

    Parameters

    Returns (target: any, key: string, desc: PropertyDescriptor) => void

      • (target: any, key: string, desc: PropertyDescriptor): void
      • Parameters

        • target: any
        • key: string
        • desc: PropertyDescriptor

        Returns void

Put

  • 将 Tora.ToraRouter 中的一个方法标记为 PUT 请求处理函数。

    Type parameters

    • T: string

    Parameters

    Returns (target: any, key: string, desc: PropertyDescriptor) => void

      • (target: any, key: string, desc: PropertyDescriptor): void
      • Parameters

        • target: any
        • key: string
        • desc: PropertyDescriptor

        Returns void

Router Modifier

Auth

  • Auth(): (target: any, key: string) => void
  • 将 Tora.ToraRouter 中的一个请求处理函数标记为需要进行授权。

    Returns (target: any, key: string) => void

      • (target: any, key: string): void
      • Parameters

        • target: any
        • key: string

        Returns void

CacheWith

  • CacheWith(prefix?: string, expires?: number): (target: any, key: string) => void
  • 将 Tora.ToraRouter 中的一个请求处理函数标记为结果需要进行缓存。

    Parameters

    • Optional prefix: string
    • Optional expires: number

    Returns (target: any, key: string) => void

      • (target: any, key: string): void
      • Parameters

        • target: any
        • key: string

        Returns void

NoWrap

  • NoWrap(): (target: any, key: string) => void
  • 将 Tora.ToraRouter 中的一个请求处理函数标记为结果不需要进行 wrap 操作。

    Returns (target: any, key: string) => void

      • (target: any, key: string): void
      • Parameters

        • target: any
        • key: string

        Returns void

Router Extend

Gunslinger

Trigger Annotation

Lock

  • Lock(lock_options?: GenericTypeOfCustomMeta<typeof LockMeta>): (target: any, property_key: string) => void
  • 将 Tora.ToraTrigger 中的一个任务标记为需要上锁。
    通过实现 TaskLock 并注入服务来实现任务的锁机制。

    import { ToraTrigger, Task } from 'tora'
    
    @ToraTrigger({
        providers: [
            // 这里的 SomeTaskLockImpl 需要自己实现。
            { provide: TaskLock, useClass: SomeTaskLockImpl },
        ]
    })
    class TestTrigger {
    
        constructor() {
        }
    
        /**
         * @Lock: 这里标记了锁的元信息,使用 key 唯一确定一把锁,并期望 300 秒后锁自动解开。
         *        具体的锁行为通过实现 TaskLock 类,并注入服务实现。
         * @Taks: 这里的 @Task 将 `TestTrigger.test` 标记为一个定时任务。
         *        '*\/5 * * * *' 表示每 5 分钟执行一次。
         */
        @Lock({ key: 'some_unique_key', expires: 300 })
        @Task('*/5 * * * *')
        async test() {
            console.log('do something.')
        }
    }
    

    Parameters

    • Optional lock_options: GenericTypeOfCustomMeta<typeof LockMeta>

    Returns (target: any, property_key: string) => void

      • (target: any, property_key: string): void
      • Parameters

        • target: any
        • property_key: string

        Returns void

Task

  • Task(crontab: string, options?: ScheduleOptions): (target: any, key: string, desc: PropertyDescriptor) => void
  • 将 Tora.ToraTrigger 中的一个方法标记为一个任务。

    Parameters

    • crontab: string

      任务计划

    • Optional options: ScheduleOptions

    Returns (target: any, key: string, desc: PropertyDescriptor) => void

      • (target: any, key: string, desc: PropertyDescriptor): void
      • Parameters

        • target: any
        • key: string
        • desc: PropertyDescriptor

        Returns void

Tora Core

ToraModule

  • 把一个类标记为 Tora.ToraModule,并提供配置元数据。

    import { Tora } from 'tora'
    
    @Tora.Module({
        imports: [
            SampleDependency1,
            SampleDependency2,
        ],
        providers: [
            SampleComponent1,
            SampleComponent2,
        ],
    })
    class SampleModule {
    
    }
    

    Parameters

    Returns (target: any) => void

      • (target: any): void
      • Parameters

        • target: any

        Returns void

ToraRoot

  • 把一个类标记为 Tora.ToraRoot,并提供配置元数据。

    import { Tora } from 'tora'
    
    @Tora.ToraRoot({
        imports: [
            SampleDependency1,
            SampleDependency2,
        ],
        providers: [
            SampleComponent1,
            SampleComponent2,
        ],
        routers: [
            SampleToraRouter1,
            SampleToraRouter2,
        ],
        tasks: [
            SampleToraTrigger1,
            SampleToraTrigger2,
        ]
    })
    class SampleRoot {
    
    }
    

    Parameters

    Returns (target: any) => void

      • (target: any): void
      • Parameters

        • target: any

        Returns void

ToraRouter

  • ToraRouter(path: `/${string}`, options?: ToraRouterOptions): (constructor: any) => void
  • 把一个类标记为 Tora.ToraRouter,并配置元数据。

    import { Tora } from 'tora'
    
    @Tora.Router('/test', {
        imports: [
            SampleDependency1,
            SampleDependency2,
        ],
        providers: [
            SampleComponent1,
            SampleComponent2,
        ],
    })
    export class SampleRouter {
    
        constructor(
            public sc1: SampleComponent1,
            private sc2: SampleComponent2,
        ) {
        }
    
        @Get('test-get')
        async test_get_method() {
            return 'OK'
        }
    }
    

    Parameters

    Returns (constructor: any) => void

      • (constructor: any): void
      • Parameters

        • constructor: any

        Returns void

ToraService

  • 把一个类标记为 Tora.ToraService。

    import { Tora } from 'tora'
    
    @Tora.Component()
    export class SampleUserService {
    
        constructor(
            private uuid: UUID,
            private user: SampleUserDao,
        ) {
        }
    
        async create(phone: string, name: string) {
            return this.user.insert({
                id: this.uuid.create(),
                phone: phone,
                name: name,
                created_at: new Date().getTime()
            })
        }
    }
    

    Parameters

    Returns (target: any) => void

      • (target: any): void
      • Parameters

        • target: any

        Returns void

ToraTrigger

  • 把一个类标记为 Tora.ToraTrigger,并配置元数据。

    import { Tora } from 'tora'
    
    @Tora.Trigger({
        imports: [
            SampleDependency1,
            SampleDependency2,
        ],
        providers: [
            SampleComponent1,
            SampleComponent2,
        ],
    })
    export class SampleTrigger {
    
        constructor(
            public sc1: SampleComponent1,
            private sc2: SampleComponent2,
        ) {
        }
    
        @Task('*/5 * * * *')
        async sample_task() {
            this.sc1.do_something()
            this.sc2.do_something()
            return 'OK'
        }
    }
    

    Parameters

    Returns (constructor: any) => void

      • (constructor: any): void
      • Parameters

        • constructor: any

        Returns void

Generated using TypeDoc