function initDigitalTwin()

in src/extension.ts [219:339]


function initDigitalTwin(context: vscode.ExtensionContext, outputChannel: vscode.OutputChannel): void {
  const colorizedChannel = new ColorizedChannel(Constants.CHANNEL_NAME);
  context.subscriptions.push(colorizedChannel);
  const deviceModelManager = new DeviceModelManager(context, colorizedChannel);
  const modelRepositoryManager = new ModelRepositoryManager(context, Constants.WEB_VIEW_PATH, colorizedChannel);

  DigitalTwinUtility.init(modelRepositoryManager, outputChannel);
  initIntelliSense(context, telemetryWorker);
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    true,
    Command.CreateInterface,
    async (): Promise<void> => {
      return deviceModelManager.createModel(ModelType.Interface);
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    true,
    Command.CreateCapabilityModel,
    async (): Promise<void> => {
      return deviceModelManager.createModel(ModelType.CapabilityModel);
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    true,
    Command.OpenRepository,
    async (): Promise<void> => {
      return modelRepositoryManager.signIn();
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    true,
    Command.SignOutRepository,
    async (): Promise<void> => {
      return modelRepositoryManager.signOut();
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    true,
    Command.SubmitFiles,
    async (telemetryContext: TelemetryContext): Promise<void> => {
      return modelRepositoryManager.submitFiles(telemetryContext);
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    false,
    Command.DeleteModels,
    async (publicRepository: boolean, modelIds: string[]): Promise<void> => {
      return modelRepositoryManager.deleteModels(publicRepository, modelIds);
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    false,
    Command.DownloadModels,
    async (publicRepository: boolean, modelIds: string[]): Promise<void> => {
      return modelRepositoryManager.downloadModels(publicRepository, modelIds);
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    false,
    Command.SearchInterface,
    async (
      publicRepository: boolean,
      keyword?: string,
      pageSize?: number,
      continuationToken?: string
    ): Promise<SearchResult> => {
      return modelRepositoryManager.searchModel(
        ModelType.Interface,
        publicRepository,
        keyword,
        pageSize,
        continuationToken
      );
    }
  );
  initDigitalTwinCommand(
    context,
    telemetryWorker,
    colorizedChannel,
    false,
    Command.SearchCapabilityModel,
    async (
      publicRepository: boolean,
      keyword?: string,
      pageSize?: number,
      continuationToken?: string
    ): Promise<SearchResult> => {
      return modelRepositoryManager.searchModel(
        ModelType.CapabilityModel,
        publicRepository,
        keyword,
        pageSize,
        continuationToken
      );
    }
  );
}