_register()

in fusion-core/src/base-app.js [90:120]


  _register<TResolved>(token: Token<TResolved>, value: *) {
    this.plugins.push(token);
    const {aliases, enhancers} = this.registered.get(getTokenRef(token)) || {
      aliases: new Map(),
      enhancers: [],
    };
    if (value && value.__plugin__) {
      if (value.deps) {
        Object.values(value.deps).forEach(token =>
          this._dependedOn.add(getTokenRef(token))
        );
      }
    }
    this.registered.set(getTokenRef(token), {
      value,
      aliases,
      enhancers,
      token,
    });
    const alias = (sourceToken, destToken) => {
      const stack = new Error().stack;
      sourceToken.stacks.push({type: 'alias-from', stack});
      destToken.stacks.push({type: 'alias-to', stack});
      this._dependedOn.add(getTokenRef(destToken));
      if (aliases) {
        aliases.set(getTokenRef(sourceToken), destToken);
      }
      return {alias};
    };
    return {alias};
  }