+8
-0
@@ -0,1 +1,9 @@ | ||
| ## 4.0.0 (2023-10-29) | ||
| #### Feature | ||
| - add onError Hook | ||
| - afterTrigger is also called, if result is bailed | ||
| - HookCancel is created with `Symbol.for('HookCancel')` | ||
| ## 3.2.1 (2023-07-14) | ||
@@ -2,0 +10,0 @@ |
+1
-1
@@ -1,2 +0,2 @@ | ||
| "use strict";var T=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var x=(s,e)=>{for(var t in e)T(s,t,{get:e[t],enumerable:!0})},R=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of h(e))!A.call(s,n)&&n!==t&&T(s,n,{get:()=>e[n],enumerable:!(r=l(e,n))||r.enumerable});return s};var I=s=>R(T({},"__esModule",{value:!0}),s);var b={};x(b,{Hook:()=>i,HookCancel:()=>d,LastOutHook:()=>f,SeriesHook:()=>c,WaterfallHook:()=>p});module.exports=I(b);var d=Symbol("cancel hook run");var u=class{constructor(){this.items=new Set}hasItem(e){return Array.from(this.items).some(t=>t.id===e)}add(...e){for(let t of e)this.ensureUniqueId(t),this.items.add(t);this.sortedItems=void 0}ensureUniqueId(e){e.id||(e.id="unknown");let t=e.id,r=1;for(;Array.from(this.items).some(n=>n.id===e.id&&n!==e);)e.id=`${t}#${r++}`}addSortSet(e){for(let t of e.items)this.items.add(t);this.sortedItems=void 0}remove(e){let t=Array.from(this.items).find(r=>r.id===e);return t?(this.items.delete(t),this.sortedItems=void 0,!0):!1}get sorted(){if(!this.sortedItems){let e=this.calculateIndex(this.prepareSortItems());this.sortedItems=e.sort((t,r)=>t.index<r.index?-1:t.index>r.index?1:0).map(t=>t.item)}return this.sortedItems}prepareSortItems(){let e=[],t=new Map(Array.from(this.items).map(n=>[n.id,{id:n.id,after:[],item:n}])),r=[];for(let n of this.items){let o=t.get(n.id);if(o){if(n.after)for(let g of n.after){let a=t.get(g);a&&o.after.push(a)}n.before?r.push(o):e.push(o)}}for(let n of r){let o=[];if(n.item.before)for(let g of n.item.before){let a=t.get(g);a&&(a.after.splice(0,0,n),o.push(e.findIndex(m=>m.id===g)))}e.splice(Math.min(...o),0,n)}return e}calculateIndex(e){let t=[];for(let r of e)t.push({...r,index:this.getIndex(r,e)});return t}getIndex(e,t){if(typeof e.index>"u")if(e.after.length===0)e.index=t.indexOf(e)*2;else{e.index=-1;let r=e.after.map(n=>this.getIndex(n,t)).filter(n=>n>=0);r.length>0&&(e.index=Math.max(...r)+1)}return e.index}};var i=class{constructor(e){this.bailOut=e;this.id=this.constructor.name,this.#e=new u,this.#t=new u}#e;#t;get interceptors(){return[...this.#t.sorted]}get items(){return[...this.#e.sorted]}hasHook(e){return this.#e.hasItem(e)}addHook(e,t,r){let n={...r,id:e,action:t};this.#e.add(n)}addObjHook(e,...t){this.#e.add(...t.map(r=>({...r,id:r.id,action:(...n)=>e(r).call(r,...n)})))}removeHook(e){return this.#e.remove(e)}addInterceptor(e){this.#t.add(e)}removeInterceptor(e){return this.#t.remove(e)}async trigger(...e){let t=[],r={index:0,length:this.#e.sorted.length,args:e,results:t,hook:this};if(await this.intercept(n=>n.beforeLoop,r)===!1)return d;if(r.bail)return this.getMergedResults(t,r.args);for(;r.index<r.length;){if(r.hookItem=this.#e.sorted[r.index],await this.intercept(o=>o.beforeTrigger,r)===!1)return d;if(r.bail)return this.getMergedResults(t,r.args);let n=await r.hookItem.action(...r.args);if(n===d)return d;if(t.push(n),r.args=this.getNextArgs(n,r.args),await this.intercept(o=>o.afterTrigger,r)===!1)return d;if(r.bail||this.bailOut&&this.bailOut(n))return this.getMergedResults(t,r.args);r.index++}return await this.intercept(n=>n.afterLoop,r)===!1?d:this.getMergedResults(t,r.args)}async intercept(e,t){for(let r of this.#t.sorted){let n=e(r);if(n&&!await n.apply(r,[t]))return!1}return!0}add(...e){for(let t of e)this.#e.addSortSet(t.#e),this.#t.addSortSet(t.#t)}merge(...e){let t=this.initNew();return t.#e.addSortSet(this.#e),t.#t.addSortSet(this.#t),t.add(...e),t}};var f=class s extends i{constructor(e){super(e)}getNextArgs(e,t){return t}getMergedResults(e){return e.pop()}initNew(){return new s(this.bailOut)}};var c=class s extends i{constructor(e){super(e)}getNextArgs(e,t){return t}getMergedResults(e){return e}initNew(){return new s(this.bailOut)}};var p=class s extends i{constructor(e){super(e)}getNextArgs(e,t){return t[0]=e,t}getMergedResults(e,t){return e.length>0?e.pop():t[0]}initNew(){return new s(this.bailOut)}};0&&(module.exports={Hook,HookCancel,LastOutHook,SeriesHook,WaterfallHook}); | ||
| "use strict";var g=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var x=(n,e)=>{for(var t in e)g(n,t,{get:e[t],enumerable:!0})},R=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of h(e))!A.call(n,o)&&o!==t&&g(n,o,{get:()=>e[o],enumerable:!(r=l(e,o))||r.enumerable});return n};var I=n=>R(g({},"__esModule",{value:!0}),n);var b={};x(b,{Hook:()=>i,HookCancel:()=>d,LastOutHook:()=>T,SeriesHook:()=>c,WaterfallHook:()=>p});module.exports=I(b);var d=Symbol.for("HookCancel");var u=class{constructor(){this.items=new Set}hasItem(e){return Array.from(this.items).some(t=>t.id===e)}add(...e){for(let t of e)this.ensureUniqueId(t),this.items.add(t);this.sortedItems=void 0}ensureUniqueId(e){e.id||(e.id="unknown");let t=e.id,r=1;for(;Array.from(this.items).some(o=>o.id===e.id&&o!==e);)e.id=`${t}#${r++}`}addSortSet(e){for(let t of e.items)this.items.add(t);this.sortedItems=void 0}remove(e){let t=Array.from(this.items).find(r=>r.id===e);return t?(this.items.delete(t),this.sortedItems=void 0,!0):!1}get sorted(){if(!this.sortedItems){let e=this.calculateIndex(this.prepareSortItems());this.sortedItems=e.sort((t,r)=>t.index<r.index?-1:t.index>r.index?1:0).map(t=>t.item)}return this.sortedItems}prepareSortItems(){let e=[],t=new Map(Array.from(this.items).map(o=>[o.id,{id:o.id,after:[],item:o}])),r=[];for(let o of this.items){let s=t.get(o.id);if(s){if(o.after)for(let f of o.after){let a=t.get(f);a&&s.after.push(a)}o.before?r.push(s):e.push(s)}}for(let o of r){let s=[];if(o.item.before)for(let f of o.item.before){let a=t.get(f);a&&(a.after.splice(0,0,o),s.push(e.findIndex(m=>m.id===f)))}e.splice(Math.min(...s),0,o)}return e}calculateIndex(e){let t=[];for(let r of e)t.push({...r,index:this.getIndex(r,e)});return t}getIndex(e,t){if(typeof e.index>"u")if(e.after.length===0)e.index=t.indexOf(e)*2;else{e.index=-1;let r=e.after.map(o=>this.getIndex(o,t)).filter(o=>o>=0);r.length>0&&(e.index=Math.max(...r)+1)}return e.index}};var i=class{constructor(e){this.bailOut=e;this.id=this.constructor.name,this.#e=new u,this.#t=new u}#e;#t;get interceptors(){return[...this.#t.sorted]}get items(){return[...this.#e.sorted]}hasHook(e){return this.#e.hasItem(e)}addHook(e,t,r){let o={...r,id:e,action:t};this.#e.add(o)}addObjHook(e,...t){this.#e.add(...t.map(r=>({...r,id:r.id,action:(...o)=>e(r).call(r,...o)})))}removeHook(e){return this.#e.remove(e)}addInterceptor(e){this.#t.add(e)}removeInterceptor(e){return this.#t.remove(e)}async trigger(...e){let t=[],r={index:0,length:this.#e.sorted.length,args:e,results:t,hook:this};try{if(await this.intercept(o=>o.beforeLoop,r)===!1)return d;if(!r.bail)for(;r.index<r.length;){if(r.hookItem=this.#e.sorted[r.index],await this.intercept(s=>s.beforeTrigger,r)===!1)return d;if(r.bail){r.bail=!0;break}let o=await r.hookItem.action(...r.args);if(o===d)return d;if(t.push(o),r.args=this.getNextArgs(o,r.args),await this.intercept(s=>s.afterTrigger,r)===!1)return d;if(r.bail||this.bailOut&&this.bailOut(o)){r.bail=!0;break}r.index++}return await this.intercept(o=>o.afterLoop,r)===!1?d:this.getMergedResults(t,r.args)}catch(o){throw await this.intercept(s=>s.onError,r),o}}async intercept(e,t){for(let r of this.#t.sorted){let o=e(r);if(o&&!await o.apply(r,[t]))return!1}return!0}add(...e){for(let t of e)this.#e.addSortSet(t.#e),this.#t.addSortSet(t.#t)}merge(...e){let t=this.initNew();return t.#e.addSortSet(this.#e),t.#t.addSortSet(this.#t),t.add(...e),t}};var T=class n extends i{constructor(e){super(e)}getNextArgs(e,t){return t}getMergedResults(e){return e.pop()}initNew(){return new n(this.bailOut)}};var c=class n extends i{constructor(e){super(e)}getNextArgs(e,t){return t}getMergedResults(e){return e}initNew(){return new n(this.bailOut)}};var p=class n extends i{constructor(e){super(e)}getNextArgs(e,t){return t[0]=e,t}getMergedResults(e,t){return e.length>0?e.pop():t[0]}initNew(){return new n(this.bailOut)}};0&&(module.exports={Hook,HookCancel,LastOutHook,SeriesHook,WaterfallHook}); | ||
| //# sourceMappingURL=index.js.map |
@@ -13,2 +13,3 @@ import { HookItem } from './hookItem'; | ||
| afterLoop?(context: HookTriggerContext<TArgs, TReturn>): Promise<boolean | undefined>; | ||
| onError?(context: HookTriggerContext<TArgs, TReturn>): Promise<boolean | undefined>; | ||
| } |
+13
-14
| { | ||
| "name": "hookpoint", | ||
| "version": "3.2.1", | ||
| "version": "4.0.0", | ||
| "description": "hooks system for custom plugins", | ||
@@ -48,18 +48,17 @@ "main": "./dist/index.js", | ||
| "devDependencies": { | ||
| "@trivago/prettier-plugin-sort-imports": "^4.1.1", | ||
| "@types/jest": "^29.5.3", | ||
| "@typescript-eslint/eslint-plugin": "^6.0.0", | ||
| "@typescript-eslint/parser": "^6.0.0", | ||
| "concurrently": "^8.2.0", | ||
| "esbuild": "^0.18.12", | ||
| "eslint-config-prettier": "^8.8.0", | ||
| "@types/jest": "^29.5.6", | ||
| "@typescript-eslint/eslint-plugin": "^6.9.0", | ||
| "@typescript-eslint/parser": "^6.9.0", | ||
| "concurrently": "^8.2.2", | ||
| "esbuild": "^0.19.5", | ||
| "eslint-config-prettier": "^9.0.0", | ||
| "eslint-plugin-node": "^11.1.0", | ||
| "eslint": "^8.45.0", | ||
| "eslint": "^8.52.0", | ||
| "husky": "^8.0.3", | ||
| "jest": "^29.6.1", | ||
| "lint-staged": "^13.2.3", | ||
| "lockfile-lint": "^4.10.6", | ||
| "prettier": "^2.8.8", | ||
| "typescript": "^5.1.6" | ||
| "jest": "^29.7.0", | ||
| "lint-staged": "^15.0.2", | ||
| "lockfile-lint": "^4.12.1", | ||
| "prettier": "^3.0.3", | ||
| "typescript": "^5.2.2" | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
34255
1.02%14
-6.67%172
0.58%