Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export async function main() {
const appCtx = new Context('app');
const requestCtx = new RequestContext(appCtx, 'request');
// Observer events from `appCtx`
appCtx.subscribe({
filter: filterByTag('greeter'),
observe: (eventType, binding) => {
console.log('[observer] %s %s', eventType, binding.key);
},
});
// Create a context view on `requestCtx`
const greetersView = requestCtx.createView(filterByKey(/^greeters\./));
greetersView.on('refresh', () => {
console.log(
'[view.refresh] %j',
greetersView.bindings.map(b => b.key),
);
});
// Add EnglishGreeter to `appCtx`
console.log('Adding EnglishGreeter');
const ctx = new Context('app');
// Add EnglishGreeter for now
ctx
.bind('greeters.EnglishGreeter')
.toClass(EnglishGreeter)
.tag('greeter');
// Add ChineseGreeter
ctx
.bind('greeters.ChineseGreeter')
.toClass(ChineseGreeter)
.tag('greeter');
// Find all greeters
const greetersView = ctx.createView(filterByTag('greeter'));
// Greet from all greeters
await greetFromAll(greetersView);
// Replace ChineseGreeter with AsyncChineseGreeter
ctx
.bind('greeters.ChineseGreeter')
.toClass(AsyncChineseGreeter)
.tag('greeter');
// Greet from all greeters again
await greetFromAll(greetersView);
}
constructor(
// Inject a context view for all greeters
@inject.view(filterByTag('greeter'))
private greetersView: ContextView,
) {}
.toClass(ChineseGreeter)
.tag('greeter');
const enlishGreeterBinding = ctx.getBinding('greeters.EnglishGreeter');
console.log(enlishGreeterBinding.key);
let possibleEnglishGreeters = ctx.find('*.EnglishGreeter');
console.log(possibleEnglishGreeters.map(b => b.key));
possibleEnglishGreeters = ctx.find(/\w+\.EnglishGreeter$/);
console.log(possibleEnglishGreeters.map(b => b.key));
let greeterBindings = ctx.findByTag('greeter');
console.log(greeterBindings.map(b => b.key));
greeterBindings = ctx.find(filterByTag('greeter'));
console.log(greeterBindings.map(b => b.key));
greeterBindings = ctx.find(greeterFilter);
console.log(greeterBindings.map(b => b.key));
const view = ctx.createView(greeterFilter, (b1, b2) =>
b1.key.localeCompare(b2.key),
);
console.log(view.bindings.map(b => b.key));
}
export function extensionFilter(extensionPointName: string) {
return filterByTag({
[CoreTags.EXTENSION_FOR]: extensionPointName,
});
}
constructor(
@inject(filterByTag(AuthorizationTags.AUTHORIZER))
private authorizers: Authorizer[],
@config({fromBinding: AuthorizationBindings.COMPONENT})
options: AuthorizationOptions = {},
) {
this.options = {
defaultDecision: AuthorizationDecision.DENY,
precedence: AuthorizationDecision.DENY,
...options,
};
debug('Authorization options', this.options);
}