unimport.3d427447.mjs 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397
  1. import { d as defineUnimportPreset, h as getMagicString, p as stripCommentsAndStrings, o as matchRE, k as excludeRE, m as separatorRE, l as importAsRE, t as toExports, v as vueTemplateAddon, n as normalizeImports, a as dedupeImports, b as stripFileExtension, e as toTypeDeclarationFile, f as toTypeReExports, i as addImportToCode } from './unimport.b860d1ad.mjs';
  2. import os from 'node:os';
  3. import { existsSync, promises, accessSync, constants, readFileSync } from 'node:fs';
  4. import { resolveModuleExportNames, findExports, findTypeExports, resolve as resolve$1, detectSyntax, findStaticImports, parseStaticImport } from 'mlly';
  5. import { resolvePackageJSON, readPackageJSON } from 'pkg-types';
  6. import { join, dirname, normalize, parse, resolve } from 'pathe';
  7. import process from 'node:process';
  8. import { resolveModule } from 'local-pkg';
  9. import { readFile } from 'node:fs/promises';
  10. import path from 'node:path';
  11. import { fileURLToPath } from 'node:url';
  12. import fg from 'fast-glob';
  13. import { camelCase } from 'scule';
  14. const CACHE_PATH = /* @__PURE__ */ join(os.tmpdir(), "unimport");
  15. let CACHE_WRITEABLE;
  16. async function resolvePackagePreset(preset) {
  17. const scanned = await extractExports(preset.package, preset.url, preset.cache);
  18. const filtered = scanned.filter((name) => {
  19. for (const item of preset.ignore || []) {
  20. if (typeof item === "string" && item === name)
  21. return false;
  22. if (item instanceof RegExp && item.test(name))
  23. return false;
  24. if (typeof item === "function" && item(name) === false)
  25. return false;
  26. }
  27. return true;
  28. });
  29. return filtered.map((name) => ({
  30. from: preset.package,
  31. name
  32. }));
  33. }
  34. async function extractExports(name, url, cache = true) {
  35. const packageJsonPath = await resolvePackageJSON(name, { url });
  36. const packageJson = await readPackageJSON(packageJsonPath);
  37. const version = packageJson.version;
  38. const cachePath = join(CACHE_PATH, `${name}@${version}`, "exports.json");
  39. if (cache && CACHE_WRITEABLE === void 0) {
  40. try {
  41. CACHE_WRITEABLE = isWritable(CACHE_PATH);
  42. } catch {
  43. CACHE_WRITEABLE = false;
  44. }
  45. }
  46. const useCache = cache && version && CACHE_WRITEABLE;
  47. if (useCache && existsSync(cachePath))
  48. return JSON.parse(await promises.readFile(cachePath, "utf-8"));
  49. const scanned = await resolveModuleExportNames(name, { url });
  50. if (useCache) {
  51. await promises.mkdir(dirname(cachePath), { recursive: true });
  52. await promises.writeFile(cachePath, JSON.stringify(scanned), "utf-8");
  53. }
  54. return scanned;
  55. }
  56. function isWritable(filename) {
  57. try {
  58. accessSync(filename, constants.W_OK);
  59. return true;
  60. } catch {
  61. return false;
  62. }
  63. }
  64. const pinia = defineUnimportPreset({
  65. from: "pinia",
  66. imports: [
  67. // https://pinia.esm.dev/api/modules/pinia.html#functions
  68. "acceptHMRUpdate",
  69. "createPinia",
  70. "defineStore",
  71. "getActivePinia",
  72. "mapActions",
  73. "mapGetters",
  74. "mapState",
  75. "mapStores",
  76. "mapWritableState",
  77. "setActivePinia",
  78. "setMapStoreSuffix",
  79. "storeToRefs"
  80. ]
  81. });
  82. const preact = defineUnimportPreset({
  83. from: "preact",
  84. imports: [
  85. "useState",
  86. "useCallback",
  87. "useMemo",
  88. "useEffect",
  89. "useRef",
  90. "useContext",
  91. "useReducer"
  92. ]
  93. });
  94. const quasar = defineUnimportPreset({
  95. from: "quasar",
  96. imports: [
  97. // https://quasar.dev/vue-composables
  98. "useQuasar",
  99. "useDialogPluginComponent",
  100. "useFormChild",
  101. "useMeta"
  102. ]
  103. });
  104. const react = defineUnimportPreset({
  105. from: "react",
  106. imports: [
  107. "useState",
  108. "useCallback",
  109. "useMemo",
  110. "useEffect",
  111. "useRef",
  112. "useContext",
  113. "useReducer"
  114. ]
  115. });
  116. const ReactRouterHooks = [
  117. "useOutletContext",
  118. "useHref",
  119. "useInRouterContext",
  120. "useLocation",
  121. "useNavigationType",
  122. "useNavigate",
  123. "useOutlet",
  124. "useParams",
  125. "useResolvedPath",
  126. "useRoutes"
  127. ];
  128. const reactRouter = defineUnimportPreset({
  129. from: "react-router",
  130. imports: [
  131. ...ReactRouterHooks
  132. ]
  133. });
  134. const reactRouterDom = defineUnimportPreset({
  135. from: "react-router-dom",
  136. imports: [
  137. ...ReactRouterHooks,
  138. // react-router-dom only hooks
  139. "useLinkClickHandler",
  140. "useSearchParams",
  141. // react-router-dom Component
  142. // call once in general
  143. // 'BrowserRouter',
  144. // 'HashRouter',
  145. // 'MemoryRouter',
  146. "Link",
  147. "NavLink",
  148. "Navigate",
  149. "Outlet",
  150. "Route",
  151. "Routes"
  152. ]
  153. });
  154. const svelteAnimate = defineUnimportPreset({
  155. from: "svelte/animate",
  156. imports: [
  157. "flip"
  158. ]
  159. });
  160. const svelteEasing = defineUnimportPreset({
  161. from: "svelte/easing",
  162. imports: [
  163. "back",
  164. "bounce",
  165. "circ",
  166. "cubic",
  167. "elastic",
  168. "expo",
  169. "quad",
  170. "quart",
  171. "quint",
  172. "sine"
  173. ].reduce((acc, e) => {
  174. acc.push(`${e}In`, `${e}Out`, `${e}InOut`);
  175. return acc;
  176. }, ["linear"])
  177. });
  178. const svelteStore = defineUnimportPreset({
  179. from: "svelte/store",
  180. imports: [
  181. "writable",
  182. "readable",
  183. "derived",
  184. "get"
  185. ]
  186. });
  187. const svelteMotion = defineUnimportPreset({
  188. from: "svelte/motion",
  189. imports: [
  190. "tweened",
  191. "spring"
  192. ]
  193. });
  194. const svelteTransition = defineUnimportPreset({
  195. from: "svelte/transition",
  196. imports: [
  197. "fade",
  198. "blur",
  199. "fly",
  200. "slide",
  201. "scale",
  202. "draw",
  203. "crossfade"
  204. ]
  205. });
  206. const svelte = defineUnimportPreset({
  207. from: "svelte",
  208. imports: [
  209. // lifecycle
  210. "onMount",
  211. "beforeUpdate",
  212. "afterUpdate",
  213. "onDestroy",
  214. // tick
  215. "tick",
  216. // context
  217. "setContext",
  218. "getContext",
  219. "hasContext",
  220. "getAllContexts",
  221. // event dispatcher
  222. "createEventDispatcher"
  223. ]
  224. });
  225. const veeValidate = defineUnimportPreset({
  226. from: "vee-validate",
  227. imports: [
  228. // https://vee-validate.logaretm.com/v4/guide/composition-api/api-review
  229. // https://github.com/logaretm/vee-validate/blob/main/packages/vee-validate/src/index.ts
  230. "validate",
  231. "defineRule",
  232. "configure",
  233. "useField",
  234. "useForm",
  235. "useFieldArray",
  236. "useResetForm",
  237. "useIsFieldDirty",
  238. "useIsFieldTouched",
  239. "useIsFieldValid",
  240. "useIsSubmitting",
  241. "useValidateField",
  242. "useIsFormDirty",
  243. "useIsFormTouched",
  244. "useIsFormValid",
  245. "useValidateForm",
  246. "useSubmitCount",
  247. "useFieldValue",
  248. "useFormValues",
  249. "useFormErrors",
  250. "useFieldError",
  251. "useSubmitForm",
  252. "FormContextKey",
  253. "FieldContextKey"
  254. ]
  255. });
  256. const vitepress = defineUnimportPreset({
  257. from: "vitepress",
  258. imports: [
  259. // helper methods
  260. "useData",
  261. "useRoute",
  262. "useRouter",
  263. "withBase"
  264. ]
  265. });
  266. const CommonCompositionAPI = [
  267. // lifecycle
  268. "onActivated",
  269. "onBeforeMount",
  270. "onBeforeUnmount",
  271. "onBeforeUpdate",
  272. "onErrorCaptured",
  273. "onDeactivated",
  274. "onMounted",
  275. "onServerPrefetch",
  276. "onUnmounted",
  277. "onUpdated",
  278. // setup helpers
  279. "useAttrs",
  280. "useSlots",
  281. // reactivity,
  282. "computed",
  283. "customRef",
  284. "isReadonly",
  285. "isRef",
  286. "isProxy",
  287. "isReactive",
  288. "markRaw",
  289. "reactive",
  290. "readonly",
  291. "ref",
  292. "shallowReactive",
  293. "shallowReadonly",
  294. "shallowRef",
  295. "triggerRef",
  296. "toRaw",
  297. "toRef",
  298. "toRefs",
  299. "toValue",
  300. "unref",
  301. "watch",
  302. "watchEffect",
  303. "watchPostEffect",
  304. "watchSyncEffect",
  305. // component
  306. "defineComponent",
  307. "defineAsyncComponent",
  308. "getCurrentInstance",
  309. "h",
  310. "inject",
  311. "nextTick",
  312. "provide",
  313. "useCssModule",
  314. "createApp",
  315. // effect scope
  316. "effectScope",
  317. "EffectScope",
  318. "getCurrentScope",
  319. "onScopeDispose",
  320. // types
  321. ...[
  322. "Component",
  323. "ComponentPublicInstance",
  324. "ComputedRef",
  325. "ExtractDefaultPropTypes",
  326. "ExtractPropTypes",
  327. "ExtractPublicPropTypes",
  328. "InjectionKey",
  329. "PropType",
  330. "Ref",
  331. "VNode",
  332. "WritableComputedRef"
  333. ].map((name) => ({ name, type: true }))
  334. ];
  335. const vue = defineUnimportPreset({
  336. from: "vue",
  337. imports: [
  338. ...CommonCompositionAPI,
  339. // vue3 only
  340. "onRenderTracked",
  341. "onRenderTriggered",
  342. "resolveComponent",
  343. "useCssVars"
  344. ]
  345. });
  346. const vueMacros = defineUnimportPreset({
  347. from: "vue/macros",
  348. imports: [
  349. // https://vuejs.org/guide/extras/reactivity-transform.html#refs-vs-reactive-variables
  350. "$",
  351. "$$",
  352. "$ref",
  353. "$shallowRef",
  354. "$toRef",
  355. "$customRef",
  356. "$computed"
  357. ]
  358. });
  359. const vueDemi = defineUnimportPreset({
  360. from: "vue-demi",
  361. imports: CommonCompositionAPI
  362. });
  363. const vueI18n = defineUnimportPreset({
  364. from: "vue-i18n",
  365. imports: [
  366. "useI18n"
  367. ]
  368. });
  369. const vueRouter = defineUnimportPreset({
  370. from: "vue-router",
  371. imports: [
  372. "useRouter",
  373. "useRoute",
  374. "useLink",
  375. "onBeforeRouteLeave",
  376. "onBeforeRouteUpdate"
  377. ]
  378. });
  379. const vueCompositionApi = defineUnimportPreset({
  380. from: "@vue/composition-api",
  381. imports: CommonCompositionAPI
  382. });
  383. let _cache;
  384. const vueuseCore = () => {
  385. const excluded = ["toRefs", "utils"];
  386. if (!_cache) {
  387. try {
  388. const corePath = resolveModule("@vueuse/core") || process.cwd();
  389. const path = resolveModule("@vueuse/core/indexes.json") || resolveModule("@vueuse/metadata/index.json") || resolveModule("@vueuse/metadata/index.json", { paths: [corePath] });
  390. const indexesJson = JSON.parse(readFileSync(path, "utf-8"));
  391. _cache = defineUnimportPreset({
  392. from: "@vueuse/core",
  393. imports: indexesJson.functions.filter((i) => ["core", "shared"].includes(i.package)).map((i) => i.name).filter((i) => i && i.length >= 4 && !excluded.includes(i))
  394. });
  395. } catch (error) {
  396. console.error(error);
  397. throw new Error("[auto-import] failed to load @vueuse/core, have you installed it?");
  398. }
  399. }
  400. return _cache;
  401. };
  402. const vueuseHead = defineUnimportPreset({
  403. from: "@vueuse/head",
  404. imports: [
  405. "useHead"
  406. ]
  407. });
  408. const vuex = defineUnimportPreset({
  409. from: "vuex",
  410. imports: [
  411. // https://next.vuex.vuejs.org/api/#createstore
  412. "createStore",
  413. // https://github.com/vuejs/vuex/blob/4.0/types/logger.d.ts#L20
  414. "createLogger",
  415. // https://next.vuex.vuejs.org/api/#component-binding-helpers
  416. "mapState",
  417. "mapGetters",
  418. "mapActions",
  419. "mapMutations",
  420. "createNamespacedHelpers",
  421. // https://next.vuex.vuejs.org/api/#composable-functions
  422. "useStore"
  423. ]
  424. });
  425. const vitest = defineUnimportPreset({
  426. from: "vitest",
  427. imports: [
  428. // suite
  429. "suite",
  430. "test",
  431. "describe",
  432. "it",
  433. // chai
  434. "chai",
  435. "expect",
  436. "assert",
  437. // utils
  438. "vitest",
  439. "vi",
  440. // hooks
  441. "beforeAll",
  442. "afterAll",
  443. "beforeEach",
  444. "afterEach"
  445. ]
  446. });
  447. const uniApp = defineUnimportPreset({
  448. from: "@dcloudio/uni-app",
  449. imports: [
  450. "onAddToFavorites",
  451. "onBackPress",
  452. "onError",
  453. "onHide",
  454. "onLaunch",
  455. "onLoad",
  456. "onNavigationBarButtonTap",
  457. "onNavigationBarSearchInputChanged",
  458. "onNavigationBarSearchInputClicked",
  459. "onNavigationBarSearchInputConfirmed",
  460. "onNavigationBarSearchInputFocusChanged",
  461. "onPageNotFound",
  462. "onPageScroll",
  463. "onPullDownRefresh",
  464. "onReachBottom",
  465. "onReady",
  466. "onResize",
  467. "onShareAppMessage",
  468. "onShareTimeline",
  469. "onShow",
  470. "onTabItemTap",
  471. "onThemeChange",
  472. "onUnhandledRejection",
  473. "onUnload"
  474. ]
  475. });
  476. const solidCore = defineUnimportPreset({
  477. from: "solid-js",
  478. imports: [
  479. "createSignal",
  480. "createEffect",
  481. "createMemo",
  482. "createResource",
  483. "onMount",
  484. "onCleanup",
  485. "onError",
  486. "untrack",
  487. "batch",
  488. "on",
  489. "createRoot",
  490. "mergeProps",
  491. "splitProps",
  492. "useTransition",
  493. "observable",
  494. "mapArray",
  495. "indexArray",
  496. "createContext",
  497. "useContext",
  498. "children",
  499. "lazy",
  500. "createDeferred",
  501. "createRenderEffect",
  502. "createSelector",
  503. "For",
  504. "Show",
  505. "Switch",
  506. "Match",
  507. "Index",
  508. "ErrorBoundary",
  509. "Suspense",
  510. "SuspenseList"
  511. ]
  512. });
  513. const solidStore = defineUnimportPreset({
  514. from: "solid-js/store",
  515. imports: [
  516. "createStore",
  517. "produce",
  518. "reconcile",
  519. "createMutable"
  520. ]
  521. });
  522. const solidWeb = defineUnimportPreset({
  523. from: "solid-js/web",
  524. imports: [
  525. "Dynamic",
  526. "hydrate",
  527. "render",
  528. "renderToString",
  529. "renderToStringAsync",
  530. "renderToStream",
  531. "isServer",
  532. "Portal"
  533. ]
  534. });
  535. const solid = defineUnimportPreset({
  536. from: "solid-js",
  537. imports: [
  538. solidCore,
  539. solidStore,
  540. solidWeb
  541. ]
  542. });
  543. const solidAppRouter = defineUnimportPreset({
  544. from: "solid-app-router",
  545. imports: [
  546. "Link",
  547. "NavLink",
  548. "Navigate",
  549. "Outlet",
  550. "Route",
  551. "Router",
  552. "Routes",
  553. "_mergeSearchString",
  554. "createIntegration",
  555. "hashIntegration",
  556. "normalizeIntegration",
  557. "pathIntegration",
  558. "staticIntegration",
  559. "useHref",
  560. "useIsRouting",
  561. "useLocation",
  562. "useMatch",
  563. "useNavigate",
  564. "useParams",
  565. "useResolvedPath",
  566. "useRouteData",
  567. "useRoutes",
  568. "useSearchParams"
  569. ]
  570. });
  571. const vueRouterComposables = defineUnimportPreset({
  572. from: "vue-router/composables",
  573. imports: [
  574. "useRouter",
  575. "useRoute",
  576. "useLink",
  577. "onBeforeRouteLeave",
  578. "onBeforeRouteUpdate"
  579. ]
  580. });
  581. const rxjs = defineUnimportPreset({
  582. from: "rxjs",
  583. imports: [
  584. "of",
  585. "from",
  586. "map",
  587. "tap",
  588. "filter",
  589. "forkJoin",
  590. "throwError",
  591. "catchError",
  592. "Observable",
  593. "mergeMap",
  594. "switchMap",
  595. "merge",
  596. "zip",
  597. "take",
  598. "takeUntil",
  599. "first",
  600. "lastValueFrom",
  601. "skip",
  602. "skipUntil",
  603. "distinct",
  604. "distinctUntilChanged",
  605. "throttle",
  606. "throttleTime",
  607. "retry",
  608. "retryWhen",
  609. "timeout",
  610. "delay",
  611. "debounce",
  612. "debounceTime",
  613. "find",
  614. "every"
  615. ]
  616. });
  617. const dateFns = defineUnimportPreset({
  618. from: "date-fns",
  619. imports: [
  620. "add",
  621. "addBusinessDays",
  622. "addDays",
  623. "addHours",
  624. "addISOWeekYears",
  625. "addMilliseconds",
  626. "addMinutes",
  627. "addMonths",
  628. "addQuarters",
  629. "addSeconds",
  630. "addWeeks",
  631. "addYears",
  632. "areIntervalsOverlapping",
  633. "clamp",
  634. "closestIndexTo",
  635. "closestTo",
  636. "compareAsc",
  637. "compareDesc",
  638. "constants",
  639. "daysToWeeks",
  640. "differenceInBusinessDays",
  641. "differenceInCalendarDays",
  642. "differenceInCalendarISOWeekYears",
  643. "differenceInCalendarISOWeeks",
  644. "differenceInCalendarMonths",
  645. "differenceInCalendarQuarters",
  646. "differenceInCalendarWeeks",
  647. "differenceInCalendarYears",
  648. "differenceInDays",
  649. "differenceInHours",
  650. "differenceInISOWeekYears",
  651. "differenceInMilliseconds",
  652. "differenceInMinutes",
  653. "differenceInMonths",
  654. "differenceInQuarters",
  655. "differenceInSeconds",
  656. "differenceInWeeks",
  657. "differenceInYears",
  658. "eachDayOfInterval",
  659. "eachHourOfInterval",
  660. "eachMinuteOfInterval",
  661. "eachMonthOfInterval",
  662. "eachQuarterOfInterval",
  663. "eachWeekOfInterval",
  664. "eachWeekendOfInterval",
  665. "eachWeekendOfMonth",
  666. "eachWeekendOfYear",
  667. "eachYearOfInterval",
  668. "endOfDay",
  669. "endOfDecade",
  670. "endOfHour",
  671. "endOfISOWeek",
  672. "endOfISOWeekYear",
  673. "endOfMinute",
  674. "endOfMonth",
  675. "endOfQuarter",
  676. "endOfSecond",
  677. "endOfToday",
  678. "endOfTomorrow",
  679. "endOfWeek",
  680. "endOfYear",
  681. "endOfYesterday",
  682. "format",
  683. "formatDistance",
  684. "formatDistanceStrict",
  685. "formatDistanceToNow",
  686. "formatDistanceToNowStrict",
  687. "formatDuration",
  688. "formatISO",
  689. "formatISO9075",
  690. "formatISODuration",
  691. "formatRFC3339",
  692. "formatRFC7231",
  693. "formatRelative",
  694. "fromUnixTime",
  695. "getDate",
  696. "getDay",
  697. "getDayOfYear",
  698. "getDaysInMonth",
  699. "getDaysInYear",
  700. "getDecade",
  701. "getDefaultOptions",
  702. "getHours",
  703. "getISODay",
  704. "getISOWeek",
  705. "getISOWeekYear",
  706. "getISOWeeksInYear",
  707. "getMilliseconds",
  708. "getMinutes",
  709. "getMonth",
  710. "getOverlappingDaysInIntervals",
  711. "getQuarter",
  712. "getSeconds",
  713. "getTime",
  714. "getUnixTime",
  715. "getWeek",
  716. "getWeekOfMonth",
  717. "getWeekYear",
  718. "getWeeksInMonth",
  719. "getYear",
  720. "hoursToMilliseconds",
  721. "hoursToMinutes",
  722. "hoursToSeconds",
  723. "intervalToDuration",
  724. "intlFormat",
  725. "intlFormatDistance",
  726. "isAfter",
  727. "isBefore",
  728. "isDate",
  729. "isEqual",
  730. "isExists",
  731. "isFirstDayOfMonth",
  732. "isFriday",
  733. "isFuture",
  734. "isLastDayOfMonth",
  735. "isLeapYear",
  736. "isMatch",
  737. "isMonday",
  738. "isPast",
  739. "isSameDay",
  740. "isSameHour",
  741. "isSameISOWeek",
  742. "isSameISOWeekYear",
  743. "isSameMinute",
  744. "isSameMonth",
  745. "isSameQuarter",
  746. "isSameSecond",
  747. "isSameWeek",
  748. "isSameYear",
  749. "isSaturday",
  750. "isSunday",
  751. "isThisHour",
  752. "isThisISOWeek",
  753. "isThisMinute",
  754. "isThisMonth",
  755. "isThisQuarter",
  756. "isThisSecond",
  757. "isThisWeek",
  758. "isThisYear",
  759. "isThursday",
  760. "isToday",
  761. "isTomorrow",
  762. "isTuesday",
  763. "isValid",
  764. "isWednesday",
  765. "isWeekend",
  766. "isWithinInterval",
  767. "isYesterday",
  768. "lastDayOfDecade",
  769. "lastDayOfISOWeek",
  770. "lastDayOfISOWeekYear",
  771. "lastDayOfMonth",
  772. "lastDayOfQuarter",
  773. "lastDayOfWeek",
  774. "lastDayOfYear",
  775. "lightFormat",
  776. "locale",
  777. "max",
  778. "milliseconds",
  779. "millisecondsToHours",
  780. "millisecondsToMinutes",
  781. "millisecondsToSeconds",
  782. "min",
  783. "minutesToHours",
  784. "minutesToMilliseconds",
  785. "minutesToSeconds",
  786. "monthsToQuarters",
  787. "monthsToYears",
  788. "nextDay",
  789. "nextFriday",
  790. "nextMonday",
  791. "nextSaturday",
  792. "nextSunday",
  793. "nextThursday",
  794. "nextTuesday",
  795. "nextWednesday",
  796. "parse",
  797. "parseISO",
  798. "parseJSON",
  799. "previousDay",
  800. "previousFriday",
  801. "previousMonday",
  802. "previousSaturday",
  803. "previousSunday",
  804. "previousThursday",
  805. "previousTuesday",
  806. "previousWednesday",
  807. "quartersToMonths",
  808. "quartersToYears",
  809. "roundToNearestMinutes",
  810. "secondsToHours",
  811. "secondsToMilliseconds",
  812. "secondsToMinutes",
  813. "set",
  814. "setDate",
  815. "setDay",
  816. "setDayOfYear",
  817. "setDefaultOptions",
  818. "setHours",
  819. "setISODay",
  820. "setISOWeek",
  821. "setISOWeekYear",
  822. "setMilliseconds",
  823. "setMinutes",
  824. "setMonth",
  825. "setQuarter",
  826. "setSeconds",
  827. "setWeek",
  828. "setWeekYear",
  829. "setYear",
  830. "startOfDay",
  831. "startOfDecade",
  832. "startOfHour",
  833. "startOfISOWeek",
  834. "startOfISOWeekYear",
  835. "startOfMinute",
  836. "startOfMonth",
  837. "startOfQuarter",
  838. "startOfSecond",
  839. "startOfToday",
  840. "startOfTomorrow",
  841. "startOfWeek",
  842. "startOfWeekYear",
  843. "startOfYear",
  844. "startOfYesterday",
  845. "sub",
  846. "subBusinessDays",
  847. "subDays",
  848. "subHours",
  849. "subISOWeekYears",
  850. "subMilliseconds",
  851. "subMinutes",
  852. "subMonths",
  853. "subQuarters",
  854. "subSeconds",
  855. "subWeeks",
  856. "subYears",
  857. "toDate",
  858. "weeksToDays",
  859. "yearsToMonths",
  860. "yearsToQuarters"
  861. ]
  862. });
  863. const builtinPresets = {
  864. "@vue/composition-api": vueCompositionApi,
  865. "@vueuse/core": vueuseCore,
  866. "@vueuse/head": vueuseHead,
  867. "pinia": pinia,
  868. "preact": preact,
  869. "quasar": quasar,
  870. "react": react,
  871. "react-router": reactRouter,
  872. "react-router-dom": reactRouterDom,
  873. "svelte": svelte,
  874. "svelte/animate": svelteAnimate,
  875. "svelte/easing": svelteEasing,
  876. "svelte/motion": svelteMotion,
  877. "svelte/store": svelteStore,
  878. "svelte/transition": svelteTransition,
  879. "vee-validate": veeValidate,
  880. "vitepress": vitepress,
  881. "vue-demi": vueDemi,
  882. "vue-i18n": vueI18n,
  883. "vue-router": vueRouter,
  884. "vue-router-composables": vueRouterComposables,
  885. "vue": vue,
  886. "vue/macros": vueMacros,
  887. "vuex": vuex,
  888. "vitest": vitest,
  889. "uni-app": uniApp,
  890. "solid-js": solid,
  891. "solid-app-router": solidAppRouter,
  892. "rxjs": rxjs,
  893. "date-fns": dateFns
  894. };
  895. const commonProps = [
  896. "from",
  897. "priority",
  898. "disabled",
  899. "dtsDisabled",
  900. "meta",
  901. "type"
  902. ];
  903. async function resolvePreset(preset) {
  904. const imports = [];
  905. if ("package" in preset)
  906. return await resolvePackagePreset(preset);
  907. const common = {};
  908. commonProps.forEach((i) => {
  909. if (i in preset) {
  910. common[i] = preset[i];
  911. }
  912. });
  913. for (const _import of preset.imports) {
  914. if (typeof _import === "string")
  915. imports.push({ ...common, name: _import, as: _import });
  916. else if (Array.isArray(_import))
  917. imports.push({ ...common, name: _import[0], as: _import[1] || _import[0], from: _import[2] || preset.from });
  918. else if (_import.imports)
  919. imports.push(...await resolvePreset(_import));
  920. else
  921. imports.push({ ...common, ..._import });
  922. }
  923. return imports;
  924. }
  925. async function resolveBuiltinPresets(presets) {
  926. const resolved = await Promise.all(presets.map(async (p) => {
  927. let preset = typeof p === "string" ? builtinPresets[p] : p;
  928. if (typeof preset === "function")
  929. preset = preset();
  930. return await resolvePreset(preset);
  931. }));
  932. return resolved.flat();
  933. }
  934. const version = "3.11.1";
  935. async function scanFilesFromDir(dir, options) {
  936. const dirs = (Array.isArray(dir) ? dir : [dir]).map((d) => normalize(d));
  937. const fileFilter = options?.fileFilter || (() => true);
  938. const filePatterns = options?.filePatterns || ["*.{ts,js,mjs,cjs,mts,cts}"];
  939. const result = await Promise.all(
  940. // Do multiple glob searches to persist the order of input dirs
  941. dirs.map(
  942. async (i) => await fg(
  943. [i, ...filePatterns.map((p) => join(i, p))],
  944. {
  945. absolute: true,
  946. cwd: options?.cwd || process.cwd(),
  947. onlyFiles: true,
  948. followSymbolicLinks: true
  949. }
  950. ).then(
  951. (r) => r.map((f) => normalize(f)).sort()
  952. )
  953. )
  954. );
  955. return Array.from(new Set(result.flat())).filter(fileFilter);
  956. }
  957. async function scanDirExports(dir, options) {
  958. const files = await scanFilesFromDir(dir, options);
  959. const includeTypes = options?.types ?? true;
  960. const fileExports = await Promise.all(files.map((i) => scanExports(i, includeTypes)));
  961. const exports = fileExports.flat();
  962. const deduped = dedupeDtsExports(exports);
  963. return deduped;
  964. }
  965. const FileExtensionLookup = [
  966. ".mts",
  967. ".cts",
  968. ".ts",
  969. ".mjs",
  970. ".cjs",
  971. ".js"
  972. ];
  973. function dedupeDtsExports(exports) {
  974. return exports.filter((i) => {
  975. if (!i.type)
  976. return true;
  977. if (i.declarationType === "enum")
  978. return true;
  979. return !exports.find((e) => e.as === i.as && e.name === i.name && !e.type);
  980. });
  981. }
  982. async function scanExports(filepath, includeTypes, seen = /* @__PURE__ */ new Set()) {
  983. if (seen.has(filepath)) {
  984. console.warn(`[unimport] "${filepath}" is already scanned, skipping`);
  985. return [];
  986. }
  987. seen.add(filepath);
  988. const imports = [];
  989. const code = await readFile(filepath, "utf-8");
  990. const exports = findExports(code);
  991. const defaultExport = exports.find((i) => i.type === "default");
  992. if (defaultExport) {
  993. let name = parse(filepath).name;
  994. if (name === "index")
  995. name = parse(filepath.split("/").slice(0, -1).join("/")).name;
  996. const as = /[-_.]/.test(name) ? camelCase(name) : name;
  997. imports.push({ name: "default", as, from: filepath });
  998. }
  999. async function toImport(exports2, additional) {
  1000. for (const exp of exports2) {
  1001. if (exp.type === "named") {
  1002. for (const name of exp.names)
  1003. imports.push({ name, as: name, from: filepath, ...additional });
  1004. } else if (exp.type === "declaration") {
  1005. if (exp.name) {
  1006. imports.push({ name: exp.name, as: exp.name, from: filepath, ...additional });
  1007. if (exp.declarationType === "enum")
  1008. imports.push({ name: exp.name, as: exp.name, from: filepath, type: true, declarationType: exp.declarationType, ...additional });
  1009. }
  1010. } else if (exp.type === "star" && exp.specifier) {
  1011. if (exp.name) {
  1012. imports.push({ name: exp.name, as: exp.name, from: filepath, ...additional });
  1013. } else {
  1014. const subfile = exp.specifier;
  1015. let subfilepath = resolve(dirname(filepath), subfile);
  1016. let subfilepathResolved = false;
  1017. for (const ext of FileExtensionLookup) {
  1018. if (existsSync(`${subfilepath}${ext}`)) {
  1019. subfilepath = `${subfilepath}${ext}`;
  1020. break;
  1021. } else if (existsSync(`${subfilepath}/index${ext}`)) {
  1022. subfilepath = `${subfilepath}/index${ext}`;
  1023. break;
  1024. }
  1025. }
  1026. if (existsSync(subfilepath)) {
  1027. subfilepathResolved = true;
  1028. } else {
  1029. try {
  1030. subfilepath = await resolve$1(exp.specifier);
  1031. subfilepath = fileURLToPath(subfilepath).replaceAll(path.sep, "/");
  1032. if (existsSync(subfilepath)) {
  1033. subfilepathResolved = true;
  1034. }
  1035. } catch {
  1036. }
  1037. }
  1038. if (!subfilepathResolved) {
  1039. console.warn(`[unimport] failed to resolve "${subfilepath}", skip scanning`);
  1040. continue;
  1041. }
  1042. const nested = await scanExports(subfilepath, includeTypes, seen);
  1043. imports.push(...additional ? nested.map((i) => ({ ...i, ...additional })) : nested);
  1044. }
  1045. }
  1046. }
  1047. }
  1048. const isDts = filepath.match(/\.d\.[mc]?ts$/);
  1049. if (isDts) {
  1050. if (includeTypes) {
  1051. await toImport(exports, { type: true });
  1052. await toImport(findTypeExports(code), { type: true });
  1053. }
  1054. } else {
  1055. await toImport(exports);
  1056. if (includeTypes)
  1057. await toImport(findTypeExports(code), { type: true });
  1058. }
  1059. return imports;
  1060. }
  1061. async function detectImportsRegex(code, ctx, options) {
  1062. const s = getMagicString(code);
  1063. const original = s.original;
  1064. const strippedCode = stripCommentsAndStrings(
  1065. original,
  1066. // Do not strip comments if they are virtual import names
  1067. options?.transformVirtualImports !== false && ctx.options.virtualImports?.length ? {
  1068. filter: (i) => !ctx.options.virtualImports.includes(i),
  1069. fillChar: "-"
  1070. } : void 0
  1071. );
  1072. const syntax = detectSyntax(strippedCode);
  1073. const isCJSContext = syntax.hasCJS && !syntax.hasESM;
  1074. let matchedImports = [];
  1075. const occurrenceMap = /* @__PURE__ */ new Map();
  1076. const map = await ctx.getImportMap();
  1077. if (options?.autoImport !== false) {
  1078. Array.from(strippedCode.matchAll(matchRE)).forEach((i) => {
  1079. if (i[1] === ".")
  1080. return null;
  1081. const end = strippedCode[i.index + i[0].length];
  1082. const before = strippedCode[i.index - 1];
  1083. if (end === ":" && !["?", "case"].includes(i[1].trim()) && before !== ":")
  1084. return null;
  1085. const name = i[2];
  1086. const occurrence = i.index + i[1].length;
  1087. if (occurrenceMap.get(name) || Number.POSITIVE_INFINITY > occurrence)
  1088. occurrenceMap.set(name, occurrence);
  1089. });
  1090. for (const regex of excludeRE) {
  1091. for (const match of strippedCode.matchAll(regex)) {
  1092. const segments = [...match[1]?.split(separatorRE) || [], ...match[2]?.split(separatorRE) || []];
  1093. for (const segment of segments) {
  1094. const identifier = segment.replace(importAsRE, "").trim();
  1095. occurrenceMap.delete(identifier);
  1096. }
  1097. }
  1098. }
  1099. const identifiers = new Set(occurrenceMap.keys());
  1100. matchedImports = Array.from(identifiers).map((name) => {
  1101. const item = map.get(name);
  1102. if (item && !item.disabled)
  1103. return item;
  1104. occurrenceMap.delete(name);
  1105. return null;
  1106. }).filter(Boolean);
  1107. for (const addon of ctx.addons)
  1108. matchedImports = await addon.matchImports?.call(ctx, identifiers, matchedImports) || matchedImports;
  1109. }
  1110. if (options?.transformVirtualImports !== false && ctx.options.virtualImports?.length) {
  1111. const virtualImports = parseVirtualImportsRegex(strippedCode, map, ctx.options.virtualImports);
  1112. virtualImports.ranges.forEach(([start, end]) => {
  1113. s.remove(start, end);
  1114. });
  1115. matchedImports.push(...virtualImports.imports);
  1116. }
  1117. const firstOccurrence = Math.min(...Array.from(occurrenceMap.entries()).map((i) => i[1]));
  1118. return {
  1119. s,
  1120. strippedCode,
  1121. isCJSContext,
  1122. matchedImports,
  1123. firstOccurrence
  1124. };
  1125. }
  1126. function parseVirtualImportsRegex(strippedCode, importMap, virtualImports) {
  1127. const imports = [];
  1128. const ranges = [];
  1129. if (virtualImports?.length) {
  1130. findStaticImports(strippedCode).filter((i) => virtualImports.includes(i.specifier)).map((i) => parseStaticImport(i)).forEach((i) => {
  1131. ranges.push([i.start, i.end]);
  1132. Object.entries(i.namedImports || {}).forEach(([name, as]) => {
  1133. const original = importMap.get(name);
  1134. if (!original)
  1135. throw new Error(`[unimport] failed to find "${name}" imported from "${i.specifier}"`);
  1136. imports.push({
  1137. from: original.from,
  1138. name: original.name,
  1139. as
  1140. });
  1141. });
  1142. });
  1143. }
  1144. return {
  1145. imports,
  1146. ranges
  1147. };
  1148. }
  1149. async function detectImports(code, ctx, options) {
  1150. if (options?.parser === "acorn")
  1151. return import('../chunks/detect-acorn.mjs').then((r) => r.detectImportsAcorn(code, ctx, options));
  1152. return detectImportsRegex(code, ctx, options);
  1153. }
  1154. function createUnimport(opts) {
  1155. const ctx = createInternalContext(opts);
  1156. async function generateTypeDeclarations(options) {
  1157. const opts2 = {
  1158. resolvePath: (i) => stripFileExtension(i.typeFrom || i.from),
  1159. ...options
  1160. };
  1161. const {
  1162. typeReExports = true
  1163. } = opts2;
  1164. const imports = await ctx.getImports();
  1165. let dts = toTypeDeclarationFile(imports.filter((i) => !i.type && !i.dtsDisabled), opts2);
  1166. const typeOnly = imports.filter((i) => i.type);
  1167. if (typeReExports && typeOnly.length)
  1168. dts += `
  1169. ${toTypeReExports(typeOnly, opts2)}`;
  1170. for (const addon of ctx.addons)
  1171. dts = await addon.declaration?.call(ctx, dts, opts2) ?? dts;
  1172. return dts;
  1173. }
  1174. async function scanImportsFromFile(filepath, includeTypes = true) {
  1175. const additions = await scanExports(filepath, includeTypes);
  1176. await ctx.modifyDynamicImports((imports) => imports.filter((i) => i.from !== filepath).concat(additions));
  1177. return additions;
  1178. }
  1179. async function scanImportsFromDir(dirs = ctx.options.dirs || [], options = ctx.options.dirsScanOptions) {
  1180. const files = await scanFilesFromDir(dirs, options);
  1181. const includeTypes = options?.types ?? true;
  1182. const imports = (await Promise.all(files.map((dir) => scanExports(dir, includeTypes)))).flat();
  1183. const deduped = dedupeDtsExports(imports);
  1184. await ctx.modifyDynamicImports((imports2) => imports2.filter((i) => !files.includes(i.from)).concat(deduped));
  1185. return imports;
  1186. }
  1187. async function injectImportsWithContext(code, id, options) {
  1188. const result = await injectImports(code, id, ctx, {
  1189. ...opts,
  1190. ...options
  1191. });
  1192. const metadata = ctx.getMetadata();
  1193. if (metadata) {
  1194. result.imports.forEach((i) => {
  1195. metadata.injectionUsage[i.name] = metadata.injectionUsage[i.name] || { import: i, count: 0, moduleIds: [] };
  1196. metadata.injectionUsage[i.name].count++;
  1197. if (id && !metadata.injectionUsage[i.name].moduleIds.includes(id))
  1198. metadata.injectionUsage[i.name].moduleIds.push(id);
  1199. });
  1200. }
  1201. return result;
  1202. }
  1203. async function init() {
  1204. if (ctx.options.dirs?.length)
  1205. await scanImportsFromDir();
  1206. }
  1207. return {
  1208. version,
  1209. init,
  1210. clearDynamicImports: () => ctx.clearDynamicImports(),
  1211. modifyDynamicImports: (fn) => ctx.modifyDynamicImports(fn),
  1212. scanImportsFromDir,
  1213. scanImportsFromFile,
  1214. getImports: () => ctx.getImports(),
  1215. getImportMap: () => ctx.getImportMap(),
  1216. detectImports: (code) => detectImports(code, ctx),
  1217. injectImports: injectImportsWithContext,
  1218. generateTypeDeclarations: (options) => generateTypeDeclarations(options),
  1219. getMetadata: () => ctx.getMetadata(),
  1220. getInternalContext: () => ctx,
  1221. // Deprecated
  1222. toExports: async (filepath, includeTypes = false) => toExports(await ctx.getImports(), filepath, includeTypes)
  1223. };
  1224. }
  1225. function createInternalContext(opts) {
  1226. let _combinedImports;
  1227. const _map = /* @__PURE__ */ new Map();
  1228. const addons = [];
  1229. if (Array.isArray(opts.addons))
  1230. addons.push(...opts.addons);
  1231. else if (opts.addons?.vueTemplate)
  1232. addons.push(vueTemplateAddon());
  1233. opts.addons = addons;
  1234. opts.commentsDisable = opts.commentsDisable ?? ["@unimport-disable", "@imports-disable"];
  1235. opts.commentsDebug = opts.commentsDebug ?? ["@unimport-debug", "@imports-debug"];
  1236. let metadata;
  1237. if (opts.collectMeta) {
  1238. metadata = {
  1239. injectionUsage: {}
  1240. };
  1241. }
  1242. let resolvePromise;
  1243. const ctx = {
  1244. version,
  1245. options: opts,
  1246. addons,
  1247. staticImports: [...opts.imports || []].filter(Boolean),
  1248. dynamicImports: [],
  1249. modifyDynamicImports,
  1250. clearDynamicImports,
  1251. async getImports() {
  1252. await resolvePromise;
  1253. return updateImports();
  1254. },
  1255. async replaceImports(imports) {
  1256. ctx.staticImports = [...imports || []].filter(Boolean);
  1257. ctx.invalidate();
  1258. await resolvePromise;
  1259. return updateImports();
  1260. },
  1261. async getImportMap() {
  1262. await ctx.getImports();
  1263. return _map;
  1264. },
  1265. getMetadata() {
  1266. return metadata;
  1267. },
  1268. invalidate() {
  1269. _combinedImports = void 0;
  1270. },
  1271. resolveId: (id, parentId) => opts.resolveId?.(id, parentId)
  1272. };
  1273. resolvePromise = resolveBuiltinPresets(opts.presets || []).then((r) => {
  1274. ctx.staticImports.unshift(...r);
  1275. _combinedImports = void 0;
  1276. updateImports();
  1277. });
  1278. function updateImports() {
  1279. if (!_combinedImports) {
  1280. let imports = normalizeImports(dedupeImports([...ctx.staticImports, ...ctx.dynamicImports], opts.warn || console.warn));
  1281. for (const addon of ctx.addons) {
  1282. if (addon.extendImports)
  1283. imports = addon.extendImports.call(ctx, imports) ?? imports;
  1284. }
  1285. imports = imports.filter((i) => !i.disabled);
  1286. _map.clear();
  1287. for (const _import of imports) {
  1288. if (!_import.type)
  1289. _map.set(_import.as ?? _import.name, _import);
  1290. }
  1291. _combinedImports = imports;
  1292. }
  1293. return _combinedImports;
  1294. }
  1295. async function modifyDynamicImports(fn) {
  1296. const result = await fn(ctx.dynamicImports);
  1297. if (Array.isArray(result))
  1298. ctx.dynamicImports = result;
  1299. ctx.invalidate();
  1300. }
  1301. function clearDynamicImports() {
  1302. ctx.dynamicImports.length = 0;
  1303. ctx.invalidate();
  1304. }
  1305. return ctx;
  1306. }
  1307. async function injectImports(code, id, ctx, options) {
  1308. const s = getMagicString(code);
  1309. if (ctx.options.commentsDisable?.some((c) => s.original.includes(c))) {
  1310. return {
  1311. s,
  1312. get code() {
  1313. return s.toString();
  1314. },
  1315. imports: []
  1316. };
  1317. }
  1318. for (const addon of ctx.addons)
  1319. await addon.transform?.call(ctx, s, id);
  1320. const { isCJSContext, matchedImports, firstOccurrence } = await detectImports(s, ctx, options);
  1321. const imports = await resolveImports(ctx, matchedImports, id);
  1322. if (ctx.options.commentsDebug?.some((c) => s.original.includes(c))) {
  1323. const log = ctx.options.debugLog || console.log;
  1324. log(`[unimport] ${imports.length} imports detected in "${id}"${imports.length ? `: ${imports.map((i) => i.name).join(", ")}` : ""}`);
  1325. }
  1326. return {
  1327. ...addImportToCode(
  1328. s,
  1329. imports,
  1330. isCJSContext,
  1331. options?.mergeExisting,
  1332. options?.injectAtEnd,
  1333. firstOccurrence,
  1334. (imports2) => {
  1335. for (const addon of ctx.addons)
  1336. imports2 = addon.injectImportsResolved?.call(ctx, imports2, s, id) ?? imports2;
  1337. return imports2;
  1338. },
  1339. (str, imports2) => {
  1340. for (const addon of ctx.addons)
  1341. str = addon.injectImportsStringified?.call(ctx, str, imports2, s, id) ?? str;
  1342. return str;
  1343. }
  1344. ),
  1345. imports
  1346. };
  1347. }
  1348. async function resolveImports(ctx, imports, id) {
  1349. const resolveCache = /* @__PURE__ */ new Map();
  1350. const _imports = await Promise.all(imports.map(async (i) => {
  1351. if (!resolveCache.has(i.from))
  1352. resolveCache.set(i.from, await ctx.resolveId(i.from, id) || i.from);
  1353. const from = resolveCache.get(i.from);
  1354. if (i.from === id || !from || from === "." || from === id)
  1355. return;
  1356. return {
  1357. ...i,
  1358. from
  1359. };
  1360. }));
  1361. return _imports.filter(Boolean);
  1362. }
  1363. export { resolvePreset as a, builtinPresets as b, createUnimport as c, scanDirExports as d, dedupeDtsExports as e, scanExports as f, resolveBuiltinPresets as r, scanFilesFromDir as s, version as v };