
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
Add DI, AOP support for eggjs.
import { Service, Context } from 'egg';
import { context, lazyInject } from 'egg-aop';
@context() // or @application()
export class TestService extends Service {
get() {
/* code */
}
}
export class Controller {
@lazyInject()
private testService: TestService;
demo() {
this.testService.get();
}
}
@context(keyType?: any)
Declaration life cycle of instance, is context level. You can provide a class type or from metadata by TypeScript emit.
@application(keyType?: any)
Declaration life cycle of instance, is context level. You can provide a class type or from metadata by TypeScript emit.
@inject(keyType?: any)
Inject component when the class instantiation.
@lazyInject(keyType?: any)
Inject component when access the property.
getInstance<T = any>(clsType: any, app: any, ctx: any): T
You can use this function to manually get the component instance.
setCreateInstanceHook(func: CreateInstanceHookFunction)
You can use this function to interception every new component instance.
type CreateInstanceHookFunction = (instance: any, app: any, ctx?: any) => any;
typeLoader is a instance of IocContext, this stored all type's classes. You can use this to affect DI behavior.
function logging(type: string) {
return aspect({
// before method running
before: (context) => { /* log code */ },
// after method running
after: (context) => { /* log code */ },
// when method throw error
onError: (context) => { /* log code */ },
})
}
class DemoService {
@logging('create')
createData() {
/* code */
}
}
/* FunctionContext type define */
export interface FunctionContext<T = any> {
readonly inst: T;
readonly functionName: string;
args: any[];
ret: any;
err: Error;
}
aspect<T = any>(point: AspectPoint<T> = {})
You can use this to interception method, this function provide before / after / error cross-section.
interface AspectPoint<T = any> {
before?: (context: FunctionContext<T>) => void;
after?: (context: FunctionContext<T>) => void;
error?: (context: FunctionContext<T>) => void;
}
The param context is the function's execution context. It include inst / args / ret. You can replace them to affect the function execute.
FAQs
aop for egg.
The npm package egg-aop receives a total of 7 weekly downloads. As such, egg-aop popularity was classified as not popular.
We found that egg-aop demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.