crosshook 1.0.0 → 1.0.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.
package/dist/index.d.mts CHANGED
@@ -1,10 +1,19 @@
1
+ interface CrosshookEvents$1 {
2
+ }
3
+ type EventKey = keyof CrosshookEvents$1;
4
+ type EventPayload<K extends EventKey> = CrosshookEvents$1[K];
5
+
1
6
  type Handler<T = any> = (payload: T) => void;
2
7
  declare function register<T = any>(event: string, handler: Handler<T>): () => void;
3
- declare function call<T = any>(event: string, payload?: T): void;
4
8
 
5
- declare function useRegister<T = any>(event: string, handler: Handler<T>): void;
9
+ declare function call<K extends EventKey>(event: K, payload: EventPayload<K>): void;
10
+
11
+ declare function useRegister<K extends EventKey>(event: K, handler: (payload: EventPayload<K>) => void): void;
6
12
  declare function useBridge(): {
7
13
  call: typeof call;
8
14
  };
9
15
 
10
- export { type Handler, call, register, useBridge, useRegister };
16
+ interface CrosshookEvents {
17
+ }
18
+
19
+ export { type CrosshookEvents, type Handler, call, register, useBridge, useRegister };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,19 @@
1
+ interface CrosshookEvents$1 {
2
+ }
3
+ type EventKey = keyof CrosshookEvents$1;
4
+ type EventPayload<K extends EventKey> = CrosshookEvents$1[K];
5
+
1
6
  type Handler<T = any> = (payload: T) => void;
2
7
  declare function register<T = any>(event: string, handler: Handler<T>): () => void;
3
- declare function call<T = any>(event: string, payload?: T): void;
4
8
 
5
- declare function useRegister<T = any>(event: string, handler: Handler<T>): void;
9
+ declare function call<K extends EventKey>(event: K, payload: EventPayload<K>): void;
10
+
11
+ declare function useRegister<K extends EventKey>(event: K, handler: (payload: EventPayload<K>) => void): void;
6
12
  declare function useBridge(): {
7
13
  call: typeof call;
8
14
  };
9
15
 
