vite-plugin-config-helper 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,64 +1,67 @@
1
1
  # vite-plugin-config-helper
2
2
 
3
- 一个用于更改默认 vite.config.ts 文件,将配置逻辑分离到 build 目录文件的插件。
3
+ 简化 vite.config.ts 文件配置,快速集成基于 element-plus UI 的项目。
4
4
 
5
- 如果项目存在 build 目录,且包含 index.ts 或者 plugins.ts 文件, 则插件将不会更改 vite.config.ts 文件。
6
-
7
- 可以利用这个插件来整合之前写的 <span style="color: darkcyan;">vite-plugin-env-helper</span> 和 <span style="color: darkcyan;">vite-plugin-scan-routes</span> 插件,还可以拓展其他配置,例如 element-plus 组件,来快速搭建项目框架。
8
-
9
- 该插件只在项目初始搭建时起作用,搭建完成后会自动删除自身,所以不需要关注本库的大小及优化!
10
-
11
- 运行逻辑:
12
-
13
- 首先会判断在项目根目录下是否存在 /build/config/index.ts 或 /build/config/plugin.ts 文件,不存在则继续执行,
14
-
15
- 然后判断是否存在 .env 文件,并在该文件中以 VITE_APP_BASE_URL VITE_APP_PROXY_URL VITE_APP_PORT 这三个键承接插件传入参数 baseUrl proxyUrl port 。
16
-
17
- 在这个插件的开发过程中,不断添加的参数增加了复杂度,先是整合自己的两个插件,然后又想加 element-plus tailwindcss 等,边界的扩大导致了使用的复杂,最后决定整合 element-plus 然后稳定下来,这就已经可以实现比较全面的基础模板了。
18
5
  ## 安装
19
6
 
20
7
  ```bash
21
- npm i -D vite-plugin-config-helper
8
+ npm i vite-plugin-config-helper -D
22
9
  ```
23
10
 
24
11
  ## 使用
25
12
 
26
- ### 配置 <span style="color: darkcyan;">__vite.config.ts__</span>
27
-
28
- 1. 利用vue 或 vite 官方脚手架创建 vue 项目后,在 vite.config.ts 添加以下内容,然后执行命令 vite 。
29
-
30
- 2. 检查 package.json 文件,重新安装依赖。
13
+ 利用 vite 或 create-vue 脚手架创建项目后直接安装该插件,在 <span style="color: darkcyan;">vite.config.ts</span> 进行配置即可。
31
14
 
32
- 3. 经过上面的操作,本插件会帮我们改造 vite.config.ts 配置文件,并将一些插件配置(element-plus)拆分到 /build/config 目录中,不用每次都去官网复制粘贴,能快速初始化一个干净的项目。
33
15
  ```ts
16
+ import {fileURLToPath, URL} from 'node:url'
17
+
18
+ import {defineConfig} from 'vite'
34
19
  import vue from '@vitejs/plugin-vue'
35
- import { defineConfig, type UserConfig, type ConfigEnv } from 'vite'
20
+ import vueJsx from '@vitejs/plugin-vue-jsx'
21
+ import vueDevTools from 'vite-plugin-vue-devtools'
36
22
  import {configHelper} from 'vite-plugin-config-helper'
37
23
 
38
24
 
39
- export default defineConfig((config: ConfigEnv): UserConfig => {
40
-
41
- return {
42
- plugins: [
43
- vue(),
44
- // 路由插件是自用的,感兴趣可自行查询,实现了 unplugin-vue-router 部分功能:约定式路由。
45
- // element-plus 最好是 2.10.5 以上版本
46
- // configHelper() // 默认值如下
47
- configHelper({
48
- port: 5173,
49
- baseUrl: '/api',
50
- proxyUrl: 'http://192.168.0.193:9999' ,
51
- pluginEnvHelper: true,
52
- pluginScanRoutes: false,
53
- pluginElementPlus: true
54
- })
55
- ]
56
- }
25
+ export default defineConfig({
26
+ plugins: [
27
+ vue(),
28
+ vueJsx(),
29
+ vueDevTools(),
30
+ configHelper()
31
+ /** 默认值如下
32
+ * 1. 本插件默认会安装 element-plus 的最新版本(>= 2.11.7)(2.10.5 开始提供了 select 的 options 属性)
33
+ * 2. 配置项 pluginEnvHelper 是用于扩展 .env 功能的,port baseUrl proxyUrl 都能通过 vite-plugin-env-helper 进行管理
34
+ * 3. 配置项 pluginScanRoutes 是自用的,感兴趣可自行查询,实现了 unplugin-vue-router 部分功能:约定式路由。
35
+ * 4. 配置项 proxyUrl 是 vite 开发服务器代理地址
36
+ * 5. 配置项 baseUrl 是 vite 开发服务器代理地址的代理前缀
37
+ * 6. 配置项 template 是使用 vue-i18n tailwindcss 模板的选项
38
+ */
39
+ // configHelper({
40
+ // port: 5173,
41
+ // baseUrl: '/api',
42
+ // proxyUrl: 'http://192.168.0.193:9999',
43
+ // pluginEnvHelper: true,
44
+ // pluginScanRoutes: false,
45
+ // pluginElementPlus: true,
46
+ // template: true,
47
+ // })
48
+ ]
57
49
  })
58
50
 
59
51
  ```
60
52
 
61
- ### 说明
53
+ ## 说明
54
+
55
+ 最初只是想实现 vite.config.ts 配置项的分离功能来提高可读性,但做着做着发现这里要做的事情太多了。最初是将改造的 vite.config.ts 内容以字符串形式硬编码到项目里,但随着字符串越来越多,代码可读性也变差。于是把代码写入文件中,直接从文件里读取提高可读性。
56
+
57
+
58
+ 该插件只在项目初始搭建时起作用,搭建完成后会自动删除自身,所以不需要关注本库的大小及优化!
59
+
60
+ 运行逻辑:
61
+
62
+ 首先会判断在项目根目录下是否存在 /build/config/index.ts 或 /build/config/plugin.ts 文件,不存在则继续执行。
63
+
64
+ ### 基本结构
62
65
  插件运行后会更改已有的一些文件并添加一些文件,变动如下:
63
66
  ```md
64
67
  ├── build/
@@ -75,10 +78,11 @@ export default defineConfig((config: ConfigEnv): UserConfig => {
75
78
  │ │ └── ep.d.ts # ElementPlus 配置文件,包括组件和样式自动导入等
76
79
  │ ├── hooks/ # hook 目录
77
80
  │ │ └── color.ts # ElementPlus 动态更改主题色
81
+ │ │ └── locale.ts # vue-i18n 更改语言
82
+ │ ├── plugins/ # plugins 目录
83
+ │ │ └── i18n.ts # vue-i18n 插件配置
78
84
  ├── .env # vite-plugin-env-helper 添加的环境变量配置文件
79
85
  ├── eslint.config.ts # vite-plugin-env-helper 更改后的配置文件
80
86
  ├── vite.config.ts # 修改后的 vite 配置
81
87
  └── package.json # 修改后的依赖
82
88
  ```
