1{"version":3,"file":"UseUpdatesUtils.js","sourceRoot":"","sources":["../src/UseUpdatesUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAMrC,OAAO,EAAE,cAAc,EAA8C,MAAM,oBAAoB,CAAC;AAEhG,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;IACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;IACrC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;IACzC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;IAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;IAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;IACvC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,SAAS;CACpD,CAAC;AAiBF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAoD,CAAC,QAAQ,EAAE,EAAE;IAC9F,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,GAAG;QACxB,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;QAC3B,SAAS,EACP,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS;YACvD,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9B,CAAC,CAAC,6EAA6E;gBAC7E,wDAAwD;gBACxD,IAAI,IAAI,CAAC,CAAC,CAAC;QACjB,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAyD,CACtF,QAAQ,EACR,EAAE,CAAC,CAAC;IACJ,IAAI,EAAE,cAAc,CAAC,QAAQ;IAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IACxC,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAC,CAAC;AAEH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,sBAAsB,GAAwB;IACzD,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,6BAA6B,GAGf,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE;IACnD,MAAM,eAAe,GAAG,OAAO,EAAE,cAAc;QAC7C,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,gBAAgB,GAAG,OAAO,EAAE,kBAAkB;QAClD,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,GAAG,YAAY;QACf,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe;QACf,gBAAgB;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,kCAAkC,EAAE,OAAO,CAAC,sBAAsB;KACnE,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import * as Updates from './Updates';\nimport type {\n  Manifest,\n  UpdatesNativeStateMachineContext,\n  UpdatesNativeStateRollback,\n} from './Updates.types';\nimport { UpdateInfoType, type CurrentlyRunningInfo, type UpdateInfo } from './UseUpdates.types';\n\n// The currently running info, constructed from Updates constants\nexport const currentlyRunning: CurrentlyRunningInfo = {\n  updateId: Updates.updateId ?? undefined,\n  channel: Updates.channel ?? undefined,\n  createdAt: Updates.createdAt ?? undefined,\n  isEmbeddedLaunch: Updates.isEmbeddedLaunch,\n  isEmergencyLaunch: Updates.isEmergencyLaunch,\n  manifest: Updates.manifest ?? undefined,\n  runtimeVersion: Updates.runtimeVersion ?? undefined,\n};\n\n// Type for the state managed by useUpdates().\n// Used internally by this module and not exported publicly.\nexport type UseUpdatesStateType = {\n  availableUpdate?: UpdateInfo;\n  downloadedUpdate?: UpdateInfo;\n  checkError?: Error;\n  downloadError?: Error;\n  initializationError?: Error;\n  isUpdateAvailable: boolean;\n  isUpdatePending: boolean;\n  isChecking: boolean;\n  isDownloading: boolean;\n  lastCheckForUpdateTimeSinceRestart?: Date;\n};\n\n// Constructs an UpdateInfo from a manifest\nexport const updateFromManifest: (manifest: NonNullable<Manifest>) => UpdateInfo = (manifest) => {\n  return {\n    type: UpdateInfoType.NEW,\n    updateId: manifest.id ?? '',\n    createdAt:\n      manifest && 'createdAt' in manifest && manifest.createdAt\n        ? new Date(manifest.createdAt)\n        : // We should never reach this if the manifest is valid and has a commit time,\n          // but leave this in so that createdAt is always defined\n          new Date(0),\n    manifest,\n  };\n};\n\nexport const updateFromRollback: (rollback: UpdatesNativeStateRollback) => UpdateInfo = (\n  rollback\n) => ({\n  type: UpdateInfoType.ROLLBACK,\n  createdAt: new Date(rollback.commitTime),\n  manifest: undefined,\n  updateId: undefined,\n});\n\n// Default useUpdates() state\nexport const defaultUseUpdatesState: UseUpdatesStateType = {\n  isChecking: false,\n  isDownloading: false,\n  isUpdateAvailable: false,\n  isUpdatePending: false,\n};\n\n// Transform the useUpdates() state based on native state machine context\nexport const reduceUpdatesStateFromContext: (\n  updatesState: UseUpdatesStateType,\n  context: UpdatesNativeStateMachineContext\n) => UseUpdatesStateType = (updatesState, context) => {\n  const availableUpdate = context?.latestManifest\n    ? updateFromManifest(context?.latestManifest)\n    : context.rollback\n    ? updateFromRollback(context.rollback)\n    : undefined;\n  const downloadedUpdate = context?.downloadedManifest\n    ? updateFromManifest(context?.downloadedManifest)\n    : context.rollback\n    ? updateFromRollback(context.rollback)\n    : undefined;\n  return {\n    ...updatesState,\n    isUpdateAvailable: context.isUpdateAvailable,\n    isUpdatePending: context.isUpdatePending,\n    isChecking: context.isChecking,\n    isDownloading: context.isDownloading,\n    availableUpdate,\n    downloadedUpdate,\n    checkError: context.checkError,\n    downloadError: context.downloadError,\n    lastCheckForUpdateTimeSinceRestart: context.lastCheckForUpdateTime,\n  };\n};\n"]}