plugin-tls 0.0.0 → 1.1.0

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.
Files changed (210) hide show
  1. package/README.md +5 -5
  2. package/dist/extend/extend.d.ts +222 -0
  3. package/dist/extend/extend.d.ts.map +1 -0
  4. package/dist/extend/mixin.d.ts +105 -0
  5. package/dist/extend/mixin.d.ts.map +1 -0
  6. package/dist/index.d.ts +14 -4
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/options-manager/ModeOptions.d.ts +88 -0
  9. package/dist/options-manager/ModeOptions.d.ts.map +1 -0
  10. package/dist/options-manager/OptionsManager.d.ts +105 -0
  11. package/dist/options-manager/OptionsManager.d.ts.map +1 -0
  12. package/dist/options-manager/TierModeOptions.d.ts +69 -0
  13. package/dist/options-manager/TierModeOptions.d.ts.map +1 -0
  14. package/dist/options-manager/TierOptions.d.ts +48 -0
  15. package/dist/options-manager/TierOptions.d.ts.map +1 -0
  16. package/dist/{defaultOptions.d.ts → options-manager/defaultOptions.d.ts} +2 -1
  17. package/dist/options-manager/defaultOptions.d.ts.map +1 -0
  18. package/dist/options-manager/tools.d.ts +35 -0
  19. package/dist/options-manager/tools.d.ts.map +1 -0
  20. package/dist/plugin-host/PluginHost.d.ts +184 -0
  21. package/dist/plugin-host/PluginHost.d.ts.map +1 -0
  22. package/dist/plugin-host/TierModeOptionsPluginHost.d.ts +102 -0
  23. package/dist/plugin-host/TierModeOptionsPluginHost.d.ts.map +1 -0
  24. package/dist/plugin-host/TierOptionsPluginHost.d.ts +83 -0
  25. package/dist/plugin-host/TierOptionsPluginHost.d.ts.map +1 -0
  26. package/dist/plugin-manager/PluginManager.d.ts +119 -0
  27. package/dist/plugin-manager/PluginManager.d.ts.map +1 -0
  28. package/dist/plugin-manager/PluginManagerWithInit.d.ts +36 -0
  29. package/dist/plugin-manager/PluginManagerWithInit.d.ts.map +1 -0
  30. package/dist/plugin-tls.d.ts +1329 -0
  31. package/dist/plugin-tls.iife.js +1 -0
  32. package/dist/plugin-tls.mjs +1064 -0
  33. package/dist/plugin-tls.umd.js +1 -1
  34. package/dist/properties.d.ts +30 -0
  35. package/dist/properties.d.ts.map +1 -0
  36. package/dist/tsdoc-metadata.json +11 -0
  37. package/doc/{plugin-tls.adddefaultoptions.md → api/plugin-tls.adddefaultoptions.md} +3 -3
  38. package/doc/{plugin-tls.addinstoptions.md → api/plugin-tls.addinstoptions.md} +2 -2
  39. package/doc/api/plugin-tls.allfunctionapply.md +26 -0
  40. package/doc/api/plugin-tls.becomepluginhost.md +15 -0
  41. package/doc/api/plugin-tls.becomepluginhost_extends.md +38 -0
  42. package/doc/api/plugin-tls.becomepluginhost_proxy.md +29 -0
  43. package/doc/api/plugin-tls.becometiermodeoptionshost.md +15 -0
  44. package/doc/api/plugin-tls.becometieroptionshost.md +15 -0
  45. package/doc/api/plugin-tls.classextender.md +15 -0
  46. package/doc/api/plugin-tls.classextenderprivatemember._constructors.md +13 -0
  47. package/doc/api/plugin-tls.classextenderprivatemember._destroys.md +13 -0
  48. package/doc/api/plugin-tls.classextenderprivatemember.md +21 -0
  49. package/doc/api/plugin-tls.classextenderprivatememberwithinit._inits.md +13 -0
  50. package/doc/api/plugin-tls.classextenderprivatememberwithinit.md +21 -0
  51. package/doc/api/plugin-tls.classextenderwithinit.md +15 -0
  52. package/doc/api/plugin-tls.classtype._new_.md +22 -0
  53. package/doc/api/plugin-tls.classtype.md +20 -0
  54. package/doc/api/plugin-tls.commonmodename.md +18 -0
  55. package/doc/api/plugin-tls.createcallerofprivatememberofextend.md +30 -0
  56. package/doc/api/plugin-tls.createdefinemixin.md +23 -0
  57. package/doc/api/plugin-tls.createextendtarget.md +30 -0
  58. package/doc/api/plugin-tls.createextendtargetwithinit.md +30 -0
  59. package/doc/api/plugin-tls.createmixintarget.md +30 -0
  60. package/doc/api/plugin-tls.createpluginhost.md +35 -0
  61. package/doc/api/plugin-tls.createpropertysetter.md +30 -0
  62. package/doc/api/plugin-tls.createtargetextend.md +30 -0
  63. package/doc/api/plugin-tls.createtargetextendwithinit.md +30 -0
  64. package/doc/api/plugin-tls.createtargetmixin.md +30 -0
  65. package/doc/api/plugin-tls.createtiermodeoptionspluginhost.md +32 -0
  66. package/doc/api/plugin-tls.createtieroptionspluginhost.md +30 -0
  67. package/doc/api/plugin-tls.defineextend.md +35 -0
  68. package/doc/api/plugin-tls.defineextendwithinit.md +35 -0
  69. package/doc/api/plugin-tls.definemixin.md +31 -0
  70. package/doc/api/plugin-tls.extendtarget.md +31 -0
  71. package/doc/api/plugin-tls.extendtargetwithinit.md +31 -0
  72. package/doc/api/plugin-tls.formatuseparameters.md +13 -0
  73. package/doc/api/plugin-tls.formatusepluginparameters.md +15 -0
  74. package/doc/api/plugin-tls.getnormalizepluginoptions.md +15 -0
  75. package/doc/api/plugin-tls.getpluginoptions.md +15 -0
  76. package/doc/api/plugin-tls.getpropertyvalue.md +26 -0
  77. package/doc/api/plugin-tls.getpropertyvaluebypath.md +26 -0
  78. package/doc/api/plugin-tls.gettargetproperties.md +26 -0
  79. package/doc/{plugin-tls.hostinst.md → api/plugin-tls.hostinst.md} +2 -2
  80. package/doc/{plugin-tls.idefaultoptionshost.defaultoptions.md → api/plugin-tls.idefaultoptionshost.defaultoptions.md} +1 -1
  81. package/doc/{plugin-tls.idefaultoptionshost.md → api/plugin-tls.idefaultoptionshost.md} +1 -1
  82. package/doc/{plugin-tls.iidefaultoptionshostconstructor.md → api/plugin-tls.iidefaultoptionshostconstructor.md} +1 -1
  83. package/doc/{plugin-tls.iplugin.created.md → api/plugin-tls.iplugin.created.md} +4 -4
  84. package/doc/api/plugin-tls.iplugin.destroyed.md +25 -0
  85. package/doc/{plugin-tls.iplugin.md → api/plugin-tls.iplugin.md} +4 -3
  86. package/doc/{plugin-tls.iplugin.used.md → api/plugin-tls.iplugin.used.md} +4 -4
  87. package/doc/{plugin-tls.ipluginhost.md → api/plugin-tls.ipluginhost.md} +2 -2
  88. package/doc/{plugin-tls.ipluginhost.use.md → api/plugin-tls.ipluginhost.use.md} +6 -6
  89. package/doc/{plugin-tls.ipluginhostconstructor.md → api/plugin-tls.ipluginhostconstructor.md} +2 -2
  90. package/doc/{plugin-tls.ipluginhostconstructor.use.md → api/plugin-tls.ipluginhostconstructor.use.md} +6 -6
  91. package/doc/api/plugin-tls.ipluginwithinit.inited.md +25 -0
  92. package/doc/api/plugin-tls.ipluginwithinit.md +21 -0
  93. package/doc/api/plugin-tls.itiermodeoptionshost.md +21 -0
  94. package/doc/api/plugin-tls.itiermodeoptionshost.mode.md +11 -0
  95. package/doc/api/plugin-tls.itiermodeoptionshost.modeoptions.md +11 -0
  96. package/doc/api/plugin-tls.itiermodeoptionshostconstructor.md +13 -0
  97. package/doc/api/plugin-tls.itiermodeoptionspluginhost.md +15 -0
  98. package/doc/api/plugin-tls.itiermodeoptionspluginhostconstructor.md +15 -0
  99. package/doc/api/plugin-tls.itieroptionshost.defaultoptions.md +11 -0
  100. package/doc/api/plugin-tls.itieroptionshost.md +20 -0
  101. package/doc/api/plugin-tls.itieroptionshostconstructor.md +13 -0
  102. package/doc/api/plugin-tls.itieroptionspluginhost.md +15 -0
  103. package/doc/api/plugin-tls.itieroptionspluginhostconstructor.md +15 -0
  104. package/doc/api/plugin-tls.md +121 -0
  105. package/doc/api/plugin-tls.mergeproperties.md +25 -0
  106. package/doc/api/plugin-tls.mixin_4.md +33 -0
  107. package/doc/api/plugin-tls.mixintarget.md +31 -0
  108. package/doc/api/plugin-tls.modeoptions._constructor_.md +20 -0
  109. package/doc/api/plugin-tls.modeoptions._constructor__1.md +21 -0
  110. package/doc/api/plugin-tls.modeoptions._mode.md +11 -0
  111. package/doc/api/plugin-tls.modeoptions._modenames.md +11 -0
  112. package/doc/api/plugin-tls.modeoptions._plainfulloption.md +11 -0
  113. package/doc/api/plugin-tls.modeoptions.getfullmodeoption.md +29 -0
  114. package/doc/api/plugin-tls.modeoptions.getmodenames.md +18 -0
  115. package/doc/api/plugin-tls.modeoptions.getmodeoption.md +29 -0
  116. package/doc/api/plugin-tls.modeoptions.hasmode.md +25 -0
  117. package/doc/api/plugin-tls.modeoptions.md +57 -0
  118. package/doc/api/plugin-tls.modeoptions.mode.md +15 -0
  119. package/doc/api/plugin-tls.modeoptions.modenames.md +13 -0
  120. package/doc/api/plugin-tls.modeoptions.modes.md +13 -0
  121. package/doc/api/plugin-tls.modeoptions.option.md +13 -0
  122. package/doc/api/plugin-tls.modeoptions.optionmanager.md +13 -0
  123. package/doc/api/plugin-tls.modeoptions.plainfulloption.md +11 -0
  124. package/doc/api/plugin-tls.modeoptions.setmodeoption.md +27 -0
  125. package/doc/api/plugin-tls.modeoptions.updatefulloption.md +17 -0
  126. package/doc/api/plugin-tls.normalizepluginoptions.md +18 -0
  127. package/doc/api/plugin-tls.parsepropertypath.md +25 -0
  128. package/doc/{plugin-tls.plugincreatedreturntype.md → api/plugin-tls.plugincreatedreturntype.md} +3 -3
  129. package/doc/{plugin-tls.pluginhost._pluginmanager.md → api/plugin-tls.pluginhost._pluginmanager.md} +2 -2
  130. package/doc/api/plugin-tls.pluginhost.destroy.md +18 -0
  131. package/doc/api/plugin-tls.pluginhost.md +38 -0
  132. package/doc/{plugin-tls.pluginhost.pluginmanager.md → api/plugin-tls.pluginhost.pluginmanager.md} +2 -2
  133. package/doc/{plugin-tls.pluginhost.use.md → api/plugin-tls.pluginhost.use.md} +5 -5
  134. package/doc/api/plugin-tls.pluginmanager._constructor_.md +20 -0
  135. package/doc/{plugin-tls.pluginmanager.created.md → api/plugin-tls.pluginmanager.created.md} +4 -4
  136. package/doc/api/plugin-tls.pluginmanager.destroyed.md +28 -0
  137. package/doc/{plugin-tls.pluginmanager.host.md → api/plugin-tls.pluginmanager.host.md} +2 -2
  138. package/doc/api/plugin-tls.pluginmanager.instuse.md +30 -0
  139. package/doc/{plugin-tls.pluginmanager.md → api/plugin-tls.pluginmanager.md} +12 -5
  140. package/doc/{plugin-tls.pluginmanager.pluginoptsmap.md → api/plugin-tls.pluginmanager.pluginoptsmap.md} +2 -2
  141. package/doc/{plugin-tls.pluginmanager.plugins.md → api/plugin-tls.pluginmanager.plugins.md} +2 -2
  142. package/doc/{plugin-tls.pluginmanager.use.md → api/plugin-tls.pluginmanager.use.md} +6 -6
  143. package/doc/api/plugin-tls.pluginmanagerwithinit.inited.md +28 -0
  144. package/doc/api/plugin-tls.pluginmanagerwithinit.md +25 -0
  145. package/doc/{plugin-tls.pluginusereturntype.md → api/plugin-tls.pluginusereturntype.md} +3 -3
  146. package/doc/api/plugin-tls.privatememberofextend._constructor.md +32 -0
  147. package/doc/api/plugin-tls.privatememberofextend._destroy.md +25 -0
  148. package/doc/api/plugin-tls.privatememberofextend.md +21 -0
  149. package/doc/api/plugin-tls.privatememberofextendwithinit._init.md +28 -0
  150. package/doc/api/plugin-tls.privatememberofextendwithinit.md +21 -0
  151. package/doc/api/plugin-tls.replaceconstructorparameters.md +13 -0
  152. package/doc/api/plugin-tls.replaceconstructorreturn.md +13 -0
  153. package/doc/api/plugin-tls.setpropertyvalue.md +27 -0
  154. package/doc/api/plugin-tls.setpropertyvaluebypath.md +27 -0
  155. package/doc/api/plugin-tls.targetextend.md +31 -0
  156. package/doc/api/plugin-tls.targetextendwithinit.md +31 -0
  157. package/doc/api/plugin-tls.targetmixin.md +31 -0
  158. package/doc/api/plugin-tls.tiermodeoptions._constructor_.md +20 -0
  159. package/doc/api/plugin-tls.tiermodeoptions._constructor__1.md +22 -0
  160. package/doc/api/plugin-tls.tiermodeoptions._extends.md +11 -0
  161. package/doc/api/plugin-tls.tiermodeoptions.extends.md +15 -0
  162. package/doc/api/plugin-tls.tiermodeoptions.getfullmodeoption.md +29 -0
  163. package/doc/api/plugin-tls.tiermodeoptions.getmember.md +25 -0
  164. package/doc/api/plugin-tls.tiermodeoptions.getmodenames.md +18 -0
  165. package/doc/api/plugin-tls.tiermodeoptions.getmodeoptionmanager.md +25 -0
  166. package/doc/api/plugin-tls.tiermodeoptions.getvalue.md +25 -0
  167. package/doc/api/plugin-tls.tiermodeoptions.hasmodeontier.md +25 -0
  168. package/doc/api/plugin-tls.tiermodeoptions.md +45 -0
  169. package/doc/api/plugin-tls.tiermodeoptions.optionmanager.md +13 -0
  170. package/doc/api/plugin-tls.tiermodeoptionsdecorator.md +30 -0
  171. package/doc/api/plugin-tls.tiermodeoptionspluginhost._constructor_.md +20 -0
  172. package/doc/api/plugin-tls.tiermodeoptionspluginhost._modeoptions.md +11 -0
  173. package/doc/api/plugin-tls.tiermodeoptionspluginhost.md +37 -0
  174. package/doc/api/plugin-tls.tiermodeoptionspluginhost.mode.md +13 -0
  175. package/doc/api/plugin-tls.tiermodeoptionspluginhost.modeoptions.md +13 -0
  176. package/doc/api/plugin-tls.tiermodeoptionspluginhost.options.md +11 -0
  177. package/doc/api/plugin-tls.tieroptions._constructor_.md +21 -0
  178. package/doc/api/plugin-tls.tieroptions._extends.md +11 -0
  179. package/doc/api/plugin-tls.tieroptions._plainfulloption.md +11 -0
  180. package/doc/api/plugin-tls.tieroptions.extends.md +15 -0
  181. package/doc/api/plugin-tls.tieroptions.getmember.md +25 -0
  182. package/doc/api/plugin-tls.tieroptions.getvalue.md +25 -0
  183. package/doc/api/plugin-tls.tieroptions.md +37 -0
  184. package/doc/api/plugin-tls.tieroptions.option.md +13 -0
  185. package/doc/api/plugin-tls.tieroptions.plainfulloption.md +18 -0
  186. package/doc/api/plugin-tls.tieroptions.updatefulloption.md +17 -0
  187. package/doc/api/plugin-tls.tieroptionsdecorator.md +30 -0
  188. package/doc/api/plugin-tls.tieroptionspluginhost._constructor_.md +20 -0
  189. package/doc/api/plugin-tls.tieroptionspluginhost._defaultoptions.md +11 -0
  190. package/doc/api/plugin-tls.tieroptionspluginhost.defaultoptions.md +13 -0
  191. package/doc/api/plugin-tls.tieroptionspluginhost.md +35 -0
  192. package/package.json +23 -15
  193. package/dist/OptionsPluginHost.d.ts +0 -49
  194. package/dist/PluginHost.d.ts +0 -96
  195. package/dist/PluginManager.d.ts +0 -76
  196. package/dist/plugin-tls.es.js +0 -170
  197. package/doc/plugin-tls.createoptionspluginhost.md +0 -29
  198. package/doc/plugin-tls.createpluginhost.md +0 -30
  199. package/doc/plugin-tls.ioptionspluginhost.defaultoptions.md +0 -11
  200. package/doc/plugin-tls.ioptionspluginhost.md +0 -21
  201. package/doc/plugin-tls.ioptionspluginhostconstructor.md +0 -15
  202. package/doc/plugin-tls.md +0 -53
  203. package/doc/plugin-tls.optionspluginhost._defaultoptions.md +0 -11
  204. package/doc/plugin-tls.optionspluginhost.defaultoptions.md +0 -13
  205. package/doc/plugin-tls.optionspluginhost.md +0 -21
  206. package/doc/plugin-tls.pluginhost._constructor_.md +0 -13
  207. package/doc/plugin-tls.pluginhost.md +0 -25
  208. package/doc/plugin-tls.pluginmanager.instuse.md +0 -30
  209. package/doc/plugin-tls.pluginoptions.md +0 -11
  210. /package/doc/{index.md → api/index.md} +0 -0
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
- [教程]: ./docs/教程.md
2
- [API接口文档]: ./doc/index.md
1
+ [教程]: ./doc/教程.md
2
+ [API接口文档]: ./doc/api/index.md
3
3
 