83
-
84
- 本插件默认会将依赖的 unplugin-auto-import unplugin-vue-components unplugin-element-plus element-plus 库的最新版本写入 package.json 文件中, 因此这些依赖更新时,插件也应该更新。更新版本时插件源码位置为 500 和 509 行。
@@ -0,0 +1,2 @@
1
+ cb790a18760944d42ae56098b81cb870ce11d5065f8d77cc3881a36d1c9eeb28bf3b24fa29e56c202f8ba582901d015c7adf932429b5cca9ec28db9ce20d3b75f11554d6a20b7320c1f49c936d37d426a62548e181f9b95e17a633be9d89628db006c6829358fb21a443f801292c262194a835d73eb1d890f47578de68501ed38637723eb2d14c63b5b91a32578550a0ad821a80e4ec3246cfdb5ccf4ec2c7340200d3a2398445cc6bd5172b6234f3f53d74689502358ba7727b7a7bff81b294e9fc53b3a0c70d34d3d43372f1767baf99603ad155327d69e672d3c81a97007cb50093b2916a97c6d3705f7b12e989d3f12494b7bb90d16d0b9fd27a03cdd476ffe0a57500343816fccc6495cd2dacc93719c627db0cfec68957c4e2c34f7327b1b951de5e56a1e1bd9ecd62cb08e4217a6bc495edc17a36f549e51b6918895fa2dacd80ab61bd216e87a29d1937e81e11fc19f36a2bb8c134894e6372406991181e0e50ce615abfc8ea2eb73ed5d6adbfde345ab29a249d84c29a5a8139cc0ec414586d1dcd3b792fa1f7500219eadbffe0b744ac20e1f514456e8fadee08d646e4bf4bcd943bc91f3d4f7fb88b4062529a8b3be48d02b83e455a03347479f2a55afaa351ccf7ae6555831093af852d7342b0745a1df7b93a036108e5388bceec486a0d285dd1ecd8b399b7144ca67e4f42b9487cdca3ca9d6b02a91c07577b5764d3275cc1f6ef9f7898e7acfdf127982536b469795297c8f9058f3baa029795a7e8a2252bf824850daf1fdb3726c1bdb790db2981ab2306375870267ab9801f7b25afb95fbd73a9a7ed138e58692ce3ad85af47fb73902a46048585a9ea656839c359d5fc6a108f4994a15d32ee8dd60dff7c10da4c545d44f71eb3877510dda62f6150911783c620d5d33026179f3b11a157c4cd0c6b8c5c78d652f9afab5a043d67210d8e9b0179bf49f5637014950df1e69cbbcf91d7126f34de8b71cbd9f49c55134c478731790145015cb8cbfaa90b2cfe687dcb39843ac99e2c2c9dfe438d53d18e35ed05a1aa49cbf65bd1bfe3101172058c75bb6694530bebc055fea760c2619440c67f9c9a0a69d0e5f0
2
+ cda2e09cbfd8566fd137f30f3e245548
@@ -0,0 +1,2 @@
1
+ efb12d017d8d513fbf1dce3df41680c78ce78ba77b2231b4de09110f0468e9eadb07db49d90efd5c9680659319049dbf11e2bd8a12d4b0ea5e625d38e3b68dac8466f03630d8bd4e2ba59e50002ba0a7822240d8d93bda099c4006e5b7b197d28568c755849c25622102b4175d7536259cdc03066fd6796b6af09773d07e305fef0112b911900349bee2deb25fac6dbe8b94b891c3a120afc411de82c0c8bd0b49113ca19b8f8df3cc492800d3c8bd06ffa122baa46e8fd39cd542cd4c744bab010a4f42a475a7be3540264956f206bd469265d6838c9724464c335e247e5a5fa0ae199617dd2dc72fd15489343c1a4ac86fece74f1cff5071d7b59df4739d392ce6d8c637748c88d6259c7c032828a956a817fff30922ed021f7005c648ebd5ce35c2e41ef7ebe2d23e64af8f06735b5bfb85c5572548a0297a0307fe93162789fc7299df03abf1230ad6d82f0608d359d58989350017fb39fa23d88fcf495c062517c135633210821cb57d11a4d2a44374d6e094227711c4ebce5b6a5bdf1ec5bcf7286ed013196b4fd016e9eae27bc3c4d2bc479145b18eb073f992e47e57b5f6b10dcbe43fb7cd942de4c33bb9fc61e81ab7c0c074d7d29c23b7a8592e0d454dc0fa4cdfa5cdb0e37c0b45f1cd1c6b25e37ddd70ccf97a69580743b3583fbfb610851414255fc02a1c0ec69fdc46251771d2918099d56d1b5c2db700feae74af59598ecaea9c9521117748ff15b30663e5ec1a64f4a2b53ea31a8d059f019f770744192a7648aa9d017e14987712b9c85b4a1fc9c543a6b983f7fa44affe9dd59532f58f16a5681bab3f79986309099f54b786ac18d5d22f2a664bfafb95cac94377a85143d796619c7613c625c4850705734cf17d36604cf6558730eab948adcfe8705fdf46233fb0f7b84b2c145268ad50ca7beac22628b0182b1050db39d49fd186cf567bbe4e21c3cd2c892d7f9772ce6515d51ac1397e7be870d37e51e15b5f8e99bf368ace85e30612a7aeb7fd85027152bbde5b4292ca8a986658ab083df7ba5f6123fcb3a005897694e89691af3c3e76142ad22340ef0b4c33535dcd8ebaab8c5d5379142e62f3a4b3dda23aa99ec6d1f5a5023fc3efc5e5a5d76fea8c849ead0295fdbe1e2192316bb2b9b490ec90eda01a2fd99617678c0785a5486923645b416e2191f371518ac4464cf209bf0e02abfc1388d6d28b0db6a94d1e55df54666a5ea40280501f8b85ab518d21db799960beffd0ceaf2e6bc92c887eec87b4aa478b8fc1920618166c420061daeee1412846cf463cb2db26008b843eae1bd70d2daa8db3e505f7d3241e0eece6dfe20ec441e521160e228779ee695ba14b7ea935e9674ab49af971cce935fb1032ed9dd5ce6f57b52c4095a376737f9d86157e83f299513800e448d59a798e3d206a78febb7d6048583fe1ae0ef4fd53f9e9a03c21853daf35b001ccd28e8a83c6880fba66695431f0464db294625ce3786da7ec66b6cde78027e0f921d39e1f7493eb1c0f342b43b8b67133317755dbe3dd8a8dcabb31d7e001897e642d04ba50c09c6d31f0735e988a37c15cf39fac8e53f70226b1534e5472d0a8afb05304bd1fc320e61479fece217994e9750c94aa676d5542c5570bf87d768339138e01562329277e9ce5efa411ba8c219ef1630acccf08219532c2f91087d832e0bfe825e7813e8233f606aeef8610056c414a9d2d9c9e5312c745b70bb39d0cd10b963559ef581b7f45027e67b4128819d8109e3f59cabe1b19581701f87d746dc95f01b21591dd02c5ad7827034ef6dff10ba146743d5e886decced33c7c0ae9734506d71a6e34431e5dee07bcdc4cbf3885499a685e53f692a52dcabe7079995a2f96e15d645c5842cf2453f35dfa07161c86d7809ea4b47c761e451ad73c45376ddda6c9008eed9a75f5f4fe4b97c779b28d08076e75313de789bfa79a23ea5596b42ae0c914dcc4048f6ae89ab2
2
+ aa8bccc10ea32716af79431a090591ce
@@ -0,0 +1,2 @@
1
+ c10bfa1fd93b186d3dfb88039e6492fbcc6429c13199588bbdbb8d1bc0b202c21224ec8a445bc0b59b3ebb3a4025d9dfb7db4b1a535a7b87504c5bbf200378b98c0ce966a25e58a331c635348ff729d44c2c7c14c248155f3d32542064d6cfdb836b227a1fa9e436d35709f32ac0af397ad54ee893565ae108139c4e1e4ad62cebc5950e371e27d70fcc4cd5e98f96f2a1a85d0af0fb114ca8a9fb7d816cfa1a201d7227816063f04f5935bc32744b4bec5094f728bef8fb2bb5aede83b66300af4793976a6c3d5245e1b955d06648deb43a404a61b4b40777a754fbee7f9c80e6942dbe9815eedfd2ac05e28d3b7f184bb11b6d4364de877bc36f71fc2272fc41ead524c7f8a01ba34340cd59e1b1d0954644b910db82cd281bc20236f296fc519844bc782139fc09678186391503d31e1168fe3ac365cefe87c16470a59fa81b06466e9350a35ae20bc27c51bcd71fa61c38249293ae4aa4f78e388a6e29aabd6b2ba0b8bf7c47dd1f71c8d42db43f9c9d3b01c09c7ee3ff363ec63740607e2c4703166ac4d8689e2b9042fde6ecc3b03ce5bfdf42c972530de25ba114e8437184e196bf94cfa3fed36b2b7771693f301379d15abba8586d6b33fc219ebbcf28b84e9cace45c4d8d643026f4ccdc2eaff4f1c25d8f17acf331cdd5d5d9c7ad1b95f83377c9aec2efd86181c359e3f69c65c2bebee57dfe4d6cfb29d5e90e45e6782b60dc05d72de582264dcf9f9182bcf1942693c6b14d0be1086071aa144f42680efe225bd8d6f210c28f2bb3017e839c177f878e214b4994006a967812e842db33731bd46b1610f4722fd9a02ec336165fb7305e13e387c8644238da7b0e9953b1665015c744d33187fd6e64bce2a20a4a9f45b8587a0c712f5e96d17261263110d8d150ccde3fe64bc983dcd70f9631ace2f5c0d4ed96fd88dd103135b0f224206e71432c35976fb1c76b970e916d106e291f9b059cacb004d713055fdd59b02f150ed2849ab3cb91a9090c61176ea6980b5e268051333c75fc18c143c7fceb5e6897e4179b4f08fa1342eba57b524f4ef7ef9de0016fbe570848be072576fdb25a11dc0cda272124c091d021589d083c45b20adc940464c8c72ecbb0805e44ee045f64c6c51b81d20a59b223033600179d34b72607e861ac9b270e422950d5e9268378c9545f79a7dfaa9cd0e673272d596d3107ca32d3742bdb19f953c34434ec7435c314148465bf7e003576729515e16b72bc7d1caa7bc270a7da6935f2d223c6aaecf422b599872588f63ab220b6574fe05f6d7ef25ab6b39b57fd5aa539d2ac04356cef1b428a032595d1135df89f4cc7da39108cc30f7d75dc071accba2435d4f832f5b7daceae9bc74ca15ac80418dbcc297062478756984117000b0d7365ddaa168fb344b55a04707f2215a16782f7031f1c23e7cc44cc5704cf348cde80f6aeb766d7d6e45cc1b93564feca3e93bbcdfd84eb2daf4fd27588e0be8ce7f787abdc1320e5c6bcc7fbafe9fc6f3ea2389d3f40f29b173cf2ed69309fcee4f296037aad39e2e13624bc6b88179fc96fe7cc21293596c5a89ff0735f6b3fbe10ffe312a4fabb8d4949541acb1d35ee82fb9cab07019c3f75caf8aafdda6699c598f80bc56d41671fb9237b2f0c62ea64af3d958c7284b0e94d0630c544d1d042876b4279153a600cfdef40df6cfd3191c0715837e2d230abf04c6d2b9d5ef2d843e6a58cad4f5888eb7930e79b2a77206b9e9c5c2415cc53552dadcbd55b81a816659f8913bca2c3ba2e7ae35a3faaf6eea90a315fd14278c6e71424d8a3d3ffc0edfea7936b6bb0ac1a7bb7e0f1a97fc367d6c61b74122a1eeb8fdaaafca9d7e1a78a3cf29fcca74dea26
2
+ 2487dfc66becbdff20d6f96a1e25a085
@@ -0,0 +1,2 @@
1
+ 44e776670a52d89f432322226660399c7c067f48c5e1aa42e884da0e56fac484c67cd71025a4e051216ae065111ecadf6d23ec5d9470ae6037ed2d6a69c0c8208484f9dcb35d9d0c2827d1b09ac5c3802d7e0111c238c91bf4691b525fde349f023f5b1f5e0d3f5ce6afc66de42e869fbd2ff72d3294236a6812574c330d876cf928f3553bb4c24c936289949ddcd29b3720c093da3c2f35a2d1948d684255eb363373fb9d083ed43487cea4307f73fd95c6297dc4e5a50f19998e6008f830ba0e313e6b98807263bee578ccd5a5bf4e37ebf8c786ef78851b5024186d3923bd8a80abc5451f8851bedad668be817386e8437bfdfec69d5b3399a8649ab01e3aab80a170dbfdc800a666447e23667f6493b7f553ab8a5674f6aac0c993e8ce353ecdfc55b860b9e25cae38bb688aa8147022c09cac12e65719944af81159e4708c9bc5fedbff4a3376346fe385be3a30eac83f3bfc74a9487bb6d0632aa1aacae77d96426458996bd5231de264abd5a743234b4e9cc296f73c587dbbb39004114c06233d7f75b1bea246bffeaf459a29fc817fab54353ef8a42d7ca25e3fbe1ce80ffe6a36ed961ee4d0b937426b4630
2
+ d92b292727a12d9418922f93f4c44155
@@ -0,0 +1,2 @@
1
+ 44a5a0ec937a7a1c5f22beb5002249a54827ebc745ac05ef474f8db0d2c21758a170fef14ecddb0910d451852c7598c9fae14576ca03c7eff66e01881c8ee5c06913a0fc659f205e188eb85405f786911617d7f49ee9f1c2669193e481bbd3dc8a714a2c4805d99c2fcfd301995321ba88efea351b1f5086af8df92fe017dac6e049a6cf8e67b7f7e3bb45be3889bd32af7d11a2bdffadf42f6f68433cef294f36155bdb9788b5953b9d4ebd44a9cceb709d32b579348fcadec6f64596a764234e5050b0f00faab9a86e1af089f906e0f22414e64f5ad0b0dd58f2f31d6fccd910e7b517015b3871cdff5ecf064b29403a9433f88486a7f31ccec036d01678097f0ac3ee185fa20b14ccb781a6f44a41d04b547b653ff5ba79d060b80bf2d7f18fa9a430988501feb83901e11c5a1988824b484dc6216d2d18a04211d6854022729c936ea03d5dd29b21cb34f179b1e9858a462f74f861128ba246e45dd7ca7d711e1ed02083c1e45862386e139c1a62
2
+ c5c4db771cfa5fb91a863b84c0a1a4fe
@@ -0,0 +1,2 @@
1
+ 49e1f21ed942722fbdeb8104b131cc68a1185eaee5a8d964c35256b3a81a5c120935619de4922f1bdc2ecaf2d9206ea04acee3b18d9a2dba4e44b6542ea27bf51bf33277c67ffce9e3c4787a15a062991d1babfc53c67d3569dfa6542e0875a1af9861c8c0cba50ca6bf40efe0a45b144d9b1a78c23cfe0a4bda29ebc42ece557bf05da16fd5961acb451e24f73c7577ad9a1dc82cb0e321040affe19892c4185a43219c1b01574d76ae013c8b0ab4c2c1eeb205000b1577b8b13eecbf9409caf02fcc70d9e6985364e540c9978e598993c4292290d0ae3689ad45b711ca808b615fe9d365a2568c61d78d136de9b0d93f03e2d210288c1c50ada5d2c2257fbf557650c7f1797624bdcdfd03aba619d16f2ddf93ced70b973abda369f2f840f6a95b23951295e01b09b87d0d72499143078a13c29889a804d287fc38b03b7335590a69d14732608c725c11f25199482868dfde07134ef92627553cc1556a773a
2
+ d8d3aa777845b1850d1bcb3298028ceb
@@ -0,0 +1,2 @@
1
+ c3071cbef9a730ef7c8b7b9f730e0568d49155f5508d25d15ba0dcaca31d5df51d9151892a2af0a8f013b82c244a49c560d3b84764b38962aa46baeaa6ce511b57d4eefefcf04eb56344a212c1422ca5f14831339360743c664a90fa0ca6a1dcf19a6cd3069579f13ed81d548e6896cf96e16e4d738bc0648000d5a521843bec14ebc1baf655ab9cf239b9f6575ab7113fa8af8ad373b0f9f4c1f9c8758561d5d19c1988d5b5aaec09a6fe07fa759b842fe149df40525b11e2f23371493df6d50580a33cea0b606dbc3893ce35b515354720d30487d119fc264ec97871b90fcd25c2dc1e92d831c8d69fc866db18720433ac0979375923af51f169ed7b36350ce9f43d8e37b95c32810ce6e8380190489b93f757353803defa5ea49e6a5ccc54
2
+ dc5d99170a416592e6ae287c0cb2eec3
@@ -0,0 +1,2 @@
1
+ f50ca850ca4b050fed5322ea7165742787c406f9ffea47e6ed8ee575c9c8aa3cb4f01fefa3f25563eac8fb034f61892cfb0cb0c20858037cb4e7aaa2f52ebdbdc8b64e68f1b164a693c262d5ed665aae04e5cdbeaf8eddcf2d1343a7ee01734a4cda29af05e77ff35641c5cbcc430088f69d3bcce013eeb2ff000dd5cbbaff363259be984e2bf777f488e6c498d79de911758e49f7c419b7b133268ac7c3ac927b671807429ddd37b301388d2f09c9c6e6fec73b0da5c6fe1a9da3c0bf1e8c9d76afcb63a1bbdd01b73f99b6ccaaa08a7bc67066c92df4b220a7eb25c35128209cf8b0a255d0c6968d8ee20a9abd8955f77d5149d341f4d6b870941379dcf8caa618b0c2e5a16dce458ffc3474e000f1ba15527e1ed50afbfc10cd8f9e157abfe3fce52ad0fab52562bd0a1cc1f8897c96ae3e68186719d7d07f5c8cb1ebaabb9bc880037de0a3954e34e91e86b285cce57476335754e234dbd401fd57bed986c6fbcf0946f5e4d5e33ef9556d139c617d9fd6b76082649701468dc0aa4c1e62
2
+ 8fe4d79ce87def9a3ff85f16c9ee6019
@@ -0,0 +1,2 @@
1
+ 479f31f6fb0807114ae8e4ce9d3c68ed2f0db9aefc5bf4ad40b1b1e92f3c3daff6d0151ecddb04909006b4e75235d93c05f94ae4478152ad77bcba61172d66b3d1aec17007f80e74c338e6cbd55074b1a8eb986ba888b5a789162d7eadb1fd4f74e6a7089dd5f9f0f5274557824d848e3ea010ec210b0aed396f51733da83274456c41d46049093812aa84e79d264bf784ac00bb0e7c573bb3c7af51c4f1216949aec42f6ba18c89d8d33f9129b6e49600b02fd39fa9aedb10743c23a35bddd608a49431e45b3a09e672bade90b2ef5c77f9ed59e6bc041ecc8822da5bdeecee8f43cd58d52b594748311aa42a54c6e8d8e34947f31bd8b5f8210a6442033b65b25373850908f6d8e8ea234abb538d85fc9e995a50f0a9492f7dadd56dccf0b13525b1a6875a5ee6a346d04dac94a58c6c87971455a8ec7401c408c8c721d6599d8c29ff31b51c6722ce04a85ac405e1f82ef69f0800abeca5f92af60c771864f6b938def4a9f6ad8147abc9d6756abfbfd5733be1b9777d9e0be549b303b3b768cdca29447869c1ca49d392e37313a1ffe861c5ae299b304b57bb12c1adccdb79f036e43df00be2b710f7a987c50d8057782b8a4b67365032e1bd95c56ccde58a604e67be91d7663a858001b81f3bfd0dcfbadcaf0277863a0691ed564c92a1aab2bb01b408911cbbcecc1a6bb5d0191e08917d8f729a28e298757da13fa39265f315a3ade85a8c2a886da52ad90fbe5135a07c64b97b9178a8dcecf543e4ad03220ff445aeaeb6cfe92ab203db9d2f2f11e4e59ca625a09ccf4c4da30913762d3a4c7e73b2ef04c1a4a8fbba2a6cc22081ce9ef227358bd61edadd56a5a04b88113f539d319bf2d17e33674e73061d08b00357273d2bcd264c78d88a1ddd6abfdb8e7393fa042b6f2389ffa087f774a77347221a31ee0a8241115167071a4b84f96b936e35db7e11125a1ca78fb2d048c1bf11e4c95a783a80388804af3700010cc4c6edd41768adf0b8b418588bf40d3c65e8ae9e3820b4e865bf926bb1091a6d40141989416816e557d24e2d9835e5fad1e3eeeba4da8bb48cce5dad56d92323cf0ea248ac9cc5a0bcfa541a031fc31bab8852700a31c69a27bb04ff99ee9146bb75399cb0e8428f1916ab920a9212872e100f76af4a46719c12d4fd502e121bb73f970fb687d45cea7eda33a13246c177b32ff6e6d2820e166f89888078fada305abc2ea4dce8d4234530517e219bfb646494afc67148e1f0f240e6b8c1464f705d922ec363e647eb25f45139449e8a8ab52d1cae212e5fca73e2a668c605789155709ad5fea148c53883e7e6bd35b14ec6da2d192de346f3d5f98215a32b4f6f49d0e7a9226e5b90aac007ae600daeeb9da16ae7289749456ef3fe4add34945060290dd4baae5124638f8a7cd8d7bdc19270d65f3e8b7f24be35db736df82b11aca5e1d55b6d4c76f2e723f4d65fcda6160a7f8f6a57cc726430940f514d0a01c88b288d9e9ed176da25c246bcfac3c6c216178d63568372dbd6e11ea63998de96e1d21e0ff799d0b5b42b2bc77964d6f2143a6af0d07b067a04af9db3adcba3fdc362a9fef0b8c7702d69d791427dad2b152730f441a327249ca036072d59ca4228aead05d8e948469e872e7d534d360b39e30b8161a8ca19ddffae8a909a54f712e99d75ee031b966765f09d01f41a48052245936c7eec161bd198d4781f6105cf5d3f6f8a1b1398aa09c2cc8323925f416b5a691439c10be0858f0d8456376e035a3f97ae5cd51d61ff3a36672974a99ebca0f0b5b790e1552434b78702a6daa9cce2b0b0b0f008e770b1537f97663eb088d98cdc2da57ad0b2021db521f661f8a7c3a4819a2857b5b16e37eed1ed22a4923e45ebe2ab39afa62ba049baf512e5017151d3c3c06874157a14c1c53081ddd41621c65fa949e8493bc57b9d57d6cd4a17dd3e677602da064084a57a702079786c9634ec246c2275c20732e42974d62db93451f1e4514de19e64f6e325f2429449e75b6b229bad7e33f9f1924f3908d855a5895e8c8fe3a8983a087717b1c70fad4fb61bd4d016d60ece0e166f3b1a9e4ccd082fed5d1b09a1ebfc030fc5645518280268cb25bc3bf2d2dcc10c89dd9f6ba535f6a7ef69e619c380ef89e8110dc745d85ff4cf7c71d8c0cba316023635788cdcc5f4731b05b1489cb5bb3480f78a5dcb96b61fb016a601d5795d1f48fd9598e874baae2f4c440e3388b9f7c0d6f5acc005f27b56d7115699c0640ec64d591f9cab2f748b14a10b80877af03ce92c70044aefd6be7f3599f7197cc6bb923df138fa08733896d12d1c7c23e3e467eaf17915d4c3c18c7790a75796228622c757bfce12560b8acbd3b29f6992229e8fb49ceb4f92f65b8eb0e29b9057257c9301592b9a28e5290275bb87fe62f07171d09328dcd60b676502fa673c49daf9cd3a7bac634c1e22fa9b697293ac64a32ca5bd430e9fac82d52f5c373ba02cac3300270f0934f4d2b51929bc5aa62dabfc432ee67a18c149dc648820b85415e457b3f4b7bd97f34b4705b9339e220ab1b33947c3e3a1b6b95dba21864ba53e520a9ae804e8aedb7fefe98ac0c3c7a1d83b7e1161f0fdc6023250bebd12e2ecd64fb997f3738cdf8301341ade15c3c00b2528e79d33c1438d27e5f47deadff13de413893703d110b4f1b9351ac1f0235083c4be389b62c5769e43911f9a981fb3191974ed4c2e381e027a73dffe5725fda1ba5b468f4533fdad569ba4619c38a2b76e107f8c142a6cba1866f107cb7de56c49b8955e1495d85e579b65aaa6421c2f19c7b7848a06b4d37859c08da9b545d443c3c12085d9f10e2a088cbd1e3a35576e6e21d7dfd94d70d1b41acd448e5017b060c0b6e6f14635b4cc648a1b3ce8083f97e7c00ef0fa059e04233412847801e24a5918560d41d7c00838edb776c2969ad6739fe29b21b6acdd4cf6962bf4b9544b40cfc3df857d67e0dcf12371d7038f6cf67efaaa9074404b2bdcf74e1cc6b2190355e47d02eb5fdccc1fbf51fd6abc623f36039523e58a573fb05ea4424edb128faf8b239d3682a805e34f683e2a95ce8d4d1cae56bafa4170128883d6e945f36051e0eed62c5719501bacbd7ce8e686d7a68afa7a38b4aa2e2e927b01ccb1af34a0215b3549d7d7516c672d2faf1849fb4ed770a94154622e03dd436a335b531f1a333a80eba69bcdaa007c70d8f3ee2fa7b0cbc6fce813024c0935f75f1ebefe5b73831ff2e9
2
+ f2e12443c2c750058762f188fa83b737
@@ -1,2 +1,2 @@
1
- 1d0f1f06351dd5361cd8b56a85f3d28aab87746b13ef4a34db7cb760a1b15a79b5266640ceb844f7de193ca2179bdafdaf64bc9ad538830989fbbf129f1e5022ae88981d95a029225d9f3e9a469741af74788a3a41151888f8e864cb9f2df8d6ca01d84f61f3499489e967a80dcd5f56e606dda0dfd90cbd0993f0ff2eacd669c33b98f11d362f3d422a3537433d581184e8bedb9ee26f1e80566c99e3454aea0d9eddd743099fea0d14d7b61979b56515a9cb7ce53841820755198602015ae71f46f01ab8217783f00684eab69df50a3d8401749d38482fd171e269d25f0fc1828457dde668ea005879fe15b9f971f14ee99c313acb0a42f8d54c5b1f3debdbefda950437c3f2aca324c872a5bcf602cf19a3c1db24275ff6a7f9530a4ccc0cc0cc22e7417c4301f2c5cb9c08145ad73763a62746a16b796ce54538516d1d0791b90fcfd267c58bf4cb5615be7ceedf11cbd131a0f27a0ad1af790e846c11aec5722f6cfd57e13a42012c3fe77426a032f822051e30ad98b20fd2cbc749b20c950dd3649e20da8743063d8230b72358e41fe6bed00df8e95e47fabd4731832a51b10299eb299f99f9cde06cebc513decfdcae365f504ff70722e8b3ae9db0064f286e7555b130d57dc33ccb52e7446aa1995f555b3a8fc1764f92c48d069ea3e8412a93e8f7315959ed5f64798fc396598e2d82f420e4ae836f19bed406cbd3f1476dca526a25534e529dbf1bbe711bbd13ec7abfec907cd321d1dff51efda9c1372fb46246187107e5ddd6ddf8e99b4b354382f5cda98a36d991fc6b9f331158f2d1c8ebe2be0a9555edb6ceffdf7fe996f0ad9b7b62fb6051d2650e0dd3309f1f20dfd560ca65ffe8e0dd4d25f13e5560079982f5667037dbd0a5def34b3c8d612ad5a3a1584fcf7237b07516487314357e5c5b8ae45c0f3b3881874acc90b419149ef0e95d9ad3f5f557c4b5e4906ae6c0246ee8b66ab273d6e83ef347bc9143aa83d91ff63ecdb433b6090c5ae85e4127a4b5533835d763447cd0eb76e355fc2b17c7d52934fde6f8379d34e9dbeae07dbc5c154976e47281df65e499f05aa750aa37b3fa8bf486ee2c694396992efcabd89e72c619122a438ba9c7c0d3523d3ce50dd5f1bafe631fdc554499fe845358fbac79e1cf823d875eb3f395570a65ea7d73f76aa5b6b35f47b87323adaa3d6475684c1b598090f1ec514228091417a06705396eedd3ad116a5fe67e306580ec2976807c702107fca3f1093ff308c96649bb8cee4a053216ce500524da8763cea0b8dcef483dc404f6775445333bc71f49a216527d911725b903fa54e4dda7fb8343bfae3a5ceb9e0d8c8dfc115699f539d10d195a1dfa6c6cce69c399736f21ab3f5c436f848e9710a5172929fd3d705e0db5a093445d45eb5a2b9c9b63f533ac65e717e6dbfe3e42b2299f7d4a21b3d0598967372416fa036b69a0433a8651adf02628068bfbd03034eaceef7bfa13100f6d6c68d5fcc2d65de767377f7fd2c03143fe89aebf2bab7c8463e59a1b337c915e1c285faafaf03fb02ecdd398d3266eef0fc385a1f6e6402246dcc810e475f2d6eacb3db728f50b7e86f5353d2e41a4d28a65922e1c019b7fc4cca2ea7499aac520dccd8a46eb151f56eff2d6b5ab98da9eb6f0dbedad0def6124a35adad65512be2fcae0dfb439064da8684f3b12c7759d11ee07df125e199335db17927ead502f3c5b136cc17e3ad0aa67e332d1544dabf18b585a1c198f0445c873c1713c561a108ff1011b3618734d3401b5b8a7860e82bfc9523035ed2d04d835a6e992a3026c22eeeaa5feefe271a0b25ea6f264fb39fb63e4afd7aa9024e42cbf12b00519f6056c5fb2da2f528b7c9cd4cdbab3310efcc6d6012bfd93a9c979a7742bbd2cc57ed11d4d6f6665db728101c4ea08cfc310dc03ba76625be927b3344c3311deac2b5e20cb8e43ae8add47ac5dc06e32b2e7a348f86301ddf3c027b3df543898ee0805cac69113324440c688d5e7e2a736d9a7c3556b5fc9286dda14441c11f87ae4f297d58a4b70b88686d3231db3cba6fc1e7d0c2f619f2061eb36c528040aa0d702eeb141014d5ab8a1f325fae60acbfbdca404fcc9e89e15dde9fb4fb0586d25bc9068ddfb5fa45e278b589ccf005b53ba49384139d326bae3280677e0a338c006f1d9c3112584d385d3c612c9fb15937685c9e9a9fa0783d1b0d91a63be3e03b6cd1c1708b48305b6dcd2a921936655664b015f630d7ddf13db77b0cabe841b353d98b8eeaf873ab82784eff9c16b0b688337f061d976f21fe4f73835948a52ca37c20a54afe9d7f8d6a6ca06279b194db5d24977c3c1a0ae400192a2386017915ee81bbc9c8d06f2ed096ecd06571016ead421b0228cd3815854e66fd2742f10e8e23a7b2f163d972b045e6d8fe04078e5e0674cfd6354cb3ddd127c4ee7a6a0c6cfe204b7424118be9519058669f3f6429c91acef26047f83f73a251a7c2f5801c43f97fd90782ca6927814de63e24e60137513c7adf211130c0cf05d6f32f6241cc47e6f242801f5aa2dcc7209436996e1cae5cb71dd8eac0518b35a46af6eab19297fc230ce4bc7373a36351c792b8c31404931cd29e22df0f3a6d76f686c9fe5162db4d4d252953caa1e7104d72139aaaeff0a2c9af2a186baafec0bd6cdf8fdf16817cc35cc28a232d740579404062ca40307e2436c62ff501eb9304fe4387949792c5e6860d63cba7dcb976479ebb315fac909559732b1157dbe3735cfa27aba7ba81e5b669762f1e1d80aa68129781b872012
2
- ad45659ed7d2b5b805e7235eb71c9447
1
+ fe76acf10ea3d30efc6b1f39e0f84ed295dbe78d837a9c051f3c769a6ed72e18c38ef06be64018391bb57a8dcff0c0dd765dba267f0d9de211cc9c70a1ba6e6f76531052c3dcbb2e904568e2b2d1e7f4883c939fbd45bca837489759eefef16629288a86054acf5042e731129dbd908ce45c1f53f0647bb43ccc261cd5f253e78fab502b86e948e120a4b6ae9cafc474ada4b0e2e9fca0ec67033e47033e72328814cbbe871aa36f13c4d975402e1fc52cc73ee7aea76dd809116f12a79965ce4205bcd159c75992ab7d95b18553a4634ad19571e8f2dfc94b907ac082ad8b46234506c1b1be0f6af7ddbe04be852bacd554a19f87eb3d722586b34fc1014d58d4ab8182579da17175880cefbab7a41f1434beab869d1101d9b4238f7d51c476d0976ef7a7f0ffe33354d323a43cd04c7fbdb7bbc372310949f3793f2c54a04b98782edf32a35c1a46e8f2c4b2a3efe7ecd1068d0ac1c10b866c1b5c2b81f237d20d4517b9358c3d0406c4737034b09f7c9bc49325bc7bd3fb37f21c58d54a3e6415b9d0063cc77ace99dd998c3e484723874a5bb1fbf9397196d8be5e367f07e7507925b25562d4e12c2197d60d6b636ac563249b6d9971008038b51f15acf2e6504be517316a92b0fe6b2770b433eb7ca083984f95398cc03b424de30dc1083fb8930fc3715f6e2fd246ed1081c4a822acc1ae70522aebf6ced22539778efaa38799e279b742279bed9d943281a2effd87da16a4979d25ad770ba2ed0cb6cafb1338be86f66cc6cdc9cacb9ecfd450b02e981d306f0d2fc7f4b803a3821ea18a0fcf65aeb6f76543aedaf78064d1100a37d4d28e78ed0d65218f3384a25f960075c543327b3a502ce35b6ba784c2e79f7fd63f1adc2be97c8d442a9dc347681cef26226132a6179fde064c85009749ad9cf1d5a7444f5092e2e44b376fc427b39c158cae7df7ac9fe4657fa67b606329ceafc5fa73d118e08c07f1f2d89c7d37c67eaae9e79adc014b76dc8be81f76fda08d9fa43bd1795f9124479da8413c08b07dbba701cbf8ee9f3b1c7af4d533ae02b627d5db04fe5dbb57cc91176e6013b9002b8dfb4201ea205d2fecb7d51c6fdef475493e1b65e33776e93d2da876f93695024063bf6471c71aa517acc012bdb078b87f7f3714304d9e0b7c1df59030fe36ebc6994b6f0ec3a94cbfae80e3c0232710afe50bc4a7dd47370eaf1283895d6a87c08cf2669b207706bfd152cb7400a122da49bd8a23004b20b05b3c42630decf2bbb631fe3594111e2bddd473c3fede5e3c0cadcf4307ed3c959b84b0535822c6636c312dfd801a5ee1aabdf630cf0f0764e978225d6a6677a8ea9d5b8c8018b0d946339c8a1e1eb7e92ba24739d3315b8b689654a5208e1ebc050c3ac051c3be41f1180c1520c3875233920f45391cd5966526a48d730adddf9ae115677a16f56c4f0214e3d9fd7d4a21cfdbff20f8bd2058c9ad25f3a179a3638f9810c10dfd3127bd76f7ea92135d897e4b83a1f3df9822ddb5857c8e70fa1ead19521f1da01aa34eb94ea405c3d9ecff40c7d85846725b3fd112d3061bc937d20bf460cc5df3908114b496d9907e68299cdd8533eb05fc5bfe5b620358b6a7ef9c5097a97a78d80d213c0d5f581358f040ec73088bd1bd024d62c5a626a2ff043ef74492a2e9b4750fea7044b3931366854bb2155f0edccda4fd463afb371341c713abb9d014c4da2002e4c121470129e8f4dc4112715cd7ba9ada67dc0d45625995fb38b68d2d90c6a1b3240fe294d5db7643d7f1e0aacedf1b76270fcabe052948d8b1d177faa22f006d23d4ed39d3b1032776128a7a86a9725856a11a91a9100b0f02bd46c12023ff06ba10369fe40e7b8e3a4c5ec851270ed19c9ddb7e116a9ceebb2d77886c51c7d0a379f20dd6b6cef9cb2ba79b588a88561d897e74172d910043a36ba8e0d6c78a068af6c1068b26f13060924b71b7daf4be3f99b0867f808cb3b37602053c516974573c3a27c823358d8c9f71211ba03e9d1a72b0d1be9d154aa64cb970615773b9a6318e5029e9367f12c5a80451cf87db6c18833e8a703a9b9e0c0de37e500c442ddec3c41b9dadc6553f4a5ab28773f9d2f78814861072509016c9d83f35fed499079d3cf16bb0f56fdbeac3e1284cc86bc645c0ea452d3e5e63d7267e5daa1712446fddbf15fba89a7f15f04674d201c0cc814451bb6a5370d1d1cfbdb656afcfdce64695ba8cc83a2c95b9d3549a45da28da82aaae2f83a8e3eaaf522690c4e87ff6304180116d7e51534015b6d5a3851487a7258863dedd41a91884bfcb63597b655e9f251ab1213e63c865b05d2c31e95265a68f2e18efc49818554840504adc59508f5673ba50fd16951e49e36764d604688fd4f47f660f23e854254e7b796bd6118e337c1c3e23d559fb44a84648ebfe2133e5a4f2c2daa5d425c29c2e97ef8e9d988b562851a7a285bbc183a422ae5d79b3ffa53b7f118953f4f309e346a28971ed64790afef62c56f4b500ed45a64a3a219b2fe3037762f1cc5ea77175bb05f1515cfc62355db510203d06cfc6a8e6f050437bedffbfbab132e29813b36fa446f6d8108f57d789aaf27056e39c7041a49ea9aa22750134cc3549f078322cfff3cf271a9c87e39c203bcbfa3b499df057510f64b265cd35258052450fb4166419fbe75c143ca668eab54188581873620069a2bf208547261a58d987832dbcd28f8a92639e4b95ac086b8277ec71fbb8217c9a87e085f9113e438ce541458589f3cf84bf4748d7effadc1b2d5eba3be3cde3
2
+ 2a00a89dce69cd2b45cf0ada71d9cf93
@@ -1,2 +1,2 @@
1
- 040ac6a02613580c6476a9de27d20b9f32db8590dd045decd56ef3a89322aaaf3710484bb1f4e54af86ce683da3991d4d176460c0f66888d99f18998b26f1870f5f182bd2acf3bc1c468f4648188b01e6b9c32883f92596ada34ae9a67bf3c968776a5a2c2372755226be2a0f51bde9da9ad2f75cc049fb53dca1c74d48776c5cc80936ad6e5dc190d2cc093e1bdb1b16266ff30c0f036f2857c31daa1a9f545ab108172bce838c86d9118d772ff0cfe4b2003f8cba71014873b6d3b7a4c5cc7e208f1e177a0e62c925bc93d07df42506e97a7fe23fc6f12557e477d32a523991033208c3f2ddd813dc5873280377443c286363fb842fbc1a5bde11f97d6736bb6f60e590b105583307080ea9edc91141fc0140a97eecd87e9e0850170554a324df098b059829287c9facf4c8aa0feef60d5237cac314fe9329d8252e4e23ffdac3e15a8a56817abf267a6786f8b9e21eb319a5607b0a99576e42830aee29b511f52780891d42c39b262e8d8314be2cc1425fe20f3abe381037bf6e431cb6f2db2ee11921c4317558cf4c69bd3e29d46b4d398a239cb2af46be717a8761791ffe3b356b7a91855aea41dd3ed242051e4333ae062607f4d8f74a3dbda4436ae06a4644ea919de2e57a1feb158fb0d4886048378f2fdc3137a3845647097a3acfa5ecfe15b8de724904a7a275c43654b56d1fa75350507e9f596508e07cde93704cddc355578cf067dbf4f774fe6539f6d7acb2ae4ec424a96d6ba274760acd6c23b7856c13d6270c54744b6ee631f3da6
2
- 4fad420c7ffe7cbd9e3261346677a44f
1
+ c111d59852b59622562bf2263f7bf416c669c49eca20c26c47ff7eb7da68a95fa03151be90eb09f434323f189578b1acbf87c166b6648370fd763eadd42e12ab173a658d8da79f68aa05403c4d548c78d5560cb71d8cc835cdc15bdf86c4b6e98609a8ff038b5acd3748aefaf1542ac2a00a75338e916ea0512cf2faa61746845984e738b54eb9d1920249d3c9eedf39b7711915edbe5a9ea057b9272604c1c408692e31092fc37106d869280bcdca74e7703207ce867bdf8c6387c4d30d3e228926384699176015189c4630d7095640aff042bbbf6b75e79a889ca3cf92f48cd2b8ecc01b6423f82c46b7f1072a3d2eb0ed9af7616a86348bd1c350adc5c8087adf57724c9a091770ed3f068f6144907f16c0327ec7085b8e061c8cc0e0a47cf1ffe09eebd4bc422c4d8e5a39da4326a3a2e6550330b65107308d7c6e00a16be3bd711256d30dab9f9c0f77d3dc79fdf8f4af9654afac8ddcd9205d273069f57c4d00d31fad3a3ea1ffc06971d42a3010beaf4107b8390e9d789ab2783541b2448491c26a0cf16a5f34d776add3b6f19a8df606e288b2200291be50a5b0138b63d8b7f9cafdc3c1b8eeea0c352e2801d5a4604d78e520b38241993a4378d28c439c7c6688fa74e093777d5cc0a24a97ecadd345688537769e710caf159ed24f78453dc04f840b928850cfac7b17835d3a8f8f7bef1c8e29e981f6224c20d8476385a18bb49b9a97b115b4c26ad19326c10c7b8dc9bdddf8cc6932d0a71fd10841f9edd9217501c61f53ce0f703e0181
2
+ ddeabcc7133304cf69ed90ffda5756bc
@@ -1,2 +1,2 @@
1
- a3d60a75be5bd690f7b26a36d7873c47a354e3c6499ed413267b13fe45d721895c3014d477c481ec561c4af50f162eb75135eed918e143bf55f2a17efee2109f63d9e7f2dfbc8f5c6139de373bf7a7255ddc1886d4bd38ea0493246363cb3accfce7ed26f41fe46548ce04bbb3bf16856ca6737213600787ff69cdf54c44bcdcf1981ae3ea2518aba29a60e20d1670b834bf987f709b6acf9d064c161ea45917de3d33e914aff5461988ec2d2af1fac9975ecf9d37fac2aaf4e3cd7d39b0266503a0f82b98249e7d4a74919bfa5cb2b7574ffd47af3402ca09365fed834125f5e3d00088708be0fdd1cc1189bae2168e009e8fbe52063409efd080158d710dbaec12f84f863c7511a3f09b09a4bbeb965a088f6a8028eecd75b02ad2825023f3d02b52ccfaeb357cbbdbefb438dd8e0e9f712aa5abbef78722c51854c2ed4f894ea867b7ed897db3c664d7855fc00b07fab03c3e90ef1cd52b7d2ba503bf9f63770966b94eb4efb9ee4966d68d6018a14f20c1929750f944fc9c373325fc5d22ede61a2545fff1f238441604f2f0b4a6aa6a8439df438568d16399cca278863e8b4b40337d9c5a1bb0a2acbe3e4fcc3ace04ca62c74fbdc7962c134c81c2952930e12b167363ea340c0443fb6d60814e8e03f0b0528284e6a77c0ed7a2f82477be2bacff9c8f2cee8e2404db9a2213b7998ea841729c7c1eb80ada171a80df0ff36241be83260e542eba4f3592e56dc1cc4fe04036b8d3cfe0780ce7145312d0003663d273878e47f0201cd29829f2035247a482561f4d6144ef646d4a7568e0afedc781bddc6aab61a0c79fdb1a38a58f4497549ff3d25060b53fd9f4d834c6acc59bcdb44cb72c9918416a702d75c7ee93f89ff3283403ac789f806392ca2fb62ffed944af2efbbbcb2cb9a76048aee5ec3b64434b54b28340450499cd04b25275ca6df73d03c92a415f06885ca61da45dad1d42ec985093daedf40bc1437295357c42dda21b534427b4db90ad45b70d848ab0877ab12834f4876fdbb0a0c745a6ab543add2846f620ebb9662694d9fbe28e3b42e2b6fc31df14c7d1ae011d81e32f1873dbcae37c89f568bd5c6bf18f295e0b562d6c4920f3c8a6d44a63ed2ffae320132b247008a84794be2c03cc19f15c3e60294c16686c87458beacf3cb01cf53ebc35817d903be15ab823f50dfd1ec8ea0a6f01e137ede2be5094890ec028c2dd8cfd28f1ffb8bab2794ccf4b1876ba7cb27b968f0154e15d0db6e7fef7f4f1715e966deb5a5514825b04c44974f5859fd2789d8c102c90c491038cae219143cd26767f8520b1fa9d68493aad714cd04aae63d222b73a8a8774d01924def6edb6fdd2db849e1db4c87cc885b551deeee638024c602f17835d54d66d739914386e7757750a195a8e4178899662b116e249bfdcfd39643fc8b4920bec73236e9c92c87ac009f8b7eb1d818a349ebe95df4f0bc44090f65a1376669450e3faa94f04c0413cb147699470ff8be8bcefdb27ed8ac97ac463b9a2094ff1ab2ac8fe20c4a0f86aa92bb2302cf63ef4b1dda29ebcf6e44857866e830ae9479ba4678296c19796a027215877f351c37c949d3f71576c484c6ac5ef45342ea03bfd03e796769516333bd28d123e40a1ff05500b45b4ebc1a71313fc407f9b9bb689bbd915e0e1b83d0a8e765e97d930d4c71fb72ce12273eae8a0fa71b674d94e760e90bfa4e0ce9132e2171a711f77f27add11c1ede7c855f5ca0b645bf9a41c6453b0c62fc599a1a7b3d8401b29c92c61dff9ecf2c185625b5e6271731d60b1df7f801e886f9ecb19dc9036de653a71004582fd596ec2158c6a85331cde2d41183f543048020a2ef0cbcecac200759d0da344eaf9b7a8a714356314b502ee7f6ca161815adeedaaad7bb4365dd14285ac810baa047831d46a5d89650b8e2212f37acc07ca30b8d55e4fe7043ef0de68b342fd73a7243e4dc0c198e00b83ad3994863d6a0ba6b8d42990bd9f88c9f89fa167108af7aed7654eb29cad3722666ec15a9c2e4493b3a3e794db355c39942a6eac2c98c918e1f3ddffe60317ea8e233381af07474f6b28cc095f778599c5a8d23fcce9f94ae385e36ce5fc152066a3fefa19f177cd263eb0d352af078b55ff953906b8a1d10d0645007a50bd20078124bfc5e7fa93c9b54b89df0af156607ac1
2
- 58c024be3154cdae3169ab254676344b
1
+ 2d1e2b180ecbba2736bafcfd755f53c6daccb461afa4e20f05647011f58cdf9b6d1a76a4a684127394acaa7f95b26bf6cb44d09678529d39c9e54ae81cfb9ac87ba7053447d37b3ede363bcdee05475c3277131f3db97c6d265907c3883320bf9629e19b2c332db3aa496e08f953b230565d0f9a2d06ef0f89985b7364e1d1f4c0115c933797b2e0310ef8cf01c1bdf69f08814ba606692ff07e659cce7d596daec0345739b7e2968dd5f78427d5e0103239f17fc818afaed08163e37f4c53cd471b1d69df68da7500d2d09b788ba7720b56a2799bc675166b96051a19388cb0a51a02f95893ac0c61dbeed1030d6391ba3e1c80ea501b53900fb4b71dc3bac445f45eea1ab8b944d46c156ffc382068f1b7ef26277a0fdb1c203cdef3d1dfd12c37d02c9c678c4efdbd28ea556d86fc783af3682c092e630b05bff941d0c097bebba92512d56e1e7f1fd330b6738b99ac14b9fc9151560fecee47cb1d2923d886b1adbdd34327d93bbe8d926e27ceb716e4358b4f0b9002d0780056860377fea38ecb70c2ff44bfce6263e1a1c9838e894f9aa527219e953eac527d2c636b12f278a6d3fc4448f7eb5a368253fb59585c2ad0c2f682583293d12f4f7fed4150dcfca8a26d489df78712a4b7648cae10ebc30cbd65fa1ad6b57fe5d0a5b3b2d81fc76808d6e6cb36e8b9d18eedf8080093003aecf7091792cb639fe2599310fd78d71a9f5070936c0d3a6df4dadf3388cc613e903ea05eca26736e1b73b1686364acf138b9f34014bc8b47748fba5e4012f2266fc090e2345384b211e796097d68265deab1862e40fece6f43db0c9b6ce288bc763b46f25d81b88491ecbca646fe2dfd0cd1c97da3a4fbd144208e1be1d10b70b5d7fc973fe296169612626c06673cfa5c4c7c292297f3910ffeae9f9044e5ef15693414e09ad2a888c7f0d9824f806c6fb57d2c53ec24c5ce9ba211d530fcb7952b95365c9c1b346bd12464755d207783624db406ff6a87c4d8a95341065266f165a5af51f12619f1827422d5c6fcef93c3ba6bf77fd331bd6eac93b179f02d1c0f5a3ddfaee0c1dd02c159190d4c6d1565fcf107f5ec8ffca01a241483ca5b16f0db4ffe8d85b8a090182d222ff2b36398d9cfcbbfad8460f3f97d32cc70963c77dbfaf0bc6f64bdedb51cd612d9383126507fa3291c31006b9f3c4958cc206384e298f7f0222ceca6f747276af5f5c132bfdbd963c2c5e08d7a22ccecc9b9b16dec6ff8fd64706b8ea1e64f87fd611e8af76d1790a5b3ee0e631949a292fea7ba7daef2c3ca53af653a42fbc90f78f16480bc4e25a41e27f51dfdffa792880e0b8a0c82d5d66c997a8fcbaa018066f506e54f4d5d04a9688b463ac5f54e4aae2efca745ca0641d71a8505229504e441a98e3ce05a4cac1bef81bae97bb060dd929b3147718a797154a0c4ef1518c8e0cd930c1d4b06e0a530db9fda6e264defa91f8c2f8946a5c683c8c5633a34d072328824bf003a71e41c76c42f89946d3a39066008920268fd3ae542e02fbed90e142dad704933843be73bd76bd906968e5fed527f176625473127b89f93e73e3527210b23a148dc55965a5fe8169feefe206a37f82eb865fbdfa5ddcf259694ebd0ea9e52aa8327dfa3e068455e1447dcf53477fa07975152f6231579c90a9466c8de045cb4d70884184c9b04100381cccfe6508769252f35b357df5d4e4ccecd10d9758550d8c2bc0f95b382770898bff4c3963f5302537c73c66af5c0d07f2acf337e598c260108b4245f602ac379d37654b954e6bf1c40bb961aa92213fdcd610c91d5f91c2a851a55568580d8bfd338638a493e81e280979a13e3f7cad0513db909e239579332042e24050ef0627e4886de73d14c9f96007a850a6db4e43fc7444311cf8c6be16bcb55d7d51c3bd434053a8dce116d9392ac5c9050bf8d7a8272f594896db9f4006748141cd04b3a59ca2f510cb1ebc01bc5846b54a6628a4dd6442d384771bbda823678d927e4427fc550edbf38408a5dc100bb367579123ae7e7b19a1960e55daf908adc5b3360899e2de1322f677ba7f715546a44165632c1f372a07e0f8374c308db34f9f3aca77fb68198b79538b0c9303dc5c14ece0c9a0ee201270e4cd6acf1f0377daaba992eafef5438439eda1729b7d74ebba3903a46f945297792d542a1c7
2
+ b11cf1613c8b04e6f5f454f286903487
@@ -0,0 +1,2 @@
1
+ 93db374ed9c356a18d176eb86c8bb34fe7f066d4936d19143317e64cb74f739a032ef64198cda94f32e623eb932bbca53461af1c9abb28376d43720b674d30965850ed2dfbdab2ba6267afb91e1bafb1625c7ee4af1645c85835c8fe04f6fbbc3a800efc195f5846c4692580f612eb8e314a1c554b5d2d45112a81b8541a6f72a29fd0390573c59ac3feb1e91bc3ff096fd16986af769439fe0267447920eccf1324d56aa913d47b7ee1abf80a3fa10934f58d3cb8f67b87ca5fba2d2b5e31d8d31310fd24c8c648aa881e6e0adc6cc2decb94c771ed72b2961ee93360792d3abe5337119a17360b55ad9663202ef675cde56e49e802d3700c73fdfe956006f97ce2fd8a55716ff25184c030c34b1664237be18b5a4280ddd2eaac9222757dacc4d5ee20e4a7095d0bf1e2333728884e7cf97452d7bfd88f95da0afe9e8f64ffacd5ddb9e45a685b8ef6ca38745d13abe044f5e0f55e363770ced60b30ae8dfa46c196d0bc965cd3d81d5d49519c694ccfa2aee9a5c596ef9c5620f9a9a19120cd3a9cae2f5d861f2674aac698234fe101942b7d5342e1e373f9b7f8775383e382c45fb81c62d5c93bd72af89a03eb790232d7b13b50af94241c65dabd24ed87239c6e0eb40fac495301117fc33ee134b65c901a09ea59a45486b53f054d23afea2963ed1c40bac1afc590142666aff1bfa7ebb308c48ba5a39d91425802881b22f237cfe0e610f1cb6ece850bd6772b22189398372448e11af81ecc3f221148ba00014431449e3ea1fb8a364c9f441160d461f96ce0d9ee1cfb803ef9a3a737ed3f992bb5e50589c2f60831aba0c542d0c85e551b7dbec91e2a89fef272ea56bffabf70a5b8af114b71d8fae0f1e3093537c24d24093a0936ef34feb3ade8266a5d4ba9b2dd05415234081d5779c4ccb3fad1942117cd309b9b1b342e0612fe69b3ba35a084e1968e8faf94501c184991295d5cd3c3e4a259d520557d76d294893aec3a02005e6569557e94d1504b944d200c4f57b2652bdcb1b7b7a02e748aeed0028bc6bd41321a3ff3257ac6e46e756cf1504747575f6fd9f6feac1b66a7f2c0c92fe253374bce0eedec30b83f552ef672958e6784e7da5fc79f0ecf6f8bc35260a7346c65a2c7ce51a6f08e7e4f0c480638b536aa5600a4991a012b15ab8f10af42564b32680fc02cf6a8fd1ae689be2b49668de337b002613a89688d05b08e7fbace819596c9bdc203b71adb1949300c6daa8b59e54b07f241b8a7d56adcd8f25372bd09594f52b40fa805f9c3379caf522ecea09c2fb0c1754f720ea14ea0b31911f1fc7713589754d81323878191c1f4b75006d7f5f4753f24c5f214520b78cb32b9f2fb03fd2351392ebb2e0bed95293389194b63d1fe8fd2d70c50b42044d0aa96c9b10a78530f44da792dd0ab80f940fa9f10271864bcf84863fb45df9339b60d3792d258b5b2bf313a1a9bc25b387e9dc8c3aff12592e7865558fe38920a900c4f4f2c5f7f715142be0e1207161322ee26bcd38a8e51ca1d163203892e354d2d1f9a8508fe6caf71e31392b65fa4386a7f5025edbb9c792006e8fcd4db0d548dfbc90a8ef80830820718279cdaa05243f68c8a7b89f4371249606abbef4e6ac1459f7afd45e64da20dcb097ee5b3904930bb3974743116c5bca9faac81ad9cd6cc868424b6229f015d0fff495c67cfc165cda42273b01c204ad4ba406c630f4b46553b77c3fa7bfa09787d8f43d40251392feeade1b834098dfd49ef13d58a480fc5bd7e5d2def796a8c6e387704555ec7888ee46c205daf5e12af152239b793929326f9abee48ddafb28cf9ee65b8750c7ad88dfdc619789d646dc7408f7cbd23e5808695c2617ee00bdace9c2e2bf9c6981a1f63f277cbb42666ce95671d3033402d35ea775b5dffeae7426db43b6f5a21800754a38c5ba32676bd9f5b0cf4416587f3cb5979f4db1146745cacaa49a7f07cd7cd1116ea0dbdf6eae10a2fe7f44aa210002d50c038b4cf6a7354beefd2f230df51c27ada1a79f1912bb61ed4649186ba036d372837391882a0664691bff568a7d683637612ac38ca76ba49fe5c9f5d6f0054a626a6807a57d8176a3726a1e3cc168a40f888d55908136524f160c25bf4158d488dcf58dc85f870825f41182af1972d7ac786f2d7a6479ccf187d3020aee2d6d9833d1a9eac1ed33f23da25a0cc9bf94cb3b88f038162caf93366319699309a34a0c58b310f9f23823c77e5596ce743974f267f54e4041ad78089f20985d24b123396072a7e0b2626229fb1d6380d5c12025f81be8a5fa18abb8bc8037319f5704faaad90b66d94c2234bd69ecaf9a1007c2d61d442759cc8a6c992f946cf076bb546ac31f640de8c199e68f96313c10667f4249edd710dbb6a474c25f7d846cfbde5a2974a8d7626ca2c2eeb8c51f7fb707eb516829698374ff527082e74f3f4b696ade9c356995b9f61b1c8a40a9e05cdd507b42ee6a679c8420756ffeaf3c7f60f6c65e628204d1bf2b3b00e4a83b987bde4bffbaf8d70dbb5c445b69c567bb11e53664ae5a1719abc2fb9a585a30d2fbdf5ec47250ddd634bf82de371a25d6ac88c95b0fad7ba802300b1e26c71236d47e33006ce4137bea14f26cb714f851d2885c44f032e9b72112983a0a127d76fcf9d58b1e07893812bb9869c052f134e7d4aaac61568ff5418085f548440e9dac2acbbda35bb5e7b5194e98b885abc908cabf80e85331097bb22656a0133627409f620540d84bc88748b80856ba10fb3ee777c3271d34b668f9e0a126c07d275c38c030af7b938c6d1b40cc5028fce802cac4e97335f05dd2f86d6f1e01064ed3c618fe142100556442bb9ab4b41352d902240147f6bed17642202f370737558747baa266c5567f93c95dcf142a589bdff36cbd38ab472c9425db33aa945579e6873f24465209363f8642575810a191bf6857f5c624252dd01adc893cdb891e839a7e655aa2646b1f4060131c90ea0f0f22855c35daf74238b18b083b94c5dad69c82c0f183134c3fe4c9288c226a1df9117808e3696417d94bbdb977312ffb239b59a524ef0d62ec9cd0f3f2c627038f4e50dd47d0d2798b7091073d0078ce1a94ad90d1c36b43e60605e497c4a5501a8f767bbd6738e321d2dbe7d9b7f6514a784d2304b8fd6a802ed15f715f3e76b1830a6aa03a4ac27c505de31865f37b0c5adc2b278ef0dc07066bc9766374c94b2924a6492af2d2581e6641162456831af0ef27864189ffbb87e97a60a5e1c8849fdd48fdb0ce629562667305145e735d26aed3970fb778fa2e7d987833bd6916bd75dcb9464e5cd512a1ec75308670d50ffb2b25cd4045bbeb011d77307430ee38bf4abcef9c3f3d2cf06155ffc81e856cdf34b86266e5e6b69b57943ba22a51592
2
+ 862e7cbc3e6bd1796b16e550b40fa354
@@ -1,2 +1,2 @@
1
- 4b4df5cbfdc28df1a9247594c484d4eba07d05ac322c808323f6bceb665604a702d88709c9ddf38206e5dbd5b4827ff01e7be2c3ffb8a3bc1035ae66ffeb07dc
2
- 2e2f8cb7d8cdeb397d4bc9c67ba9fe6b
1
+ 23dbbfbbe4155aa00037e68ebde6804b8262890704318df90ecba0cdb0fb2bfbda69fbd520f2e4bc1baa63777995260e436a2bc37178fcb5ef584825cfeaba6a
2
+ 8d112696a092e946c6b4dec06fb3c0de
package/dist/esm/main.js CHANGED
@@ -1 +1 @@
1
- import*as e from"node:fs";import n from"node:fs";import"node:crypto";import*as o from"node:path";import*as r from"node:os";async function t(e){try{return await n.promises.access(e),!0}catch{return!1}}async function l(e,o){return await new Promise(((o,r)=>{let t="";n.createReadStream(e,{highWaterMark:1048576,encoding:"utf8"}).on("error",(e=>r(e))).on("data",(e=>t+=e)).on("end",(()=>{o(t)}))}))}async function i(e,o,r){return await new Promise(((r,t)=>{n.createWriteStream(e,{encoding:"utf8",highWaterMark:1048576}).on("error",(e=>t(e))).on("finish",(()=>r())).on("open",(function(){this.write(o),this.end()}))}))}function s(n={port:5173,baseUrl:"/api",proxyUrl:"http://192.168.0.193:9999",pluginEnvHelper:!0,pluginScanRoutes:!1,pluginElementPlus:!0,template:!0}){return{name:"vite-plugin-config-helper",async configResolved(s){if(await t(o.resolve(process.cwd(),"./build/config/index.ts")))return;if(await t(o.resolve(process.cwd(),"./build/config/plugins.ts")))return;e.mkdirSync(process.cwd()+"/build/config",{recursive:!0});const p=await t(o.resolve(process.cwd(),"./.env")),c=["VITE_APP_BASE_URL","VITE_APP_PROXY_URL","VITE_APP_PORT"];if(!(c[0]in s.env))if(p){let e=await l(o.resolve(process.cwd(),"./.env"));e+=r.EOL+`VITE_APP_BASE_URL=${n.baseUrl}`,await i(o.resolve(process.cwd(),"./.env"),e)}else await i(o.resolve(process.cwd(),"./.env"),`VITE_APP_BASE_URL=${n.baseUrl}`);if(!(c[1]in s.env))if(await t(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=r.EOL+`VITE_APP_PROXY_URL=${n.proxyUrl}`,await i(o.resolve(process.cwd(),"./.env"),e)}else await i(o.resolve(process.cwd(),"./.env"),`VITE_APP_PROXY_URL=${n.proxyUrl}`);if(!(c[2]in s.env))if(await t(o.resolve(process.cwd(),"./.env"))){let e=await l(o.resolve(process.cwd(),"./.env"));e+=r.EOL+`VITE_APP_PORT=${n.port}`,await i(o.resolve(process.cwd(),"./.env"),e)}else await i(o.resolve(process.cwd(),"./.env"),`VITE_APP_PORT=${n.port}`);if(!await t(o.resolve(process.cwd(),"./build/config/plugins.ts"))){const e="import type { PluginOption } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport vueJsx from '@vitejs/plugin-vue-jsx'\nimport vueDevTools from 'vite-plugin-vue-devtools'"+r.EOL+(n.pluginScanRoutes?"import scanRoutes from 'vite-plugin-scan-routes'":"")+r.EOL+(n.pluginEnvHelper?"import { envHelper } from 'vite-plugin-env-helper'":"")+r.EOL+r.EOL+r.EOL+"export function createPlugins(): PluginOption[] {\n const vitePlugins: PluginOption[] = [\n vue(),\n vueJsx(),\n vueDevTools()"+(n.pluginScanRoutes?","+r.EOL+" scanRoutes()":"")+(n.pluginEnvHelper?","+r.EOL+" envHelper()"+r.EOL:"")+r.EOL+" ]\n return vitePlugins\n}\n";await i(o.resolve(process.cwd(),"./build/config/plugins.ts"),e)}if(n.pluginElementPlus){if(e.mkdirSync(process.cwd()+"/src/components",{recursive:!0}),e.mkdirSync(process.cwd()+"/src/hooks",{recursive:!0}),e.mkdirSync(process.cwd()+"/src/types",{recursive:!0}),!await t(o.resolve(process.cwd(),"./build/config/ep.ts"))){const e="import type { PluginOption } from 'vite'\nimport AutoImport from 'unplugin-auto-import/vite'\nimport Components from 'unplugin-vue-components/vite'\nimport ElementPlus from 'unplugin-element-plus/vite'\nimport { ElementPlusResolver } from 'unplugin-vue-components/resolvers'"+r.EOL+r.EOL+"export function createElementPlusPlugins(): PluginOption[] {\n const vitePlugins: PluginOption[] = [\n AutoImport({\n dts: 'src/types/auto-imports.d.ts',\n imports: ['vue'],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css'\n })\n ]\n }),\n Components({\n dts: 'src/types/components.d.ts',\n dirs: [ 'src/components' ],\n resolvers: [\n ElementPlusResolver({\n importStyle: 'css'\n })\n ]\n }),\n ElementPlus({\n useSource: false\n })"+r.EOL+" ]\n return vitePlugins\n}\n";await i(o.resolve(process.cwd(),"./build/config/ep.ts"),e)}const s="import type {\n AutocompleteProps,\n CascaderProps,\n CheckboxGroupProps,\n CheckboxProps,\n ColorPickerProps,\n DatePickerProps,\n InputNumberProps,\n InputProps,\n InputTagProps,\n MentionProps,\n OptionProps,\n RadioButtonProps,\n RadioGroupProps,\n RadioProps,\n RateProps,\n SelectProps,\n SelectV2Props,\n SliderProps,\n SwitchProps,\n TimePickerDefaultProps,\n TimeSelectProps,\n TransferProps,\n TreeProps,\n UploadProps,\n} from 'element-plus'\n\nexport {}\ndeclare global {\n /** ElDialog 主要属性 */\n type EpDialogAttrs = {\n visible: boolean\n title?: string\n width?: string\n height?: string\n center?: boolean\n showClose?: boolean\n closeOnClickModal?: boolean\n closeOnPressEscape?: boolean\n }\n /** ElementPlus 封装的动态表单组件的名称类型 (25个) */\n type FormName =\n | 'ElAutocomplete'\n | 'ElCascader'\n | 'ElCheckboxGroup'\n | 'ElCheckbox'\n | 'ElCheckboxButton'\n | 'ElColorPicker'\n | 'ElDatePicker'\n | 'ElTimePicker'\n | 'ElInput'\n | 'ElInputNumber'\n | 'ElInputTag'\n | 'ElMention'\n | 'ElRadioGroup'\n | 'ElRadio'\n | 'ElRadioButton'\n | 'ElRate'\n | 'ElSelect'\n | 'ElOption'\n | 'ElSelectV2'\n | 'ElSlider'\n | 'ElSwitch'\n | 'ElTimeSelect'\n | 'ElTransfer'\n | 'ElTreeSelect'\n | 'ElUpload'\n /** ElementPlus 封装的动态表单组件的属性类型 (25个) */\n type FormNameProps = {\n ElAutocomplete: AutocompleteProps\n ElCascader: CascaderProps\n ElCheckboxGroup: CheckboxGroupProps\n ElCheckbox: CheckboxProps\n ElCheckboxButton: CheckboxProps\n ElColorPicker: ColorPickerProps\n ElDatePicker: DatePickerProps\n ElTimePicker: TimePickerDefaultProps\n ElInput: InputProps\n ElInputNumber: InputNumberProps\n ElInputTag: InputTagProps\n ElMention: MentionProps\n ElRadioGroup: RadioGroupProps\n ElRadio: RadioProps\n ElRadioButton: RadioButtonProps\n ElRate: RateProps\n ElSelect: SelectProps\n ElOption: OptionProps\n ElSelectV2: SelectV2Props\n ElSlider: SliderProps\n ElSwitch: SwitchProps\n ElTimeSelect: TimeSelectProps\n ElTransfer: TransferProps\n ElTreeSelect: TreeProps & SelectProps\n ElUpload: UploadProps\n }\n /** ElementPlus 封装动态表单组件类型 */\n type FormBuilderItem<T> = {\n type: FormName\n label?: string\n prop?: keyof T\n span?: number\n props?: FormNameProps[FormName]\n value?: string\n }\n}\n";await i(o.resolve(process.cwd(),"./src/types/ep.d.ts"),s),n.template&&await l(o.resolve(process.cwd(),"./.env"));const p='<script lang="ts">\nimport { defineComponent } from \'vue\'\n\nexport type FormBuilderInstance = InstanceType<ReturnType<typeof defineComponent>>\n<\/script>\n<script setup lang="ts" generic="T extends Record<string, unknown>">\nimport {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n type FormInstance,\n type FormRules,\n type FormValidateCallback,\n} from \'element-plus\'\nimport { useTemplateRef } from \'vue\'\n\ndefineProps<{\n items: FormBuilderItem<T>[]\n rules: FormRules<T>\n}>()\n\nconst form = defineModel<T>({\n required: true,\n default: {} as T,\n})\n\nconst instance = useTemplateRef<FormInstance>(\'formRef\')\n\nconst compMaps = {\n ElAutocomplete,\n ElCascader,\n ElCheckboxGroup,\n ElCheckbox,\n ElCheckboxButton,\n ElColorPicker,\n ElDatePicker,\n ElTimePicker,\n ElInput,\n ElInputNumber,\n ElInputTag,\n ElMention,\n ElRadioGroup,\n ElRadio,\n ElRadioButton,\n ElRate,\n ElSelect,\n ElOption,\n ElSelectV2,\n ElSlider,\n ElSwitch,\n ElTimeSelect,\n ElTransfer,\n ElTreeSelect,\n ElUpload,\n}\n\nfunction getComponent(type: unknown) {\n if (typeof type === \'string\') {\n return compMaps[type as FormName]\n }\n return type\n}\n\nfunction validate(callback?: FormValidateCallback) {\n instance.value?.validate(callback)\n}\n\nfunction resetFields() {\n instance.value?.resetFields()\n}\n\ndefineExpose({\n validate,\n resetFields,\n})\n<\/script>\n\n<template>\n <el-form :model="form" :rules="rules" label-width="auto" ref="formRef">\n <el-row>\n <el-col\n :xs="item.span || 24"\n :sm="item.span || 24"\n :md="item.span || 24"\n :lg="item.span || 24"\n :xl="item.span || 24"\n v-for="item in items"\n :key="item.prop"\n >\n <el-form-item style="padding: 0 30px;" :prop="item.prop as string" :label="item.label">\n <component :is="getComponent(item.type)" v-bind="item.props" v-model="form[item.prop!]">\n </component>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n</template>\n\n<style scoped></style>\n';await i(o.resolve(process.cwd(),"./src/components/FormBuilder.vue"),p)}if(!await t(o.resolve(process.cwd(),"./src/hooks/color.ts"))){const e="import { onBeforeMount } from 'vue'\n\nfunction lightColor(colorWithHash: string, percentFrom1To100: number) {\n const rgb = [1, 3, 5].map((diff) => parseInt(colorWithHash.substring(diff, diff + 2), 16))\n const lightRgb = rgb.map((value) =>\n parseInt(String(value + (255 - value) * (percentFrom1To100 / 100))),\n )\n return '#' + lightRgb.map((v) => v.toString(16).padStart(2, '0')).join('')\n}\n\nfunction darkColor(colorWithHash: string, percentFrom1To100: number) {\n const rgb = [1, 3, 5].map((diff) => parseInt(colorWithHash.substring(diff, diff + 2), 16))\n const darkRgb = rgb.map((value) => parseInt(String(value * (1 - percentFrom1To100 / 100))))\n return '#' + darkRgb.map((v) => v.toString(16).padStart(2, '0')).join('')\n}\n\nfunction updateThemeColor(colorWithHash: string = '#409eff') {\n const colorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/\n if (!colorRegex.test(colorWithHash)) {\n console.error('color must be a hex string')\n return\n }\n if (colorWithHash.length === 4) {\n colorWithHash = ['#']\n .concat(\n colorWithHash\n .slice(1)\n .split('')\n .map((item) => item + item),\n )\n .join('')\n }\n const el = document.documentElement\n const colorNames = [\n '--el-color-primary',\n '--el-color-primary-light-3',\n '--el-color-primary-light-5',\n '--el-color-primary-light-7',\n '--el-color-primary-light-8',\n '--el-color-primary-light-9',\n '--el-color-primary-dark-2',\n ]\n for (const item of colorNames) {\n const tail = item.slice(-1)\n if (tail === 'y') {\n el.style.setProperty(item, colorWithHash)\n } else if (tail === '2') {\n el.style.setProperty(item, darkColor(colorWithHash, Number(tail + '0')))\n } else {\n el.style.setProperty(item, lightColor(colorWithHash, Number(tail + '0')))\n }\n }\n}\n\nexport function useElementPlusTheme(colorWithHash?: string) {\n onBeforeMount(() => {\n updateThemeColor(colorWithHash)\n })\n return { updateThemeColor }\n}\n";await i(o.resolve(process.cwd(),"./src/hooks/color.ts"),e)}if(!await t(o.resolve(process.cwd(),"./build/config/index.ts"))){const e="import {"+r.EOL+" defineConfig as defineAppConfig,"+r.EOL+" mergeConfig,"+r.EOL+" loadEnv,"+r.EOL+" type UserConfig,"+r.EOL+" type ConfigEnv,"+r.EOL+" type PluginOption"+r.EOL+"} from 'vite'"+r.EOL+"import { createPlugins } from './plugins'"+(n.pluginElementPlus?r.EOL+"import { createElementPlusPlugins } from './ep'"+r.EOL:r.EOL)+"import { fileURLToPath, URL } from 'node:url'"+r.EOL+r.EOL+"interface ConfigOptions {"+r.EOL+" overrides?: UserConfig"+r.EOL+"}"+r.EOL+r.EOL+"export function defineConfig<T extends ConfigOptions>(options: T) {"+r.EOL+" const { overrides } = options"+r.EOL+" return defineAppConfig("+r.EOL+" (config: ConfigEnv): UserConfig => {"+r.EOL+" const prefixes = ['VITE_']"+r.EOL+" const env = loadEnv(config.mode, process.cwd(), prefixes)"+r.EOL+" const commonConfig: UserConfig = {"+r.EOL+" envPrefix: prefixes,"+r.EOL+" root: process.cwd(),"+r.EOL+" base: '/',"+r.EOL+" publicDir: 'public',"+r.EOL+" server: {"+r.EOL+" host: '0.0.0.0',"+r.EOL+" port: Number(env.VITE_APP_PORT),"+r.EOL+" proxy: {"+r.EOL+" [env.VITE_APP_BASE_URL]: {"+r.EOL+" target: env.VITE_APP_PROXY_URL,"+r.EOL+" changeOrigin: true,"+r.EOL+" rewrite: (path) => path.replace(new RegExp(`^${env.VITE_APP_BASE_URL}`), '')"+r.EOL+" }"+r.EOL+" }"+r.EOL+" },"+r.EOL+" resolve: {"+r.EOL+" alias: {"+r.EOL+" '@': fileURLToPath(new URL('../../src', import.meta.url))"+r.EOL+" }"+r.EOL+" },"+r.EOL+" plugins: ["+r.EOL+" ...createPlugins()"+(n.pluginElementPlus?","+r.EOL+" ...createElementPlusPlugins()"+r.EOL:r.EOL)+" ]"+r.EOL+" }"+r.EOL+" return overrides ? mergeConfig(commonConfig, overrides) : commonConfig"+r.EOL+" }"+r.EOL+" )"+r.EOL+"}"+r.EOL;await i(o.resolve(process.cwd(),"./build/config/index.ts"),e)}const a="import { defineConfig } from './build/config'"+r.EOL+r.EOL+"export default defineConfig({"+r.EOL+" overrides: {"+r.EOL+r.EOL+" }"+r.EOL+"})"+r.EOL;await i(o.resolve(process.cwd(),"./vite.config.ts"),a);const u=await l(o.resolve(process.cwd(),"./package.json"));let m="";n.pluginEnvHelper&&n.pluginScanRoutes?m=`"vite-plugin-env-helper": "^1.1.0",${r.EOL} "vite-plugin-scan-routes": "1.0.2",${r.EOL}`:n.pluginScanRoutes?m=`"vite-plugin-scan-routes": "1.0.2",${r.EOL}`:n.pluginEnvHelper&&(m=`"vite-plugin-env-helper": "^1.1.0",${r.EOL}`),n.pluginElementPlus&&(m+=` "unplugin-auto-import": "^20.2.0",${r.EOL} "unplugin-vue-components": "^29.1.0",${r.EOL} "unplugin-element-plus": "^0.10.0",${r.EOL}`);const E=u.replace(/"vite-plugin-config-helper":\s*"[^"]*"\s*,?\n?/g,m),d=n.pluginElementPlus?E.replace(/"dependencies": \s*\{/g,'"dependencies": {'+r.EOL+' "element-plus": "^2.11.4",'):E;await i(o.resolve(process.cwd(),"./package.json"),d)}}}export{s as configHelper};
1
+ import*as e from"node:fs";import s from"node:fs";import*as o from"node:crypto";import*as i from"node:os";import t from"node:os";import*as r from"node:path";async function n(e){try{return await s.promises.access(e),!0}catch{return!1}}async function c(e,o){return await new Promise(((o,i)=>{let t="";s.createReadStream(e,{highWaterMark:1048576,encoding:"utf8"}).on("error",(e=>i(e))).on("data",(e=>t+=e)).on("end",(()=>{o(t)}))}))}async function l(e,o,i){return await new Promise(((i,t)=>{s.createWriteStream(e,{encoding:"utf8",highWaterMark:1048576}).on("error",(e=>t(e))).on("finish",(()=>i())).on("open",(function(){this.write(o),this.end()}))}))}function p(e){const s=e.split(t.EOL),i={data:s[0],iv:s[1]},{iv:r,data:n}=i,c=o.scryptSync("unique password","Just call me!",32),l=o.createDecipheriv("aes-256-cbc",c,r);let p=l.update(n,"hex","utf8");return p+=l.final("utf8"),p}async function a(e,s,o){if(await n(r.resolve(process.cwd(),"./.env"))){if(!(e in o.env)){let o=await c(r.resolve(process.cwd(),"./.env"));o+=i.EOL+`${e}=${s}`,await l(r.resolve(process.cwd(),"./.env"),o)}}else await l(r.resolve(process.cwd(),"./.env"),`${e}=${s}`)}function d(s={port:5173,baseUrl:"/api",proxyUrl:"http://192.168.0.193:9999",pluginEnvHelper:!0,pluginScanRoutes:!1,pluginElementPlus:!0,template:!0}){return{name:"vite-plugin-config-helper",async configResolved(o){if(await n(r.resolve(process.cwd(),"./build/config/index.ts")))return;if(await n(r.resolve(process.cwd(),"./build/config/plugins.ts")))return;e.mkdirSync(process.cwd()+"/build/config",{recursive:!0});const t=[["VITE_APP_BASE_URL",s.baseUrl],["VITE_APP_PROXY_URL",s.proxyUrl],["VITE_APP_PORT",s.port]];for(const e of t)await a(e[0],e[1],o);const d=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/plugins.ts")),u=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/plugins-env.ts")),w=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/plugins-routes.ts")),v=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/plugins-env-routes.ts")),g=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/vite.config.ts")),m=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/ep.ts")),f=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/index.ts")),h=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/build/index-ep.ts")),E=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/types/ep.d.ts")),b=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/types/locale.d.ts")),y=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/components/FormBuilder.vue")),_=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/hooks/color.ts")),L=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/hooks/locale.ts")),O=await c(r.resolve(process.cwd(),"node_modules/vite-plugin-config-helper/dist/esm/assets/plugins/i18n.ts"));s.pluginEnvHelper&&s.pluginScanRoutes?await l(r.resolve(process.cwd(),"./build/config/plugins.ts"),p(v)):s.pluginEnvHelper?await l(r.resolve(process.cwd(),"./build/config/plugins.ts"),p(u)):s.pluginScanRoutes?await l(r.resolve(process.cwd(),"./build/config/plugins.ts"),p(w)):await l(r.resolve(process.cwd(),"./build/config/plugins.ts"),p(d)),s.pluginElementPlus?(e.mkdirSync(process.cwd()+"/src/components",{recursive:!0}),e.mkdirSync(process.cwd()+"/src/hooks",{recursive:!0}),e.mkdirSync(process.cwd()+"/src/types",{recursive:!0}),await n(r.resolve(process.cwd(),"./build/config/ep.ts"))||await l(r.resolve(process.cwd(),"./build/config/ep.ts"),p(m)),await n(r.resolve(process.cwd(),"./src/types/ep.d.ts"))||await l(r.resolve(process.cwd(),"./src/types/ep.d.ts"),p(E)),await n(r.resolve(process.cwd(),"./src/types/locale.d.ts"))||await l(r.resolve(process.cwd(),"./src/types/locale.d.ts"),p(b)),await n(r.resolve(process.cwd(),"./src/plugins/i18n.ts"))||await l(r.resolve(process.cwd(),"./src/plugins/i18n.ts"),p(O)),await n(r.resolve(process.cwd(),"./src/components/FormBuilder.vue"))||await l(r.resolve(process.cwd(),"./src/components/FormBuilder.vue"),p(y)),await n(r.resolve(process.cwd(),"./src/hooks/color.ts"))||await l(r.resolve(process.cwd(),"./src/hooks/color.ts"),p(_)),await n(r.resolve(process.cwd(),"./src/hooks/locale.ts"))||await l(r.resolve(process.cwd(),"./src/hooks/locale.ts"),p(L)),await n(r.resolve(process.cwd(),"./build/config/index.ts"))||await l(r.resolve(process.cwd(),"./build/config/index.ts"),p(h))):await n(r.resolve(process.cwd(),"./build/config/index.ts"))||await l(r.resolve(process.cwd(),"./build/config/index.ts"),p(f)),await l(r.resolve(process.cwd(),"./vite.config.ts"),p(g));const k=await c(r.resolve(process.cwd(),"./package.json"));let P="";s.pluginEnvHelper&&s.pluginScanRoutes?P=`"vite-plugin-env-helper": "^1.1.0",${i.EOL} "vite-plugin-scan-routes": "1.0.2",${i.EOL}`:s.pluginScanRoutes?P=`"vite-plugin-scan-routes": "1.0.2",${i.EOL}`:s.pluginEnvHelper&&(P=`"vite-plugin-env-helper": "^1.1.0",${i.EOL}`),s.pluginElementPlus&&(P+=` "vite-svg-loader": "^5.1.0",${i.EOL} "@tailwindcss/vite": "^4.1.17",${i.EOL} "@intlify/unplugin-vue-i18n": "^11.0.1",${i.EOL} "unplugin-auto-import": "^20.2.0",${i.EOL} "unplugin-vue-components": "^30.0.0",${i.EOL} "unplugin-element-plus": "^0.11.1",${i.EOL}`);const $=k.replace(/"vite-plugin-config-helper":\s*"[^"]*"\s*,?\n?/g,P),S=s.pluginElementPlus?$.replace(/"dependencies": \s*\{/g,'"dependencies": {'+i.EOL+' "element-plus": "^2.11.8",'+i.EOL+' "vue-i18n": "^11.1.12",'):$;await l(r.resolve(process.cwd(),"./package.json"),S)}}}export{d as configHelper};
@@ -0,0 +1,2 @@
1
+ import type { PluginOption } from 'vite';
2
+ export declare function createElementPlusPlugins(): PluginOption[];
@@ -0,0 +1,6 @@
1
+ import { type UserConfig } from 'vite';
2
+ interface ConfigOptions {
3
+ overrides?: UserConfig;
4
+ }
5
+ export declare function defineConfig<T extends ConfigOptions>(options: T): import("vite").UserConfigFnObject;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ import { type UserConfig } from 'vite';
2
+ interface ConfigOptions {
3
+ overrides?: UserConfig;
4
+ }
5
+ export declare function defineConfig<T extends ConfigOptions>(options: T): import("vite").UserConfigFnObject;
6
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { PluginOption } from 'vite';
2
+ export declare function createPlugins(): PluginOption[];
@@ -0,0 +1,2 @@
1
+ import type { PluginOption } from 'vite';
2
+ export declare function createPlugins(): PluginOption[];
@@ -0,0 +1,2 @@
1
+ import type { PluginOption } from 'vite';
2
+ export declare function createPlugins(): PluginOption[];
@@ -0,0 +1,2 @@
1
+ import type { PluginOption } from 'vite';
2
+ export declare function createPlugins(): PluginOption[];
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -5,4 +5,4 @@ export declare function encrypt(data: string): {
5
5
  iv: Buffer<ArrayBufferLike>;
6
6
  data: string;
7
7
  };
8
- export declare function decrypt(encryptedResult: any): string;
8
+ export declare function decrypt(encryptedResultWithEOL: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-config-helper",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "private": false,
5
5
  "description": "把 vite.config.ts 配置进行逻辑拆分,并整合一些常用插件或代码,如 element-plus 自动导入组件样式配置的相关插件",
6
6
  "keywords": [
@@ -16,7 +16,8 @@
16
16
  "files": [
17
17
  "dist/**/*.d.ts",
18
18
  "dist/**/*.js",
19
- "dist/**/*.ts"
19
+ "dist/**/*.ts",
20
+ "dist/**/*.vue"
20
21
  ],
21
22
  "exports": {
22
23
  ".": {