plugin-tls 3.1.0 → 3.3.1

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 (33) hide show
  1. package/dist/index.js +285 -185
  2. package/dist/index.umd.cjs +1 -1
  3. package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts +4 -3
  4. package/dist/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.d.ts.map +1 -1
  5. package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts +4 -3
  6. package/dist/options/options-plugin-host/tier-options/createTierOptionsPluginHost.d.ts.map +1 -1
  7. package/dist/plugin-host/PluginHost.d.ts +10 -4
  8. package/dist/plugin-host/PluginHost.d.ts.map +1 -1
  9. package/dist/plugin-host/PluginHostEventEmitter.d.ts +10 -4
  10. package/dist/plugin-host/PluginHostEventEmitter.d.ts.map +1 -1
  11. package/dist/plugin-host/PluginHostEventTarget.d.ts +10 -4
  12. package/dist/plugin-host/PluginHostEventTarget.d.ts.map +1 -1
  13. package/dist/plugin-host/createPluginHost.d.ts +10 -4
  14. package/dist/plugin-host/createPluginHost.d.ts.map +1 -1
  15. package/dist/plugin-host/decorator.d.ts +16 -10
  16. package/dist/plugin-host/decorator.d.ts.map +1 -1
  17. package/dist/plugin-host/type.d.ts +10 -4
  18. package/dist/plugin-host/type.d.ts.map +1 -1
  19. package/dist/plugin-manager/ExtendManager.d.ts +13 -4
  20. package/dist/plugin-manager/ExtendManager.d.ts.map +1 -1
  21. package/dist/plugin-manager/IExtend.d.ts +19 -26
  22. package/dist/plugin-manager/IExtend.d.ts.map +1 -1
  23. package/dist/plugin-manager/PluginExtendManager.d.ts +10 -3
  24. package/dist/plugin-manager/PluginExtendManager.d.ts.map +1 -1
  25. package/dist/plugin-manager/PluginManager.d.ts +6 -0
  26. package/dist/plugin-manager/PluginManager.d.ts.map +1 -1
  27. package/dist/plugin-manager/extend.d.ts +84 -0
  28. package/dist/plugin-manager/extend.d.ts.map +1 -0
  29. package/dist/plugin-manager/index.d.ts +1 -0
  30. package/dist/plugin-manager/index.d.ts.map +1 -1
  31. package/dist/plugin-manager/mixin.d.ts +12 -3
  32. package/dist/plugin-manager/mixin.d.ts.map +1 -1
  33. package/package.json +3 -3
