crosshook 1.0.1 → 1.0.3
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 +16 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
interface CrosshookEvents$1 {
|
|
2
|
-
}
|
|
3
|
-
type EventKey = keyof CrosshookEvents$1;
|
|
4
|
-
type EventPayload<K extends EventKey> = CrosshookEvents$1[K];
|
|
5
|
-
|
|
6
1
|
type Handler<T = any> = (payload: T) => void;
|
|
7
|
-
|
|
2
|
+
type EventMap = Record<string, (...args: any) => any>;
|
|
3
|
+
type InferPayload<T> = T extends (payload: infer P) => any ? P : void;
|
|
4
|
+
type EventsFrom<T extends EventMap> = {
|
|
5
|
+
[K in keyof T]: InferPayload<T[K]>;
|
|
6
|
+
};
|
|
8
7
|
|
|
9
|
-
declare function
|
|
8
|
+
declare function register<T = any>(event: string, handler: Handler<T>): () => void;
|
|
9
|
+
/** 🔥 GENERIC TYPED OVERLOAD */
|
|
10
|
+
declare function call<E, K extends keyof E>(event: K, payload: E[K]): void;
|
|
10
11
|
|
|
11
|
-
declare function useRegister<
|
|
12
|
+
declare function useRegister<T = any>(event: string, handler: Handler<T>): void;
|
|
12
13
|
declare function useBridge(): {
|
|
13
14
|
call: typeof call;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
declare function createCrosshook<T extends EventMap>(defs: T): {
|
|
18
|
+
useBridge: () => {
|
|
19
|
+
call<K extends keyof T>(event: K, payload: EventsFrom<T>[K]): void;
|
|
20
|
+
};
|
|
21
|
+
useRegister: <K extends keyof T>(event: K, handler: (payload: EventsFrom<T>[K]) => void) => void;
|
|
22
|
+
};
|
|
18
23
|
|
|
19
|
-
export { type
|
|
24
|
+
export { type EventMap, type EventsFrom, type Handler, type InferPayload, call, createCrosshook, register, useBridge, useRegister };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
interface CrosshookEvents$1 {
|
|
2
|
-
}
|
|
3
|
-
type EventKey = keyof CrosshookEvents$1;
|
|
4
|
-
type EventPayload<K extends EventKey> = CrosshookEvents$1[K];
|
|
5
|
-
|
|
6
1
|
type Handler<T = any> = (payload: T) => void;
|
|
7
|
-
|
|
2
|
+
type EventMap = Record<string, (...args: any) => any>;
|
|
3
|
+
type InferPayload<T> = T extends (payload: infer P) => any ? P : void;
|
|
4
|
+
type EventsFrom<T extends EventMap> = {
|
|
5
|
+
[K in keyof T]: InferPayload<T[K]>;
|
|
6
|
+
};
|
|
8
7
|
|
|
9
|
-
declare function
|
|
8
|
+
declare function register<T = any>(event: string, handler: Handler<T>): () => void;
|
|
9
|
+
/** 🔥 GENERIC TYPED OVERLOAD */
|
|
10
|
+
declare function call<E, K extends keyof E>(event: K, payload: E[K]): void;
|
|
10
11
|
|
|
11
|
-
declare function useRegister<
|
|
12
|
+
declare function useRegister<T = any>(event: string, handler: Handler<T>): void;
|
|
12
13
|
declare function useBridge(): {
|
|
13
14
|
call: typeof call;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
declare function createCrosshook<T extends EventMap>(defs: T): {
|
|
18
|
+
useBridge: () => {
|
|
19
|
+
call<K extends keyof T>(event: K, payload: EventsFrom<T>[K]): void;
|
|
20
|
+
};
|
|
21
|
+
useRegister: <K extends keyof T>(event: K, handler: (payload: EventsFrom<T>[K]) => void) => void;
|
|
22
|
+
};
|
|
18
23
|
|
|
19
|
-
export { type
|
|
24
|
+
export { type EventMap, type EventsFrom, type Handler, type InferPayload, call, createCrosshook, register, useBridge, useRegister };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var f=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var y=(e,r)=>{for(var o in r)f(e,o,{get:r[o],enumerable:!0})},E=(e,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of g(r))!m.call(e,t)&&t!==o&&f(e,t,{get:()=>r[t],enumerable:!(s=u(r,t))||s.enumerable});return e};var x=e=>E(f({},"__esModule",{value:!0}),e);var H={};y(H,{call:()=>i,createCrosshook:()=>d,register:()=>a,useBridge:()=>c,useRegister:()=>p});module.exports=x(H);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 o=n.get(e);if(!o){process.env.NODE_ENV!=="production"&&console.warn(`[crosshook] No listeners for "${e}"`);return}o.forEach(s=>{try{s(r)}catch(t){console.error(`[crosshook] Handler error in "${e}"`,t)}})}var l=require("react");function p(e,r){(0,l.useEffect)(()=>a(e,r),[e,r])}function c(){return{call:i}}function d(e){function r(){return{call(s,t){i(s,t)}}}function o(s,t){p(s,t)}return{useBridge:r,useRegister:o}}0&&(module.exports={call,createCrosshook,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/
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/bridge.ts","../src/hooks.ts","../src/createCrossHook.ts"],"sourcesContent":["export { call, register } from \"./bridge\";\nexport { useBridge, useRegister } from \"./hooks\";\n\nexport { createCrosshook } from \"./createCrossHook\";\n\nexport type {\n Handler,\n EventMap,\n EventsFrom,\n InferPayload,\n} from \"./types\";","import type { Handler } from \"./types\";\n\n/** INTERNAL STORE */\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/** 🔥 GENERIC TYPED OVERLOAD */\nexport function call<E, K extends keyof E>(\n event: K,\n payload: E[K]\n): void;\n\n/** DEFAULT FALLBACK */\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}","import { useEffect } from \"react\";\nimport { register, call } from \"./bridge\";\nimport type { Handler } from \"./types\";\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}","import { call as baseCall } from \"./bridge\";\nimport { useRegister as baseRegister } from \"./hooks\";\nimport type { EventMap, EventsFrom } from \"./types\";\n\nexport function createCrosshook<T extends EventMap>(defs: T) {\n type Events = EventsFrom<T>;\n\n function useBridge() {\n return {\n call<K extends keyof Events>(\n event: K,\n payload: Events[K]\n ) {\n baseCall(event, payload);\n },\n };\n }\n\n function useRegister<K extends keyof Events>(\n event: K,\n handler: (payload: Events[K]) => void\n ) {\n baseRegister(event as string, handler);\n }\n\n return {\n useBridge,\n useRegister,\n };\n}"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,oBAAAC,EAAA,aAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAP,GCGA,IAAMQ,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,CASO,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,CCnDA,IAAAC,EAA0B,iBAInB,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,CCZO,SAASC,EAAoCC,EAAS,CAGzD,SAASC,GAAY,CACjB,MAAO,CACH,KACIC,EACAC,EACF,CACEC,EAASF,EAAOC,CAAO,CAC3B,CACJ,CACJ,CAEA,SAASE,EACLH,EACAI,EACF,CACED,EAAaH,EAAiBI,CAAO,CACzC,CAEA,MAAO,CACH,UAAAL,EACA,YAAAI,CACJ,CACJ","names":["index_exports","__export","call","createCrosshook","register","useBridge","useRegister","__toCommonJS","listeners","register","event","handler","call","payload","handlers","err","import_react","useRegister","event","handler","register","useBridge","call","createCrosshook","defs","useBridge","event","payload","call","useRegister","handler"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
var t=new Map;function a(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 i(e,r){let o=t.get(e);if(!o){process.env.NODE_ENV!=="production"&&console.warn(`[crosshook] No listeners for "${e}"`);return}o.forEach(s=>{try{s(r)}catch(n){console.error(`[crosshook] Handler error in "${e}"`,n)}})}import{useEffect as f}from"react";function p(e,r){f(()=>a(e,r),[e,r])}function l(){return{call:i}}function c(e){function r(){return{call(s,n){i(s,n)}}}function o(s,n){p(s,n)}return{useBridge:r,useRegister:o}}export{i as call,c as createCrosshook,a as register,l as useBridge,p as useRegister};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks.ts","../src/
|
|
1
|
+
{"version":3,"sources":["../src/bridge.ts","../src/hooks.ts","../src/createCrossHook.ts"],"sourcesContent":["import type { Handler } from \"./types\";\n\n/** INTERNAL STORE */\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/** 🔥 GENERIC TYPED OVERLOAD */\nexport function call<E, K extends keyof E>(\n event: K,\n payload: E[K]\n): void;\n\n/** DEFAULT FALLBACK */\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}","import { useEffect } from \"react\";\nimport { register, call } from \"./bridge\";\nimport type { Handler } from \"./types\";\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}","import { call as baseCall } from \"./bridge\";\nimport { useRegister as baseRegister } from \"./hooks\";\nimport type { EventMap, EventsFrom } from \"./types\";\n\nexport function createCrosshook<T extends EventMap>(defs: T) {\n type Events = EventsFrom<T>;\n\n function useBridge() {\n return {\n call<K extends keyof Events>(\n event: K,\n payload: Events[K]\n ) {\n baseCall(event, payload);\n },\n };\n }\n\n function useRegister<K extends keyof Events>(\n event: K,\n handler: (payload: Events[K]) => void\n ) {\n baseRegister(event as string, handler);\n }\n\n return {\n useBridge,\n useRegister,\n };\n}"],"mappings":"AAGA,IAAMA,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,CASO,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,CCnDA,OAAS,aAAAC,MAAiB,QAInB,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,CCZO,SAASC,EAAoCC,EAAS,CAGzD,SAASC,GAAY,CACjB,MAAO,CACH,KACIC,EACAC,EACF,CACEC,EAASF,EAAOC,CAAO,CAC3B,CACJ,CACJ,CAEA,SAASE,EACLH,EACAI,EACF,CACED,EAAaH,EAAiBI,CAAO,CACzC,CAEA,MAAO,CACH,UAAAL,EACA,YAAAI,CACJ,CACJ","names":["listeners","register","event","handler","call","payload","handlers","err","useEffect","useRegister","event","handler","useEffect","register","useBridge","call","createCrosshook","defs","useBridge","event","payload","call","useRegister","handler"]}
|