09186b90ac1c36352db1055e3451d86a8085e6ad43d8af64f124f99fe1de55e4e636dc7edc7fda139fcd25b2d5e76c663df5367ebaa817ebc434d33497021d 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import { Arrayable, Awaitable } from '@antfu/utils';
  2. import { FilterPattern } from '@rollup/pluginutils';
  3. import { Import } from 'unimport';
  4. declare const presets: {
  5. ahooks: () => ImportsMap;
  6. '@nuxtjs/composition-api': ImportsMap;
  7. '@vue/composition-api': ImportsMap;
  8. '@vueuse/core': () => ImportsMap;
  9. '@vueuse/math': () => ImportsMap;
  10. '@vueuse/head': ImportsMap;
  11. mobx: ImportsMap;
  12. 'mobx-react-lite': ImportsMap;
  13. pinia: ImportsMap;
  14. preact: ImportsMap;
  15. quasar: ImportsMap;
  16. react: ImportsMap;
  17. 'react-router': ImportsMap;
  18. 'react-router-dom': ImportsMap;
  19. 'react-i18next': ImportsMap;
  20. svelte: ImportsMap;
  21. 'svelte/animate': ImportsMap;
  22. 'svelte/easing': ImportsMap;
  23. 'svelte/motion': ImportsMap;
  24. 'svelte/store': ImportsMap;
  25. 'svelte/transition': ImportsMap;
  26. 'vee-validate': ImportsMap;
  27. vitepress: ImportsMap;
  28. 'vue-demi': ImportsMap;
  29. 'vue-i18n': ImportsMap;
  30. 'vue-router': ImportsMap;
  31. vue: ImportsMap;
  32. 'vue/macros': ImportsMap;
  33. vuex: ImportsMap;
  34. vitest: ImportsMap;
  35. 'uni-app': ImportsMap;
  36. 'solid-js': ImportsMap;
  37. '@solidjs/router': ImportsMap;
  38. 'solid-app-router': ImportsMap;
  39. jotai: ImportsMap;
  40. 'jotai/utils': ImportsMap;
  41. recoil: ImportsMap;
  42. };
  43. type PresetName = keyof typeof presets;
  44. interface ImportLegacy {
  45. /**
  46. * @deprecated renamed to `as`
  47. */
  48. name?: string;
  49. /**
  50. * @deprecated renamed to `name`
  51. */
  52. importName?: string;
  53. /**
  54. * @deprecated renamed to `from`
  55. */
  56. path: string;
  57. sideEffects?: SideEffectsInfo;
  58. }
  59. interface ImportExtended extends Import {
  60. sideEffects?: SideEffectsInfo;
  61. __source?: 'dir' | 'resolver';
  62. }
  63. type ImportNameAlias = [string, string];
  64. type SideEffectsInfo = Arrayable<ResolverResult | string> | undefined;
  65. interface ResolverResult {
  66. as?: string;
  67. name?: string;
  68. from: string;
  69. }
  70. type ResolverFunction = (name: string) => Awaitable<string | ResolverResult | ImportExtended | null | undefined | void>;
  71. interface ResolverResultObject {
  72. type: 'component' | 'directive';
  73. resolve: ResolverFunction;
  74. }
  75. /**
  76. * Given a identifier name, returns the import path or an import object
  77. */
  78. type Resolver = ResolverFunction | ResolverResultObject;
  79. /**
  80. * module, name, alias
  81. */
  82. type ImportsMap = Record<string, (string | ImportNameAlias)[]>;
  83. type ESLintGlobalsPropValue = boolean | 'readonly' | 'readable' | 'writable' | 'writeable';
  84. interface ESLintrc {
  85. /**
  86. * @default false
  87. */
  88. enabled?: boolean;
  89. /**
  90. * Filepath to save the generated eslint config
  91. *
  92. * @default './.eslintrc-auto-import.json'
  93. */
  94. filepath?: string;
  95. /**
  96. * @default true
  97. */
  98. globalsPropValue?: ESLintGlobalsPropValue;
  99. }
  100. interface Options {
  101. /**
  102. * Preset names or custom imports map
  103. *
  104. * @default []
  105. */
  106. imports?: Arrayable<ImportsMap | PresetName>;
  107. /**
  108. * Identifiers to be ignored
  109. */
  110. ignore?: (string | RegExp)[];
  111. /**
  112. * Path for directories to be auto imported
  113. */
  114. dirs?: string[];
  115. /**
  116. * Pass a custom function to resolve the component importing path from the component name.
  117. *
  118. * The component names are always in PascalCase
  119. */
  120. resolvers?: Arrayable<Arrayable<Resolver>>;
  121. /**
  122. * Filepath to generate corresponding .d.ts file.
  123. * Default enabled when `typescript` is installed locally.
  124. * Set `false` to disable.
  125. *
  126. * @default './auto-imports.d.ts'
  127. */
  128. dts?: string | boolean;
  129. /**
  130. * Auto import inside Vue templates
  131. *
  132. * @see https://github.com/unjs/unimport/pull/15
  133. * @see https://github.com/unjs/unimport/pull/72
  134. * @default false
  135. */
  136. vueTemplate?: boolean;
  137. /**
  138. * Allow overriding imports sources from multiple presets.
  139. *
  140. * @default false
  141. */
  142. presetOverriding?: boolean;
  143. /**
  144. * Rules to include transforming target.
  145. *
  146. * @default [/\.[jt]sx?$/, /\.vue\??/]
  147. */
  148. include?: FilterPattern;
  149. /**
  150. * Rules to exclude transforming target.
  151. *
  152. * @default [/node_modules/, /\.git/]
  153. */
  154. exclude?: FilterPattern;
  155. /**
  156. * Generate source map.
  157. *
  158. * @default false
  159. */
  160. sourceMap?: boolean;
  161. /**
  162. * Generate corresponding .eslintrc-auto-import.json file.
  163. */
  164. eslintrc?: ESLintrc;
  165. }
  166. export { ESLintGlobalsPropValue, ESLintrc, ImportExtended, ImportLegacy, ImportNameAlias, ImportsMap, Options, PresetName, Resolver, ResolverFunction, ResolverResult, ResolverResultObject, SideEffectsInfo };