{"version":3,"sources":["../src/sub-controllers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AAQrC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;CACpC;AAED,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,GAAG,eAAe,CAgCrC","file":"sub-controllers.d.ts","sourcesContent":["import * as Router from 'koa-router';\n\nimport {\n  A7ControllerMetadata,\n  A7ControllerSubsidiaryType,\n} from './declarations';\nimport { Middleware } from './decorators';\n\n/**\n * Options to define a handler.\n */\nexport interface SubControllerOptions {\n  path?: string;\n  name?: string;\n  middlewares?: Router.IMiddleware[];\n}\n\nexport function SubController(\n  options: SubControllerOptions = {},\n): PropertyDecorator & MethodDecorator {\n  const m = Middleware([]) as MethodDecorator;\n\n  return (\n    target: any,\n    propertyKey: string,\n    descriptor?: TypedPropertyDescriptor<any>,\n  ) => {\n    const desc = m(target, propertyKey, descriptor);\n\n    const cls = target.constructor;\n    const meta = A7ControllerMetadata.getMetadata(cls);\n    const subsidiary = meta.getOrCreateSubsidiary(propertyKey);\n\n    subsidiary.type = A7ControllerSubsidiaryType.SUB_CONTROLLER;\n\n    if (options.middlewares) {\n      subsidiary.pushMiddlewaresInFront(options.middlewares);\n    }\n\n    if (options.path) {\n      subsidiary.path = options.path;\n    }\n\n    if (options.name) {\n      subsidiary.name = options.name;\n    }\n\n    meta.defineMetadata(cls);\n\n    return desc;\n  };\n}\n"],"sourceRoot":"/Users/yz/workspace/router/src"}