/**
 * supported code snippets as follows:
 *   __init__ __dispose__
 **/
{
  "__init__": {
    "scope": "typescript,typescriptreact",
    "prefix": "init",
    "body": ["protected async __init__() {", "  $0", "}"],
    "description": "__init__",
  },
  "__dispose__": {
    "scope": "typescript,typescriptreact",
    "prefix": "dispose",
    "body": ["protected __dispose__() {", "  $0", "}"],
    "description": "__dispose__",
  },
  "aop.__init__": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopinit",
    "body": [
      "protected __init__: AopActionInit<ClassSome> = async (_args, next, _receiver) => {",
      "  await next();",
      "  $0",
      "}"
    ],
    "description": "aop.__init__"
  },
  "aop.__dispose__": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopdispose",
    "body": [
      "protected __dispose__: AopActionDispose<ClassSome> = (_args, next, _receiver) => {",
      "  $0",
      "  next();",
      "}"
    ],
    "description": "aop.__dispose__"
  },
  "aop.__get__": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopget",
    "body": [
      "protected __get__: AopActionGet<ClassSome> = (_prop, next, _receiver) => {",
      "  const value = next();",
      "  return value;",
      "}"
    ],
    "description": "aop.__get__"
  },
  "aop.__set__": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopset",
    "body": [
      "protected __set__: AopActionSet<ClassSome> = (_prop, value, next, _receiver) => {",
      "  return next(value);",
      "}"
    ],
    "description": "aop.__set__"
  },
  "aop.__method__": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopmethod",
    "body": [
      "protected __method__: AopActionMethod<ClassSome> = (_method, _args, next, _receiver) => {",
      "  $0",
      "  return next();",
      "}"
    ],
    "description": "aop.__method__"
  },
  "aop.getter": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopgetter",
    "body": [
      "protected __get_xxx__: AopActionGetter<ClassSome, 'xxx'> = function (next, _receiver) {",
      "  const value = next();",
      "  return value;",
      "}"
    ],
    "description": "aop.getter"
  },
  "aop.setter": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopsetter",
    "body": [
      "protected __set_xxx__: AopActionSetter<ClassSome, 'xxx'> = function (value, next, _receiver) {",
      "  return next(value);",
      "}"
    ],
    "description": "aop.setter"
  },
  "aop.action": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopaction",
    "body": [
      "action: AopAction<ClassSome, 'action'> = async (_args, next, _receiver) => {",
      "  $0",
      "  return await next();",
      "}"
    ],
    "description": "aop.action"
  },
  "aop.actionsync": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopactionsync",
    "body": [
      "action: AopAction<ClassSome, 'action'> = (_args, next, _receiver) => {",
      "  $0",
      "  return next();",
      "}"
    ],
    "description": "aop.actionsync"
  },
  "aop.actionrender": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopactionrender",
    "body": [
      "protected render: AopActionRender<ClassSome> = (_args, next, _receiver) => {",
      "  const result = next();",
      "  return result;",
      "}"
    ],
    "description": "aop.actionrender"
  },
  "aopmethod.get": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopmethodget",
    "body": [
      "get(_options: IDecoratorAopMethodOptions, next: NextSync, _receiver: any, _prop: string) {",
      "  return next();",
      "}"
    ],
    "description": "aopmethod.get"
  },
  "aopmethod.set": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopmethodset",
    "body": [
      "set(_options: IDecoratorAopMethodOptions, value: any, next: NextSync, _receiver: any, _prop: string): boolean {",
      "  return next(value);",
      "}"
    ],
    "description": "aopmethod.set"
  },
  "aopmagic.get": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopmagicget",
    "body": [
      "protected __get__(prop: string) {",
      "  $0",
      "}"
    ],
    "description": "aopmagic.get"
  },
  "aopmagic.set": {
    "scope": "typescript,typescriptreact",
    "prefix": "aopmagicset",
    "body": [
      "protected __set__(prop: string, value: any): boolean {",
      "  $0",
      "  return false;",
      "}"
    ],
    "description": "aopmagic.set"
  },
  "record.flavor": {
    "scope": "typescript,typescriptreact",
    "prefix": "recordflavor",
    "body": [
      "declare module '@cabloy/module-info' {",
      "  export interface ZovaMetaFlavorExtend {",
      "    $0: never;",
      "  }",
      "}"
    ],
    "description": "record.flavor"
  },
  "record.appmode": {
    "scope": "typescript,typescriptreact",
    "prefix": "recordappmode",
    "body": [
      "declare module '@cabloy/module-info' {",
      "  export interface ZovaMetaAppModeExtend {",
      "    $0: never;",
      "  }",
      "}"
    ],
    "description": "record.appmode"
  },
  "record.loggerclient": {
    "scope": "typescript,typescriptreact",
    "prefix": "recordloggerclient",
    "body": [
      "declare module 'zova' {",
      "  export interface ILoggerClientRecord {",
      "    $0: never;",
      "  }",
      "}"
    ],
    "description": "record.loggerclient"
  },
  "record.loggerchild": {
    "scope": "typescript,typescriptreact",
    "prefix": "recordloggerchild",
    "body": [
      "declare module 'zova' {",
      "  export interface ILoggerChildRecord {",
      "    $0: never;",
      "  }",
      "}"
    ],
    "description": "record.loggerchild"
  },
  "record.locale": {
    "scope": "typescript,typescriptreact",
    "prefix": "recordlocale",
    "body": [
      "declare module 'zova' {",
      "  export interface ILocaleRecord {",
      "    $0: never;",
      "  }",
      "}"
    ],
    "description": "record.locale"
  },
}