10
- export { type Handler, call, register, useBridge, useRegister };
16
+ interface CrosshookEvents {
17
+ }
18
+
19
+ export { type CrosshookEvents, type Handler, call, register, useBridge, useRegister };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var x=(r,e)=>{for(var t in e)l(r,t,{get:e[t],enumerable:!0})},y=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of p(e))!u.call(r,o)&&o!==t&&l(r,o,{get:()=>e[o],enumerable:!(s=f(e,o))||s.enumerable});return r};var H=r=>y(l({},"__esModule",{value:!0}),r);var T={};x(T,{call:()=>a,register:()=>i,useBridge:()=>c,useRegister:()=>g});module.exports=H(T);var d=require("react");var n=new Map;function i(r,e){return n.has(r)||n.set(r,new Set),n.get(r).add(e),()=>{n.get(r)?.delete(e),n.get(r)?.size===0&&n.delete(r)}}function a(r,e){let t=n.get(r);if(!t){process.env.NODE_ENV!=="production"&&console.warn(`[Bridge] No listeners for event "${r}"`);return}t.forEach(s=>{try{s(e)}catch(o){console.error(`[Bridge] Error in handler for "${r}"`,o)}})}function g(r,e){(0,d.useEffect)(()=>i(r,e),[r,e])}function c(){return{call:a}}0&&(module.exports={call,register,useBridge,useRegister});
1
+ "use strict";var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var u=(e,r)=>{for(var t in r)d(e,t,{get:r[t],enumerable:!0})},x=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of y(r))!g.call(e,o)&&o!==t&&d(e,o,{get:()=>r[o],enumerable:!(s=f(r,o))||s.enumerable});return e};var E=e=>x(d({},"__esModule",{value:!0}),e);var m={};u(m,{call:()=>i,register:()=>a,useBridge:()=>c,useRegister:()=>p});module.exports=E(m);var l=require("react");var n=new Map;function a(e,r){return n.has(e)||n.set(e,new Set),n.get(e).add(r),()=>{n.get(e)?.delete(r),n.get(e)?.size===0&&n.delete(e)}}function i(e,r){let t=n.get(e);if(!t){process.env.NODE_ENV!=="production"&&console.warn(`[crosshook] No listeners for "${e}"`);return}t.forEach(s=>{try{s(r)}catch(o){console.error(`[crosshook] Handler error in "${e}"`,o)}})}function p(e,r){(0,l.useEffect)(()=>a(e,r),[e,r])}function c(){return{call:i}}0&&(module.exports={call,register,useBridge,useRegister});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/hooks.ts","../src/bridge.ts"],"sourcesContent":["export { useBridge, useRegister } from \"./hooks\";\nexport { call, register } from \"./bridge\";\nexport type { Handler } from \"./bridge\";","import { useEffect } from \"react\";\nimport { register, call, Handler } from \"./bridge\";\n\nexport function useRegister<T = any>(\n event: string,\n handler: Handler<T>\n) {\n useEffect(() => {\n const unregister = register(event, handler);\n return unregister;\n }, [event, handler]);\n}\n\nexport function useBridge() {\n return { call };\n}","export type Handler<T = any> = (payload: T) => void;\n\nconst listeners = new Map<string, Set<Handler>>();\n\nexport function register<T = any>(\n event: string,\n handler: Handler<T>\n) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n\n listeners.get(event)!.add(handler as Handler);\n\n return () => {\n listeners.get(event)?.delete(handler as Handler);\n\n if (listeners.get(event)?.size === 0) {\n listeners.delete(event);\n }\n };\n}\n\nexport function call<T = any>(event: string, payload?: T) {\n const handlers = listeners.get(event);\n\n if (!handlers) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `[Bridge] No listeners for event \"${event}\"`\n );\n }\n return;\n }\n\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (err) {\n console.error(\n `[Bridge] Error in handler for \"${event}\"`,\n err\n );\n }\n });\n}"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,aAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAN,GCAA,IAAAO,EAA0B,iBCE1B,IAAMC,EAAY,IAAI,IAEf,SAASC,EACZC,EACAC,EACF,CACE,OAAKH,EAAU,IAAIE,CAAK,GACpBF,EAAU,IAAIE,EAAO,IAAI,GAAK,EAGlCF,EAAU,IAAIE,CAAK,EAAG,IAAIC,CAAkB,EAErC,IAAM,CACTH,EAAU,IAAIE,CAAK,GAAG,OAAOC,CAAkB,EAE3CH,EAAU,IAAIE,CAAK,GAAG,OAAS,GAC/BF,EAAU,OAAOE,CAAK,CAE9B,CACJ,CAEO,SAASE,EAAcF,EAAeG,EAAa,CACtD,IAAMC,EAAWN,EAAU,IAAIE,CAAK,EAEpC,GAAI,CAACI,EAAU,CACP,QAAQ,IAAI,WAAa,cACzB,QAAQ,KACJ,oCAAoCJ,CAAK,GAC7C,EAEJ,MACJ,CAEAI,EAAS,QAASH,GAAY,CAC1B,GAAI,CACAA,EAAQE,CAAO,CACnB,OAASE,EAAK,CACV,QAAQ,MACJ,kCAAkCL,CAAK,IACvCK,CACJ,CACJ,CACJ,CAAC,CACL,CD1CO,SAASC,EACZC,EACAC,EACF,IACE,aAAU,IACaC,EAASF,EAAOC,CAAO,EAE3C,CAACD,EAAOC,CAAO,CAAC,CACvB,CAEO,SAASE,GAAY,CACxB,MAAO,CAAE,KAAAC,CAAK,CAClB","names":["index_exports","__export","call","register","useBridge","useRegister","__toCommonJS","import_react","listeners","register","event","handler","call","payload","handlers","err","useRegister","event","handler","register","useBridge","call"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/hooks.ts","../src/bridge.ts"],"sourcesContent":["export { useBridge, useRegister } from \"./hooks\";\nexport { call, register } from \"./bridge\";\n\nexport type { Handler } from \"./bridge\";\n\n// 🔥 MUST export for module augmentation\nexport interface CrosshookEvents { }","import { useEffect } from \"react\";\nimport { register, call, Handler } from \"./bridge\";\nimport type { EventKey, EventPayload } from \"./types\";\n\n// ✅ Typed overload\nexport function useRegister<K extends EventKey>(\n event: K,\n handler: (payload: EventPayload<K>) => void\n): void;\n\n// ✅ Untyped fallback\nexport function useRegister(\n event: string,\n handler: Handler\n) {\n useEffect(() => {\n const unregister = register(event, handler);\n return unregister;\n }, [event, handler]);\n}\n\nexport function useBridge() {\n return { call };\n}","export type Handler<T = any> = (payload: T) => void;\n\nconst listeners = new Map<string, Set<Handler>>();\n\nexport function register<T = any>(\n event: string,\n handler: Handler<T>\n) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n\n listeners.get(event)!.add(handler as Handler);\n\n return () => {\n listeners.get(event)?.delete(handler as Handler);\n\n if (listeners.get(event)?.size === 0) {\n listeners.delete(event);\n }\n };\n}\n\n// ✅ Typed overload (TS users)\nimport type { EventKey, EventPayload } from \"./types\";\n\nexport function call<K extends EventKey>(\n event: K,\n payload: EventPayload<K>\n): void;\n\n// ✅ Untyped fallback (JS users)\nexport function call(event: string, payload?: any) {\n const handlers = listeners.get(event);\n\n if (!handlers) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`[crosshook] No listeners for \"${event}\"`);\n }\n return;\n }\n\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (err) {\n console.error(\n `[crosshook] Handler error in \"${event}\"`,\n err\n );\n }\n });\n}"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,aAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAN,GCAA,IAAAO,EAA0B,iBCE1B,IAAMC,EAAY,IAAI,IAEf,SAASC,EACZC,EACAC,EACF,CACE,OAAKH,EAAU,IAAIE,CAAK,GACpBF,EAAU,IAAIE,EAAO,IAAI,GAAK,EAGlCF,EAAU,IAAIE,CAAK,EAAG,IAAIC,CAAkB,EAErC,IAAM,CACTH,EAAU,IAAIE,CAAK,GAAG,OAAOC,CAAkB,EAE3CH,EAAU,IAAIE,CAAK,GAAG,OAAS,GAC/BF,EAAU,OAAOE,CAAK,CAE9B,CACJ,CAWO,SAASE,EAAKF,EAAeG,EAAe,CAC/C,IAAMC,EAAWN,EAAU,IAAIE,CAAK,EAEpC,GAAI,CAACI,EAAU,CACP,QAAQ,IAAI,WAAa,cACzB,QAAQ,KAAK,iCAAiCJ,CAAK,GAAG,EAE1D,MACJ,CAEAI,EAAS,QAASH,GAAY,CAC1B,GAAI,CACAA,EAAQE,CAAO,CACnB,OAASE,EAAK,CACV,QAAQ,MACJ,iCAAiCL,CAAK,IACtCK,CACJ,CACJ,CACJ,CAAC,CACL,CDzCO,SAASC,EACZC,EACAC,EACF,IACE,aAAU,IACaC,EAASF,EAAOC,CAAO,EAE3C,CAACD,EAAOC,CAAO,CAAC,CACvB,CAEO,SAASE,GAAY,CACxB,MAAO,CAAE,KAAAC,CAAK,CAClB","names":["index_exports","__export","call","register","useBridge","useRegister","__toCommonJS","import_react","listeners","register","event","handler","call","payload","handlers","err","useRegister","event","handler","register","useBridge","call"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{useEffect as l}from"react";var t=new Map;function n(r,e){return t.has(r)||t.set(r,new Set),t.get(r).add(e),()=>{t.get(r)?.delete(e),t.get(r)?.size===0&&t.delete(r)}}function s(r,e){let o=t.get(r);if(!o){process.env.NODE_ENV!=="production"&&console.warn(`[Bridge] No listeners for event "${r}"`);return}o.forEach(i=>{try{i(e)}catch(a){console.error(`[Bridge] Error in handler for "${r}"`,a)}})}function d(r,e){l(()=>n(r,e),[r,e])}function g(){return{call:s}}export{s as call,n as register,g as useBridge,d as useRegister};
1
+ import{useEffect as d}from"react";var t=new Map;function n(e,r){return t.has(e)||t.set(e,new Set),t.get(e).add(r),()=>{t.get(e)?.delete(r),t.get(e)?.size===0&&t.delete(e)}}function s(e,r){let o=t.get(e);if(!o){process.env.NODE_ENV!=="production"&&console.warn(`[crosshook] No listeners for "${e}"`);return}o.forEach(a=>{try{a(r)}catch(i){console.error(`[crosshook] Handler error in "${e}"`,i)}})}function l(e,r){d(()=>n(e,r),[e,r])}function p(){return{call:s}}export{s as call,n as register,p as useBridge,l as useRegister};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks.ts","../src/bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { register, call, Handler } from \"./bridge\";\n\nexport function useRegister<T = any>(\n event: string,\n handler: Handler<T>\n) {\n useEffect(() => {\n const unregister = register(event, handler);\n return unregister;\n }, [event, handler]);\n}\n\nexport function useBridge() {\n return { call };\n}","export type Handler<T = any> = (payload: T) => void;\n\nconst listeners = new Map<string, Set<Handler>>();\n\nexport function register<T = any>(\n event: string,\n handler: Handler<T>\n) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n\n listeners.get(event)!.add(handler as Handler);\n\n return () => {\n listeners.get(event)?.delete(handler as Handler);\n\n if (listeners.get(event)?.size === 0) {\n listeners.delete(event);\n }\n };\n}\n\nexport function call<T = any>(event: string, payload?: T) {\n const handlers = listeners.get(event);\n\n if (!handlers) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `[Bridge] No listeners for event \"${event}\"`\n );\n }\n return;\n }\n\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (err) {\n console.error(\n `[Bridge] Error in handler for \"${event}\"`,\n err\n );\n }\n });\n}"],"mappings":"AAAA,OAAS,aAAAA,MAAiB,QCE1B,IAAMC,EAAY,IAAI,IAEf,SAASC,EACZC,EACAC,EACF,CACE,OAAKH,EAAU,IAAIE,CAAK,GACpBF,EAAU,IAAIE,EAAO,IAAI,GAAK,EAGlCF,EAAU,IAAIE,CAAK,EAAG,IAAIC,CAAkB,EAErC,IAAM,CACTH,EAAU,IAAIE,CAAK,GAAG,OAAOC,CAAkB,EAE3CH,EAAU,IAAIE,CAAK,GAAG,OAAS,GAC/BF,EAAU,OAAOE,CAAK,CAE9B,CACJ,CAEO,SAASE,EAAcF,EAAeG,EAAa,CACtD,IAAMC,EAAWN,EAAU,IAAIE,CAAK,EAEpC,GAAI,CAACI,EAAU,CACP,QAAQ,IAAI,WAAa,cACzB,QAAQ,KACJ,oCAAoCJ,CAAK,GAC7C,EAEJ,MACJ,CAEAI,EAAS,QAASH,GAAY,CAC1B,GAAI,CACAA,EAAQE,CAAO,CACnB,OAASE,EAAK,CACV,QAAQ,MACJ,kCAAkCL,CAAK,IACvCK,CACJ,CACJ,CACJ,CAAC,CACL,CD1CO,SAASC,EACZC,EACAC,EACF,CACEC,EAAU,IACaC,EAASH,EAAOC,CAAO,EAE3C,CAACD,EAAOC,CAAO,CAAC,CACvB,CAEO,SAASG,GAAY,CACxB,MAAO,CAAE,KAAAC,CAAK,CAClB","names":["useEffect","listeners","register","event","handler","call","payload","handlers","err","useRegister","event","handler","useEffect","register","useBridge","call"]}
1
+ {"version":3,"sources":["../src/hooks.ts","../src/bridge.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { register, call, Handler } from \"./bridge\";\nimport type { EventKey, EventPayload } from \"./types\";\n\n// ✅ Typed overload\nexport function useRegister<K extends EventKey>(\n event: K,\n handler: (payload: EventPayload<K>) => void\n): void;\n\n// ✅ Untyped fallback\nexport function useRegister(\n event: string,\n handler: Handler\n) {\n useEffect(() => {\n const unregister = register(event, handler);\n return unregister;\n }, [event, handler]);\n}\n\nexport function useBridge() {\n return { call };\n}","export type Handler<T = any> = (payload: T) => void;\n\nconst listeners = new Map<string, Set<Handler>>();\n\nexport function register<T = any>(\n event: string,\n handler: Handler<T>\n) {\n if (!listeners.has(event)) {\n listeners.set(event, new Set());\n }\n\n listeners.get(event)!.add(handler as Handler);\n\n return () => {\n listeners.get(event)?.delete(handler as Handler);\n\n if (listeners.get(event)?.size === 0) {\n listeners.delete(event);\n }\n };\n}\n\n// ✅ Typed overload (TS users)\nimport type { EventKey, EventPayload } from \"./types\";\n\nexport function call<K extends EventKey>(\n event: K,\n payload: EventPayload<K>\n): void;\n\n// ✅ Untyped fallback (JS users)\nexport function call(event: string, payload?: any) {\n const handlers = listeners.get(event);\n\n if (!handlers) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(`[crosshook] No listeners for \"${event}\"`);\n }\n return;\n }\n\n handlers.forEach((handler) => {\n try {\n handler(payload);\n } catch (err) {\n console.error(\n `[crosshook] Handler error in \"${event}\"`,\n err\n );\n }\n });\n}"],"mappings":"AAAA,OAAS,aAAAA,MAAiB,QCE1B,IAAMC,EAAY,IAAI,IAEf,SAASC,EACZC,EACAC,EACF,CACE,OAAKH,EAAU,IAAIE,CAAK,GACpBF,EAAU,IAAIE,EAAO,IAAI,GAAK,EAGlCF,EAAU,IAAIE,CAAK,EAAG,IAAIC,CAAkB,EAErC,IAAM,CACTH,EAAU,IAAIE,CAAK,GAAG,OAAOC,CAAkB,EAE3CH,EAAU,IAAIE,CAAK,GAAG,OAAS,GAC/BF,EAAU,OAAOE,CAAK,CAE9B,CACJ,CAWO,SAASE,EAAKF,EAAeG,EAAe,CAC/C,IAAMC,EAAWN,EAAU,IAAIE,CAAK,EAEpC,GAAI,CAACI,EAAU,CACP,QAAQ,IAAI,WAAa,cACzB,QAAQ,KAAK,iCAAiCJ,CAAK,GAAG,EAE1D,MACJ,CAEAI,EAAS,QAASH,GAAY,CAC1B,GAAI,CACAA,EAAQE,CAAO,CACnB,OAASE,EAAK,CACV,QAAQ,MACJ,iCAAiCL,CAAK,IACtCK,CACJ,CACJ,CACJ,CAAC,CACL,CDzCO,SAASC,EACZC,EACAC,EACF,CACEC,EAAU,IACaC,EAASH,EAAOC,CAAO,EAE3C,CAACD,EAAOC,CAAO,CAAC,CACvB,CAEO,SAASG,GAAY,CACxB,MAAO,CAAE,KAAAC,CAAK,CAClB","names":["useEffect","listeners","register","event","handler","call","payload","handlers","err","useRegister","event","handler","useEffect","register","useBridge","call"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crosshook",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Tiny hook-based event bridge for React",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",