@@ -1 +1 @@
1
- (function(r,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("@gby/destroyable"),require("com-tools"),require("deepmerge-ts")):typeof define=="function"&&define.amd?define(["exports","@gby/destroyable","com-tools","deepmerge-ts"],g):(r=typeof globalThis<"u"?globalThis:r||self,g(r.PluginTls={},r.destroyable,r.comTools,r.deepmergeTs))})(this,(function(r,g,O,m){"use strict";function c(i,...t){for(const e of t){const n=Object.getOwnPropertyDescriptors(e);Object.defineProperties(i,n)}return i}function I(i,t){return t}function S(){return function(t,e){return e}}function j(i,t){return c(i,t),t}function q(i){return function(e){return c(i,e),e}}function h(i,t){return c(i,t),i}function A(i){return function(e){return c(i,e),i}}const B=["onCreate","onInit","onDestroy"];function w(i){const t={...i};for(const e of B)typeof t[e]=="function"&&delete t[e];return t}function $(i,t){return t}function U(i){return i&&typeof i.onUse=="function"}class z extends g.Destroyable{host;plugins=new Map;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}use(t,...e){const{plugins:n}=this;if(n.has(t))return n.get(t);const s=t.onUse(this.host,...e);return n.set(t,s),s}instUse(t,e,...n){const{plugins:s}=this;if(s.has(e))return s.get(e);const o=this.use(e,...n);return e.onCreate?.(t),o}onCreate(t,...e){const n=[];for(const[s]of this.plugins)s.onCreate&&n.push(s.onCreate.bind(s));return O.serialCallFuns(n,void 0,[t,...e])}onInit(t,...e){const n=[];for(const[s]of this.plugins)s.onInit&&n.push(s.onInit.bind(s));return O.serialCallFuns(n,void 0,[t,...e])}onDestroy(t){const e=[];for(const[n]of this.plugins)n.onDestroy&&e.push(n.onDestroy.bind(n));return e.reverse(),O.serialCallFuns(e,void 0,[t])}}class K extends g.Destroyable{host;plugins=new Set;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}use(t){const{plugins:e}=this;return e.has(t)?!1:(c(this.host.prototype,w(t)),e.add(t),!0)}instUse(t,e,...n){const{plugins:s}=this;return s.has(e)?!1:(this.use(e),e.onCreate?.call(t,t,...n),!0)}onCreate(t,...e){const n=[];for(const s of this.plugins)s.onCreate&&n.push(s.onCreate);return O.serialCallFuns(n,t,[t,...e])}onInit(t,...e){const n=[];for(const s of this.plugins)s.onInit&&n.push(s.onInit);return O.serialCallFuns(n,t,[t,...e])}onDestroy(t){const e=[];for(const n of this.plugins)n.onDestroy&&e.push(n.onDestroy);return e.reverse(),O.serialCallFuns(e,t,[t])}}const M=Symbol("extend");class p extends g.Destroyable{host;plugins=new Map;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}isPlugin(t){const{plugins:e}=this;return e.has(t)?e.get(t)!==M:U(t)}useExtend(t){const{plugins:e}=this;return e.has(t)?!1:(c(this.host.prototype,w(t)),e.set(t,M),!0)}instUseExtend(t,e,...n){const{plugins:s}=this;return s.has(e)?!1:(this.useExtend(e),e.onCreate?.call(t,t,...n),!0)}usePlugin(t,...e){const{plugins:n}=this;if(n.has(t))return n.get(t);const s=t.onUse(this.host,...e);return n.set(t,s),s}instUsePlugin(t,e,...n){const{plugins:s}=this;if(s.has(e))return s.get(e);const o=this.usePlugin(e,...n);return e.onCreate?.(t),o}onCreate(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onCreate){const u=o===M?s.onCreate:s.onCreate.bind(s);n.push(u)}return O.serialCallFuns(n,t,[t,...e])}onInit(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onInit){const u=o===M?s.onInit:s.onInit.bind(s);n.push(u)}return O.serialCallFuns(n,t,[t,...e])}onDestroy(t){const e=[];for(const[n,s]of this.plugins)if(n.onDestroy){const o=s===M?n.onDestroy:n.onDestroy.bind(n);e.push(o)}return e.reverse(),O.serialCallFuns(e,t,[t])}}function R(i,t){const e=t??"defaultOptions",n=`_${e}`;return function(o){const u=h(o,{get[e](){return i}});h(u.prototype,{get[e](){return this[n]||(this[n]=structuredClone(u.defaultOptions))}})}}function W(i,t,e){const n=`_${t}`;return h(i.prototype,{get[t](){return this[n]||(this[n]=structuredClone(i[t]))}}),e}function x(i){const t=i.split(".");return t[0]===""&&t.shift(),t}function y(i,t){for(const e of t)if(i=i[e],i==null)return;return i}function G(i,t){return y(i,x(t))}function T(i,t,e){const n=t.pop(),s=t.length;let o=0;for(;o<s;){const u=i[t[o]];if(u==null)break;i=u,o++}t=t.slice(o);for(const u of t)i=i[u]={};return i[n]=e,i}function J(i,t,e){return T(i,x(t),e)}const E={UndefinedAndNull:function(t){return t==null},Undefined:function(t){return t===void 0},Null:function(t){return t===null}};class C{freezeMember=!0;fullOption=new Proxy(this,{get:function(t,e,n){const s=t.plainFullOption[e];return t.freezeMember?Object.freeze(s):s},set:function(t,e,n,s){return t.setMember(e,n,!1),!0},has:function(t,e){return e in t.plainFullOption},getOwnPropertyDescriptor:function(t,e){return Object.getOwnPropertyDescriptor(t.plainFullOption,e)},ownKeys:function(t){return Reflect.ownKeys(t.plainFullOption)},deleteProperty:function(t,e){return t.setMember(e,void 0),!0},defineProperty:function(t,e,n){return Object.defineProperty(t.option,e,n),!0}});setOption(t,e){const n=e?m.deepmergeInto(this.option,t):Object.assign(this.option,t);return this.updateFullOption(),n}get undefinedValue(){return this._undefinedValue}set undefinedValue(t){this._undefinedValue=t,this.isUndefined=E[t]||E.UndefinedAndNull}_undefinedValue="UndefinedAndNull";isUndefined=E.UndefinedAndNull;getMember(t){return this.option[t]}setMember(t,e,n){const s=this.option;if(e===void 0)delete s[t];else{const o=s[t];n&&o&&typeof o=="object"?m.deepmergeInto(o,e):s[t]=e}this.updateFullOption()}getValue(t){return y(this.option,t)}setValue(t,e,n){const s=this.option;let o;n&&(o=y(s,t))&&typeof o=="object"?m.deepmergeInto(o,e):T(this.option,t,e),this.updateFullOption()}}class a extends C{constructor(t,e){super(),t&&(this.option=t),e&&(this.extends=e)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;option={};get plainFullOption(){let t=this._plainFullOption;if(t)return t;const{extends:e,option:n}=this;if(t=n,e){const s=e.plainFullOption;t=m.deepmerge(s,n)}return this._plainFullOption=t}_plainFullOption=null;updateFullOption(){this._plainFullOption=null}getMember(t){const e=this.option[t];if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=super.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function L(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new a(void 0,this.constructor[e]))}}}class N extends C{constructor(t,e){super(),e&&this.setModeOption(t,e),this.mode=t}modes={};get mode(){return this._mode||(this.mode=this.modeNames[0])}set mode(t){this._mode=t,this.hasMode(t)||this.setModeOption(t,{}),this.updateFullOption()}_mode;get modeNames(){return this._modeNames||(this._modeNames=this.getModeNames())}_modeNames=null;getModeNames(){return Object.keys(this.modes)}hasMode(t){return!!this.modes[t]}get optionManager(){return this.modes[this.mode]}get option(){return this.optionManager.option}get plainFullOption(){return this._plainFullOption??(this._plainFullOption=this.getFullModeOption(this.mode))}_plainFullOption=null;updateFullOption(){this._plainFullOption=null,this._modeNames=null}getModeOption(t){return this.modes[t].option}getFullModeOption(t){return this.modes[t]?.plainFullOption}setModeOption(t,e,n,s){const{modes:o}=this,u=o[t]||(o[t]=new a);if(u.setOption(e,n),s){const d=o[s];d&&(u.extends=d)}return this.updateFullOption(),u}}class l extends N{constructor(t,e,n){super(t,e),n&&(this.extends=n)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;getFullModeOption(t){const{modes:e,extends:n}=this,s=e[t]?.plainFullOption;if(n){const o=n.getFullModeOption(t);return s?m.deepmerge(o,s):o}return s}getModeNames(){const{modes:t,extends:e}=this,n=Object.keys(t);if(!e)return n;const s=e.getModeNames();return[...new Set([...n,...s])]}hasModeOnTier(t){if(this.hasMode(t))return!0;const e=this.extends;return e?e.hasModeOnTier(t):!1}get optionManager(){return this.getModeOptionManager(this.mode)}getModeOptionManager(t){const e=this.modes[t];return e||(this.extends?.getModeOptionManager(t)?this.setModeOption(t,{}):null)}getMember(t){const e=this.optionManager.getMember(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=this.optionManager.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function Q(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new l(this.constructor[e].mode,void 0,this.constructor[e]))}}}class b extends g.Destroyable{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}class v extends g.DestroyableEventEmitter{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}class F extends g.DestroyableEventTarget{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}function H(i){const t=g.createDestroyableSubClass(i);return class extends t{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(n,...s){return this.pluginManager.usePlugin(n,...s)}static useExtend(n){return this.pluginManager.useExtend(n)}usePlugin(n,...s){return this.pluginManager.instUsePlugin(this,n,...s)}useExtend(n,...s){return this.pluginManager.instUseExtend(this,n,...s)}init(...n){return this.pluginManager.onInit(this,...n)}destroyThis(){const n=this.pluginManager.onDestroy(this);return n instanceof Promise?n.finally(()=>super.destroyThis()):super.destroyThis()}}}function V(i){const t=h(i,{isolatedPluginManager:!1,get pluginManager(){return(!this._pluginManager||this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager"))&&(this._pluginManager=new p(this)),this._pluginManager},usePlugin(e,...n){return this.pluginManager.usePlugin(e,...n)},useExtend(e){return this.pluginManager.useExtend(e)}});return h(t.prototype,{get pluginManager(){return this.constructor.pluginManager},usePlugin(e,...n){return this.pluginManager.instUsePlugin(this,e,...n)},useExtend(e,...n){return this.pluginManager.instUseExtend(this,e,...n)},async init(...e){return super.init&&await super.init(...e),this.pluginManager.onInit(this,...e)},async destroy(){if(await this.pluginManager.onDestroy(this),super.destroy)return super.destroy()}}),i}function X(i){const t=V(i);return new Proxy(t,{construct:function(e,n,s){const o=new e(...n);return t.pluginManager.onCreate(this,...n),o}})}function Y(i){return class extends i{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(e,...n){return this.pluginManager.usePlugin(e,...n)}static useExtend(e){return this.pluginManager.useExtend(e)}constructor(...e){super(...e),this.pluginManager.onCreate(this,...e)}usePlugin(e,...n){return this.pluginManager.instUsePlugin(this,e,...n)}useExtend(e,...n){return this.pluginManager.instUseExtend(this,e,...n)}init(...e){if(super.init){const n=super.init(...e);if(n instanceof Promise)return n.then(()=>this.pluginManager.onInit(this,...e))}return this.pluginManager.onInit(this,...e)}destroy(){const e=this.pluginManager.onDestroy(this);return super.destroy?e instanceof Promise?e.finally(()=>super.destroy()):super.destroy():e}}}class Z extends b{static defaultOptions=new a;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}class tt extends v{static defaultOptions=new a;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}class et extends F{static defaultOptions=new a;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}function nt(i){const t=H(i);return class extends t{static defaultOptions=new a;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(n){super(),this.defaultOptions.option=n}}}const f="common";class it extends b{static modeOptions=new l(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new l(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}class st extends v{static modeOptions=new l(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new l(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}class rt extends F{static modeOptions=new l(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new l(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}function ot(i){const t=H(i);return class extends t{static modeOptions=new l(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new l(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(n){this.modeOptions.mode=n}get options(){return this.modeOptions.plainFullOption}constructor(n){super(),this.modeOptions.setOption(n)}}}function ut(i,t,e){const n=h(i,{modeOptions:new l(t,e)});return h(n.prototype,{get modeOptions(){return this._modeOptions||(this._modeOptions=new l(t,void 0,this.constructor.modeOptions))},get mode(){return this.modeOptions.mode},set mode(s){this.modeOptions.mode=s},get options(){return this.modeOptions.fullOption}}),i}const at={onUse(i,t,e){const n=t??f;c(i,{modeOptions:new l(n,void 0,e)}),c(i.prototype,{get modeOptions(){const s=this,o=i;return s._modeOptions||(s._modeOptions=new l(o.modeOptions.mode,void 0,o.modeOptions))},get mode(){return this.modeOptions.mode},set mode(s){const o=this;o.modeOptions.mode=s},get options(){return this.modeOptions.plainFullOption}})},onCreate(i,t){i.modeOptions.setOption(t)}},lt={onUse(i,t,e){c(i,{defaultOptions:new a(t,e)}),c(i.prototype,{get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,i.defaultOptions))}})},onCreate(i,t){i.defaultOptions.option=t}};function pt(i,t){const e=h(i,{defaultOptions:new a(t)});return h(e.prototype,{get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new a(void 0,this.constructor.defaultOptions))}}),i}function D(i,t){const e=[{target:i,props:t}];let n;for(;n=e.shift();){const{target:s,props:o}=n;for(const[u,d]of Object.entries(o)){if(d!=null&&typeof d=="object"&&(!d.constructor||d.constructor===Object)){e.push({target:s[u],props:d});continue}s[u]=d}}return i}function k(i,t){const e={},n=[{target:i,props:t,targetProps:e}];let s;for(;s=n.shift();){const{target:o,props:u,targetProps:d}=s;for(const[_,P]of Object.entries(u)){if(P!=null&&typeof P=="object"&&(!P.constructor||P.constructor===Object)){n.push({target:o[_],props:P,targetProps:d[_]={}});continue}d[_]=o[_]}}return e}function dt(i,t){const e=k(i,t);function n(){D(i,t)}function s(){D(i,e)}return{set:n,unset:s}}r.ExtendManager=K,r.ModeOptions=N,r.PluginExtendManager=p,r.PluginHost=b,r.PluginHostEventEmitter=v,r.PluginHostEventTarget=F,r.PluginManager=z,r.TierModeOptions=l,r.TierModeOptionsPluginHost=it,r.TierModeOptionsPluginHostEventEmitter=st,r.TierModeOptionsPluginHostEventTarget=rt,r.TierOptions=a,r.TierOptionsPluginHost=Z,r.TierOptionsPluginHostEventEmitter=tt,r.TierOptionsPluginHostEventTarget=et,r.addDefaultOptions=R,r.addInstOptions=W,r.becomePluginHost=V,r.becomePluginHost_Extends=Y,r.becomePluginHost_Proxy=X,r.becomeTierModeOptionsHost=ut,r.becomeTierOptionsHost=pt,r.commonModeName=f,r.createDefineMixin=S,r.createMixinTarget=A,r.createPluginHost=H,r.createPropertySetter=dt,r.createTargetMixin=q,r.createTierModeOptionsPluginHost=ot,r.createTierOptionsPluginHost=nt,r.defineExtend=$,r.defineMixin=I,r.extendMark=M,r.getPropertyValue=y,r.getPropertyValueByPath=G,r.getTargetProperties=k,r.isPlugin=U,r.mergeProperties=D,r.mixin=c,r.mixinTarget=h,r.parsePropertyPath=x,r.pickHostExtendMembers=w,r.setPropertyValue=T,r.setPropertyValueByPath=J,r.targetMixin=j,r.tierModeOptionsDecorator=Q,r.tierModeOptionsPlugin=at,r.tierOptionsDecorator=L,r.tierOptionsPlugin=lt,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(r,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("@gby/destroyable"),require("com-tools"),require("deepmerge-ts")):typeof define=="function"&&define.amd?define(["exports","@gby/destroyable","com-tools","deepmerge-ts"],c):(r=typeof globalThis<"u"?globalThis:r||self,c(r.PluginTls={},r.destroyable,r.comTools,r.deepmergeTs))})(this,(function(r,c,O,m){"use strict";function a(i,...t){for(const e of t){const n=Object.getOwnPropertyDescriptors(e);Object.defineProperties(i,n)}return i}function I(i,t){return t}function S(){return function(t){return t}}function j(i,t){return a(i,t),t}function q(i){return function(e){return a(i,e),e}}function h(i,t){return a(i,t),i}function A(i){return function(e){return a(i,e),i}}function B(i,t){return t}function $(){return function(t){return t}}function z(i,t){return a(i.prototype,t),t}function K(i){return function(e){return a(i.prototype,e),e}}function R(i,t){return a(i.prototype,t),i}function W(i){return function(e){return a(i.prototype,e),i}}const G=["onCreate","onInit","onDestroy"];function E(i){const t={...i};for(const e of G)typeof t[e]=="function"&&delete t[e];return t}function H(i){return i&&typeof i.onUse=="function"}class J extends c.Destroyable{host;plugins=new Map;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}hasUsed(t){return this.plugins.has(t)}use(t,...e){const{plugins:n}=this;if(n.has(t))return n.get(t);const s=t.onUse(this.host,...e);return n.set(t,s),s}instUse(t,e,...n){const{plugins:s}=this;if(s.has(e))return s.get(e);const o=this.use(e,...n);return e.onCreate?.(t),o}onCreate(t,...e){const n=[];for(const[s]of this.plugins)s.onCreate&&n.push(s.onCreate.bind(s));return O.serialCallFuns(n,void 0,[t,...e])}onInit(t,...e){const n=[];for(const[s]of this.plugins)s.onInit&&n.push(s.onInit.bind(s));return O.serialCallFuns(n,void 0,[t,...e])}onDestroy(t){const e=[];for(const[n]of this.plugins)n.onDestroy&&e.push(n.onDestroy.bind(n));return e.reverse(),O.serialCallFuns(e,void 0,[t])}}class L extends c.Destroyable{host;plugins=new Set;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}hasUsed(t){return this.plugins.has(t)}use(t){const{plugins:e}=this;return e.has(t)||(a(this.host.prototype,E(t)),e.add(t)),t}instUse(t,e,...n){const{plugins:s}=this;return s.has(e)||(this.use(e),e.onCreate?.call(t,t,...n)),e}onCreate(t,...e){const n=[];for(const s of this.plugins)s.onCreate&&n.push(s.onCreate);return O.serialCallFuns(n,t,[t,...e])}onInit(t,...e){const n=[];for(const s of this.plugins)s.onInit&&n.push(s.onInit);return O.serialCallFuns(n,t,[t,...e])}onDestroy(t){const e=[];for(const n of this.plugins)n.onDestroy&&e.push(n.onDestroy);return e.reverse(),O.serialCallFuns(e,t,[t])}}const M=Symbol("extend");class p extends c.Destroyable{host;plugins=new Map;constructor(t){super(),t&&(this.host=t)}destroyThis(){return this.plugins.clear(),this.host=null,super.destroyThis()}hasUsed(t){return this.plugins.has(t)}isPlugin(t){const{plugins:e}=this;return e.has(t)?e.get(t)!==M:H(t)}useExtend(t){const{plugins:e}=this;return e.has(t)?e.get(t):(a(this.host.prototype,E(t)),e.set(t,M),t)}instUseExtend(t,e,...n){const{plugins:s}=this;return s.has(e)?s.get(e):(this.useExtend(e),e.onCreate?.call(t,t,...n),e)}usePlugin(t,...e){const{plugins:n}=this;if(n.has(t))return n.get(t);const s=t.onUse(this.host,...e);return n.set(t,s),s}instUsePlugin(t,e,...n){const{plugins:s}=this;if(s.has(e))return s.get(e);const o=this.usePlugin(e,...n);return e.onCreate?.(t),o}onCreate(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onCreate){const u=o===M?s.onCreate:s.onCreate.bind(s);n.push(u)}return O.serialCallFuns(n,t,[t,...e])}onInit(t,...e){const n=[];for(const[s,o]of this.plugins)if(s.onInit){const u=o===M?s.onInit:s.onInit.bind(s);n.push(u)}return O.serialCallFuns(n,t,[t,...e])}onDestroy(t){const e=[];for(const[n,s]of this.plugins)if(n.onDestroy){const o=s===M?n.onDestroy:n.onDestroy.bind(n);e.push(o)}return e.reverse(),O.serialCallFuns(e,t,[t])}}function Q(i,t){const e=t??"defaultOptions",n=`_${e}`;return function(o){const u=h(o,{get[e](){return i}});h(u.prototype,{get[e](){return this[n]||(this[n]=structuredClone(u.defaultOptions))}})}}function X(i,t,e){const n=`_${t}`;return h(i.prototype,{get[t](){return this[n]||(this[n]=structuredClone(i[t]))}}),e}function T(i){const t=i.split(".");return t[0]===""&&t.shift(),t}function y(i,t){for(const e of t)if(i=i[e],i==null)return;return i}function Y(i,t){return y(i,T(t))}function x(i,t,e){const n=t.pop(),s=t.length;let o=0;for(;o<s;){const u=i[t[o]];if(u==null)break;i=u,o++}t=t.slice(o);for(const u of t)i=i[u]={};return i[n]=e,i}function Z(i,t,e){return x(i,T(t),e)}const w={UndefinedAndNull:function(t){return t==null},Undefined:function(t){return t===void 0},Null:function(t){return t===null}};class C{freezeMember=!0;fullOption=new Proxy(this,{get:function(t,e,n){const s=t.plainFullOption[e];return t.freezeMember?Object.freeze(s):s},set:function(t,e,n,s){return t.setMember(e,n,!1),!0},has:function(t,e){return e in t.plainFullOption},getOwnPropertyDescriptor:function(t,e){return Object.getOwnPropertyDescriptor(t.plainFullOption,e)},ownKeys:function(t){return Reflect.ownKeys(t.plainFullOption)},deleteProperty:function(t,e){return t.setMember(e,void 0),!0},defineProperty:function(t,e,n){return Object.defineProperty(t.option,e,n),!0}});setOption(t,e){const n=e?m.deepmergeInto(this.option,t):Object.assign(this.option,t);return this.updateFullOption(),n}get undefinedValue(){return this._undefinedValue}set undefinedValue(t){this._undefinedValue=t,this.isUndefined=w[t]||w.UndefinedAndNull}_undefinedValue="UndefinedAndNull";isUndefined=w.UndefinedAndNull;getMember(t){return this.option[t]}setMember(t,e,n){const s=this.option;if(e===void 0)delete s[t];else{const o=s[t];n&&o&&typeof o=="object"?m.deepmergeInto(o,e):s[t]=e}this.updateFullOption()}getValue(t){return y(this.option,t)}setValue(t,e,n){const s=this.option;let o;n&&(o=y(s,t))&&typeof o=="object"?m.deepmergeInto(o,e):x(this.option,t,e),this.updateFullOption()}}class l extends C{constructor(t,e){super(),t&&(this.option=t),e&&(this.extends=e)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;option={};get plainFullOption(){let t=this._plainFullOption;if(t)return t;const{extends:e,option:n}=this;if(t=n,e){const s=e.plainFullOption;t=m.deepmerge(s,n)}return this._plainFullOption=t}_plainFullOption=null;updateFullOption(){this._plainFullOption=null}getMember(t){const e=this.option[t];if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=super.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function tt(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new l(void 0,this.constructor[e]))}}}class N extends C{constructor(t,e){super(),e&&this.setModeOption(t,e),this.mode=t}modes={};get mode(){return this._mode||(this.mode=this.modeNames[0])}set mode(t){this._mode=t,this.hasMode(t)||this.setModeOption(t,{}),this.updateFullOption()}_mode;get modeNames(){return this._modeNames||(this._modeNames=this.getModeNames())}_modeNames=null;getModeNames(){return Object.keys(this.modes)}hasMode(t){return!!this.modes[t]}get optionManager(){return this.modes[this.mode]}get option(){return this.optionManager.option}get plainFullOption(){return this._plainFullOption??(this._plainFullOption=this.getFullModeOption(this.mode))}_plainFullOption=null;updateFullOption(){this._plainFullOption=null,this._modeNames=null}getModeOption(t){return this.modes[t].option}getFullModeOption(t){return this.modes[t]?.plainFullOption}setModeOption(t,e,n,s){const{modes:o}=this,u=o[t]||(o[t]=new l);if(u.setOption(e,n),s){const g=o[s];g&&(u.extends=g)}return this.updateFullOption(),u}}class d extends N{constructor(t,e,n){super(t,e),n&&(this.extends=n)}get extends(){return this._extends}set extends(t){this._extends=t,this.updateFullOption()}_extends=null;getFullModeOption(t){const{modes:e,extends:n}=this,s=e[t]?.plainFullOption;if(n){const o=n.getFullModeOption(t);return s?m.deepmerge(o,s):o}return s}getModeNames(){const{modes:t,extends:e}=this,n=Object.keys(t);if(!e)return n;const s=e.getModeNames();return[...new Set([...n,...s])]}hasModeOnTier(t){if(this.hasMode(t))return!0;const e=this.extends;return e?e.hasModeOnTier(t):!1}get optionManager(){return this.getModeOptionManager(this.mode)}getModeOptionManager(t){const e=this.modes[t];return e||(this.extends?.getModeOptionManager(t)?this.setModeOption(t,{}):null)}getMember(t){const e=this.optionManager.getMember(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getMember(t)}getValue(t){const e=this.optionManager.getValue(t);if(!this.isUndefined(e))return e;const n=this.extends;if(n)return n.getValue(t)}}function et(i,t){const{name:e}=t,n=`_${e}`;return{get:function(){return this[n]||(this[n]=new d(this.constructor[e].mode,void 0,this.constructor[e]))}}}class b extends c.Destroyable{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}static hasUsed(t){return this.pluginManager.hasUsed(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}class U extends c.DestroyableEventEmitter{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}static hasUsed(t){return this.pluginManager.hasUsed(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}class v extends c.DestroyableEventTarget{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(t,...e){return this.pluginManager.usePlugin(t,...e)}static useExtend(t){return this.pluginManager.useExtend(t)}static hasUsed(t){return this.pluginManager.hasUsed(t)}usePlugin(t,...e){return this.pluginManager.instUsePlugin(this,t,...e)}useExtend(t,...e){return this.pluginManager.instUseExtend(this,t,...e)}init(...t){return this.pluginManager.onInit(this,...t)}destroyThis(){const t=this.pluginManager.onDestroy(this);return t instanceof Promise?t.finally(()=>super.destroyThis()):super.destroyThis()}}function F(i){const t=c.createDestroyableSubClass(i);return class extends t{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(n,...s){return this.pluginManager.usePlugin(n,...s)}static useExtend(n){return this.pluginManager.useExtend(n)}static hasUsed(n){return this.pluginManager.hasUsed(n)}usePlugin(n,...s){return this.pluginManager.instUsePlugin(this,n,...s)}useExtend(n,...s){return this.pluginManager.instUseExtend(this,n,...s)}init(...n){return this.pluginManager.onInit(this,...n)}destroyThis(){const n=this.pluginManager.onDestroy(this);return n instanceof Promise?n.finally(()=>super.destroyThis()):super.destroyThis()}}}function V(i){const t=h(i,{isolatedPluginManager:!1,get pluginManager(){return(!this._pluginManager||this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager"))&&(this._pluginManager=new p(this)),this._pluginManager},usePlugin(e,...n){return this.pluginManager.usePlugin(e,...n)},useExtend(e){return this.pluginManager.useExtend(e)},hasUsed(e){return this.pluginManager.hasUsed(e)}});return h(t.prototype,{get pluginManager(){return this.constructor.pluginManager},usePlugin(e,...n){return this.pluginManager.instUsePlugin(this,e,...n)},useExtend(e,...n){return this.pluginManager.instUseExtend(this,e,...n)},async init(...e){return super.init&&await super.init(...e),this.pluginManager.onInit(this,...e)},async destroy(){if(await this.pluginManager.onDestroy(this),super.destroy)return super.destroy()}}),i}function nt(i){const t=V(i);return new Proxy(t,{construct:function(e,n,s){const o=new e(...n);return t.pluginManager.onCreate(this,...n),o}})}function it(i){return class extends i{static isolatedPluginManager=!1;static get pluginManager(){return this.isolatedPluginManager&&!this.hasOwnProperty("_pluginManager")&&(this._pluginManager=new p(this)),this._pluginManager}static _pluginManager=new p(this);get pluginManager(){return this.constructor.pluginManager}static usePlugin(e,...n){return this.pluginManager.usePlugin(e,...n)}static useExtend(e){return this.pluginManager.useExtend(e)}static hasUsed(e){return this.pluginManager.hasUsed(e)}constructor(...e){super(...e),this.pluginManager.onCreate(this,...e)}usePlugin(e,...n){return this.pluginManager.instUsePlugin(this,e,...n)}useExtend(e,...n){return this.pluginManager.instUseExtend(this,e,...n)}init(...e){if(super.init){const n=super.init(...e);if(n instanceof Promise)return n.then(()=>this.pluginManager.onInit(this,...e))}return this.pluginManager.onInit(this,...e)}destroy(){const e=this.pluginManager.onDestroy(this);return super.destroy?e instanceof Promise?e.finally(()=>super.destroy()):super.destroy():e}}}class st extends b{static defaultOptions=new l;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}class rt extends U{static defaultOptions=new l;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}class ot extends v{static defaultOptions=new l;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(t){super(),this.defaultOptions.option=t}}function ut(i){const t=F(i);return class extends t{static defaultOptions=new l;get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,this.constructor.defaultOptions))}_defaultOptions;constructor(n){super(),this.defaultOptions.option=n}}}const f="common";class at extends b{static modeOptions=new d(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new d(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}class lt extends U{static modeOptions=new d(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new d(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}class dt extends v{static modeOptions=new d(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new d(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(t){this.modeOptions.mode=t}get options(){return this.modeOptions.plainFullOption}constructor(t){super(),this.modeOptions.setOption(t)}}function pt(i){const t=F(i);return class extends t{static modeOptions=new d(f);get modeOptions(){return this._modeOptions||(this._modeOptions=new d(f,void 0,this.constructor.modeOptions))}_modeOptions;get mode(){return this.modeOptions.mode}set mode(n){this.modeOptions.mode=n}get options(){return this.modeOptions.plainFullOption}constructor(n){super(),this.modeOptions.setOption(n)}}}function gt(i,t,e){const n=h(i,{modeOptions:new d(t,e)});return h(n.prototype,{get modeOptions(){return this._modeOptions||(this._modeOptions=new d(t,void 0,this.constructor.modeOptions))},get mode(){return this.modeOptions.mode},set mode(s){this.modeOptions.mode=s},get options(){return this.modeOptions.fullOption}}),i}const ct={onUse(i,t,e){const n=t??f;a(i,{modeOptions:new d(n,void 0,e)}),a(i.prototype,{get modeOptions(){const s=this,o=i;return s._modeOptions||(s._modeOptions=new d(o.modeOptions.mode,void 0,o.modeOptions))},get mode(){return this.modeOptions.mode},set mode(s){const o=this;o.modeOptions.mode=s},get options(){return this.modeOptions.plainFullOption}})},onCreate(i,t){i.modeOptions.setOption(t)}},ht={onUse(i,t,e){a(i,{defaultOptions:new l(t,e)}),a(i.prototype,{get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,i.defaultOptions))}})},onCreate(i,t){i.defaultOptions.option=t}};function ft(i,t){const e=h(i,{defaultOptions:new l(t)});return h(e.prototype,{get defaultOptions(){return this._defaultOptions||(this._defaultOptions=new l(void 0,this.constructor.defaultOptions))}}),i}function D(i,t){const e=[{target:i,props:t}];let n;for(;n=e.shift();){const{target:s,props:o}=n;for(const[u,g]of Object.entries(o)){if(g!=null&&typeof g=="object"&&(!g.constructor||g.constructor===Object)){e.push({target:s[u],props:g});continue}s[u]=g}}return i}function k(i,t){const e={},n=[{target:i,props:t,targetProps:e}];let s;for(;s=n.shift();){const{target:o,props:u,targetProps:g}=s;for(const[_,P]of Object.entries(u)){if(P!=null&&typeof P=="object"&&(!P.constructor||P.constructor===Object)){n.push({target:o[_],props:P,targetProps:g[_]={}});continue}g[_]=o[_]}}return e}function Ot(i,t){const e=k(i,t);function n(){D(i,t)}function s(){D(i,e)}return{set:n,unset:s}}r.ExtendManager=L,r.ModeOptions=N,r.PluginExtendManager=p,r.PluginHost=b,r.PluginHostEventEmitter=U,r.PluginHostEventTarget=v,r.PluginManager=J,r.TierModeOptions=d,r.TierModeOptionsPluginHost=at,r.TierModeOptionsPluginHostEventEmitter=lt,r.TierModeOptionsPluginHostEventTarget=dt,r.TierOptions=l,r.TierOptionsPluginHost=st,r.TierOptionsPluginHostEventEmitter=rt,r.TierOptionsPluginHostEventTarget=ot,r.addDefaultOptions=Q,r.addInstOptions=X,r.becomePluginHost=V,r.becomePluginHost_Extends=it,r.becomePluginHost_Proxy=nt,r.becomeTierModeOptionsHost=gt,r.becomeTierOptionsHost=ft,r.commonModeName=f,r.createDefineExtend=$,r.createDefineMixin=S,r.createExtendTarget=W,r.createMixinTarget=A,r.createPluginHost=F,r.createPropertySetter=Ot,r.createTargetExtend=K,r.createTargetMixin=q,r.createTierModeOptionsPluginHost=pt,r.createTierOptionsPluginHost=ut,r.defineExtend=B,r.defineMixin=I,r.extendMark=M,r.extendTarget=R,r.getPropertyValue=y,r.getPropertyValueByPath=Y,r.getTargetProperties=k,r.isPlugin=H,r.mergeProperties=D,r.mixin=a,r.mixinTarget=h,r.parsePropertyPath=T,r.pickHostExtendMembers=E,r.setPropertyValue=x,r.setPropertyValueByPath=Z,r.targetExtend=z,r.targetMixin=j,r.tierModeOptionsDecorator=et,r.tierModeOptionsPlugin=ct,r.tierOptionsDecorator=tt,r.tierOptionsPlugin=ht,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
@@ -19,7 +19,7 @@ export declare function createTierModeOptionsPluginHost<P extends new (...args:
19
19
  get options(): Options;
20
20
  get pluginManager(): import("../../..").PluginExtendManager<Host, HostClass>;
21
21
  usePlugin<P_1 extends import("../../..").IPlugin<Host, HostClass>>(plugin: P_1, ...args: import("../../..").PluginUseArgs<P_1>): ReturnType<P_1["onUse"]>;
22
- useExtend<E>(ext: import("../../..").ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
22
+ useExtend<E extends import("../../..").IAnyExtend<HostClass>>(ext: import("../../..").ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): import("../../..").IExtendHostMembers<E>;
23
23
  init(...args: any): any;
24
24
  destroyThis(): any;
25
25
  refCount: number;
@@ -54,7 +54,8 @@ export declare function createTierModeOptionsPluginHost<P extends new (...args:
54
54
  isolatedPluginManager: boolean;
55
55
  get pluginManager(): import("../../..").PluginExtendManager<any, any>;
56
56
  _pluginManager: import("../../..").PluginExtendManager<any, any>;
57
- usePlugin<Plugin extends import("../../..").IPlugin<any, any>>(plugin: Plugin, ...args: import("../../..").PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
58
- useExtend<HostClass extends AbstractConstructor, E>(ext: import("../../..").ExtendOptions<HostClass, E>): boolean;
57
+ usePlugin<HostClass extends AbstractConstructor, Plugin extends import("../../..").IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: import("../../..").PluginUseArgs<Plugin>): any;
58
+ useExtend<HostClass extends AbstractConstructor, E extends import("../../..").IAnyExtend<HostClass>>(this: HostClass, ext: import("../../..").ExtendOptions<HostClass, E>): import("../../..").IExtendHostMembers<E>;
59
+ hasUsed(plugin: any): boolean;
59
60
  } & P;
60
61
  //# sourceMappingURL=createTierModeOptionsPluginHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTierModeOptionsPluginHost.d.ts","sourceRoot":"","sources":["../../../../src/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG/D;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAC,OAAO,SAAS,EAAE,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;SAEpH,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,kCA0BpE,OAAO;QApB5B;;WAEG;;sBAIY,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAX7C;;OAEG;;;;;;;MA4BN"}
1
+ {"version":3,"file":"createTierModeOptionsPluginHost.d.ts","sourceRoot":"","sources":["../../../../src/options/options-plugin-host/tier-mode-options/createTierModeOptionsPluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG/D;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAC,OAAO,SAAS,EAAE,EAAE,IAAI,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC;SAEpH,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,kCA0BpE,OAAO;QApB5B;;WAEG;;sBAIY,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAX7C;;OAEG;;;;;;;;MA4BN"}
@@ -16,7 +16,7 @@ export declare function createTierOptionsPluginHost<P extends new (...args: any)
16
16
  _defaultOptions: TierOptions<Options>;
17
17
  get pluginManager(): import("../../..").PluginExtendManager<Host, HostClass>;
18
18
  usePlugin<P_1 extends import("../../..").IPlugin<Host, HostClass>>(plugin: P_1, ...args: import("../../..").PluginUseArgs<P_1>): ReturnType<P_1["onUse"]>;
19
- useExtend<E>(ext: import("../../..").ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
19
+ useExtend<E extends import("../../..").IAnyExtend<HostClass>>(ext: import("../../..").ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): import("../../..").IExtendHostMembers<E>;
20
20
  init(...args: any): any;
21
21
  destroyThis(): any;
22
22
  refCount: number;
@@ -51,7 +51,8 @@ export declare function createTierOptionsPluginHost<P extends new (...args: any)
51
51
  isolatedPluginManager: boolean;
52
52
  get pluginManager(): import("../../..").PluginExtendManager<any, any>;
53
53
  _pluginManager: import("../../..").PluginExtendManager<any, any>;
54
- usePlugin<Plugin extends import("../../..").IPlugin<any, any>>(plugin: Plugin, ...args: import("../../..").PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
55
- useExtend<HostClass extends AbstractConstructor, E>(ext: import("../../..").ExtendOptions<HostClass, E>): boolean;
54
+ usePlugin<HostClass extends AbstractConstructor, Plugin extends import("../../..").IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: import("../../..").PluginUseArgs<Plugin>): any;
55
+ useExtend<HostClass extends AbstractConstructor, E extends import("../../..").IAnyExtend<HostClass>>(this: HostClass, ext: import("../../..").ExtendOptions<HostClass, E>): import("../../..").IExtendHostMembers<E>;
56
+ hasUsed(plugin: any): boolean;
56
57
  } & P;
57
58
  //# sourceMappingURL=createTierOptionsPluginHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTierOptionsPluginHost.d.ts","sourceRoot":"","sources":["../../../../src/options/options-plugin-host/tier-options/createTierOptionsPluginHost.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC;SAG9E,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,kCAkBhE,OAAO;QAX5B;;WAEG;;yBAOe,WAAW,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAftC;;OAEG;;;;;;;MAqBN"}
1
+ {"version":3,"file":"createTierOptionsPluginHost.d.ts","sourceRoot":"","sources":["../../../../src/options/options-plugin-host/tier-options/createTierOptionsPluginHost.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,OAAO,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC;SAG9E,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,kCAkBhE,OAAO;QAX5B;;WAEG;;yBAOe,WAAW,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAftC;;OAEG;;;;;;;;MAqBN"}
@@ -1,5 +1,5 @@
1
1
  import { PluginExtendManager } from "../plugin-manager";
2
- import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
3
  import { Destroyable } from "@gby/destroyable";
4
4
  import type { IPluginHost } from "./type";
5
5
  import type { AbstractConstructor, ClassType } from "type-tls";
@@ -46,11 +46,17 @@ export declare class PluginHost<Host, HostClass extends AbstractConstructor<Host
46
46
  /**
47
47
  * {@inheritDoc PluginExtendManager.usePlugin}
48
48
  */
49
- static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
49
+ static usePlugin<HostClass extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: PluginUseArgs<Plugin>): any;
50
50
  /**
51
51
  * {@inheritDoc PluginExtendManager.useExtend}
52
52
  */
53
- static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
53
+ static useExtend<HostClass extends AbstractConstructor, E extends IAnyExtend<HostClass>>(this: HostClass, ext: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
54
+ /**
55
+ * 是否注册了插件 或 扩展
56
+ * @param plugin - 插件 或 扩展
57
+ * @returns 是否注册了插件 或 扩展
58
+ */
59
+ static hasUsed(plugin: any): boolean;
54
60
  /**
55
61
  * 需要在子类中调用
56
62
  *
@@ -67,7 +73,7 @@ export declare class PluginHost<Host, HostClass extends AbstractConstructor<Host
67
73
  /**
68
74
  * {@inheritDoc PluginExtendManager.useExtend}
69
75
  */
70
- useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
76
+ useExtend<E extends IAnyExtend<HostClass>>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
71
77
  /**
72
78
  * 初始化实例
73
79
  * @remarks
@@ -1 +1 @@
1
- {"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,UAAU,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAY,YAAW,WAAW,CAAC,IAAI,EAAC,SAAS,CAAC;IACpJ;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAEvD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIhG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAItG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG;IAIrB;;;OAGG;IACM,WAAW;CAQrB"}
1
+ {"version":3,"file":"PluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtI,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,UAAU,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAE,SAAQ,WAAY,YAAW,WAAW,CAAC,IAAI,EAAC,SAAS,CAAC;IACpJ;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAEvD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAI/K;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAI9J;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAE,OAAO;IAMnC;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAItG;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAK3I;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG;IAIrB;;;OAGG;IACM,WAAW;CAQrB"}
@@ -1,5 +1,5 @@
1
1
  import { PluginExtendManager } from "../plugin-manager";
2
- import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
3
  import { DestroyableEventEmitter } from "@gby/destroyable";
4
4
  import type { DefaultEventMap, EventMap } from "@gby/destroyable";
5
5
  import type { IPluginHost } from "./type";
@@ -34,11 +34,17 @@ export declare class PluginHostEventEmitter<Host, HostClass extends AbstractCons
34
34
  /**
35
35
  * {@inheritDoc PluginExtendManager.usePlugin}
36
36
  */
37
- static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
37
+ static usePlugin<HostClass extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: PluginUseArgs<Plugin>): any;
38
38
  /**
39
39
  * {@inheritDoc PluginExtendManager.useExtend}
40
40
  */
41
- static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
41
+ static useExtend<HostClass extends AbstractConstructor, E extends IAnyExtend<HostClass>>(this: HostClass, ext: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
42
+ /**
43
+ * 是否注册了插件 或 扩展
44
+ * @param plugin - 插件 或 扩展
45
+ * @returns 是否注册了插件 或 扩展
46
+ */
47
+ static hasUsed(plugin: any): boolean;
42
48
  /**
43
49
  * 需要在子类中调用
44
50
  *
@@ -55,7 +61,7 @@ export declare class PluginHostEventEmitter<Host, HostClass extends AbstractCons
55
61
  /**
56
62
  * {@inheritDoc PluginExtendManager.useExtend}
57
63
  */
58
- useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
64
+ useExtend<E extends IAnyExtend<HostClass>>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
59
65
  /**
60
66
  * 初始化实例
61
67
  * @remarks
@@ -1 +1 @@
1
- {"version":3,"file":"PluginHostEventEmitter.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAC,QAAQ,EAAC,CAAA;AAGvC;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC,EAAE,CAAC,GAAG,eAAe,CAAE,SAAQ,uBAAuB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IAC7N;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
1
+ {"version":3,"file":"PluginHostEventEmitter.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtI,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAC,QAAQ,EAAC,CAAA;AAGvC;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAC,EAAE,CAAC,GAAG,eAAe,CAAE,SAAQ,uBAAuB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IAC7N;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAI/K;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAI9J;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAE,OAAO;IAKnC;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAK3I;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
@@ -1,5 +1,5 @@
1
1
  import { PluginExtendManager } from "../plugin-manager";
2
- import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
3
  import { DestroyableEventTarget } from "@gby/destroyable";
4
4
  import type { IPluginHost } from "./type";
5
5
  import type { AbstractConstructor, ClassType } from "type-tls";
@@ -32,11 +32,17 @@ export declare class PluginHostEventTarget<Host, HostClass extends AbstractConst
32
32
  /**
33
33
  * {@inheritDoc PluginExtendManager.usePlugin}
34
34
  */
35
- static usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
35
+ static usePlugin<HostClass extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: PluginUseArgs<Plugin>): any;
36
36
  /**
37
37
  * {@inheritDoc PluginExtendManager.useExtend}
38
38
  */
39
- static useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
39
+ static useExtend<HostClass extends AbstractConstructor, E extends IAnyExtend<HostClass>>(this: HostClass, ext: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
40
+ /**
41
+ * 是否注册了插件 或 扩展
42
+ * @param plugin - 插件 或 扩展
43
+ * @returns 是否注册了插件 或 扩展
44
+ */
45
+ static hasUsed(plugin: any): boolean;
40
46
  /**
41
47
  * 需要在子类中调用
42
48
  *
@@ -53,7 +59,7 @@ export declare class PluginHostEventTarget<Host, HostClass extends AbstractConst
53
59
  /**
54
60
  * {@inheritDoc PluginExtendManager.useExtend}
55
61
  */
56
- useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
62
+ useExtend<E extends IAnyExtend<HostClass>>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
57
63
  /**
58
64
  * 初始化实例
59
65
  * @remarks
@@ -1 +1 @@
1
- {"version":3,"file":"PluginHostEventTarget.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAK9D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,sBAAsB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IACtO;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAI1F;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAKtF;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
1
+ {"version":3,"file":"PluginHostEventTarget.d.ts","sourceRoot":"","sources":["../../src/plugin-host/PluginHostEventTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtI,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAK9D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB,CAAC,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,sBAAsB,CAAC,EAAE,CAAE,YAAW,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;IACtO;;;OAGG;IACH,MAAM,CAAC,qBAAqB,UAAS;IAErC;;OAEG;IACH,MAAM,KAAK,aAAa,kCAKvB;IACD,MAAM,CAAC,cAAc,gCAA0C;IAE/D;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAExD;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IAI/K;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAK9J;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAE,OAAO;IAKnC;;;;;OAKG;IAOH;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvG;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAK3I;;;;;OAKG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAG,GAAG;IAItB;;;OAGG;IACM,WAAW;CAQrB"}
@@ -1,5 +1,5 @@
1
1
  import { PluginExtendManager } from "../plugin-manager";
2
- import type { ExtendOptions, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
3
  import type { AbstractConstructor, ClassType } from "type-tls";
4
4
  /**
5
5
  * 创建插件的缩主类
@@ -35,7 +35,7 @@ export declare function createPluginHost<P extends new (...args: any) => Object>
35
35
  /**
36
36
  * {@inheritDoc PluginExtendManager.useExtend}
37
37
  */
38
- useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
38
+ useExtend<E extends IAnyExtend<HostClass>>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
39
39
  /**
40
40
  * 初始化实例
41
41
  * @remarks
@@ -86,10 +86,16 @@ export declare function createPluginHost<P extends new (...args: any) => Object>
86
86
  /**
87
87
  * {@inheritDoc PluginExtendManager.usePlugin}
88
88
  */
89
- usePlugin<Plugin extends IPlugin<any, any>>(plugin: Plugin, ...args: PluginUseArgs<Plugin>): ReturnType<Plugin["onUse"]>;
89
+ usePlugin<HostClass extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: Plugin, ...args: PluginUseArgs<Plugin>): any;
90
90
  /**
91
91
  * {@inheritDoc PluginExtendManager.useExtend}
92
92
  */
93
- useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
93
+ useExtend<HostClass extends AbstractConstructor, E extends IAnyExtend<HostClass>>(this: HostClass, ext: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
94
+ /**
95
+ * 是否注册了插件 或 扩展
96
+ * @param plugin - 插件 或 扩展
97
+ * @returns 是否注册了插件 或 扩展
98
+ */
99
+ hasUsed(plugin: any): boolean;
94
100
  } & P;
95
101
  //# sourceMappingURL=createPluginHost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/createPluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGtG,OAAO,KAAK,EAAE,mBAAmB,EAAG,SAAS,EAAC,MAAM,UAAU,CAAC;AAG/D;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC;SAS1D,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC;QAkB1E;;WAEG;6BACkB,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;QAkBzD;;;;;WAKG;QAMH;;;;;WAKG;8BACiB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,GAAC,WAAW,aAAa,CAAC,GAAC,CAAC,GAAG,eAAe,CAAC,GAAC,CAAC;QAKvG;;WAEG;kBACO,CAAC,6CAA2C,qBAAqB,CAAC,SAAS,CAAC;QAKtF;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAItB;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;IAjFH;;;OAGG;;IAGH;;OAEG;;;IAgBH;;OAEG;cACc,MAAM,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAIjG;;OAEG;cACc,SAAS,SAAS,mBAAmB,EAAC,CAAC,OAAO,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;MAyD7F"}
1
+ {"version":3,"file":"createPluginHost.d.ts","sourceRoot":"","sources":["../../src/plugin-host/createPluginHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGtI,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG/D;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC;SAS1D,IAAI,EAAE,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC;QAkB1E;;WAEG;6BACkB,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;QA2BzD;;;;;WAKG;QAMH;;;;;WAKG;8BACiB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,GAAC,WAAW,aAAa,CAAC,GAAC,CAAC,GAAG,eAAe,CAAC,GAAC,CAAC;QAKvG;;WAEG;kBACO,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,OAAO,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,WAAS,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;QAK3I;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAItB;;;WAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;IA1FH;;;OAGG;;IAGH;;OAEG;;;IAgBH;;OAEG;cACc,SAAS,SAAS,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAC,SAAS,CAAC,QAAO,SAAS,UAAS,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAI/K;;OAEG;cACc,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,QAAO,SAAS,OAAM,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAI9J;;;;OAIG;oBACoB,GAAG,GAAE,OAAO;MAyDtC"}
@@ -1,5 +1,5 @@
1
1
  import { PluginExtendManager } from "../plugin-manager";
2
- import type { ExtendOptions, IPlugin, PluginUseArgs } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, IPlugin, PluginUseArgs, PluginUseReturn } from "../plugin-manager/index";
3
3
  import type { IPluginHost, IPluginHostClass } from "./type";
4
4
  import type { AbstractConstructor, Constructor } from "type-tls";
5
5
  /**
@@ -47,11 +47,11 @@ export declare function becomePluginHost_Extends<HostClass extends Constructor>(
47
47
  * @param args
48
48
  * @returns
49
49
  */
50
- usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
50
+ usePlugin<HostClass_1 extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass_1>, HostClass_1>>(this: HostClass_1, plugin: Plugin, ...args: PluginUseArgs<Plugin>): PluginUseReturn<Plugin>;
51
51
  /**
52
52
  * {@inheritDoc PluginExtendManager.useExtend}
53
53
  */
54
- useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
54
+ useExtend<HostClass_1 extends AbstractConstructor, E extends IAnyExtend</*elided*/ any & HostClass>>(this: HostClass_1, ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): IExtendHostMembers<E>;
55
55
  /**
56
56
  * 初始化实例
57
57
  * @remarks
@@ -85,11 +85,11 @@ export declare function becomePluginHost_Extends<HostClass extends Constructor>(
85
85
  * @param args
86
86
  * @returns
87
87
  */
88
- usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
88
+ usePlugin<HostClass_1 extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass_1>, HostClass_1>>(this: HostClass_1, plugin: Plugin, ...args: PluginUseArgs<Plugin>): PluginUseReturn<Plugin>;
89
89
  /**
90
90
  * {@inheritDoc PluginExtendManager.useExtend}
91
91
  */
92
- useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
92
+ useExtend<HostClass_1 extends AbstractConstructor, E extends IAnyExtend</*elided*/ any & HostClass>>(this: HostClass_1, ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): IExtendHostMembers<E>;
93
93
  /**
94
94
  * 初始化实例
95
95
  * @remarks
@@ -115,11 +115,11 @@ export declare function becomePluginHost_Extends<HostClass extends Constructor>(
115
115
  * @param args
116
116
  * @returns
117
117
  */
118
- usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
118
+ usePlugin<HostClass_1 extends AbstractConstructor, Plugin extends IPlugin<InstanceType<HostClass_1>, HostClass_1>>(this: HostClass_1, plugin: Plugin, ...args: PluginUseArgs<Plugin>): PluginUseReturn<Plugin>;
119
119
  /**
120
120
  * {@inheritDoc PluginExtendManager.useExtend}
121
121
  */
122
- useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
122
+ useExtend<HostClass_1 extends AbstractConstructor, E extends IAnyExtend</*elided*/ any & HostClass>>(this: HostClass_1, ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): IExtendHostMembers<E>;
123
123
  /**
124
124
  * 初始化实例
125
125
  * @remarks
@@ -148,11 +148,11 @@ export declare function becomePluginHost_Extends<HostClass extends Constructor>(
148
148
  * @param args
149
149
  * @returns
150
150
  */
151
- usePlugin<P extends IPlugin</*elided*/ any, /*elided*/ any & HostClass>>(plugin: P, ...args: PluginUseArgs<P>): ReturnType<P["onUse"]>;
151
+ usePlugin<HostClass_1 extends AbstractConstructor, Plugin_1 extends IPlugin<InstanceType<HostClass_1>, HostClass_1>>(this: HostClass_1, plugin: Plugin_1, ...args: PluginUseArgs<Plugin_1>): PluginUseReturn<Plugin_1>;
152
152
  /**
153
153
  * {@inheritDoc PluginExtendManager.useExtend}
154
154
  */
155
- useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): boolean;
155
+ useExtend<HostClass_1 extends AbstractConstructor, E extends IAnyExtend</*elided*/ any & HostClass>>(this: HostClass_1, ext: ExtendOptions</*elided*/ any & HostClass, E>, ...args: ConstructorParameters</*elided*/ any & HostClass>): IExtendHostMembers<E>;
156
156
  /**
157
157
  * 初始化实例
158
158
  * @remarks
@@ -169,6 +169,12 @@ export declare function becomePluginHost_Extends<HostClass extends Constructor>(
169
169
  /**
170
170
  * {@inheritDoc PluginExtendManager.useExtend}
171
171
  */
172
- useExtend<E>(ext: ExtendOptions</*elided*/ any & HostClass, E>): boolean;
172
+ useExtend<E extends IAnyExtend</*elided*/ any & HostClass>>(ext: ExtendOptions</*elided*/ any & HostClass, E>): IExtendHostMembers<E>;
173
+ /**
174
+ * 是否注册了插件 或 扩展
175
+ * @param plugin - 插件 或 扩展
176
+ * @returns 是否注册了插件 或 扩展
177
+ */
178
+ hasUsed(plugin: any): boolean;
173
179
  } & HostClass;
174
180
  //# sourceMappingURL=decorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/plugin-host/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AAEtG,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,CAAC,GAAG,CAAC,IAAI,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAGnL;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,EAAE,MAAM,EAAE,SAAS,GA+EtE,gBAAgB,CAAC,SAAS,CAAC,CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,0BASjF;AAGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,SAAS,WAAW,EAAE,MAAM,EAAE,SAAS;kBAyChE,GAAG;;QArBxB;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IAlFH;;;OAGG;;IAGH;;OAEG;;;QASH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;;;QAjEH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IA1DH;;OAEG;cACc,MAAM,SAAS,OAAO;;QAVvC;;WAEG;6BACkB,mBAAmB,4CAA6C;QAuBrF;;;;;WAKG;kBACO,CAAC,SAAS,OAAO,4CAA6C;QAIxE;;WAEG;kBACO,CAAC,8DAA0D,qBAAqB,4BAA0B;QAKpH;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;kCAvDiF,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAIpI;;OAEG;cACc,CAAC,OAAO,aAAa,6BAA2B,CAAC,CAAC,GAAE,OAAO;cAiE/E"}
1
+ {"version":3,"file":"decorator.d.ts","sourceRoot":"","sources":["../../src/plugin-host/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtI,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,CAAC,GAAG,CAAC,IAAI,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAGnL;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,mBAAmB,EAAE,MAAM,EAAE,SAAS,GAyFtE,gBAAgB,CAAC,SAAS,CAAC,CAC7C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,0BASjF;AAGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,SAAS,WAAW,EAAE,MAAM,EAAE,SAAS;kBAmDhE,GAAG;;QA/BxB;;WAEG;6BACkB,mBAAmB,4CAA6C;QAiCrF;;;;;WAKG;sCACyB,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,WAAS,CAAC,EAAC,WAAS,CAAC,QAAO,WAAS,UAAS,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;QAIlM;;WAEG;sCACyB,mBAAmB,EAAC,CAAC,SAAS,UAAU,4BAA0B,iFAAyE,qBAAqB,4BAA0B;QAKtN;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IA5FH;;;OAGG;;IAGH;;OAEG;;;QASH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAiCrF;;;;;WAKG;sCACyB,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,WAAS,CAAC,EAAC,WAAS,CAAC,QAAO,WAAS,UAAS,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;QAIlM;;WAEG;sCACyB,mBAAmB,EAAC,CAAC,SAAS,UAAU,4BAA0B,iFAAyE,qBAAqB,4BAA0B;QAKtN;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;;;QA3EH;;WAEG;6BACkB,mBAAmB,4CAA6C;QAiCrF;;;;;WAKG;sCACyB,mBAAmB,EAAC,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,WAAS,CAAC,EAAC,WAAS,CAAC,QAAO,WAAS,UAAS,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;QAIlM;;WAEG;sCACyB,mBAAmB,EAAC,CAAC,SAAS,UAAU,4BAA0B,iFAAyE,qBAAqB,4BAA0B;QAKtN;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;;IApEH;;OAEG;cACc,MAAM,SAAS,OAAO;;QAVvC;;WAEG;6BACkB,mBAAmB,4CAA6C;QAiCrF;;;;;WAKG;sCACyB,mBAAmB,mBAAgB,OAAO,CAAC,YAAY,CAAC,WAAS,CAAC,EAAC,WAAS,CAAC,QAAO,WAAS,UAAS,QAAM,WAAW,aAAa,CAAC,QAAM,CAAC,GAAG,eAAe,CAAC,QAAM,CAAC;QAIlM;;WAEG;sCACyB,mBAAmB,EAAC,CAAC,SAAS,UAAU,4BAA0B,iFAAyE,qBAAqB,4BAA0B;QAKtN;;;;;WAKG;sBACW,GAAG,GAAE,GAAG;QAYtB;;;WAGG;;kCAjEiF,UAAU,MAAM,WAAW,aAAa,CAAC,MAAM,CAAC;IAIpI;;OAEG;cACc,CAAC,SAAS,UAAU,4BAA0B,OAAO,aAAa,6BAA2B,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAIvI;;;;OAIG;oBACoB,GAAG,GAAE,OAAO;cAkEtC"}
@@ -1,5 +1,5 @@
1
1
  import type { AbstractConstructor, ClassType } from "type-tls";
2
- import type { ExtendOptions, PluginExtendManager } from "../plugin-manager/index";
2
+ import type { ExtendOptions, IExtendHostMembers, IAnyExtend, PluginExtendManager } from "../plugin-manager/index";
3
3
  import type { IPlugin, PluginUseReturn, PluginUseArgs } from "../plugin-manager/index";
4
4
  /**
5
5
  * 插件宿主构造函数的接口
@@ -26,11 +26,17 @@ export interface IPluginHostClass<HostInst> {
26
26
  /**
27
27
  * {@inheritDoc PluginExtendManager.usePlugin}
28
28
  */
29
- usePlugin<P extends IPlugin<HostInst, this>>(plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
29
+ usePlugin<HostClass extends AbstractConstructor, P extends IPlugin<InstanceType<HostClass>, HostClass>>(this: HostClass, plugin: P, ...args: PluginUseArgs<P>): PluginUseReturn<P>;
30
30
  /**
31
31
  * {@inheritDoc PluginExtendManager.useExtend}
32
32
  */
33
- useExtend<HostClass extends AbstractConstructor, E>(ext: ExtendOptions<HostClass, E>): boolean;
33
+ useExtend<HostClass extends AbstractConstructor, E extends IAnyExtend<HostClass>>(this: HostClass, ext: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
34
+ /**
35
+ * 是否注册了插件 或 扩展
36
+ * @param plugin - 插件 或 扩展
37
+ * @returns 是否注册了插件 或 扩展
38
+ */
39
+ hasUsed(plugin: any): boolean;
34
40
  }
35
41
  /**
36
42
  * 插件宿主的实例类型
@@ -50,7 +56,7 @@ export interface IPluginHost<Host, HostClass extends AbstractConstructor<Host> =
50
56
  /**
51
57
  * {@inheritDoc PluginExtendManager.useExtend}
52
58
  */
53
- useExtend<E>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
59
+ useExtend<E extends IAnyExtend<HostClass>>(ext: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
54
60
  /**
55
61
  * 初始化实例
56
62
  * @param args
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/plugin-host/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGvF;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IAExC;;OAEG;IACH,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,QAAQ,CAAC;IAC7B;;OAEG;IACH,SAAS,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,EAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEtG;;OAEG;IACH,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;CAC/F;AAID;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;IAC7F;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEvG;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;IAEjG;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG,CAAC;IAEtB;;;OAGG;IACH,OAAO,IAAG,GAAG,CAAC;CACf"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/plugin-host/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAC,SAAS,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGvF;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IAExC;;OAEG;IACH,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,QAAQ,CAAC;IAC7B;;OAEG;IACH,SAAS,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,IAAI,aAAa,IAAI,mBAAmB,CAAC,QAAQ,EAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAE/K;;OAEG;IACH,SAAS,CAAC,SAAS,SAAS,mBAAmB,EAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAC,SAAS,EAAC,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAExJ;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,GAAE,OAAO,CAAC;CAE9B;AAID;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,IAAI,EAAC,SAAS,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;IAC7F;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC,IAAI,EAAC,SAAS,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,EAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEvG;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE5I;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAI,EAAC,GAAG,GAAE,GAAG,CAAC;IAEtB;;;OAGG;IACH,OAAO,IAAG,GAAG,CAAC;CACf"}
@@ -1,6 +1,7 @@
1
1
  import type { AnyFunction, AbstractConstructor } from "type-tls";
2
2
  import { Destroyable } from "@gby/destroyable";
3
- import { type ExtendOptions, type IExtend } from "./IExtend";
3
+ import { type IExtend, type IExtendHostMembers, type IAnyExtend } from "./IExtend";
4
+ import type { ExtendOptions } from "./extend";
4
5
  /**
5
6
  * 插件管理者
6
7
  *
@@ -22,12 +23,20 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
22
23
  */
23
24
  constructor(host?: HostClass);
24
25
  destroyThis(): any;
26
+ /**
27
+ * 是否注册了插件
28
+ * @param plugin - 插件
29
+ * @returns 是否注册了插件
30
+ */
31
+ hasUsed(plugin: any): boolean;
25
32
  /**
26
33
  * 使用插件、注册插件
34
+ * @remarks
35
+ * 该函数的返回对象是插件对象本身,但返回的类型日排除了 IExtend 生命周期成员后的对宿主新增的成员,这样设计的目标是方便后续通过返回的类型直接对宿主的类型进行扩展
27
36
  * @param plugin - 插件
28
- * @param args - 传递给插件的选项
37
+ * @returns 返回插件对象本身
29
38
  */
30
- use<E>(plugin: ExtendOptions<HostClass, E>): boolean;
39
+ use<E extends IAnyExtend<HostClass>>(plugin: ExtendOptions<HostClass, E>): IExtendHostMembers<E>;
31
40
  /**
32
41
  * 插件宿主实例的注册插件的方法
33
42
  *
@@ -35,7 +44,7 @@ export declare class ExtendManager<HostClass extends AbstractConstructor> extend
35
44
  * 会调用每个插件的 {@link IExtend.use } 方法
36
45
  * @param hostInst - 插件宿主的新实例
37
46
  */
38
- instUse<E>(hostInst: InstanceType<HostClass>, plugin: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): boolean;
47
+ instUse<E extends IAnyExtend<HostClass>>(hostInst: InstanceType<HostClass>, plugin: ExtendOptions<HostClass, E>, ...args: ConstructorParameters<HostClass>): IExtendHostMembers<E>;
39
48
  /**
40
49
  * 插件宿主创建实例时调用
41
50
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/ExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAyB,KAAK,aAAa,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpF;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,SAAS,SAAS,mBAAmB,CAAE,SAAQ,WAAW;IAEjF;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0BAAiC;IAIjD;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAMpB;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAQ1C;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAQ5H;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAWrF;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAC,GAAG;IAWpD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC;CAY9C"}
1
+ {"version":3,"file":"ExtendManager.d.ts","sourceRoot":"","sources":["../../src/plugin-manager/ExtendManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAyB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAE1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C;;;;;;GAMG;AACH,qBAAa,aAAa,CAAC,SAAS,SAAS,mBAAmB,CAAE,SAAQ,WAAW;IAEjF;;OAEG;IACH,IAAI,EAAG,SAAS,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,0BAAiC;IAIjD;;OAEG;gBACS,IAAI,CAAC,EAAE,SAAS;IAOnB,WAAW;IAMpB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,GAAG;IAInB;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAQ/F;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC,GAAE,kBAAkB,CAAC,CAAC,CAAC;IAQjL;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAG,GAAG,IAAI,EAAC,qBAAqB,CAAC,SAAS,CAAC;IAWrF;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAC,GAAG;IAWpD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC;CAY9C"}
@@ -1,4 +1,5 @@
1
- import type { AbstractConstructor, ClassType } from "type-tls";
1
+ import type { AbstractConstructor } from "type-tls";
2
+ import type { ExtendClass } from "./extend";
2
3
  /**
3
4
  * 扩展选项接口
4
5
  * @remarks
@@ -24,41 +25,33 @@ export interface IExtend<HostClass extends AbstractConstructor> {
24
25
  */
25
26
  onDestroy?(host: InstanceType<HostClass>): any;
26
27
  }
28
+ /**
29
+ * 任意扩展选项接口
30
+ * 用于扩展选项的参数的泛型约束,当使用 IExtend 报错时,可以尝试下 IExtendParams
31
+ * @param HostClass - 扩展的目标类类型
32
+ */
33
+ export interface IAnyExtend<HostClass extends AbstractConstructor> extends IExtend<HostClass> {
34
+ [Key: PropertyKey]: any;
35
+ }
27
36
  /**
28
37
  * 从扩展选项中提取需要设置给宿主类的成员
29
38
  * @param extendOptions
30
39
  * @returns
31
40
  */
32
- export declare function pickHostExtendMembers<Ext>(extendOptions: Ext): Omit<Ext, keyof IExtend<any>>;
41
+ export type IExtendHostMembers<E> = Omit<E, keyof IExtend<any>>;
33
42
  /**
34
- * 扩展目标的选项类型
35
- *
36
- * @remarks
37
- * 它是一个对象类型,它的属性是 E 的属性,并且会自动更改其this的类型为 InstanceType<C> & E
38
- *
39
- * @param HostClass - 扩展的目标类类型
40
- * @param E - 扩展的对象类型
43
+ * 从扩展选项中提取需要设置给宿主类的成员
44
+ * @param extendOptions
45
+ * @returns
41
46
  */
42
- export type ExtendOptions<HostClass extends AbstractConstructor, E> = E & ThisType<InstanceType<HostClass> & E> & IExtend<HostClass>;
47
+ export declare function pickHostExtendMembers<Ext>(extendOptions: Ext): IExtendHostMembers<Ext>;
43
48
  /**
44
- * 扩展目标的类类型
45
- *
49
+ * 定义被 IExtend 扩展后的类的类型
46
50
  * @remarks
47
- * 它是一个类类型,它的实例类型是 InstanceType<C> & E,构造函数参数是 ConstructorParameters<C>
51
+ * 它返回 IExtend HostClass 的进行扩展后的类的类型
48
52
  *
49
53
  * @param HostClass - 扩展的目标类类型
50
- * @param E - 扩展的对象类型
51
- */
52
- export type ExtendClassType<HostClass extends AbstractConstructor, E> = ClassType<InstanceType<HostClass> & E, ConstructorParameters<HostClass>>;
53
- /**
54
- * 定义扩展的类型便利函数
55
- *
56
- * @remarks
57
- * 它会更改 ext 中方法的this指向为 cla & ext,不会真的执行扩展操作。
58
- *
59
- * @param hostClass - 扩展的目标,用作 this 的类型
60
- * @param ext - 描述扩展内容的对象,会自动更改其this的类型
61
- * @returns 返回注入了 this 类型的 ext 对象本身
54
+ * @param Ext - 扩展的类型
62
55
  */
63
- export declare function defineExtend<HostClass extends AbstractConstructor, E>(hostClass: HostClass, ext: ExtendOptions<HostClass, E>): E & ThisType<HostClass & E>;
56
+ export type IExtendClass<HostClass extends AbstractConstructor, Ext> = ExtendClass<HostClass, IExtendHostMembers<Ext>>;
64
57
  //# sourceMappingURL=IExtend.d.ts.map