pinia.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /**
  2. * shims/pinia.ts —— 'pinia' 模块名 → UMD 全局 Pinia 的唯一胶水层(README §3.3-1)。
  3. *
  4. * 存在理由:SFC 模板编译器(@vitejs/plugin-vue)产物内部会生成
  5. * 'import { X } from "pinia"' 这类模块名 import,vite define 无法改写模块名(只处理裸标识符),
  6. * 故 vite.config 的 alias 将 'pinia' 重定向到本文件。
  7. *
  8. * 关键实现(保证 dist 不含框架运行时):
  9. * - import type 仅取 ESM 命名空间类型(编译期擦除,不进产物);
  10. * - 运行时值全部取自 globalThis.Pinia(index.html 引入的 UMD 全局);
  11. * - 编译后只剩"取全局 + 转发"代码,框架本体不进 dist。
  12. *
  13. * 本文件由 scripts/gen-shims.cjs 生成(导出清单来自当前安装版本,跳过 ESM 类型未声明的 SSR/compat 边缘键);
  14. * 框架升级(README §1.5 五步流程)时须重新生成并按 typecheck 报错维护排除清单。
  15. * 纪律:shims/ 是全项目唯一允许出现框架模块名的目录。
  16. */
  17. import type * as PINIA_NS from 'pinia';
  18. /** 运行时框架全局(index.html 按序注入;经 unknown 收窄为 ESM 命名空间类型) */
  19. const V: typeof PINIA_NS = (globalThis as unknown as { Pinia: typeof PINIA_NS }).Pinia;
  20. // eslint-disable-next-line import/no-mutable-exports
  21. export const MutationType = V.MutationType;
  22. // eslint-disable-next-line import/no-mutable-exports
  23. export const PiniaVuePlugin = V.PiniaVuePlugin;
  24. // eslint-disable-next-line import/no-mutable-exports
  25. export const acceptHMRUpdate = V.acceptHMRUpdate;
  26. // eslint-disable-next-line import/no-mutable-exports
  27. export const createPinia = V.createPinia;
  28. // eslint-disable-next-line import/no-mutable-exports
  29. export const defineStore = V.defineStore;
  30. // eslint-disable-next-line import/no-mutable-exports
  31. export const disposePinia = V.disposePinia;
  32. // eslint-disable-next-line import/no-mutable-exports
  33. export const getActivePinia = V.getActivePinia;
  34. // eslint-disable-next-line import/no-mutable-exports
  35. export const mapActions = V.mapActions;
  36. // eslint-disable-next-line import/no-mutable-exports
  37. export const mapGetters = V.mapGetters;
  38. // eslint-disable-next-line import/no-mutable-exports
  39. export const mapState = V.mapState;
  40. // eslint-disable-next-line import/no-mutable-exports
  41. export const mapStores = V.mapStores;
  42. // eslint-disable-next-line import/no-mutable-exports
  43. export const mapWritableState = V.mapWritableState;
  44. // eslint-disable-next-line import/no-mutable-exports
  45. export const setActivePinia = V.setActivePinia;
  46. // eslint-disable-next-line import/no-mutable-exports
  47. export const setMapStoreSuffix = V.setMapStoreSuffix;
  48. // eslint-disable-next-line import/no-mutable-exports
  49. export const shouldHydrate = V.shouldHydrate;
  50. // eslint-disable-next-line import/no-mutable-exports
  51. export const skipHydrate = V.skipHydrate;
  52. // eslint-disable-next-line import/no-mutable-exports
  53. export const storeToRefs = V.storeToRefs;