/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */

// This file uses workerize to load ./importFile.worker as a webworker and instanciates it,
// exposing flow typed functions that can be used on other files.

import * as importFileModule from './importFile';
import WorkerizedImportFile from './importFile.worker';

import type {TimelineData} from '../types';

type ImportFileModule = typeof importFileModule;

const workerizedImportFile: ImportFileModule = window.Worker
  ? WorkerizedImportFile()
  : importFileModule;

export type ImportWorkerOutputData =
  | {status: 'SUCCESS', processedData: TimelineData}
  | {status: 'INVALID_PROFILE_ERROR', error: Error}
  | {status: 'UNEXPECTED_ERROR', error: Error};

export type importFileFunction = (file: File) => ImportWorkerOutputData;

export const importFile = (file: File): Promise<ImportWorkerOutputData> =>
  workerizedImportFile.importFile(file);