1. /**
    
  2.  * Copyright (c) Meta Platforms, Inc. and affiliates.
    
  3.  *
    
  4.  * This source code is licensed under the MIT license found in the
    
  5.  * LICENSE file in the root directory of this source tree.
    
  6.  *
    
  7.  * @flow
    
  8.  */
    
  9. 
    
  10. import type {CrossOriginString} from 'react-dom-bindings/src/shared/crossOriginStrings';
    
  11. 
    
  12. export type PrefetchDNSOptions = {};
    
  13. export type PreconnectOptions = {crossOrigin?: string};
    
  14. export type PreloadOptions = {
    
  15.   as: string,
    
  16.   crossOrigin?: string,
    
  17.   integrity?: string,
    
  18.   type?: string,
    
  19.   nonce?: string,
    
  20.   fetchPriority?: 'high' | 'low' | 'auto',
    
  21.   imageSrcSet?: string,
    
  22.   imageSizes?: string,
    
  23.   referrerPolicy?: string,
    
  24. };
    
  25. export type PreloadModuleOptions = {
    
  26.   as?: string,
    
  27.   crossOrigin?: string,
    
  28.   integrity?: string,
    
  29.   nonce?: string,
    
  30. };
    
  31. export type PreinitOptions = {
    
  32.   as: string,
    
  33.   precedence?: string,
    
  34.   crossOrigin?: string,
    
  35.   integrity?: string,
    
  36.   nonce?: string,
    
  37.   fetchPriority?: 'high' | 'low' | 'auto',
    
  38. };
    
  39. export type PreinitModuleOptions = {
    
  40.   as?: string,
    
  41.   crossOrigin?: string,
    
  42.   integrity?: string,
    
  43.   nonce?: string,
    
  44. };
    
  45. 
    
  46. export type CrossOriginEnum = '' | 'use-credentials' | CrossOriginString;
    
  47. export type FetchPriorityEnum = 'high' | 'low' | 'auto';
    
  48. 
    
  49. export type PreloadImplOptions = {
    
  50.   crossOrigin?: ?CrossOriginEnum,
    
  51.   integrity?: ?string,
    
  52.   nonce?: ?string,
    
  53.   type?: ?string,
    
  54.   fetchPriority?: ?FetchPriorityEnum,
    
  55.   referrerPolicy?: ?string,
    
  56.   imageSrcSet?: ?string,
    
  57.   imageSizes?: ?string,
    
  58. };
    
  59. export type PreloadModuleImplOptions = {
    
  60.   as?: ?string,
    
  61.   crossOrigin?: ?CrossOriginEnum,
    
  62.   integrity?: ?string,
    
  63.   nonce?: ?string,
    
  64. };
    
  65. export type PreinitStyleOptions = {
    
  66.   crossOrigin?: ?CrossOriginEnum,
    
  67.   integrity?: ?string,
    
  68.   fetchPriority?: ?FetchPriorityEnum,
    
  69. };
    
  70. export type PreinitScriptOptions = {
    
  71.   crossOrigin?: ?CrossOriginEnum,
    
  72.   integrity?: ?string,
    
  73.   fetchPriority?: ?FetchPriorityEnum,
    
  74.   nonce?: ?string,
    
  75. };
    
  76. export type PreinitModuleScriptOptions = {
    
  77.   crossOrigin?: ?CrossOriginEnum,
    
  78.   integrity?: ?string,
    
  79.   nonce?: ?string,
    
  80. };
    
  81. 
    
  82. export type HostDispatcher = {
    
  83.   prefetchDNS: (href: string) => void,
    
  84.   preconnect: (href: string, crossOrigin?: ?CrossOriginEnum) => void,
    
  85.   preload: (href: string, as: string, options?: ?PreloadImplOptions) => void,
    
  86.   preloadModule: (href: string, options?: ?PreloadModuleImplOptions) => void,
    
  87.   preinitStyle: (
    
  88.     href: string,
    
  89.     precedence: ?string,
    
  90.     options?: ?PreinitStyleOptions,
    
  91.   ) => void,
    
  92.   preinitScript: (src: string, options?: PreinitScriptOptions) => void,
    
  93.   preinitModuleScript: (
    
  94.     src: string,
    
  95.     options?: ?PreinitModuleScriptOptions,
    
  96.   ) => void,
    
  97. };
    
  98. 
    
  99. export type ImportMap = {
    
  100.   imports?: {
    
  101.     [specifier: string]: string,
    
  102.   },
    
  103.   scopes?: {
    
  104.     [scope: string]: {
    
  105.       [specifier: string]: string,
    
  106.     },
    
  107.   },
    
  108. };