How to use the @loopback/context.filterByTag function in @loopback/context

To help you get started, we’ve selected a few @loopback/context examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github strongloop / loopback-next / examples / context / src / context-observation.ts View on Github external
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');
github strongloop / loopback-next / examples / context / src / value-promise.ts View on Github external
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);
}
github strongloop / loopback-next / examples / context / src / dependency-injection.ts View on Github external
constructor(
    // Inject a context view for all greeters
    @inject.view(filterByTag('greeter'))
    private greetersView: ContextView,
  ) {}
github strongloop / loopback-next / examples / context / src / find-bindings.ts View on Github external
.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));
}
github strongloop / loopback-next / packages / core / src / extension-point.ts View on Github external
export function extensionFilter(extensionPointName: string) {
  return filterByTag({
    [CoreTags.EXTENSION_FOR]: extensionPointName,
  });
}
github strongloop / loopback-next / packages / authorization / src / authorize-interceptor.ts View on Github external
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);
  }