4
4
  [GitHub仓库]: https://github.com/GuoBinyong/library-vite-template
5
5
  [发行地址]: https://github.com/GuoBinyong/library-vite-template/releases
@@ -55,13 +55,13 @@
55
55
 
56
56
 
57
57
  ## 3.1. 方式1:通过 npm 安装
58
+ 通过 npm (或 yarn、pnpm 等包管理器)安装
58
59
  ```
59
60
  npm install library-vite-template
60
61
  ```
61
62
 
62
63
 
63
64
 
64
-
65
65
  ## 3.2. 方式3:通过`<script>`标签引入
66
66
  您可直接从项目的 [发行地址][] 中下载以 `.iife.js` 作为缀的文件,然后使用如下代码引用 和 使用 library-vite-template:
67
67
 
@@ -71,10 +71,10 @@ npm install library-vite-template
71
71
  <script src="path/to/package/library-vite-template.iife.js"></script>
72
72
  ```
73
73
 
74
- 2. 使用全局的 `library-vite-template`
74
+ 2. 使用全局的 `LibraryViteTemplate`
75
75
  ```
76
76
  <script>
77
- // 使用全局的 library-vite-template
77
+ // 使用全局的 LibraryViteTemplate
78
78
  </script>
79
79
  ```
80
80
 
@@ -0,0 +1,222 @@
1
+ /**
2
+ * 类的类型、构造函数的类型
3
+ *
4
+ * @typeParam Arg - 构建函数的参数类型
5
+ * @typeParam Instance - 构建函数的返回的实例类型
6
+ */
7
+ export interface ClassType<Arg extends any[] = any, Instance = any> {
8
+ new (...args: Arg): Instance;
9
+ }
10
+ /**
11
+ * 类扩展者的私有方法
12
+ */
13
+ export interface ClassExtenderPrivateMember<C extends new (...args: any) => any> {
14
+ /**
15
+ * 保存扩展类自定义的构建函数
16
+ */
17
+ readonly _constructors: ((this: InstanceType<C>, ...args: ConstructorParameters<C>) => void)[];
18
+ /**
19
+ * 保存扩展类自定义的销毁函数
20
+ */
21
+ readonly _destroys: ((this: InstanceType<C>) => void)[];
22
+ }
23
+ /**
24
+ * 类扩展者
25
+ */
26
+ export type ClassExtender<C extends new (...args: any) => any> = C & ClassExtenderPrivateMember<C>;
27
+ /**
28
+ * 用于定义扩展选项中的私有成员
29
+ */
30
+ export interface PrivateMemberOfExtend<TargetType extends new (...args: any) => any> {
31
+ /**
32
+ * 扩展类中用于定义在创建实例时的初始化的方法
33
+ * @remarks
34
+ * 该方法会在创建实例时自动执行,并将构建函数接收到的参数透传给方方法。
35
+ *
36
+ * 注意:
37
+ * _constructor 会被保存在 目标类中的 _constructors 属性中,它是一个数组。
38
+ *
39
+ * 目标类 需要在自己的构建函数中逐个调用 cla._constructors 中的函数
40
+ *
41
+ * @param args
42
+ */
43
+ _constructor?(...args: (TargetType extends new (...args: infer A) => any ? A : never)): void;
44
+ /**
45
+ * 扩展类中用于定义在实例销毁时触发的销毁方法
46
+ * @remarks
47
+ * 该方法会在实例销毁时自动调用
48
+ *
49
+ * 注意:
50
+ * _destroy 会被保存在 目标类中的 _destroys 属性中,它是一个数组。
51
+ *
52
+ * 如果目标类有销毁逻辑,则需要在自己的销毁函数中逐个调用 cla._destroys 中的函数
53
+ *
54
+ * @param args
55
+ */
56
+ _destroy?(): void;
57
+ }
58
+ /**
59
+ * 定义扩展的类型便利函数
60
+ *
61
+ * @remarks
62
+ * 它会更改 ext 中方法的this指向为 cla & ext,不会真的执行扩展操作。
63
+ *
64
+ * 其中 ext._constructor 会被保存在 cla._constructors 属性中,它是一个数组。
65
+ *
66
+ * cla 需要在自己的构建函数中逐个调用 cla._constructors 中的函数
67
+ *
68
+ * @param cla - 扩展的目标,用作 this 的类型
69
+ * @param ext - 描述扩展内容的对象,会自动更改其this的类型
70
+ * @returns 返回注入了 this 类型的 ext 对象本身
71
+ */
72
+ export declare function defineExtend<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtend<C>): E & ThisType<C & E>;
73
+ /**
74
+ * 扩展目标
75
+ *
76
+ * @remarks
77
+ * 与 {@link defineExtend} 的区别是:`targetExtend` 会执行对 cla 的扩展操作,而 {@link defineExtend} 不会
78
+ *
79
+ *
80
+ * @param cla - 扩展的目标,也用作 this 的类型
81
+ * @param ext - 扩展描述对象,会自动更改其this的类型
82
+ * @returns 返回注入了 this 类型的 ext 对象本身
83
+ */
84
+ export declare function targetExtend<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtend<C>): E & ThisType<InstanceType<C> & E>;
85
+ /**
86
+ * 创建用于扩展目标的便捷函数
87
+ *
88
+ * @remarks
89
+ * 它返回的便利函数的功能与 {@link targetExtend} 的功能一样,唯一区别是不再需要接收 cla 参数了
90
+ *
91
+ * @param cla - 扩展的目标,也用作 this 的类型
92
+ * @returns 可以用于 扩展目标 的便利函数
93
+ */
94
+ export declare function createTargetExtend<C extends ClassType>(cla: C): <E>(ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtend<C>) => E & ThisType<C & E>;
95
+ /**
96
+ * 扩展目标
97
+ *
98
+ * @remarks
99
+ * 会执行对 CEarth 类的扩展操作。
100
+ * 与 {@link targetExtend} 的区别仅仅是返回类型不一样。
101
+ *
102
+ * @param cla - 扩展的目标,也用作 this 的类型
103
+ * @param ext - 扩展对象,会自动更改其this的类型
104
+ * @returns 返回扩展后的 cla 对象
105
+ */
106
+ export declare function extendTarget<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtend<C>): ClassType<ConstructorParameters<C>, E & ThisType<InstanceType<C> & E>>;
107
+ /**
108
+ * 创建用于扩展目标工具函数
109
+ *
110
+ * @remarks
111
+ * 它返回的便利函数的功能与 {@link extendTarget} 的功能一样,唯一区别是不再需要接收 cla 参数了
112
+ *
113
+ * @param cla - 扩展的目标,也用作 this 的类型
114
+ * @returns 可以用于 扩展目标 的便利函数
115
+ */
116
+ export declare function createExtendTarget<C extends ClassType>(cla: C): <E>(ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtend<C>) => ClassType<ConstructorParameters<C>, E & ThisType<InstanceType<C> & E>>;
117
+ /**
118
+ * 类扩展者的私有方法
119
+ */
120
+ export interface ClassExtenderPrivateMemberWithInit<C extends new (...args: any) => any, InitParams extends any[] = any> extends ClassExtenderPrivateMember<C> {
121
+ /**
122
+ * 保存扩展类中自定义的初始化方法
123
+ */
124
+ readonly _inits: ((this: InstanceType<C>, ...args: InitParams) => void)[];
125
+ }
126
+ /**
127
+ * 类扩展者
128
+ */
129
+ export type ClassExtenderWithInit<C extends new (...args: any) => any, InitParams extends any[] = any> = C & ClassExtenderPrivateMemberWithInit<C, InitParams>;
130
+ /**
131
+ * 用于定义扩展选项中的私有成员
132
+ */
133
+ export interface PrivateMemberOfExtendWithInit<TargetType extends new (...args: any) => any, InitParams extends any[] = any> extends PrivateMemberOfExtend<TargetType> {
134
+ /**
135
+ * 扩展类中用于定义实例初始化逻辑的方法
136
+ * @remarks
137
+ * 该方法会在调用实例的 `init()` 方法时自动执行。
138
+ * @param args
139
+ */
140
+ _init?(...args: InitParams): void;
141
+ }
142
+ /**
143
+ * 对一组函数批量调用 apply
144
+ * @param funArr
145
+ * @param thisArg
146
+ * @param args
147
+ */
148
+ export declare function allFunctionApply<T, A extends any[], R>(funArr: ((this: T, ...args: A) => void)[], thisArg: T, args: A): void;
149
+ /**
150
+ * 创建扩展的私有方法的调用者
151
+ * @param cla
152
+ * @returns constructed:执行所有 `_constructor` 的便利函数;initialized:执行所有 `_inits` 的便利函数
153
+ */
154
+ export declare function createCallerOfPrivateMemberOfExtend<C extends ClassType>(cla: C): {
155
+ constructed: (thisArg: any, args: any[]) => void;
156
+ initialized: (thisArg: any, args: any[]) => void;
157
+ destroyed: (thisArg: any, args: any[]) => void;
158
+ };
159
+ /**
160
+ * 定义扩展的类型便利函数
161
+ *
162
+ * @remarks
163
+ * 它会更改 ext 中方法的this指向为 cla & ext,不会真的执行扩展操作。
164
+ *
165
+ * 其中:
166
+ * - ext._constructor 会被保存在 cla._constructors 属性中,它是一个数组。
167
+ * - ext._init 会被保存在 cla._inits 属性中,它是一个数组。
168
+ *
169
+ * cla 需要:
170
+ * - 在自己的构建函数中逐个调用 cla._constructors 中的函数
171
+ * - 在自己的类似初始化`init()` 方法中逐个调用 cla._constructors 中的函数
172
+ *
173
+ * @param cla - 扩展的目标,用作 this 的类型
174
+ * @param ext - 描述扩展内容的对象,会自动更改其this的类型
175
+ * @returns 返回注入了 this 类型的 ext 对象本身
176
+ */
177
+ export declare function defineExtendWithInit<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtendWithInit<C>): E & ThisType<C & E>;
178
+ /**
179
+ * 扩展目标
180
+ *
181
+ * @remarks
182
+ * 与 {@link defineExtendWithInit} 的区别是:`targetExtend` 会执行对 cla 的扩展操作,而 {@link defineExtendWithInit} 不会
183
+ *
184
+ *
185
+ * @param cla - 扩展的目标,也用作 this 的类型
186
+ * @param ext - 扩展描述对象,会自动更改其this的类型
187
+ * @returns 返回注入了 this 类型的 ext 对象本身
188
+ */
189
+ export declare function targetExtendWithInit<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtendWithInit<C>): E & ThisType<InstanceType<C> & E>;
190
+ /**
191
+ * 创建用于扩展目标的便捷函数
192
+ *
193
+ * @remarks
194
+ * 它返回的便利函数的功能与 {@link targetExtendWithInit} 的功能一样,唯一区别是不再需要接收 cla 参数了
195
+ *
196
+ * @param cla - 扩展的目标,也用作 this 的类型
197
+ * @returns 可以用于 扩展目标 的便利函数
198
+ */
199
+ export declare function createTargetExtendWithInit<C extends ClassType>(cla: C): <E>(ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtendWithInit<C, any>) => E & ThisType<C & E>;
200
+ /**
201
+ * 扩展目标
202
+ *
203
+ * @remarks
204
+ * 会执行对 CEarth 类的扩展操作。
205
+ * 与 {@link targetExtendWithInit} 的区别仅仅是返回类型不一样。
206
+ *
207
+ * @param cla - 扩展的目标,也用作 this 的类型
208
+ * @param ext - 扩展对象,会自动更改其this的类型
209
+ * @returns 返回扩展后的 cla 对象
210
+ */
211
+ export declare function extendTargetWithInit<C extends ClassType, E>(cla: C, ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtendWithInit<C>): ClassType<ConstructorParameters<C>, E & ThisType<InstanceType<C> & E>>;
212
+ /**
213
+ * 创建用于扩展目标工具函数
214
+ *
215
+ * @remarks
216
+ * 它返回的便利函数的功能与 {@link extendTargetWithInit} 的功能一样,唯一区别是不再需要接收 cla 参数了
217
+ *
218
+ * @param cla - 扩展的目标,也用作 this 的类型
219
+ * @returns 可以用于 扩展目标 的便利函数
220
+ */
221
+ export declare function createExtendTargetWithInit<C extends ClassType>(cla: C): <E>(ext: E & ThisType<InstanceType<C> & E> & PrivateMemberOfExtendWithInit<C, any>) => ClassType<ConstructorParameters<C>, E & ThisType<InstanceType<C> & E>>;
222
+ //# sourceMappingURL=extend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../src/extend/extend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * 混合
3
+ * @internal
4
+ */
5
+ export declare function mixin<T, S>(target: T, source: S): T & S;
6
+ /**
7
+ * 混合
8
+ * @internal
9
+ */
10
+ export declare function mixin<T, S1, S2>(target: T, source1: S1, source2: S2): T & S1 & S2;
11
+ /**
12
+ * 混合
13
+ * @internal
14
+ */
15
+ export declare function mixin<T, S1, S2, S3>(target: T, source1: S1, source2: S2, source3: S3): T & S1 & S2 & S3;
16
+ /**
17
+ * 混合
18
+ * @internal
19
+ */
20
+ export declare function mixin<T, S1, S2, S3, S4>(target: T, source1: S1, source2: S2, source3: S3, source4: S3): T & S1 & S2 & S3 & S4;
21
+ /**
22
+ * 混合
23
+ *
24
+ * @remarks
25
+ * 将 source 的所有成员混入 target 对象中。
26
+ *
27
+ * 与 `Object.assign()` 的功能类似,不同的是 `mixin()` 会在 target 对象中 保持 source 对象属性的 PropertyDescriptors
28
+ *
29
+ * @param target - 目标对象,所有 源对象 的属性都要被混入进到 目标对象中
30
+ * @param sources - 源对象,所有 源对象 的属性都要被混入进到 目标对象中
31
+ * @returns 混入后的 target
32
+ */
33
+ export declare function mixin(target: any, ...sources: any[]): any;
34
+ /**
35
+ * 定义混合的类型便利函数
36
+ *
37
+ * @remarks
38
+ * 它会更改 mixin 中方法的this指向为 target & mixin,不会真的执行混合操作
39
+ *
40
+ * @param target - 混合的目标,用作 this 的类型
41
+ * @param mixin - 混合对象,会自动更改其this的类型
42
+ * @returns 返回注入了 this 类型的 mixin 对象本身
43
+ */
44
+ export declare function defineMixin<T, M>(target: T, mixin: M & ThisType<T & M>): M & ThisType<T & M>;
45
+ /**
46
+ * 创建定义混合的类型便利函数
47
+ *
48
+ * @remarks
49
+ * 它返回的便利函数的功能与 {@link defineMixin} 的功能一样,唯一区别是不再需要接收 target 参数了
50
+ *
51
+ * @returns 可以用于 定义混合的 类型便利函数
52
+ */
53
+ export declare function createDefineMixin<T>(): <M>(target: T, mixin: M & ThisType<T & M>) => M & ThisType<T & M>;
54
+ /**
55
+ * 混合目标
56
+ *
57
+ * @remarks
58
+ * 与 {@link defineMixin} 的区别是:`targetMixin` 会执行对 target 的混合操作,而 {@link defineMixin} 不会
59
+ *
60
+ *
61
+ * @param target - 混合的目标,用作 this 的类型
62
+ * @param m - 混合对象,会自动更改其this的类型
63
+ * @returns 返回注入了 this 类型的 mixin 对象本身
64
+ */
65
+ export declare function targetMixin<T, M>(target: T, m: M & ThisType<T & M>): M & ThisType<T & M>;
66
+ /**
67
+ * 创建用于混合目标的便捷函数
68
+ *
69
+ * @remarks
70
+ * 它返回的便利函数的功能与 {@link targetMixin} 的功能一样,唯一区别是不再需要接收 target 参数了
71
+ *
72
+ * @param target - 混合的目标,用作 this 的类型
73
+ * @returns 可以用于 混合目标 的便利函数
74
+ */
75
+ export declare function createTargetMixin<T>(target: T): <M>(m: M & ThisType<T & M>) => M & ThisType<T & M>;
76
+ /**
77
+ * 混合目标
78
+ *
79
+ * @remarks
80
+ * 会执行对 CEarth 类的扩展操作。
81
+ * 与 {@link targetMixin} 的区别仅仅是返回类型不一样。
82
+ *
83
+ * @param target - 混合的目标,用作 this 的类型
84
+ * @param m - 混合对象,会自动更改其this的类型
85
+ * @returns 返回混合后的 target 对象
86
+ */
87
+ export declare function mixinTarget<T, M>(target: T, m: M & ThisType<T & M>): M & ThisType<T & M> & T;
88
+ /**
89
+ * 创建用于混合目标工具函数
90
+ *
91
+ * @remarks
92
+ * 它返回的便利函数的功能与 {@link mixinTarget} 的功能一样,唯一区别是不再需要接收 target 参数了
93
+ *
94
+ * @returns 可以用于 混合目标 的便利函数
95
+ */
96
+ export declare function createMixinTarget<T>(target: T): <M>(m: M & ThisType<T & M>) => M & ThisType<T & M> & T;
97
+ /**
98
+ * 替换构建函数的参数
99
+ */
100
+ export type ReplaceConstructorParameters<C extends new (...args: any) => any, NewParms extends any[]> = new (...args: NewParms) => InstanceType<C>;
101
+ /**
102
+ * 替换构造函数的返回类型
103
+ */
104
+ export type ReplaceConstructorReturn<C extends new (...args: any) => any, NewReturn> = new (...args: ConstructorParameters<C>) => NewReturn;
105
+ //# sourceMappingURL=mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../src/extend/mixin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAC7B,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,GACV,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACf;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACjC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,GACV,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACpB;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACrC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,EAAE,EAEX,OAAO,EAAE,EAAE,GACV,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACzB;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAU3D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GACzB,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAErB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,iBAEvB,CAAC,qDAKZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,MAAM,EAAE,CAAC,EACT,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GACrB,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAGrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,sDAK7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,MAAM,EAAE,CAAC,EACT,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GACrB,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAGzB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,0DAO7C;AAKD;;GAEG;AACH,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAC,GAAG,KAAG,GAAG,EAAC,QAAQ,SAAS,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAC,QAAQ,KAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE5I;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAC,GAAG,KAAG,GAAG,EAAC,SAAS,IAAI,KAAK,GAAG,IAAI,EAAC,qBAAqB,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,17 @@
16
16
  *
17
17
  * @packageDocumentation
18
18
  */
19
- export * from "./PluginManager";
20
- export * from "./PluginHost";
21
- export * from "./OptionsPluginHost";
22
- export * from "./defaultOptions";
19
+ export * from "./extend/mixin";
20
+ export * from "./extend/extend";
21
+ export * from "./plugin-manager/PluginManager";
22
+ export * from "./plugin-manager/PluginManagerWithInit";
23
+ export * from "./options-manager/defaultOptions";
24
+ export * from "./options-manager/ModeOptions";
25
+ export * from "./options-manager/TierOptions";
26
+ export * from "./options-manager/TierModeOptions";
27
+ export * from "./options-manager/tools";
28
+ export * from "./plugin-host/PluginHost";
29
+ export * from "./plugin-host/TierOptionsPluginHost";
30
+ export * from "./plugin-host/TierModeOptionsPluginHost";
31
+ export * from "./properties";
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wCAAwC,CAAA;AAGtD,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,yBAAyB,CAAA;AAGvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,qCAAqC,CAAA;AACnD,cAAc,yCAAyC,CAAA;AAGvD,cAAc,cAAc,CAAA"}
@@ -0,0 +1,88 @@
1
+ import { OptionsManager } from "./OptionsManager";
2
+ import { TierOptions } from "./TierOptions";
3
+ /**
4
+ * 模式选项
5
+ * @remarks
6
+ * 针对选项提供了模式和继承的功能;
7
+ *
8
+ * 适用以下场景:
9
+ * 你设计了一个支持许多选项的工具,不同场景下需要配置不同的选项值,比如有如下几个场景:
10
+ * - 性能模式:所有的配置项以性能为目标进行配置,关闭那些效果类的选项;
11
+ * - 特效模式:以高质量的渲染效果为目标进行配置,会开启所有的效果选项;
12
+ * - 平衡模式:兼顾性能和效果,取个折中;
13
+ *
14
+ * 并且这些模式也会一些共同的选项;
15
+ *
16
+ * 使用该类,你可以:
17
+ * - 设置一个基本模式:该模式提供的所有模式都会有的共用选项
18
+ * - 设置 性能模式、特效模式、平衡模式 继承 基本模式;
19
+ */
20
+ export declare class ModeOptions<Mode extends string | number = string, Option extends {} = any> extends OptionsManager<Option> {
21
+ constructor(mode: Mode);
22
+ constructor(mode: Mode, options?: Option);
23
+ /**
24
+ * 模式的配置
25
+ */
26
+ modes: Record<Mode, TierOptions<Option>>;
27
+ /**
28
+ * 当前模式
29
+ */
30
+ get mode(): Mode;
31
+ set mode(value: Mode);
32
+ protected _mode?: Mode;
33
+ /**
34
+ * 所有的模式名字
35
+ */
36
+ get modeNames(): Mode[];
37
+ protected _modeNames: Mode[] | null;
38
+ /**
39
+ * 获取所有的模式名字
40
+ * @returns
41
+ */
42
+ getModeNames(): Mode[];
43
+ /**
44
+ * 判断是否有某个模式
45
+ * @param mode
46
+ * @returns
47
+ */
48
+ hasMode(mode: string | number): boolean;
49
+ /**
50
+ * 当前模式的选项
51
+ */
52
+ get optionManager(): TierOptions<Option>;
53
+ /**
54
+ * 当前模式对应的选项
55
+ */
56
+ get option(): Option;
57
+ get plainFullOption(): Option;
58
+ protected _plainFullOption: Option | null;
59
+ /**
60
+ * 更新
61
+ */
62
+ updateFullOption(): void;
63
+ /**
64
+ * 返回已合并继承选项的选项
65
+ * @remarks
66
+ * 与继承选项只是浅合并
67
+ * @param mode
68
+ * @returns
69
+ */
70
+ getModeOption(mode: Mode): Option | null;
71
+ /**
72
+ * 返回已合并继承选项的完整选项
73
+ * @remarks
74
+ * 与继承选项合并
75
+ * @param mode
76
+ * @returns
77
+ */
78
+ getFullModeOption(mode: Mode): Option | null;
79
+ /**
80
+ * 给模式设置选项
81
+ * @param mode
82
+ * @param option
83
+ * @param deep - 是否要进行深度合并
84
+ * @param extend - 继承哪个模式
85
+ */
86
+ setModeOption(mode: Mode, option: Option, deep?: boolean, extend?: Mode): Record<Mode, TierOptions<Option>>[Mode];
87
+ }
88
+ //# sourceMappingURL=ModeOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeOptions.d.ts","sourceRoot":"","sources":["../../src/options-manager/ModeOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAQ,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAG1C;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAC,MAAM,SAAS,EAAE,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,MAAM,CAAC;gBAEtG,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM;IASxC;;OAEG;IACH,KAAK,oCAA0C;IAE/C;;OAEG;IACH,IAAI,IAAI,IAAG,IAAI,CAEd;IACD,IAAI,IAAI,CAAC,KAAK,EAHH,IAGG,EAMb;IACD,SAAS,CAAC,KAAK,CAAC,EAAC,IAAI,CAAC;IAGtB;;OAEG;IACH,IAAI,SAAS,WAEZ;IAED,SAAS,CAAC,UAAU,EAAC,IAAI,EAAE,GAAG,IAAI,CAAQ;IAG1C;;;OAGG;IACH,YAAY;IAKZ;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAC,MAAM,GAAG,MAAM;IAM5B;;OAEG;IACH,IAAI,aAAa,IAAG,WAAW,CAAC,MAAM,CAAC,CAEtC;IAID;;OAEG;IACH,IAAI,MAAM,WAET;IAED,IAAI,eAAe,WAElB;IAED,SAAS,CAAC,gBAAgB,EAAC,MAAM,GAAC,IAAI,CAAQ;IAG9C;;OAEG;IACH,gBAAgB;IAOhB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAC,IAAI,GAAE,MAAM,GAAC,IAAI;IAIpC;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAC,IAAI,GAAE,MAAM,GAAC,IAAI;IAKxC;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,MAAM,CAAC,EAAC,IAAI;CAiBnE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * 视为未定义的选项值
3
+ * @remarks
4
+ * 当选项的值是未定义的值
5
+ */
6
+ export declare enum UndefinedOptionValue {
7
+ /**
8
+ * 将 undefined 和 null 都视为未定义的选项
9
+ */
10
+ UndefinedAndNull = "UndefinedAndNull",
11
+ /**
12
+ * 只将 undefined 视为未定义的选项
13
+ */
14
+ Undefined = "Undefined",
15
+ /**
16
+ * 只将 null 视为未定义的选项
17
+ */
18
+ Null = "Null"
19
+ }
20
+ /**
21
+ * 各种判断未定义值的函数集
22
+ */
23
+ export declare const isUndefinedMap: {
24
+ UndefinedAndNull: (value: any) => boolean;
25
+ Undefined: (value: any) => boolean;
26
+ Null: (value: any) => boolean;
27
+ };
28
+ /**
29
+ * 选项管理器
30
+ */
31
+ export declare abstract class OptionsManager<Option extends {} = any> {
32
+ /**
33
+ * 选项
34
+ */
35
+ abstract option: Option;
36
+ /**
37
+ * 是否要冻结 fullOption 的成员
38
+ * @remarks
39
+ * 只会冻结 fullOption 的直接成员的值,不会冻结 fullOption 孙子成员的值
40
+ */
41
+ freezeMember: boolean;
42
+ /**
43
+ * 可更新顶级成员值的完整的选项
44
+ * @remarks
45
+ * 合并后的选项;
46
+ * plainFullOption 的代理对象,自动监听了顶层成员的屐;所以可以更改顶级成员的值,不可以更改非顶级成员的值;
47
+ */
48
+ fullOption: Option;
49
+ /**
50
+ * 完整的选项
51
+ * @remarks
52
+ * 合并后的选项
53
+ */
54
+ abstract readonly plainFullOption: Option;
55
+ /**
56
+ * 更新完整的选项
57
+ */
58
+ abstract updateFullOption(): void;
59
+ /**
60
+ * 设置选项
61
+ * @remarks
62
+ * 会将被设置的选项浅合并进当前选项中
63
+ * @param option
64
+ * @param deep - 是否要进行深度合并
65
+ */
66
+ setOption(option: Option, deep?: boolean): void | Option;
67
+ /**
68
+ * 未定义值的类型
69
+ */
70
+ get undefinedValue(): UndefinedOptionValue;
71
+ set undefinedValue(value: UndefinedOptionValue);
72
+ protected _undefinedValue: UndefinedOptionValue;
73
+ /**
74
+ * 未定义值的判断函数
75
+ */
76
+ isUndefined: (value: any) => boolean;
77
+ /**
78
+ * 获取选项成员
79
+ * @param key
80
+ * @returns
81
+ */
82
+ getMember<Key extends keyof Option>(key: Key): Option[Key] | undefined | null;
83
+ /**
84
+ * 设置选项成员
85
+ * @param key
86
+ * @param value
87
+ * @param deep - 是否要进行深度合并
88
+ */
89
+ setMember<Key extends keyof Option>(key: Key, value?: Option[Key] | null, deep?: boolean): void;
90
+ /**
91
+ * 获取属性路径对应的值
92
+ * @param propPath
93
+ * @returns
94
+ */
95
+ getValue(propPath: string[]): any;
96
+ /**
97
+ * 设置属性路径对应的值
98
+ * @param propPath
99
+ * @param value
100
+ * @param deep - 是否要进行深度合并
101
+ * @returns
102
+ */
103
+ setValue(propPath: string[], value: any, deep?: boolean): void;
104
+ }
105
+ //# sourceMappingURL=OptionsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionsManager.d.ts","sourceRoot":"","sources":["../../src/options-manager/OptionsManager.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,oBAAY,oBAAoB;IAC5B;;OAEG;IACH,gBAAgB,qBAAqB;IACrC;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,IAAI,SAAS;CAEhB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;8BACuB,GAAG;uBAGV,GAAG;kBAGR,GAAG;CAGxC,CAAA;AAID;;GAEG;AACH,8BAAsB,cAAc,CAAC,MAAM,SAAS,EAAE,GAAG,GAAG;IAGxD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,YAAY,UAAQ;IAEpB;;;;;OAKG;IACH,UAAU,SAiCc;IAGxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,gBAAgB,IAAI,IAAI;IAEjC;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAQxC;;OAEG;IACH,IAAI,cAAc,yBAEjB;IACD,IAAI,cAAc,CAAC,KAAK,sBAAA,EAGvB;IAED,SAAS,CAAC,eAAe,uBAAyC;IAElE;;OAEG;IACH,WAAW,0BAAmC;IAG9C;;;;OAIG;IACH,SAAS,CAAC,GAAG,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI;IAI7E;;;;;OAKG;IACH,SAAS,CAAC,GAAG,SAAS,MAAM,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO;IAiBxF;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG;IAIjC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO;CAW1D"}
@@ -0,0 +1,69 @@
1
+ import { ModeOptions } from "./ModeOptions";
2
+ import type { TierOptions } from "./TierOptions";
3
+ /**
4
+ * 层级模式选项
5
+ * @remarks
6
+ * 即 ModeOptions 和 TierOptions 的结合
7
+ */
8
+ export declare class TierModeOptions<Mode extends string | number = string, Option extends {} = any> extends ModeOptions<Mode, Option> {
9
+ constructor(mode: Mode);
10
+ constructor(mode: Mode, options?: Option, extend?: TierModeOptions<Mode, Option>);
11
+ /**
12
+ * 继承的选项
13
+ */
14
+ get extends(): TierModeOptions<Mode, Option> | null;
15
+ set extends(value: TierModeOptions<Mode, Option> | null);
16
+ protected _extends: TierModeOptions<Mode, Option> | null;
17
+ /**
18
+ * 返回已合并继承选项的最终选项
19
+ * @remarks
20
+ * 与继承选项只是浅合并
21
+ * @param mode
22
+ * @returns
23
+ */
24
+ getFullModeOption(mode: Mode): Option | null;
25
+ /**
26
+ * 获取所有的模式名字
27
+ * @returns
28
+ */
29
+ getModeNames(): Mode[];
30
+ /**
31
+ * 在整个层级上判断是否有某个模式
32
+ * @param mode
33
+ * @returns
34
+ */
35
+ hasModeOnTier(mode: string | number): boolean;
36
+ /**
37
+ * 当前模式的选项
38
+ */
39
+ get optionManager(): TierOptions<Option>;
40
+ /**
41
+ * 获取模式对应的选项管理器
42
+ * @param mode
43
+ * @returns
44
+ */
45
+ getModeOptionManager(mode: Mode): TierOptions<Option> | null;
46
+ /**
47
+ * 获取选项成员
48
+ * @param key
49
+ * @returns
50
+ */
51
+ getMember<Key extends keyof Option>(key: Key): Option[Key] | undefined | null;
52
+ /**
53
+ * 获取属性路径对应的值
54
+ * @param propPath
55
+ * @returns
56
+ */
57
+ getValue(propPath: string[]): any;
58
+ }
59
+ /**
60
+ * 层级模式选项主机装饰器
61
+ * @remarks
62
+ * 可让宿主具备层级模式选项;
63
+ * 需要宿主有静态的同名属性;
64
+ * @param target
65
+ * @param context
66
+ * @returns
67
+ */
68
+ export declare function tierModeOptionsDecorator<This, Value>(value: ClassAccessorDecoratorTarget<This, Value>, context: ClassAccessorDecoratorContext<This, Value>): ClassAccessorDecoratorResult<This, Value>;
69
+ //# sourceMappingURL=TierModeOptions.d.ts.map