4.0.5 • Published 5 years ago

@ts-ioc/aop v4.0.5

Weekly downloads
92
License
MIT
Repository
github
Last release
5 years ago

packaged @ts-ioc/aop

This repo is for distribution on npm. The source for this module is in the main repo.

@ts-ioc/aop is AOP base on Ioc container, via @ts-ioc/core, typescript decorator.

Install

npm install @ts-ioc/aop
import { AopModule } from '@ts-ioc/aop';
// in server
import { ContainerBuilder } from '@ts-ioc/platform-server'
// in browser
import { ContainerBuilder } from '@ts-ioc/platform-browser'

let builder = new ContainerBuilder();

let container = build.create();

container.use(AopModule);

Documentation

AOP

It's a dynamic aop base on ioc.

define a Aspect class, must with decorator:

  • @Aspect

define advice decorator have

  • @Before(matchstring|RegExp)

  • @After(matchstring|RegExp)

  • @Around(matchstring|RegExp)

  • @AfterThrowing(matchstring|RegExp)

  • @AfterReturning(matchstring|RegExp)

  • @Pointcut(matchstring|RegExp)

see simples

import { TypeMetadata, IClassMethodDecorator, createClassMethodDecorator} from '@ts-ioc/core';

import { Joinpoint, Around, Aspect , Pointcut } from '@ts-ioc/aop';

export const Authorization: IClassMethodDecorator<TypeMetadata> = createClassMethodDecorator<TypeMetadata>('Authorization');

// auth check simple.
@Aspect
export class AuthAspect {
    // pointcut for method has @Authorization decorator.
    @Pointcut('@annotation(Authorization)', 'authAnnotation')
    auth(joinPoint: Joinpoint, authAnnotation:MethodMetadata[]) {
        console.log('aspect annotation Before log, method name:', joinPoint.fullName, ' state:', joinPoint.state, ' returning:', joinPoint.returning, ' throwing:', joinPoint.throwing);
    }
}

@Aspect
export class SecrityAspect {
    // before AuthAspect.auth check some.
    @Before('execution(AuthAspect.auth)', 'authAnnotation')
    sessionCheck(authAnnotation:MethodMetadata[],joinPoint: Joinpoint) {
        console.log('aspect execution check session secrity Before AnnotationAspect.auth, method name:', joinPoint.fullName, ' state:', joinPoint.state, ' returning:', joinPoint.returning, ' throwing:', joinPoint.throwing);
    }
}

// Log simple
@Singleton
@Aspect
export class DebugLog {

    @Before(/\w+Controller.\w+$/)
    // @Before('execution(*Controller.*)')
    Beforlog(joinPoint: Joinpoint) {
        console.log('aspect Before log:', joinPoint.fullName);
    }

    @Around('execution(*Controller.*)')
    log(joinPoint: Joinpoint) {
        console.log('aspect Around log, method name:', joinPoint.fullName, ' state:', joinPoint.state, ' Args:', joinPoint.args, ' returning:', joinPoint.returning, ' throwing:', joinPoint.throwing);
    }
}

Container Interface

see more interface. all document is typescript .d.ts.

Documentation is available on the @ts-ioc/aop docs site.

License

MIT © Houjun

4.0.5

5 years ago

4.0.4

5 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

4.0.0-rs2

5 years ago

4.0.0-rs1

5 years ago

4.0.0-rs

5 years ago

4.0.0-beta30

5 years ago

4.0.0-beta28

5 years ago

4.0.0-beta27

5 years ago

4.0.0-beta26

5 years ago

4.0.0-beta25

5 years ago

4.0.0-beta24

5 years ago

4.0.0-beta23

5 years ago

4.0.0-beta22

5 years ago

4.0.0-beta21

5 years ago

4.0.0-beta20

5 years ago

4.0.0-beta19

5 years ago

4.0.0-beta18

5 years ago

4.0.0-beta17

5 years ago

4.0.0-beta16

5 years ago

4.0.0-beta15

5 years ago

4.0.0-beta13

5 years ago

4.0.0-beta12

5 years ago

4.0.0-beta10

5 years ago

4.0.0-beta9

5 years ago

4.0.0-beta8

5 years ago

4.0.0-beta7

5 years ago

4.0.0-beta6

5 years ago

4.0.0-beta5

5 years ago

4.0.0-beta4

5 years ago

4.0.0-beta3

5 years ago

4.0.0-beta2

5 years ago

4.0.0-beta1

5 years ago

3.2.14

5 years ago

3.2.12

6 years ago

3.2.11

6 years ago

3.2.10

6 years ago

3.2.9

6 years ago

3.2.8

6 years ago

3.2.7

6 years ago

3.2.6

6 years ago

3.2.5

6 years ago

3.2.4

6 years ago

3.2.3

6 years ago

3.2.2

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.12

6 years ago

3.1.11

6 years ago

3.1.10

6 years ago

3.1.9

6 years ago

3.1.8

6 years ago

3.1.7

6 years ago

3.1.6

6 years ago

3.1.5

6 years ago

3.1.3

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.6

6 years ago

3.0.5

6 years ago

3.0.4

6 years ago

3.0.3

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

3.0.0-beta8

6 years ago

3.0.0-beta7

6 years ago

3.0.0-beta6

6 years ago

3.0.0-beta5

6 years ago

3.0.0-beta4

6 years ago

3.0.0-beta3

6 years ago

3.0.0-beta2

6 years ago

3.0.0-beta1

6 years ago

3.0.0-beta

6 years ago

2.5.4

6 years ago

2.5.3

6 years ago

2.5.2

6 years ago

2.5.1

6 years ago

2.5.0

6 years ago

2.4.19

6 years ago

2.4.18

6 years ago

2.4.17

6 years ago

2.4.16

6 years ago

2.4.15

6 years ago

2.4.14

6 years ago

2.4.13

6 years ago

2.4.12

6 years ago

2.4.11

6 years ago

2.4.10

6 years ago

2.4.9

6 years ago

2.4.8

6 years ago

2.4.7

6 years ago

2.4.6

6 years ago

2.4.5

6 years ago

2.4.4

6 years ago

2.4.3

6 years ago

2.4.2

6 years ago

2.4.1

6 years ago

2.4.0

6 years ago

2.3.9

6 years ago

2.3.8

6 years ago

2.3.7

6 years ago

2.3.6

6 years ago

2.3.5

6 years ago

2.3.4

6 years ago

2.3.3

6 years ago

2.3.2

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.15

6 years ago

2.0.14

6 years ago

2.0.13

6 years ago

2.0.12

6 years ago

2.0.11

6 years ago

2.0.10

6 years ago

2.0.9

6 years ago

2.0.8

6 years ago

2.0.7

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago