@evergonlabs/tmi-protocol-utils 0.2.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/common.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},p=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l(t))!o.call(e,n)&&n!==r&&d(e,n,{get:()=>t[n],enumerable:!(i=s(t,n))||i.enumerable});return e};var T=e=>p(d({},"__esModule",{value:!0}),e);var f={};u(f,{createMiddlewares:()=>a,identityMiddleware:()=>x,joinPaths:()=>w,toCamelCase:()=>m});module.exports=T(f);function a(e){return{run:t=>e(t),add:t=>a(r=>e(r).then(i=>t(i)))}}var x=e=>Promise.resolve(e);function w(...e){return M(...e)}function M(...e){return I(e.join("/").replace(/\/+/g,"/").replace(/\/+$/,""))}function I(e){return e.startsWith("/")?e:`/${e}`}function m(e){return e.map(t=>t.trim()).filter(t=>t.length>0).map((t,r)=>(r===0?t.charAt(0).toLowerCase():t.charAt(0).toUpperCase())+t.slice(1)).join("")}0&&(module.exports={createMiddlewares,identityMiddleware,joinPaths,toCamelCase});
1
+ "use strict";var d=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},p=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l(t))!o.call(e,n)&&n!==r&&d(e,n,{get:()=>t[n],enumerable:!(i=s(t,n))||i.enumerable});return e};var w=e=>p(d({},"__esModule",{value:!0}),e);var g={};u(g,{bpToFixedPercentage:()=>x,createMiddlewares:()=>a,identityMiddleware:()=>I,joinPaths:()=>T,toCamelCase:()=>f});module.exports=w(g);function x(e){if(!Number.isInteger(e))throw new Error(`Basis points must be an integer, got ${e}`);if(e<0||e>1e4)throw new Error(`Basis points must be in [0, 10000], got ${e}`);return BigInt(e)*100n}function T(...e){return M(...e)}function M(...e){return m(e.join("/").replace(/\/+/g,"/").replace(/\/+$/,""))}function m(e){return e.startsWith("/")?e:`/${e}`}function a(e){return{run:t=>e(t),add:t=>a(r=>e(r).then(i=>t(i)))}}var I=e=>Promise.resolve(e);function f(e){return e.map(t=>t.trim()).filter(t=>t.length>0).map((t,r)=>(r===0?t.charAt(0).toLowerCase():t.charAt(0).toUpperCase())+t.slice(1)).join("")}0&&(module.exports={bpToFixedPercentage,createMiddlewares,identityMiddleware,joinPaths,toCamelCase});
2
2
  //# sourceMappingURL=common.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/index.ts","../src/common/middlewares/middlewares.ts","../src/common/joinPath/joinPath.ts","../src/common/toCamelCase/toCamelCase.ts"],"sourcesContent":["export * from \"./middlewares/middlewares.js\";\nexport * from \"./joinPath/joinPath.js\";\nexport * from \"./toCamelCase/toCamelCase.js\";\n","export type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;\nexport type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;\n\ntype InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;\ntype InferMiddlewareOutput<T extends IMiddleware> = T extends IMiddleware<any, infer C> ? C : never;\n\nexport type IMiddlewares<TMiddleware extends IMiddleware> = {\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ) => IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>>;\n run: (input: InferMiddlewareInput<TMiddleware>) => Promise<InferMiddlewareOutput<TMiddleware>>;\n};\n\nexport function createMiddlewares<TMiddleware extends IMiddleware>(middleware: TMiddleware): IMiddlewares<TMiddleware> {\n return {\n run: (input: InferMiddlewareInput<TMiddleware>) => middleware(input),\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ): IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>> =>\n createMiddlewares((input) => middleware(input).then((output) => next(output))),\n };\n}\n\nexport type IIdentityMiddleware<T> = IMiddleware<T, T>;\nexport const identityMiddleware = <T>(input: T): Promise<T> => Promise.resolve(input);\n","import { NonEmptyArray } from \"../../typeUtils/nonEmptyArray.js\";\n\ntype RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}`\n ? RemoveConsecutiveSlashes<`${First}/${Rest}`>\n : T;\n\nexport type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends NonEmptyArray<string>\n ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`>\n : RemoveConsecutiveSlashes<`/${First}`>\n : never\n : never;\n\ntype RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;\n\nexport function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>> {\n return joinPathsSimple(...segments) as RemoveTrailingSlash<JoinPathResult<T>>;\n}\n\nfunction joinPathsSimple(...strings: string[]) {\n return prependLeadingSlash(\n strings\n .join(\"/\")\n .replace(/\\/+/g, \"/\") // Remove double slashes\n .replace(/\\/+$/, \"\"), // Remove trailing slash\n );\n}\n\nfunction prependLeadingSlash(str: string) {\n return str.startsWith(\"/\") ? str : `/${str}`;\n}\n","import { Trim } from \"type-fest\";\n\nexport type JoinCamelCaseResult<\n Words extends string[],\n IsFirst = false,\n OutputString extends string = \"\",\n> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]]\n ? Trim<FirstWord> extends \"\"\n ? JoinCamelCaseResult<RemainingWords>\n : IsFirst extends false\n ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}`\n : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}`\n : OutputString;\n\nexport function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T> {\n return args\n .map((arg) => arg.trim())\n .filter((arg) => arg.length > 0)\n .map((arg, index) => {\n const first = index === 0 ? arg.charAt(0).toLowerCase() : arg.charAt(0).toUpperCase();\n return first + arg.slice(1);\n })\n .join(\"\") as JoinCamelCaseResult<T>;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,uBAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAN,GCaO,SAASO,EAAmDC,EAAoD,CACrH,MAAO,CACL,IAAMC,GAA6CD,EAAWC,CAAK,EACnE,IACEC,GAEAH,EAAmBE,GAAUD,EAAWC,CAAK,EAAE,KAAME,GAAWD,EAAKC,CAAM,CAAC,CAAC,CACjF,CACF,CAGO,IAAMC,EAAyBH,GAAyB,QAAQ,QAAQA,CAAK,ECR7E,SAASI,KAAiCC,EAAqD,CACpG,OAAOC,EAAgB,GAAGD,CAAQ,CACpC,CAEA,SAASC,KAAmBC,EAAmB,CAC7C,OAAOC,EACLD,EACG,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,QAAQ,OAAQ,EAAE,CACvB,CACF,CAEA,SAASC,EAAoBC,EAAa,CACxC,OAAOA,EAAI,WAAW,GAAG,EAAIA,EAAM,IAAIA,CAAG,EAC5C,CCjBO,SAASC,EAAsCC,EAAiC,CACrF,OAAOA,EACJ,IAAKC,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAC9B,IAAI,CAACA,EAAKC,KACKA,IAAU,EAAID,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,OAAO,CAAC,EAAE,YAAY,GACrEA,EAAI,MAAM,CAAC,CAC3B,EACA,KAAK,EAAE,CACZ","names":["common_exports","__export","createMiddlewares","identityMiddleware","joinPaths","toCamelCase","__toCommonJS","createMiddlewares","middleware","input","next","output","identityMiddleware","joinPaths","segments","joinPathsSimple","strings","prependLeadingSlash","str","toCamelCase","args","arg","index"]}
1
+ {"version":3,"sources":["../src/common/index.ts","../src/common/bpToFixedPercentage/bpToFixedPercentage.ts","../src/common/joinPath/joinPath.ts","../src/common/middlewares/middlewares.ts","../src/common/toCamelCase/toCamelCase.ts"],"sourcesContent":["export * from \"./bpToFixedPercentage/bpToFixedPercentage.js\";\nexport * from \"./joinPath/joinPath.js\";\nexport * from \"./middlewares/middlewares.js\";\nexport * from \"./toCamelCase/toCamelCase.js\";\n","/**\n * TMI uses percentage with 10^6 base, i.e. 1000000p = 100%\n * @param basisPoints basis points value, i.e. 10000bp = 100%\n * @returns 10^6 bases value\n */\nexport function bpToFixedPercentage(basisPoints: number): bigint {\n if (!Number.isInteger(basisPoints)) {\n throw new Error(`Basis points must be an integer, got ${basisPoints}`);\n }\n\n if (basisPoints < 0 || basisPoints > 10_000) {\n throw new Error(`Basis points must be in [0, 10000], got ${basisPoints}`);\n }\n\n // 1 bp = 0.01%, scale by 10^2 to reach 10^6 base\n return BigInt(basisPoints) * 100n;\n}\n","import { NonEmptyArray } from \"../../typeUtils/nonEmptyArray.js\";\n\ntype RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}`\n ? RemoveConsecutiveSlashes<`${First}/${Rest}`>\n : T;\n\nexport type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends NonEmptyArray<string>\n ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`>\n : RemoveConsecutiveSlashes<`/${First}`>\n : never\n : never;\n\ntype RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;\n\nexport function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>> {\n return joinPathsSimple(...segments) as RemoveTrailingSlash<JoinPathResult<T>>;\n}\n\nfunction joinPathsSimple(...strings: string[]) {\n return prependLeadingSlash(\n strings\n .join(\"/\")\n .replace(/\\/+/g, \"/\") // Remove double slashes\n .replace(/\\/+$/, \"\"), // Remove trailing slash\n );\n}\n\nfunction prependLeadingSlash(str: string) {\n return str.startsWith(\"/\") ? str : `/${str}`;\n}\n","export type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;\nexport type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;\n\ntype InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;\ntype InferMiddlewareOutput<T extends IMiddleware> = T extends IMiddleware<any, infer C> ? C : never;\n\nexport type IMiddlewares<TMiddleware extends IMiddleware> = {\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ) => IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>>;\n run: (input: InferMiddlewareInput<TMiddleware>) => Promise<InferMiddlewareOutput<TMiddleware>>;\n};\n\nexport function createMiddlewares<TMiddleware extends IMiddleware>(middleware: TMiddleware): IMiddlewares<TMiddleware> {\n return {\n run: (input: InferMiddlewareInput<TMiddleware>) => middleware(input),\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ): IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>> =>\n createMiddlewares((input) => middleware(input).then((output) => next(output))),\n };\n}\n\nexport type IIdentityMiddleware<T> = IMiddleware<T, T>;\nexport const identityMiddleware = <T>(input: T): Promise<T> => Promise.resolve(input);\n","import { Trim } from \"type-fest\";\n\nexport type JoinCamelCaseResult<\n Words extends string[],\n IsFirst = false,\n OutputString extends string = \"\",\n> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]]\n ? Trim<FirstWord> extends \"\"\n ? JoinCamelCaseResult<RemainingWords>\n : IsFirst extends false\n ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}`\n : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}`\n : OutputString;\n\nexport function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T> {\n return args\n .map((arg) => arg.trim())\n .filter((arg) => arg.length > 0)\n .map((arg, index) => {\n const first = index === 0 ? arg.charAt(0).toLowerCase() : arg.charAt(0).toUpperCase();\n return first + arg.slice(1);\n })\n .join(\"\") as JoinCamelCaseResult<T>;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,sBAAAC,EAAA,uBAAAC,EAAA,cAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAP,GCKO,SAASQ,EAAoBC,EAA6B,CAC/D,GAAI,CAAC,OAAO,UAAUA,CAAW,EAC/B,MAAM,IAAI,MAAM,wCAAwCA,CAAW,EAAE,EAGvE,GAAIA,EAAc,GAAKA,EAAc,IACnC,MAAM,IAAI,MAAM,2CAA2CA,CAAW,EAAE,EAI1E,OAAO,OAAOA,CAAW,EAAI,IAC/B,CCAO,SAASC,KAAiCC,EAAqD,CACpG,OAAOC,EAAgB,GAAGD,CAAQ,CACpC,CAEA,SAASC,KAAmBC,EAAmB,CAC7C,OAAOC,EACLD,EACG,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,QAAQ,OAAQ,EAAE,CACvB,CACF,CAEA,SAASC,EAAoBC,EAAa,CACxC,OAAOA,EAAI,WAAW,GAAG,EAAIA,EAAM,IAAIA,CAAG,EAC5C,CClBO,SAASC,EAAmDC,EAAoD,CACrH,MAAO,CACL,IAAMC,GAA6CD,EAAWC,CAAK,EACnE,IACEC,GAEAH,EAAmBE,GAAUD,EAAWC,CAAK,EAAE,KAAME,GAAWD,EAAKC,CAAM,CAAC,CAAC,CACjF,CACF,CAGO,IAAMC,EAAyBH,GAAyB,QAAQ,QAAQA,CAAK,ECV7E,SAASI,EAAsCC,EAAiC,CACrF,OAAOA,EACJ,IAAKC,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAC9B,IAAI,CAACA,EAAKC,KACKA,IAAU,EAAID,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,OAAO,CAAC,EAAE,YAAY,GACrEA,EAAI,MAAM,CAAC,CAC3B,EACA,KAAK,EAAE,CACZ","names":["common_exports","__export","bpToFixedPercentage","createMiddlewares","identityMiddleware","joinPaths","toCamelCase","__toCommonJS","bpToFixedPercentage","basisPoints","joinPaths","segments","joinPathsSimple","strings","prependLeadingSlash","str","createMiddlewares","middleware","input","next","output","identityMiddleware","toCamelCase","args","arg","index"]}
package/dist/common.d.cts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { N as NonEmptyArray } from './nonEmptyArray-GKx7EeID.cjs';
2
2
  import { Trim } from 'type-fest';
3
3
 
4
+ /**
5
+ * TMI uses percentage with 10^6 base, i.e. 1000000p = 100%
6
+ * @param basisPoints basis points value, i.e. 10000bp = 100%
7
+ * @returns 10^6 bases value
8
+ */
9
+ declare function bpToFixedPercentage(basisPoints: number): bigint;
10
+
11
+ type RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}` ? RemoveConsecutiveSlashes<`${First}/${Rest}`> : T;
12
+ type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest] ? First extends string ? Rest extends NonEmptyArray<string> ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`> : RemoveConsecutiveSlashes<`/${First}`> : never : never;
13
+ type RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;
14
+ declare function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>>;
15
+
4
16
  type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;
5
17
  type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;
6
18
  type InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;
@@ -13,12 +25,7 @@ declare function createMiddlewares<TMiddleware extends IMiddleware>(middleware:
13
25
  type IIdentityMiddleware<T> = IMiddleware<T, T>;
14
26
  declare const identityMiddleware: <T>(input: T) => Promise<T>;
15
27
 
16
- type RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}` ? RemoveConsecutiveSlashes<`${First}/${Rest}`> : T;
17
- type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest] ? First extends string ? Rest extends NonEmptyArray<string> ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`> : RemoveConsecutiveSlashes<`/${First}`> : never : never;
18
- type RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;
19
- declare function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>>;
20
-
21
28
  type JoinCamelCaseResult<Words extends string[], IsFirst = false, OutputString extends string = ""> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]] ? Trim<FirstWord> extends "" ? JoinCamelCaseResult<RemainingWords> : IsFirst extends false ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}` : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}` : OutputString;
22
29
  declare function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T>;
23
30
 
24
- export { type IIdentityMiddleware, type IMiddleware, type IMiddlewareRequire, type IMiddlewares, type JoinCamelCaseResult, type JoinPathResult, createMiddlewares, identityMiddleware, joinPaths, toCamelCase };
31
+ export { type IIdentityMiddleware, type IMiddleware, type IMiddlewareRequire, type IMiddlewares, type JoinCamelCaseResult, type JoinPathResult, bpToFixedPercentage, createMiddlewares, identityMiddleware, joinPaths, toCamelCase };
package/dist/common.d.ts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { N as NonEmptyArray } from './nonEmptyArray-GKx7EeID.js';
2
2
  import { Trim } from 'type-fest';
3
3
 
4
+ /**
5
+ * TMI uses percentage with 10^6 base, i.e. 1000000p = 100%
6
+ * @param basisPoints basis points value, i.e. 10000bp = 100%
7
+ * @returns 10^6 bases value
8
+ */
9
+ declare function bpToFixedPercentage(basisPoints: number): bigint;
10
+
11
+ type RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}` ? RemoveConsecutiveSlashes<`${First}/${Rest}`> : T;
12
+ type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest] ? First extends string ? Rest extends NonEmptyArray<string> ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`> : RemoveConsecutiveSlashes<`/${First}`> : never : never;
13
+ type RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;
14
+ declare function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>>;
15
+
4
16
  type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;
5
17
  type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;
6
18
  type InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;
@@ -13,12 +25,7 @@ declare function createMiddlewares<TMiddleware extends IMiddleware>(middleware:
13
25
  type IIdentityMiddleware<T> = IMiddleware<T, T>;
14
26
  declare const identityMiddleware: <T>(input: T) => Promise<T>;
15
27
 
16
- type RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}` ? RemoveConsecutiveSlashes<`${First}/${Rest}`> : T;
17
- type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest] ? First extends string ? Rest extends NonEmptyArray<string> ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`> : RemoveConsecutiveSlashes<`/${First}`> : never : never;
18
- type RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;
19
- declare function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>>;
20
-
21
28
  type JoinCamelCaseResult<Words extends string[], IsFirst = false, OutputString extends string = ""> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]] ? Trim<FirstWord> extends "" ? JoinCamelCaseResult<RemainingWords> : IsFirst extends false ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}` : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}` : OutputString;
22
29
  declare function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T>;
23
30
 
24
- export { type IIdentityMiddleware, type IMiddleware, type IMiddlewareRequire, type IMiddlewares, type JoinCamelCaseResult, type JoinPathResult, createMiddlewares, identityMiddleware, joinPaths, toCamelCase };
31
+ export { type IIdentityMiddleware, type IMiddleware, type IMiddlewareRequire, type IMiddlewares, type JoinCamelCaseResult, type JoinPathResult, bpToFixedPercentage, createMiddlewares, identityMiddleware, joinPaths, toCamelCase };
package/dist/common.js CHANGED
@@ -1,2 +1,2 @@
1
- function n(e){return{run:t=>e(t),add:t=>n(r=>e(r).then(i=>t(i)))}}var s=e=>Promise.resolve(e);function o(...e){return d(...e)}function d(...e){return a(e.join("/").replace(/\/+/g,"/").replace(/\/+$/,""))}function a(e){return e.startsWith("/")?e:`/${e}`}function p(e){return e.map(t=>t.trim()).filter(t=>t.length>0).map((t,r)=>(r===0?t.charAt(0).toLowerCase():t.charAt(0).toUpperCase())+t.slice(1)).join("")}export{n as createMiddlewares,s as identityMiddleware,o as joinPaths,p as toCamelCase};
1
+ function s(e){if(!Number.isInteger(e))throw new Error(`Basis points must be an integer, got ${e}`);if(e<0||e>1e4)throw new Error(`Basis points must be in [0, 10000], got ${e}`);return BigInt(e)*100n}function o(...e){return n(...e)}function n(...e){return d(e.join("/").replace(/\/+/g,"/").replace(/\/+$/,""))}function d(e){return e.startsWith("/")?e:`/${e}`}function a(e){return{run:t=>e(t),add:t=>a(r=>e(r).then(i=>t(i)))}}var p=e=>Promise.resolve(e);function x(e){return e.map(t=>t.trim()).filter(t=>t.length>0).map((t,r)=>(r===0?t.charAt(0).toLowerCase():t.charAt(0).toUpperCase())+t.slice(1)).join("")}export{s as bpToFixedPercentage,a as createMiddlewares,p as identityMiddleware,o as joinPaths,x as toCamelCase};
2
2
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/middlewares/middlewares.ts","../src/common/joinPath/joinPath.ts","../src/common/toCamelCase/toCamelCase.ts"],"sourcesContent":["export type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;\nexport type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;\n\ntype InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;\ntype InferMiddlewareOutput<T extends IMiddleware> = T extends IMiddleware<any, infer C> ? C : never;\n\nexport type IMiddlewares<TMiddleware extends IMiddleware> = {\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ) => IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>>;\n run: (input: InferMiddlewareInput<TMiddleware>) => Promise<InferMiddlewareOutput<TMiddleware>>;\n};\n\nexport function createMiddlewares<TMiddleware extends IMiddleware>(middleware: TMiddleware): IMiddlewares<TMiddleware> {\n return {\n run: (input: InferMiddlewareInput<TMiddleware>) => middleware(input),\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ): IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>> =>\n createMiddlewares((input) => middleware(input).then((output) => next(output))),\n };\n}\n\nexport type IIdentityMiddleware<T> = IMiddleware<T, T>;\nexport const identityMiddleware = <T>(input: T): Promise<T> => Promise.resolve(input);\n","import { NonEmptyArray } from \"../../typeUtils/nonEmptyArray.js\";\n\ntype RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}`\n ? RemoveConsecutiveSlashes<`${First}/${Rest}`>\n : T;\n\nexport type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends NonEmptyArray<string>\n ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`>\n : RemoveConsecutiveSlashes<`/${First}`>\n : never\n : never;\n\ntype RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;\n\nexport function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>> {\n return joinPathsSimple(...segments) as RemoveTrailingSlash<JoinPathResult<T>>;\n}\n\nfunction joinPathsSimple(...strings: string[]) {\n return prependLeadingSlash(\n strings\n .join(\"/\")\n .replace(/\\/+/g, \"/\") // Remove double slashes\n .replace(/\\/+$/, \"\"), // Remove trailing slash\n );\n}\n\nfunction prependLeadingSlash(str: string) {\n return str.startsWith(\"/\") ? str : `/${str}`;\n}\n","import { Trim } from \"type-fest\";\n\nexport type JoinCamelCaseResult<\n Words extends string[],\n IsFirst = false,\n OutputString extends string = \"\",\n> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]]\n ? Trim<FirstWord> extends \"\"\n ? JoinCamelCaseResult<RemainingWords>\n : IsFirst extends false\n ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}`\n : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}`\n : OutputString;\n\nexport function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T> {\n return args\n .map((arg) => arg.trim())\n .filter((arg) => arg.length > 0)\n .map((arg, index) => {\n const first = index === 0 ? arg.charAt(0).toLowerCase() : arg.charAt(0).toUpperCase();\n return first + arg.slice(1);\n })\n .join(\"\") as JoinCamelCaseResult<T>;\n}\n"],"mappings":"AAaO,SAASA,EAAmDC,EAAoD,CACrH,MAAO,CACL,IAAMC,GAA6CD,EAAWC,CAAK,EACnE,IACEC,GAEAH,EAAmBE,GAAUD,EAAWC,CAAK,EAAE,KAAME,GAAWD,EAAKC,CAAM,CAAC,CAAC,CACjF,CACF,CAGO,IAAMC,EAAyBH,GAAyB,QAAQ,QAAQA,CAAK,ECR7E,SAASI,KAAiCC,EAAqD,CACpG,OAAOC,EAAgB,GAAGD,CAAQ,CACpC,CAEA,SAASC,KAAmBC,EAAmB,CAC7C,OAAOC,EACLD,EACG,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,QAAQ,OAAQ,EAAE,CACvB,CACF,CAEA,SAASC,EAAoBC,EAAa,CACxC,OAAOA,EAAI,WAAW,GAAG,EAAIA,EAAM,IAAIA,CAAG,EAC5C,CCjBO,SAASC,EAAsCC,EAAiC,CACrF,OAAOA,EACJ,IAAKC,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAC9B,IAAI,CAACA,EAAKC,KACKA,IAAU,EAAID,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,OAAO,CAAC,EAAE,YAAY,GACrEA,EAAI,MAAM,CAAC,CAC3B,EACA,KAAK,EAAE,CACZ","names":["createMiddlewares","middleware","input","next","output","identityMiddleware","joinPaths","segments","joinPathsSimple","strings","prependLeadingSlash","str","toCamelCase","args","arg","index"]}
1
+ {"version":3,"sources":["../src/common/bpToFixedPercentage/bpToFixedPercentage.ts","../src/common/joinPath/joinPath.ts","../src/common/middlewares/middlewares.ts","../src/common/toCamelCase/toCamelCase.ts"],"sourcesContent":["/**\n * TMI uses percentage with 10^6 base, i.e. 1000000p = 100%\n * @param basisPoints basis points value, i.e. 10000bp = 100%\n * @returns 10^6 bases value\n */\nexport function bpToFixedPercentage(basisPoints: number): bigint {\n if (!Number.isInteger(basisPoints)) {\n throw new Error(`Basis points must be an integer, got ${basisPoints}`);\n }\n\n if (basisPoints < 0 || basisPoints > 10_000) {\n throw new Error(`Basis points must be in [0, 10000], got ${basisPoints}`);\n }\n\n // 1 bp = 0.01%, scale by 10^2 to reach 10^6 base\n return BigInt(basisPoints) * 100n;\n}\n","import { NonEmptyArray } from \"../../typeUtils/nonEmptyArray.js\";\n\ntype RemoveConsecutiveSlashes<T extends string> = T extends `${infer First}//${infer Rest}`\n ? RemoveConsecutiveSlashes<`${First}/${Rest}`>\n : T;\n\nexport type JoinPathResult<T extends string[]> = T extends [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends NonEmptyArray<string>\n ? RemoveConsecutiveSlashes<`/${First}/${JoinPathResult<Rest>}`>\n : RemoveConsecutiveSlashes<`/${First}`>\n : never\n : never;\n\ntype RemoveTrailingSlash<T extends string> = T extends `${infer First}/` ? First : T;\n\nexport function joinPaths<T extends string[]>(...segments: T): RemoveTrailingSlash<JoinPathResult<T>> {\n return joinPathsSimple(...segments) as RemoveTrailingSlash<JoinPathResult<T>>;\n}\n\nfunction joinPathsSimple(...strings: string[]) {\n return prependLeadingSlash(\n strings\n .join(\"/\")\n .replace(/\\/+/g, \"/\") // Remove double slashes\n .replace(/\\/+$/, \"\"), // Remove trailing slash\n );\n}\n\nfunction prependLeadingSlash(str: string) {\n return str.startsWith(\"/\") ? str : `/${str}`;\n}\n","export type IMiddleware<InitData = any, NextData = any> = (init: InitData) => Promise<NextData>;\nexport type IMiddlewareRequire<InitData, NextData = any> = (input: InitData) => Promise<NextData>;\n\ntype InferMiddlewareInput<T extends IMiddleware> = T extends IMiddleware<infer C, any> ? C : never;\ntype InferMiddlewareOutput<T extends IMiddleware> = T extends IMiddleware<any, infer C> ? C : never;\n\nexport type IMiddlewares<TMiddleware extends IMiddleware> = {\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ) => IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>>;\n run: (input: InferMiddlewareInput<TMiddleware>) => Promise<InferMiddlewareOutput<TMiddleware>>;\n};\n\nexport function createMiddlewares<TMiddleware extends IMiddleware>(middleware: TMiddleware): IMiddlewares<TMiddleware> {\n return {\n run: (input: InferMiddlewareInput<TMiddleware>) => middleware(input),\n add: <TNextMiddleware extends IMiddleware<InferMiddlewareOutput<TMiddleware>, any>>(\n next: TNextMiddleware,\n ): IMiddlewares<IMiddleware<InferMiddlewareInput<TMiddleware>, InferMiddlewareOutput<TNextMiddleware>>> =>\n createMiddlewares((input) => middleware(input).then((output) => next(output))),\n };\n}\n\nexport type IIdentityMiddleware<T> = IMiddleware<T, T>;\nexport const identityMiddleware = <T>(input: T): Promise<T> => Promise.resolve(input);\n","import { Trim } from \"type-fest\";\n\nexport type JoinCamelCaseResult<\n Words extends string[],\n IsFirst = false,\n OutputString extends string = \"\",\n> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]]\n ? Trim<FirstWord> extends \"\"\n ? JoinCamelCaseResult<RemainingWords>\n : IsFirst extends false\n ? `${Trim<FirstWord>}${JoinCamelCaseResult<RemainingWords, true>}`\n : `${Capitalize<Trim<FirstWord>>}${JoinCamelCaseResult<RemainingWords, true>}`\n : OutputString;\n\nexport function toCamelCase<const T extends string[]>(args: T): JoinCamelCaseResult<T> {\n return args\n .map((arg) => arg.trim())\n .filter((arg) => arg.length > 0)\n .map((arg, index) => {\n const first = index === 0 ? arg.charAt(0).toLowerCase() : arg.charAt(0).toUpperCase();\n return first + arg.slice(1);\n })\n .join(\"\") as JoinCamelCaseResult<T>;\n}\n"],"mappings":"AAKO,SAASA,EAAoBC,EAA6B,CAC/D,GAAI,CAAC,OAAO,UAAUA,CAAW,EAC/B,MAAM,IAAI,MAAM,wCAAwCA,CAAW,EAAE,EAGvE,GAAIA,EAAc,GAAKA,EAAc,IACnC,MAAM,IAAI,MAAM,2CAA2CA,CAAW,EAAE,EAI1E,OAAO,OAAOA,CAAW,EAAI,IAC/B,CCAO,SAASC,KAAiCC,EAAqD,CACpG,OAAOC,EAAgB,GAAGD,CAAQ,CACpC,CAEA,SAASC,KAAmBC,EAAmB,CAC7C,OAAOC,EACLD,EACG,KAAK,GAAG,EACR,QAAQ,OAAQ,GAAG,EACnB,QAAQ,OAAQ,EAAE,CACvB,CACF,CAEA,SAASC,EAAoBC,EAAa,CACxC,OAAOA,EAAI,WAAW,GAAG,EAAIA,EAAM,IAAIA,CAAG,EAC5C,CClBO,SAASC,EAAmDC,EAAoD,CACrH,MAAO,CACL,IAAMC,GAA6CD,EAAWC,CAAK,EACnE,IACEC,GAEAH,EAAmBE,GAAUD,EAAWC,CAAK,EAAE,KAAME,GAAWD,EAAKC,CAAM,CAAC,CAAC,CACjF,CACF,CAGO,IAAMC,EAAyBH,GAAyB,QAAQ,QAAQA,CAAK,ECV7E,SAASI,EAAsCC,EAAiC,CACrF,OAAOA,EACJ,IAAKC,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAC9B,IAAI,CAACA,EAAKC,KACKA,IAAU,EAAID,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,OAAO,CAAC,EAAE,YAAY,GACrEA,EAAI,MAAM,CAAC,CAC3B,EACA,KAAK,EAAE,CACZ","names":["bpToFixedPercentage","basisPoints","joinPaths","segments","joinPathsSimple","strings","prependLeadingSlash","str","createMiddlewares","middleware","input","next","output","identityMiddleware","toCamelCase","args","arg","index"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/typeUtils/index.ts","../src/typeUtils/nonEmptyArray.ts"],"sourcesContent":["export * from \"./nonEmptyArray.js\";\nexport * from \"./common.js\";\n","export type NonEmptyArray<T> = [T, ...T[]];\n\nexport function isNonEmptyArray<T>(arr: T[]): arr is NonEmptyArray<T> {\n return arr.length > 0;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GCEO,SAASI,EAAmBC,EAAmC,CACpE,OAAOA,EAAI,OAAS,CACtB","names":["typeUtils_exports","__export","isNonEmptyArray","__toCommonJS","isNonEmptyArray","arr"]}
1
+ {"version":3,"sources":["../src/typeUtils/index.ts","../src/typeUtils/nonEmptyArray.ts"],"sourcesContent":["export * from \"./common.js\";\nexport * from \"./nonEmptyArray.js\";\n","export type NonEmptyArray<T> = [T, ...T[]];\n\nexport function isNonEmptyArray<T>(arr: T[]): arr is NonEmptyArray<T> {\n return arr.length > 0;\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GCEO,SAASI,EAAmBC,EAAmC,CACpE,OAAOA,EAAI,OAAS,CACtB","names":["typeUtils_exports","__export","isNonEmptyArray","__toCommonJS","isNonEmptyArray","arr"]}
@@ -1,5 +1,5 @@
1
- export { N as NonEmptyArray, i as isNonEmptyArray } from './nonEmptyArray-GKx7EeID.cjs';
2
1
  import { ConditionalKeys } from 'type-fest';
2
+ export { N as NonEmptyArray, i as isNonEmptyArray } from './nonEmptyArray-GKx7EeID.cjs';
3
3
 
4
4
  type ExcludeVoidKeys<T> = Exclude<keyof T, ConditionalKeys<T, void>>;
5
5
  type ExcludeVoidProperties<T> = Pick<T, ExcludeVoidKeys<T>>;
@@ -1,5 +1,5 @@
1
- export { N as NonEmptyArray, i as isNonEmptyArray } from './nonEmptyArray-GKx7EeID.js';
2
1
  import { ConditionalKeys } from 'type-fest';
2
+ export { N as NonEmptyArray, i as isNonEmptyArray } from './nonEmptyArray-GKx7EeID.js';
3
3
 
4
4
  type ExcludeVoidKeys<T> = Exclude<keyof T, ConditionalKeys<T, void>>;
5
5
  type ExcludeVoidProperties<T> = Pick<T, ExcludeVoidKeys<T>>;
package/dist/viem.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var u=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of m(n))!p.call(e,a)&&a!==t&&i(e,a,{get:()=>n[a],enumerable:!(r=c(n,a))||r.enumerable});return e};var f=e=>d(i({},"__esModule",{value:!0}),e);var C={};u(C,{parseTransaction:()=>l,viemClientAsMiddleware:()=>b});module.exports=f(C);var o=require("viem/actions");function b(e){return n=>(0,o.simulateContract)(e,{abi:n.abi,functionName:n.functionName,args:n.args,address:n.address}).then(({request:t})=>(0,o.writeContract)(e,t).then(r=>(0,o.waitForTransactionReceipt)(e,{hash:r})))}var s=require("viem");function l(e,n,t,r){let a=(0,s.parseEventLogs)({eventName:t,abi:n,logs:e.logs})[0];return r(a?.args)}0&&(module.exports={parseTransaction,viemClientAsMiddleware});
1
+ "use strict";var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var u=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of m(n))!p.call(e,a)&&a!==t&&i(e,a,{get:()=>n[a],enumerable:!(r=c(n,a))||r.enumerable});return e};var f=e=>d(i({},"__esModule",{value:!0}),e);var C={};u(C,{parseTransaction:()=>b,viemClientAsMiddleware:()=>l});module.exports=f(C);var s=require("viem");function b(e,n,t,r){let a=(0,s.parseEventLogs)({eventName:t,abi:n,logs:e.logs})[0];return r(a?.args)}var o=require("viem/actions");function l(e){return n=>(0,o.simulateContract)(e,{abi:n.abi,functionName:n.functionName,args:n.args,address:n.address}).then(({request:t})=>(0,o.writeContract)(e,t).then(r=>(0,o.waitForTransactionReceipt)(e,{hash:r})))}0&&(module.exports={parseTransaction,viemClientAsMiddleware});
2
2
  //# sourceMappingURL=viem.cjs.map
package/dist/viem.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/viem/index.ts","../src/viem/viemClientAsMiddleware.ts","../src/viem/parseEvent.ts"],"sourcesContent":["export * from \"./viemClientAsMiddleware.js\";\nexport * from \"./parseEvent.js\";\n","import { ITransaction } from \"@evergonlabs/tmi-protocol-types/evm\";\nimport { Account, Chain, Client, Transport } from \"viem\";\nimport { simulateContract, waitForTransactionReceipt, writeContract } from \"viem/actions\";\n\nexport function viemClientAsMiddleware(client: Client<Transport, Chain, Account>) {\n return (tx: ITransaction) =>\n simulateContract(client, {\n abi: tx.abi,\n functionName: tx.functionName,\n args: tx.args,\n address: tx.address,\n }).then(({ request }) =>\n writeContract(client, request).then((hash) =>\n waitForTransactionReceipt(client, {\n hash,\n }),\n ),\n );\n}\n","import { Abi, ContractEventName, parseEventLogs, TransactionReceipt } from \"viem\";\n\nexport function parseTransaction<\n O,\n abi extends Abi = Abi,\n eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined,\n>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null {\n const result = parseEventLogs({\n eventName: eventName,\n abi: abi,\n logs: txReciept.logs,\n })[0];\n\n return getResult(result?.args);\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,2BAAAC,IAAA,eAAAC,EAAAJ,GCEA,IAAAK,EAA2E,wBAEpE,SAASC,EAAuBC,EAA2C,CAChF,OAAQC,MACN,oBAAiBD,EAAQ,CACvB,IAAKC,EAAG,IACR,aAAcA,EAAG,aACjB,KAAMA,EAAG,KACT,QAASA,EAAG,OACd,CAAC,EAAE,KAAK,CAAC,CAAE,QAAAC,CAAQ,OACjB,iBAAcF,EAAQE,CAAO,EAAE,KAAMC,MACnC,6BAA0BH,EAAQ,CAChC,KAAAG,CACF,CAAC,CACH,CACF,CACJ,CClBA,IAAAC,EAA2E,gBAEpE,SAASC,EAIdC,EAA+BC,EAAUC,EAAsBC,EAA8C,CAC7G,IAAMC,KAAS,kBAAe,CAC5B,UAAWF,EACX,IAAKD,EACL,KAAMD,EAAU,IAClB,CAAC,EAAE,CAAC,EAEJ,OAAOG,EAAUC,GAAQ,IAAI,CAC/B","names":["viem_exports","__export","parseTransaction","viemClientAsMiddleware","__toCommonJS","import_actions","viemClientAsMiddleware","client","tx","request","hash","import_viem","parseTransaction","txReciept","abi","eventName","getResult","result"]}
1
+ {"version":3,"sources":["../src/viem/index.ts","../src/viem/parseEvent.ts","../src/viem/viemClientAsMiddleware.ts"],"sourcesContent":["export * from \"./parseEvent.js\";\nexport * from \"./viemClientAsMiddleware.js\";\n","import { Abi, ContractEventName, parseEventLogs, TransactionReceipt } from \"viem\";\n\nexport function parseTransaction<\n O,\n abi extends Abi = Abi,\n eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined,\n>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null {\n const result = parseEventLogs({\n eventName: eventName,\n abi: abi,\n logs: txReciept.logs,\n })[0];\n\n return getResult(result?.args);\n}\n","import { Account, Chain, Client, Transport } from \"viem\";\nimport { simulateContract, waitForTransactionReceipt, writeContract } from \"viem/actions\";\nimport { ITransaction } from \"@evergonlabs/tmi-protocol-types/evm\";\n\nexport function viemClientAsMiddleware(client: Client<Transport, Chain, Account>) {\n return (tx: ITransaction) =>\n simulateContract(client, {\n abi: tx.abi,\n functionName: tx.functionName,\n args: tx.args,\n address: tx.address,\n }).then(({ request }) =>\n writeContract(client, request).then((hash) =>\n waitForTransactionReceipt(client, {\n hash,\n }),\n ),\n );\n}\n"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,2BAAAC,IAAA,eAAAC,EAAAJ,GCAA,IAAAK,EAA2E,gBAEpE,SAASC,EAIdC,EAA+BC,EAAUC,EAAsBC,EAA8C,CAC7G,IAAMC,KAAS,kBAAe,CAC5B,UAAWF,EACX,IAAKD,EACL,KAAMD,EAAU,IAClB,CAAC,EAAE,CAAC,EAEJ,OAAOG,EAAUC,GAAQ,IAAI,CAC/B,CCbA,IAAAC,EAA2E,wBAGpE,SAASC,EAAuBC,EAA2C,CAChF,OAAQC,MACN,oBAAiBD,EAAQ,CACvB,IAAKC,EAAG,IACR,aAAcA,EAAG,aACjB,KAAMA,EAAG,KACT,QAASA,EAAG,OACd,CAAC,EAAE,KAAK,CAAC,CAAE,QAAAC,CAAQ,OACjB,iBAAcF,EAAQE,CAAO,EAAE,KAAMC,MACnC,6BAA0BH,EAAQ,CAChC,KAAAG,CACF,CAAC,CACH,CACF,CACJ","names":["viem_exports","__export","parseTransaction","viemClientAsMiddleware","__toCommonJS","import_viem","parseTransaction","txReciept","abi","eventName","getResult","result","import_actions","viemClientAsMiddleware","client","tx","request","hash"]}
package/dist/viem.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as viem from 'viem';
2
- import { Client, Transport, Chain, Account, Abi, ContractEventName, TransactionReceipt } from 'viem';
2
+ import { Abi, ContractEventName, TransactionReceipt, Client, Transport, Chain, Account } from 'viem';
3
3
  import { ITransaction } from '@evergonlabs/tmi-protocol-types/evm';
4
4
 
5
- declare function viemClientAsMiddleware(client: Client<Transport, Chain, Account>): (tx: ITransaction) => Promise<viem.TransactionReceipt>;
6
-
7
5
  declare function parseTransaction<O, abi extends Abi = Abi, eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null;
8
6
 
7
+ declare function viemClientAsMiddleware(client: Client<Transport, Chain, Account>): (tx: ITransaction) => Promise<viem.TransactionReceipt>;
8
+
9
9
  export { parseTransaction, viemClientAsMiddleware };
package/dist/viem.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as viem from 'viem';
2
- import { Client, Transport, Chain, Account, Abi, ContractEventName, TransactionReceipt } from 'viem';
2
+ import { Abi, ContractEventName, TransactionReceipt, Client, Transport, Chain, Account } from 'viem';
3
3
  import { ITransaction } from '@evergonlabs/tmi-protocol-types/evm';
4
4
 
5
- declare function viemClientAsMiddleware(client: Client<Transport, Chain, Account>): (tx: ITransaction) => Promise<viem.TransactionReceipt>;
6
-
7
5
  declare function parseTransaction<O, abi extends Abi = Abi, eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null;
8
6
 
7
+ declare function viemClientAsMiddleware(client: Client<Transport, Chain, Account>): (tx: ITransaction) => Promise<viem.TransactionReceipt>;
8
+
9
9
  export { parseTransaction, viemClientAsMiddleware };
package/dist/viem.js CHANGED
@@ -1,2 +1,2 @@
1
- import{simulateContract as o,waitForTransactionReceipt as i,writeContract as s}from"viem/actions";function p(e){return n=>o(e,{abi:n.abi,functionName:n.functionName,args:n.args,address:n.address}).then(({request:t})=>s(e,t).then(a=>i(e,{hash:a})))}import{parseEventLogs as c}from"viem";function C(e,n,t,a){let r=c({eventName:t,abi:n,logs:e.logs})[0];return a(r?.args)}export{C as parseTransaction,p as viemClientAsMiddleware};
1
+ import{parseEventLogs as o}from"viem";function f(e,n,t,a){let r=o({eventName:t,abi:n,logs:e.logs})[0];return a(r?.args)}import{simulateContract as i,waitForTransactionReceipt as s,writeContract as c}from"viem/actions";function C(e){return n=>i(e,{abi:n.abi,functionName:n.functionName,args:n.args,address:n.address}).then(({request:t})=>c(e,t).then(a=>s(e,{hash:a})))}export{f as parseTransaction,C as viemClientAsMiddleware};
2
2
  //# sourceMappingURL=viem.js.map
package/dist/viem.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/viem/viemClientAsMiddleware.ts","../src/viem/parseEvent.ts"],"sourcesContent":["import { ITransaction } from \"@evergonlabs/tmi-protocol-types/evm\";\nimport { Account, Chain, Client, Transport } from \"viem\";\nimport { simulateContract, waitForTransactionReceipt, writeContract } from \"viem/actions\";\n\nexport function viemClientAsMiddleware(client: Client<Transport, Chain, Account>) {\n return (tx: ITransaction) =>\n simulateContract(client, {\n abi: tx.abi,\n functionName: tx.functionName,\n args: tx.args,\n address: tx.address,\n }).then(({ request }) =>\n writeContract(client, request).then((hash) =>\n waitForTransactionReceipt(client, {\n hash,\n }),\n ),\n );\n}\n","import { Abi, ContractEventName, parseEventLogs, TransactionReceipt } from \"viem\";\n\nexport function parseTransaction<\n O,\n abi extends Abi = Abi,\n eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined,\n>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null {\n const result = parseEventLogs({\n eventName: eventName,\n abi: abi,\n logs: txReciept.logs,\n })[0];\n\n return getResult(result?.args);\n}\n"],"mappings":"AAEA,OAAS,oBAAAA,EAAkB,6BAAAC,EAA2B,iBAAAC,MAAqB,eAEpE,SAASC,EAAuBC,EAA2C,CAChF,OAAQC,GACNL,EAAiBI,EAAQ,CACvB,IAAKC,EAAG,IACR,aAAcA,EAAG,aACjB,KAAMA,EAAG,KACT,QAASA,EAAG,OACd,CAAC,EAAE,KAAK,CAAC,CAAE,QAAAC,CAAQ,IACjBJ,EAAcE,EAAQE,CAAO,EAAE,KAAMC,GACnCN,EAA0BG,EAAQ,CAChC,KAAAG,CACF,CAAC,CACH,CACF,CACJ,CClBA,OAAiC,kBAAAC,MAA0C,OAEpE,SAASC,EAIdC,EAA+BC,EAAUC,EAAsBC,EAA8C,CAC7G,IAAMC,EAASN,EAAe,CAC5B,UAAWI,EACX,IAAKD,EACL,KAAMD,EAAU,IAClB,CAAC,EAAE,CAAC,EAEJ,OAAOG,EAAUC,GAAQ,IAAI,CAC/B","names":["simulateContract","waitForTransactionReceipt","writeContract","viemClientAsMiddleware","client","tx","request","hash","parseEventLogs","parseTransaction","txReciept","abi","eventName","getResult","result"]}
1
+ {"version":3,"sources":["../src/viem/parseEvent.ts","../src/viem/viemClientAsMiddleware.ts"],"sourcesContent":["import { Abi, ContractEventName, parseEventLogs, TransactionReceipt } from \"viem\";\n\nexport function parseTransaction<\n O,\n abi extends Abi = Abi,\n eventName extends ContractEventName<abi> | ContractEventName<abi>[] | undefined = undefined,\n>(txReciept: TransactionReceipt, abi: Abi, eventName: eventName, getResult: (args: any) => O | null): O | null {\n const result = parseEventLogs({\n eventName: eventName,\n abi: abi,\n logs: txReciept.logs,\n })[0];\n\n return getResult(result?.args);\n}\n","import { Account, Chain, Client, Transport } from \"viem\";\nimport { simulateContract, waitForTransactionReceipt, writeContract } from \"viem/actions\";\nimport { ITransaction } from \"@evergonlabs/tmi-protocol-types/evm\";\n\nexport function viemClientAsMiddleware(client: Client<Transport, Chain, Account>) {\n return (tx: ITransaction) =>\n simulateContract(client, {\n abi: tx.abi,\n functionName: tx.functionName,\n args: tx.args,\n address: tx.address,\n }).then(({ request }) =>\n writeContract(client, request).then((hash) =>\n waitForTransactionReceipt(client, {\n hash,\n }),\n ),\n );\n}\n"],"mappings":"AAAA,OAAiC,kBAAAA,MAA0C,OAEpE,SAASC,EAIdC,EAA+BC,EAAUC,EAAsBC,EAA8C,CAC7G,IAAMC,EAASN,EAAe,CAC5B,UAAWI,EACX,IAAKD,EACL,KAAMD,EAAU,IAClB,CAAC,EAAE,CAAC,EAEJ,OAAOG,EAAUC,GAAQ,IAAI,CAC/B,CCbA,OAAS,oBAAAC,EAAkB,6BAAAC,EAA2B,iBAAAC,MAAqB,eAGpE,SAASC,EAAuBC,EAA2C,CAChF,OAAQC,GACNL,EAAiBI,EAAQ,CACvB,IAAKC,EAAG,IACR,aAAcA,EAAG,aACjB,KAAMA,EAAG,KACT,QAASA,EAAG,OACd,CAAC,EAAE,KAAK,CAAC,CAAE,QAAAC,CAAQ,IACjBJ,EAAcE,EAAQE,CAAO,EAAE,KAAMC,GACnCN,EAA0BG,EAAQ,CAChC,KAAAG,CACF,CAAC,CACH,CACF,CACJ","names":["parseEventLogs","parseTransaction","txReciept","abi","eventName","getResult","result","simulateContract","waitForTransactionReceipt","writeContract","viemClientAsMiddleware","client","tx","request","hash"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evergonlabs/tmi-protocol-utils",
3
- "version": "0.2.0",
3
+ "version": "0.7.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -29,12 +29,12 @@
29
29
  "dist"
30
30
  ],
31
31
  "dependencies": {
32
- "@evergonlabs/tmi-protocol-types": "0.2.0"
32
+ "@evergonlabs/tmi-protocol-types": "0.7.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@evergonlabs/tmi-eslint-config": "^0.1.3",
36
- "@evergonlabs/tmi-typescript-config": "^0.2.0",
37
- "eslint": "^9.21.0",
35
+ "@evergonlabs/tmi-eslint-config": "0.3.0",
36
+ "@evergonlabs/tmi-typescript-config": "0.2.1",
37
+ "eslint": "^9.39.2",
38
38
  "jiti": "^2.4.2",
39
39
  "npm-run-all": "^4.1.5",
40
40
  "rimraf": "^6.0.1",
@@ -45,7 +45,7 @@
45
45
  "@evergonlabs/internal": "0.0.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "type-fest": "^4.33.0",
48
+ "type-fest": "^5.0.0",
49
49
  "viem": "^2.0.0"
50
50
  },
51
51
  "publishConfig": {
@@ -58,6 +58,7 @@
58
58
  "clean": "rimraf ./dist",
59
59
  "dev": "tsx ./scripts/compile-dev.ts",
60
60
  "lint": "eslint .",
61
+ "lint:fix": "eslint . --fix",
61
62
  "test": "vitest run"
62
63
  }
63
64
  }