await-me 1.0.3 → 1.0.5

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.cjs ADDED
@@ -0,0 +1,2 @@
1
+ var L=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var _=(r,e)=>{for(var n in e)L(r,n,{get:e[n],enumerable:!0})},A=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of m(e))!O.call(r,c)&&c!==n&&L(r,c,{get:()=>e[c],enumerable:!(o=Y(e,c))||o.enumerable});return r};var g=r=>A(L({},"__esModule",{value:!0}),r);var i=(r,e,n)=>new Promise((o,c)=>{var E=s=>{try{u(n.next(s))}catch(y){c(y)}},a=s=>{try{u(n.throw(s))}catch(y){c(y)}},u=s=>s.done?o(s.value):Promise.resolve(s.value).then(E,a);u((n=n.apply(r,e)).next())});var h={};_(h,{RETURN_STYLES:()=>t,STYLES:()=>t,WaitForMe:()=>x,createAsyncHandler:()=>l,isSuccess:()=>d,toResult:()=>S,valueOf:()=>T});module.exports=g(h);var t={FALSE_STYLE:"false-style",TRUE_STYLE:"true-style",GO_STYLE:"goStyle",ERROR_STYLE:"errorStyle",ONLY_ERROR:"only-error",BOOLEAN:"boolean"};function l(r={}){let{returnStyle:e=t.GO_STYLE,conditionalHandlerChain:n=[],defaultHandler:o=E=>{throw E}}=r;return function(E){return i(this,null,function*(){try{let a=yield E;switch(e){case t.GO_STYLE:return[null,a];case t.ONLY_ERROR:return 0;case t.BOOLEAN:return!0;default:return a}}catch(a){let u=!1;for(let{ifTrue:s,doIt:y}of n)if(s(a)){try{y(a)}catch(H){}u=!0;break}switch(e){case t.GO_STYLE:return[a,null];case t.ONLY_ERROR:return 1;case t.BOOLEAN:return!1;case t.FALSE_STYLE:case t.TRUE_STYLE:if(!u)try{o(a)}catch(s){}return e!==t.FALSE_STYLE;case t.ERROR_STYLE:return a;default:if(!u)return o(a);throw a}}})}}var p=l({returnStyle:t.GO_STYLE});function R(r,e,n){if(r){if(typeof r=="object"&&typeof r.fn=="function"){let o=Array.isArray(r.params)?r.params:[];r.fn(...o);return}typeof r=="string"&&console[e](r,n||"")}}function f(r,e,n){if(r){if(typeof r=="string"){e==="error"&&R(r,"error",n);return}e==="error"&&r.error?R(r.error,"error",n):e==="success"&&r.success&&R(r.success,"log")}}function T(r,e){return i(this,null,function*(){let[n,o]=yield p(r);return n?(f(e,"error",n),!1):(f(e,"success"),o)})}function d(r,e){return i(this,null,function*(){let[n]=yield p(r);return n?(f(e,"error",n),!1):(f(e,"success"),!0)})}function S(r,e){return i(this,null,function*(){let[n,o]=yield p(r);return n?(f(e,"error",n),{success:!1,data:null,error:n}):(f(e,"success"),{success:!0,data:o,error:null})})}var x={create:l,valueOf:T,isSuccess:d,toResult:S,STYLES:t};0&&(module.exports={RETURN_STYLES,STYLES,WaitForMe,createAsyncHandler,isSuccess,toResult,valueOf});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../../await-me-ts/src/core.ts","../../await-me-ts/src/derivatives/index.ts"],"sourcesContent":["import { \n createAsyncHandler, \n RETURN_STYLES, \n valueOf, \n isSuccess, \n toResult \n} from 'await-me-ts';\n\n/**\n * Symmetric Reflection: \n * We export the exact functions from the core engine.\n */\nexport {\n createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n RETURN_STYLES as STYLES // Alias for convenience, while keeping core name\n};\n\n/**\n * Optional: The Barrel Namespace\n * Provides the same symmetry for those who prefer dot-notation.\n */\nexport const WaitForMe = {\n create: createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n STYLES: RETURN_STYLES\n} as const;\n\n// Re-export all types from core for full IDE support\nexport * from 'await-me-ts';\n","export const RETURN_STYLES = {\n FALSE_STYLE: 'false-style',\n TRUE_STYLE: 'true-style',\n GO_STYLE: 'goStyle',\n ERROR_STYLE: 'errorStyle',\n ONLY_ERROR: 'only-error',\n BOOLEAN: 'boolean',\n} as const;\n\nexport type ReturnStyle = typeof RETURN_STYLES[keyof typeof RETURN_STYLES];\n\n// New: Explicit interface to ensure the returned function is generic\nexport interface AsyncWrappedFunction {\n <T>(promise: Promise<T>): Promise<any>;\n}\n\nexport interface ConditionalHandler<T = any, E = any> {\n ifTrue: (error: E) => boolean;\n doIt: (error: E) => void;\n}\n\nexport interface AsyncHandlerConfig<T = any, E = any> {\n returnStyle?: ReturnStyle;\n conditionalHandlerChain?: ConditionalHandler<T, E>[];\n defaultHandler?: (error: E) => any;\n}\n\nexport function createAsyncHandler<E = any>(config: AsyncHandlerConfig<any, E> = {}): AsyncWrappedFunction {\n const {\n returnStyle = RETURN_STYLES.GO_STYLE,\n conditionalHandlerChain = [],\n defaultHandler = (e: E) => { throw e; }\n } = config;\n\n // The implementation now strictly follows the generic interface\n const handler: AsyncWrappedFunction = async function<T>(promise: Promise<T>): Promise<any> {\n try {\n const data = await promise;\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [null, data];\n case RETURN_STYLES.ONLY_ERROR: return 0;\n case RETURN_STYLES.BOOLEAN: return true;\n default: return data;\n }\n } catch (error: any) {\n let executedConditional = false;\n for (const { ifTrue, doIt } of conditionalHandlerChain) {\n if (ifTrue(error)) {\n try { doIt(error); } catch (hErr) { }\n executedConditional = true;\n break;\n }\n }\n\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [error, null];\n case RETURN_STYLES.ONLY_ERROR: return 1;\n case RETURN_STYLES.BOOLEAN: return false;\n case RETURN_STYLES.FALSE_STYLE:\n case RETURN_STYLES.TRUE_STYLE:\n if (!executedConditional) {\n try { defaultHandler(error); } catch (hErr) { }\n }\n return returnStyle === RETURN_STYLES.FALSE_STYLE ? false : true;\n case RETURN_STYLES.ERROR_STYLE: return error;\n default:\n if (!executedConditional) return defaultHandler(error);\n throw error;\n }\n }\n };\n\n return handler;\n}\n","import { createAsyncHandler, RETURN_STYLES } from '../core.ts';\n\n// Internal handler typed for Go-style [Error, Data]\nconst internalHandler = createAsyncHandler({\n returnStyle: RETURN_STYLES.GO_STYLE,\n});\n\ntype LogEntry = string | { fn: (...args: any[]) => void; params?: any[] };\ntype LogConfig = string | { error?: LogEntry; success?: LogEntry };\n\nfunction executeAction(entry: LogEntry | undefined, method: 'error' | 'log', payload?: any) {\n if (!entry) return;\n if (typeof entry === 'object' && typeof entry.fn === 'function') {\n const params = Array.isArray(entry.params) ? entry.params : [];\n entry.fn(...params);\n return;\n }\n if (typeof entry === 'string') console[method](entry, payload || '');\n}\n\nfunction handleLog(config: LogConfig | undefined, type: 'error' | 'success', payload?: any) {\n if (!config) return;\n if (typeof config === 'string') {\n if (type === 'error') executeAction(config, 'error', payload);\n return;\n }\n if (type === 'error' && config.error) executeAction(config.error, 'error', payload);\n else if (type === 'success' && config.success) executeAction(config.success, 'log');\n}\n\n/**\n * Returns the data <T> or false on failure.\n */\nexport async function valueOf<T>(promise: Promise<T>, config?: LogConfig): Promise<T | false> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return data as T;\n}\n\n/**\n * Returns true if the operation succeeded, false otherwise.\n */\nexport async function isSuccess(promise: Promise<any>, config?: LogConfig): Promise<boolean> {\n const [err] = await internalHandler(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return true;\n}\n\n/**\n * Returns an object { success, data, error }.\n * Safe for APIs that might return literal 'false' or 'null' as valid data.\n */\nexport async function toResult<T, E = any>(promise: Promise<T>, config?: LogConfig): Promise<{ success: boolean; data: T | null; error: E | null }> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) {\n handleLog(config, 'error', err);\n return { success: false, data: null, error: err as E };\n }\n handleLog(config, 'success');\n return { success: true, data: data as T, error: null };\n}\n"],"mappings":"ymBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,WAAAA,EAAA,cAAAC,EAAA,uBAAAC,EAAA,cAAAC,EAAA,aAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAR,GCAO,IAAMS,EAAgB,CAC3B,YAAa,cACb,WAAY,aACZ,SAAU,UACV,YAAa,aACb,WAAY,aACZ,QAAS,SACX,EAoBO,SAASC,EAA4BC,EAAqC,CAAC,EAAyB,CACzG,GAAM,CACJ,YAAAC,EAAcH,EAAc,SAC5B,wBAAAI,EAA0B,CAAC,EAC3B,eAAAC,EAAkBC,GAAS,CAAE,MAAMA,CAAG,CACxC,EAAIJ,EAwCJ,OArCsC,SAAkBK,EAAmC,QAAAC,EAAA,sBACzF,GAAI,CACF,IAAMC,EAAO,MAAMF,EACnB,OAAQJ,EAAa,CACnB,KAAKH,EAAc,SAAU,MAAO,CAAC,KAAMS,CAAI,EAC/C,KAAKT,EAAc,WAAY,MAAO,GACtC,KAAKA,EAAc,QAAS,MAAO,GACnC,QAAS,OAAOS,CAClB,CACF,OAASC,EAAY,CACnB,IAAIC,EAAsB,GAC1B,OAAW,CAAE,OAAAC,EAAQ,KAAAC,CAAK,IAAKT,EAC7B,GAAIQ,EAAOF,CAAK,EAAG,CACjB,GAAI,CAAEG,EAAKH,CAAK,CAAG,OAASI,EAAM,CAAE,CACpCH,EAAsB,GACtB,KACF,CAGF,OAAQR,EAAa,CACnB,KAAKH,EAAc,SAAU,MAAO,CAACU,EAAO,IAAI,EAChD,KAAKV,EAAc,WAAY,MAAO,GACtC,KAAKA,EAAc,QAAS,MAAO,GACnC,KAAKA,EAAc,YACnB,KAAKA,EAAc,WACjB,GAAI,CAACW,EACH,GAAI,CAAEN,EAAeK,CAAK,CAAG,OAASI,EAAM,CAAE,CAEhD,OAAOX,IAAgBH,EAAc,YACvC,KAAKA,EAAc,YAAa,OAAOU,EACvC,QACE,GAAI,CAACC,EAAqB,OAAON,EAAeK,CAAK,EACrD,MAAMA,CACV,CACF,CACF,GAGF,CCtEA,IAAMK,EAAkBC,EAAmB,CACzC,YAAaC,EAAc,QAC7B,CAAC,EAKD,SAASC,EAAcC,EAA6BC,EAAyBC,EAAe,CAC1F,GAAKF,EACL,IAAI,OAAOA,GAAU,UAAY,OAAOA,EAAM,IAAO,WAAY,CAC/D,IAAMG,EAAS,MAAM,QAAQH,EAAM,MAAM,EAAIA,EAAM,OAAS,CAAC,EAC7DA,EAAM,GAAG,GAAGG,CAAM,EAClB,MACF,CACI,OAAOH,GAAU,UAAU,QAAQC,CAAM,EAAED,EAAOE,GAAW,EAAE,EACrE,CAEA,SAASE,EAAUC,EAA+BC,EAA2BJ,EAAe,CAC1F,GAAKG,EACL,IAAI,OAAOA,GAAW,SAAU,CAC1BC,IAAS,SAASP,EAAcM,EAAQ,QAASH,CAAO,EAC5D,MACF,CACII,IAAS,SAAWD,EAAO,MAAON,EAAcM,EAAO,MAAO,QAASH,CAAO,EACzEI,IAAS,WAAaD,EAAO,SAASN,EAAcM,EAAO,QAAS,KAAK,EACpF,CAKA,SAAsBE,EAAWC,EAAqBH,EAAwC,QAAAI,EAAA,sBAC5F,GAAM,CAACC,EAAKC,CAAI,EAAI,MAAMf,EAAmBY,CAAO,EACpD,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,KAETN,EAAUC,EAAQ,SAAS,EACpBM,EACT,GAKA,SAAsBC,EAAUJ,EAAuBH,EAAsC,QAAAI,EAAA,sBAC3F,GAAM,CAACC,CAAG,EAAI,MAAMd,EAAgBY,CAAO,EAC3C,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,KAETN,EAAUC,EAAQ,SAAS,EACpB,GACT,GAMA,SAAsBQ,EAAqBL,EAAqBH,EAAoF,QAAAI,EAAA,sBAClJ,GAAM,CAACC,EAAKC,CAAI,EAAI,MAAMf,EAAmBY,CAAO,EACpD,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,CAAE,QAAS,GAAO,KAAM,KAAM,MAAOA,CAAS,IAEvDN,EAAUC,EAAQ,SAAS,EACpB,CAAE,QAAS,GAAM,KAAMM,EAAW,MAAO,IAAK,EACvD,GF5CO,IAAMG,EAAY,CACvB,OAAQC,EACR,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,OAAQC,CACV","names":["src_exports","__export","RETURN_STYLES","WaitForMe","createAsyncHandler","isSuccess","toResult","valueOf","__toCommonJS","RETURN_STYLES","createAsyncHandler","config","returnStyle","conditionalHandlerChain","defaultHandler","e","promise","__async","data","error","executedConditional","ifTrue","doIt","hErr","internalHandler","createAsyncHandler","RETURN_STYLES","executeAction","entry","method","payload","params","handleLog","config","type","valueOf","promise","__async","err","data","isSuccess","toResult","WaitForMe","createAsyncHandler","valueOf","isSuccess","toResult","RETURN_STYLES"]}
@@ -0,0 +1,24 @@
1
+ import { createAsyncHandler, valueOf, isSuccess, toResult } from 'await-me-ts';
2
+ export * from 'await-me-ts';
3
+ export { RETURN_STYLES as STYLES, createAsyncHandler, isSuccess, toResult, valueOf } from 'await-me-ts';
4
+
5
+ /**
6
+ * Optional: The Barrel Namespace
7
+ * Provides the same symmetry for those who prefer dot-notation.
8
+ */
9
+ declare const WaitForMe: {
10
+ readonly create: typeof createAsyncHandler;
11
+ readonly valueOf: typeof valueOf;
12
+ readonly isSuccess: typeof isSuccess;
13
+ readonly toResult: typeof toResult;
14
+ readonly STYLES: {
15
+ readonly FALSE_STYLE: "false-style";
16
+ readonly TRUE_STYLE: "true-style";
17
+ readonly GO_STYLE: "goStyle";
18
+ readonly ERROR_STYLE: "errorStyle";
19
+ readonly ONLY_ERROR: "only-error";
20
+ readonly BOOLEAN: "boolean";
21
+ };
22
+ };
23
+
24
+ export { WaitForMe };
@@ -0,0 +1,24 @@
1
+ import { createAsyncHandler, valueOf, isSuccess, toResult } from 'await-me-ts';
2
+ export * from 'await-me-ts';
3
+ export { RETURN_STYLES as STYLES, createAsyncHandler, isSuccess, toResult, valueOf } from 'await-me-ts';
4
+
5
+ /**
6
+ * Optional: The Barrel Namespace
7
+ * Provides the same symmetry for those who prefer dot-notation.
8
+ */
9
+ declare const WaitForMe: {
10
+ readonly create: typeof createAsyncHandler;
11
+ readonly valueOf: typeof valueOf;
12
+ readonly isSuccess: typeof isSuccess;
13
+ readonly toResult: typeof toResult;
14
+ readonly STYLES: {
15
+ readonly FALSE_STYLE: "false-style";
16
+ readonly TRUE_STYLE: "true-style";
17
+ readonly GO_STYLE: "goStyle";
18
+ readonly ERROR_STYLE: "errorStyle";
19
+ readonly ONLY_ERROR: "only-error";
20
+ readonly BOOLEAN: "boolean";
21
+ };
22
+ };
23
+
24
+ export { WaitForMe };
@@ -0,0 +1,2 @@
1
+ var WaitForMeJS=(()=>{var L=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var _=(r,e)=>{for(var n in e)L(r,n,{get:e[n],enumerable:!0})},A=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of m(e))!O.call(r,c)&&c!==n&&L(r,c,{get:()=>e[c],enumerable:!(o=Y(e,c))||o.enumerable});return r};var g=r=>A(L({},"__esModule",{value:!0}),r);var i=(r,e,n)=>new Promise((o,c)=>{var E=s=>{try{u(n.next(s))}catch(y){c(y)}},a=s=>{try{u(n.throw(s))}catch(y){c(y)}},u=s=>s.done?o(s.value):Promise.resolve(s.value).then(E,a);u((n=n.apply(r,e)).next())});var h={};_(h,{RETURN_STYLES:()=>t,STYLES:()=>t,WaitForMe:()=>x,createAsyncHandler:()=>l,isSuccess:()=>d,toResult:()=>S,valueOf:()=>T});var t={FALSE_STYLE:"false-style",TRUE_STYLE:"true-style",GO_STYLE:"goStyle",ERROR_STYLE:"errorStyle",ONLY_ERROR:"only-error",BOOLEAN:"boolean"};function l(r={}){let{returnStyle:e=t.GO_STYLE,conditionalHandlerChain:n=[],defaultHandler:o=E=>{throw E}}=r;return function(E){return i(this,null,function*(){try{let a=yield E;switch(e){case t.GO_STYLE:return[null,a];case t.ONLY_ERROR:return 0;case t.BOOLEAN:return!0;default:return a}}catch(a){let u=!1;for(let{ifTrue:s,doIt:y}of n)if(s(a)){try{y(a)}catch(H){}u=!0;break}switch(e){case t.GO_STYLE:return[a,null];case t.ONLY_ERROR:return 1;case t.BOOLEAN:return!1;case t.FALSE_STYLE:case t.TRUE_STYLE:if(!u)try{o(a)}catch(s){}return e!==t.FALSE_STYLE;case t.ERROR_STYLE:return a;default:if(!u)return o(a);throw a}}})}}var p=l({returnStyle:t.GO_STYLE});function R(r,e,n){if(r){if(typeof r=="object"&&typeof r.fn=="function"){let o=Array.isArray(r.params)?r.params:[];r.fn(...o);return}typeof r=="string"&&console[e](r,n||"")}}function f(r,e,n){if(r){if(typeof r=="string"){e==="error"&&R(r,"error",n);return}e==="error"&&r.error?R(r.error,"error",n):e==="success"&&r.success&&R(r.success,"log")}}function T(r,e){return i(this,null,function*(){let[n,o]=yield p(r);return n?(f(e,"error",n),!1):(f(e,"success"),o)})}function d(r,e){return i(this,null,function*(){let[n]=yield p(r);return n?(f(e,"error",n),!1):(f(e,"success"),!0)})}function S(r,e){return i(this,null,function*(){let[n,o]=yield p(r);return n?(f(e,"error",n),{success:!1,data:null,error:n}):(f(e,"success"),{success:!0,data:o,error:null})})}var x={create:l,valueOf:T,isSuccess:d,toResult:S,STYLES:t};return g(h);})();
2
+ //# sourceMappingURL=index.global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../../await-me-ts/src/core.ts","../../await-me-ts/src/derivatives/index.ts"],"sourcesContent":["import { \n createAsyncHandler, \n RETURN_STYLES, \n valueOf, \n isSuccess, \n toResult \n} from 'await-me-ts';\n\n/**\n * Symmetric Reflection: \n * We export the exact functions from the core engine.\n */\nexport {\n createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n RETURN_STYLES as STYLES // Alias for convenience, while keeping core name\n};\n\n/**\n * Optional: The Barrel Namespace\n * Provides the same symmetry for those who prefer dot-notation.\n */\nexport const WaitForMe = {\n create: createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n STYLES: RETURN_STYLES\n} as const;\n\n// Re-export all types from core for full IDE support\nexport * from 'await-me-ts';\n","export const RETURN_STYLES = {\n FALSE_STYLE: 'false-style',\n TRUE_STYLE: 'true-style',\n GO_STYLE: 'goStyle',\n ERROR_STYLE: 'errorStyle',\n ONLY_ERROR: 'only-error',\n BOOLEAN: 'boolean',\n} as const;\n\nexport type ReturnStyle = typeof RETURN_STYLES[keyof typeof RETURN_STYLES];\n\n// New: Explicit interface to ensure the returned function is generic\nexport interface AsyncWrappedFunction {\n <T>(promise: Promise<T>): Promise<any>;\n}\n\nexport interface ConditionalHandler<T = any, E = any> {\n ifTrue: (error: E) => boolean;\n doIt: (error: E) => void;\n}\n\nexport interface AsyncHandlerConfig<T = any, E = any> {\n returnStyle?: ReturnStyle;\n conditionalHandlerChain?: ConditionalHandler<T, E>[];\n defaultHandler?: (error: E) => any;\n}\n\nexport function createAsyncHandler<E = any>(config: AsyncHandlerConfig<any, E> = {}): AsyncWrappedFunction {\n const {\n returnStyle = RETURN_STYLES.GO_STYLE,\n conditionalHandlerChain = [],\n defaultHandler = (e: E) => { throw e; }\n } = config;\n\n // The implementation now strictly follows the generic interface\n const handler: AsyncWrappedFunction = async function<T>(promise: Promise<T>): Promise<any> {\n try {\n const data = await promise;\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [null, data];\n case RETURN_STYLES.ONLY_ERROR: return 0;\n case RETURN_STYLES.BOOLEAN: return true;\n default: return data;\n }\n } catch (error: any) {\n let executedConditional = false;\n for (const { ifTrue, doIt } of conditionalHandlerChain) {\n if (ifTrue(error)) {\n try { doIt(error); } catch (hErr) { }\n executedConditional = true;\n break;\n }\n }\n\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [error, null];\n case RETURN_STYLES.ONLY_ERROR: return 1;\n case RETURN_STYLES.BOOLEAN: return false;\n case RETURN_STYLES.FALSE_STYLE:\n case RETURN_STYLES.TRUE_STYLE:\n if (!executedConditional) {\n try { defaultHandler(error); } catch (hErr) { }\n }\n return returnStyle === RETURN_STYLES.FALSE_STYLE ? false : true;\n case RETURN_STYLES.ERROR_STYLE: return error;\n default:\n if (!executedConditional) return defaultHandler(error);\n throw error;\n }\n }\n };\n\n return handler;\n}\n","import { createAsyncHandler, RETURN_STYLES } from '../core.ts';\n\n// Internal handler typed for Go-style [Error, Data]\nconst internalHandler = createAsyncHandler({\n returnStyle: RETURN_STYLES.GO_STYLE,\n});\n\ntype LogEntry = string | { fn: (...args: any[]) => void; params?: any[] };\ntype LogConfig = string | { error?: LogEntry; success?: LogEntry };\n\nfunction executeAction(entry: LogEntry | undefined, method: 'error' | 'log', payload?: any) {\n if (!entry) return;\n if (typeof entry === 'object' && typeof entry.fn === 'function') {\n const params = Array.isArray(entry.params) ? entry.params : [];\n entry.fn(...params);\n return;\n }\n if (typeof entry === 'string') console[method](entry, payload || '');\n}\n\nfunction handleLog(config: LogConfig | undefined, type: 'error' | 'success', payload?: any) {\n if (!config) return;\n if (typeof config === 'string') {\n if (type === 'error') executeAction(config, 'error', payload);\n return;\n }\n if (type === 'error' && config.error) executeAction(config.error, 'error', payload);\n else if (type === 'success' && config.success) executeAction(config.success, 'log');\n}\n\n/**\n * Returns the data <T> or false on failure.\n */\nexport async function valueOf<T>(promise: Promise<T>, config?: LogConfig): Promise<T | false> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return data as T;\n}\n\n/**\n * Returns true if the operation succeeded, false otherwise.\n */\nexport async function isSuccess(promise: Promise<any>, config?: LogConfig): Promise<boolean> {\n const [err] = await internalHandler(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return true;\n}\n\n/**\n * Returns an object { success, data, error }.\n * Safe for APIs that might return literal 'false' or 'null' as valid data.\n */\nexport async function toResult<T, E = any>(promise: Promise<T>, config?: LogConfig): Promise<{ success: boolean; data: T | null; error: E | null }> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) {\n handleLog(config, 'error', err);\n return { success: false, data: null, error: err as E };\n }\n handleLog(config, 'success');\n return { success: true, data: data as T, error: null };\n}\n"],"mappings":"+nBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,WAAAA,EAAA,cAAAC,EAAA,uBAAAC,EAAA,cAAAC,EAAA,aAAAC,EAAA,YAAAC,ICAO,IAAMC,EAAgB,CAC3B,YAAa,cACb,WAAY,aACZ,SAAU,UACV,YAAa,aACb,WAAY,aACZ,QAAS,SACX,EAoBO,SAASC,EAA4BC,EAAqC,CAAC,EAAyB,CACzG,GAAM,CACJ,YAAAC,EAAcH,EAAc,SAC5B,wBAAAI,EAA0B,CAAC,EAC3B,eAAAC,EAAkBC,GAAS,CAAE,MAAMA,CAAG,CACxC,EAAIJ,EAwCJ,OArCsC,SAAkBK,EAAmC,QAAAC,EAAA,sBACzF,GAAI,CACF,IAAMC,EAAO,MAAMF,EACnB,OAAQJ,EAAa,CACnB,KAAKH,EAAc,SAAU,MAAO,CAAC,KAAMS,CAAI,EAC/C,KAAKT,EAAc,WAAY,MAAO,GACtC,KAAKA,EAAc,QAAS,MAAO,GACnC,QAAS,OAAOS,CAClB,CACF,OAASC,EAAY,CACnB,IAAIC,EAAsB,GAC1B,OAAW,CAAE,OAAAC,EAAQ,KAAAC,CAAK,IAAKT,EAC7B,GAAIQ,EAAOF,CAAK,EAAG,CACjB,GAAI,CAAEG,EAAKH,CAAK,CAAG,OAASI,EAAM,CAAE,CACpCH,EAAsB,GACtB,KACF,CAGF,OAAQR,EAAa,CACnB,KAAKH,EAAc,SAAU,MAAO,CAACU,EAAO,IAAI,EAChD,KAAKV,EAAc,WAAY,MAAO,GACtC,KAAKA,EAAc,QAAS,MAAO,GACnC,KAAKA,EAAc,YACnB,KAAKA,EAAc,WACjB,GAAI,CAACW,EACH,GAAI,CAAEN,EAAeK,CAAK,CAAG,OAASI,EAAM,CAAE,CAEhD,OAAOX,IAAgBH,EAAc,YACvC,KAAKA,EAAc,YAAa,OAAOU,EACvC,QACE,GAAI,CAACC,EAAqB,OAAON,EAAeK,CAAK,EACrD,MAAMA,CACV,CACF,CACF,GAGF,CCtEA,IAAMK,EAAkBC,EAAmB,CACzC,YAAaC,EAAc,QAC7B,CAAC,EAKD,SAASC,EAAcC,EAA6BC,EAAyBC,EAAe,CAC1F,GAAKF,EACL,IAAI,OAAOA,GAAU,UAAY,OAAOA,EAAM,IAAO,WAAY,CAC/D,IAAMG,EAAS,MAAM,QAAQH,EAAM,MAAM,EAAIA,EAAM,OAAS,CAAC,EAC7DA,EAAM,GAAG,GAAGG,CAAM,EAClB,MACF,CACI,OAAOH,GAAU,UAAU,QAAQC,CAAM,EAAED,EAAOE,GAAW,EAAE,EACrE,CAEA,SAASE,EAAUC,EAA+BC,EAA2BJ,EAAe,CAC1F,GAAKG,EACL,IAAI,OAAOA,GAAW,SAAU,CAC1BC,IAAS,SAASP,EAAcM,EAAQ,QAASH,CAAO,EAC5D,MACF,CACII,IAAS,SAAWD,EAAO,MAAON,EAAcM,EAAO,MAAO,QAASH,CAAO,EACzEI,IAAS,WAAaD,EAAO,SAASN,EAAcM,EAAO,QAAS,KAAK,EACpF,CAKA,SAAsBE,EAAWC,EAAqBH,EAAwC,QAAAI,EAAA,sBAC5F,GAAM,CAACC,EAAKC,CAAI,EAAI,MAAMf,EAAmBY,CAAO,EACpD,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,KAETN,EAAUC,EAAQ,SAAS,EACpBM,EACT,GAKA,SAAsBC,EAAUJ,EAAuBH,EAAsC,QAAAI,EAAA,sBAC3F,GAAM,CAACC,CAAG,EAAI,MAAMd,EAAgBY,CAAO,EAC3C,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,KAETN,EAAUC,EAAQ,SAAS,EACpB,GACT,GAMA,SAAsBQ,EAAqBL,EAAqBH,EAAoF,QAAAI,EAAA,sBAClJ,GAAM,CAACC,EAAKC,CAAI,EAAI,MAAMf,EAAmBY,CAAO,EACpD,OAAIE,GACFN,EAAUC,EAAQ,QAASK,CAAG,EACvB,CAAE,QAAS,GAAO,KAAM,KAAM,MAAOA,CAAS,IAEvDN,EAAUC,EAAQ,SAAS,EACpB,CAAE,QAAS,GAAM,KAAMM,EAAW,MAAO,IAAK,EACvD,GF5CO,IAAMG,EAAY,CACvB,OAAQC,EACR,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,OAAQC,CACV","names":["src_exports","__export","RETURN_STYLES","WaitForMe","createAsyncHandler","isSuccess","toResult","valueOf","RETURN_STYLES","createAsyncHandler","config","returnStyle","conditionalHandlerChain","defaultHandler","e","promise","__async","data","error","executedConditional","ifTrue","doIt","hErr","internalHandler","createAsyncHandler","RETURN_STYLES","executeAction","entry","method","payload","params","handleLog","config","type","valueOf","promise","__async","err","data","isSuccess","toResult","WaitForMe","createAsyncHandler","valueOf","isSuccess","toResult","RETURN_STYLES"]}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var u=(r,n,e)=>new Promise((a,y)=>{var l=s=>{try{c(e.next(s))}catch(f){y(f)}},o=s=>{try{c(e.throw(s))}catch(f){y(f)}},c=s=>s.done?a(s.value):Promise.resolve(s.value).then(l,o);c((e=e.apply(r,n)).next())});var t={FALSE_STYLE:"false-style",TRUE_STYLE:"true-style",GO_STYLE:"goStyle",ERROR_STYLE:"errorStyle",ONLY_ERROR:"only-error",BOOLEAN:"boolean"};function E(r={}){let{returnStyle:n=t.GO_STYLE,conditionalHandlerChain:e=[],defaultHandler:a=l=>{throw l}}=r;return function(l){return u(this,null,function*(){try{let o=yield l;switch(n){case t.GO_STYLE:return[null,o];case t.ONLY_ERROR:return 0;case t.BOOLEAN:return!0;default:return o}}catch(o){let c=!1;for(let{ifTrue:s,doIt:f}of e)if(s(o)){try{f(o)}catch(p){}c=!0;break}switch(n){case t.GO_STYLE:return[o,null];case t.ONLY_ERROR:return 1;case t.BOOLEAN:return!1;case t.FALSE_STYLE:case t.TRUE_STYLE:if(!c)try{a(o)}catch(s){}return n!==t.FALSE_STYLE;case t.ERROR_STYLE:return o;default:if(!c)return a(o);throw o}}})}}var d=E({returnStyle:t.GO_STYLE});function T(r,n,e){if(r){if(typeof r=="object"&&typeof r.fn=="function"){let a=Array.isArray(r.params)?r.params:[];r.fn(...a);return}typeof r=="string"&&console[n](r,e||"")}}function i(r,n,e){if(r){if(typeof r=="string"){n==="error"&&T(r,"error",e);return}n==="error"&&r.error?T(r.error,"error",e):n==="success"&&r.success&&T(r.success,"log")}}function S(r,n){return u(this,null,function*(){let[e,a]=yield d(r);return e?(i(n,"error",e),!1):(i(n,"success"),a)})}function L(r,n){return u(this,null,function*(){let[e]=yield d(r);return e?(i(n,"error",e),!1):(i(n,"success"),!0)})}function R(r,n){return u(this,null,function*(){let[e,a]=yield d(r);return e?(i(n,"error",e),{success:!1,data:null,error:e}):(i(n,"success"),{success:!0,data:a,error:null})})}var N={create:E,valueOf:S,isSuccess:L,toResult:R,STYLES:t};export{t as RETURN_STYLES,t as STYLES,N as WaitForMe,E as createAsyncHandler,L as isSuccess,R as toResult,S as valueOf};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../await-me-ts/src/core.ts","../../await-me-ts/src/derivatives/index.ts","../src/index.ts"],"sourcesContent":["export const RETURN_STYLES = {\n FALSE_STYLE: 'false-style',\n TRUE_STYLE: 'true-style',\n GO_STYLE: 'goStyle',\n ERROR_STYLE: 'errorStyle',\n ONLY_ERROR: 'only-error',\n BOOLEAN: 'boolean',\n} as const;\n\nexport type ReturnStyle = typeof RETURN_STYLES[keyof typeof RETURN_STYLES];\n\n// New: Explicit interface to ensure the returned function is generic\nexport interface AsyncWrappedFunction {\n <T>(promise: Promise<T>): Promise<any>;\n}\n\nexport interface ConditionalHandler<T = any, E = any> {\n ifTrue: (error: E) => boolean;\n doIt: (error: E) => void;\n}\n\nexport interface AsyncHandlerConfig<T = any, E = any> {\n returnStyle?: ReturnStyle;\n conditionalHandlerChain?: ConditionalHandler<T, E>[];\n defaultHandler?: (error: E) => any;\n}\n\nexport function createAsyncHandler<E = any>(config: AsyncHandlerConfig<any, E> = {}): AsyncWrappedFunction {\n const {\n returnStyle = RETURN_STYLES.GO_STYLE,\n conditionalHandlerChain = [],\n defaultHandler = (e: E) => { throw e; }\n } = config;\n\n // The implementation now strictly follows the generic interface\n const handler: AsyncWrappedFunction = async function<T>(promise: Promise<T>): Promise<any> {\n try {\n const data = await promise;\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [null, data];\n case RETURN_STYLES.ONLY_ERROR: return 0;\n case RETURN_STYLES.BOOLEAN: return true;\n default: return data;\n }\n } catch (error: any) {\n let executedConditional = false;\n for (const { ifTrue, doIt } of conditionalHandlerChain) {\n if (ifTrue(error)) {\n try { doIt(error); } catch (hErr) { }\n executedConditional = true;\n break;\n }\n }\n\n switch (returnStyle) {\n case RETURN_STYLES.GO_STYLE: return [error, null];\n case RETURN_STYLES.ONLY_ERROR: return 1;\n case RETURN_STYLES.BOOLEAN: return false;\n case RETURN_STYLES.FALSE_STYLE:\n case RETURN_STYLES.TRUE_STYLE:\n if (!executedConditional) {\n try { defaultHandler(error); } catch (hErr) { }\n }\n return returnStyle === RETURN_STYLES.FALSE_STYLE ? false : true;\n case RETURN_STYLES.ERROR_STYLE: return error;\n default:\n if (!executedConditional) return defaultHandler(error);\n throw error;\n }\n }\n };\n\n return handler;\n}\n","import { createAsyncHandler, RETURN_STYLES } from '../core.ts';\n\n// Internal handler typed for Go-style [Error, Data]\nconst internalHandler = createAsyncHandler({\n returnStyle: RETURN_STYLES.GO_STYLE,\n});\n\ntype LogEntry = string | { fn: (...args: any[]) => void; params?: any[] };\ntype LogConfig = string | { error?: LogEntry; success?: LogEntry };\n\nfunction executeAction(entry: LogEntry | undefined, method: 'error' | 'log', payload?: any) {\n if (!entry) return;\n if (typeof entry === 'object' && typeof entry.fn === 'function') {\n const params = Array.isArray(entry.params) ? entry.params : [];\n entry.fn(...params);\n return;\n }\n if (typeof entry === 'string') console[method](entry, payload || '');\n}\n\nfunction handleLog(config: LogConfig | undefined, type: 'error' | 'success', payload?: any) {\n if (!config) return;\n if (typeof config === 'string') {\n if (type === 'error') executeAction(config, 'error', payload);\n return;\n }\n if (type === 'error' && config.error) executeAction(config.error, 'error', payload);\n else if (type === 'success' && config.success) executeAction(config.success, 'log');\n}\n\n/**\n * Returns the data <T> or false on failure.\n */\nexport async function valueOf<T>(promise: Promise<T>, config?: LogConfig): Promise<T | false> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return data as T;\n}\n\n/**\n * Returns true if the operation succeeded, false otherwise.\n */\nexport async function isSuccess(promise: Promise<any>, config?: LogConfig): Promise<boolean> {\n const [err] = await internalHandler(promise);\n if (err) { \n handleLog(config, 'error', err); \n return false; \n }\n handleLog(config, 'success');\n return true;\n}\n\n/**\n * Returns an object { success, data, error }.\n * Safe for APIs that might return literal 'false' or 'null' as valid data.\n */\nexport async function toResult<T, E = any>(promise: Promise<T>, config?: LogConfig): Promise<{ success: boolean; data: T | null; error: E | null }> {\n const [err, data] = await internalHandler<T>(promise);\n if (err) {\n handleLog(config, 'error', err);\n return { success: false, data: null, error: err as E };\n }\n handleLog(config, 'success');\n return { success: true, data: data as T, error: null };\n}\n","import { \n createAsyncHandler, \n RETURN_STYLES, \n valueOf, \n isSuccess, \n toResult \n} from 'await-me-ts';\n\n/**\n * Symmetric Reflection: \n * We export the exact functions from the core engine.\n */\nexport {\n createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n RETURN_STYLES as STYLES // Alias for convenience, while keeping core name\n};\n\n/**\n * Optional: The Barrel Namespace\n * Provides the same symmetry for those who prefer dot-notation.\n */\nexport const WaitForMe = {\n create: createAsyncHandler,\n valueOf,\n isSuccess,\n toResult,\n STYLES: RETURN_STYLES\n} as const;\n\n// Re-export all types from core for full IDE support\nexport * from 'await-me-ts';\n"],"mappings":"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","names":["RETURN_STYLES","createAsyncHandler","config","returnStyle","conditionalHandlerChain","defaultHandler","e","promise","__async","data","error","executedConditional","ifTrue","doIt","hErr","internalHandler","createAsyncHandler","RETURN_STYLES","executeAction","entry","method","payload","params","handleLog","config","type","valueOf","promise","__async","err","data","isSuccess","toResult","WaitForMe","createAsyncHandler","valueOf","isSuccess","toResult","RETURN_STYLES"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "await-me",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Browser-compatible, ES2015 target distribution of await-me-ts. Supports Node.js 7+.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -10,6 +10,23 @@
10
10
  "engines": {
11
11
  "node": ">=7.0.0"
12
12
  },
13
+ "browserslist": [
14
+ "defaults and fully supports es6-module",
15
+ "maintained node versions",
16
+ "not dead"
17
+ ],
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "keywords": [
23
+ "async",
24
+ "error-handling",
25
+ "browser",
26
+ "node",
27
+ "legacy-support",
28
+ "promises"
29
+ ],
13
30
  "exports": {
14
31
  ".": {
15
32
  "types": "./dist/index.d.ts",
package/example.cjs DELETED
@@ -1,54 +0,0 @@
1
- const { WaitForMe } = require('./dist/index.cjs');
2
-
3
- // --- Mock Utilities ---
4
- const mockFetch = (shouldSucceed, data, errorCode) =>
5
- new Promise((resolve, reject) => {
6
- setTimeout(() => {
7
- if (shouldSucceed) {
8
- resolve(data);
9
- } else {
10
- const error = new Error("Request Failed");
11
- error.code = errorCode || 500;
12
- reject(error);
13
- }
14
- }, 50);
15
- });
16
-
17
- async function runAdHocTest() {
18
- console.log("šŸš€ Starting Ad-Hoc Test for await-me Bundle\n");
19
-
20
- // 1. Test the Barrel Class Constants
21
- console.log(`Checking STYLES: ${Object.keys(WaitForMe.STYLES).join(', ')}`);
22
-
23
- // 2. Test the "Safe" Handler (FALSE_STYLE)
24
- const safeFetcher = WaitForMe.create({
25
- returnStyle: WaitForMe.STYLES.FALSE_STYLE,
26
- defaultHandler: (e) => console.log(`[Shield] Caught expected error: ${e.message}`)
27
- });
28
-
29
- console.log("\nScenario A: Successful Data Fetch");
30
- const data = await safeFetcher(mockFetch(true, { id: 42, name: "Gemini" }));
31
- console.log(`Result: ${JSON.stringify(data)} (Success expected)`);
32
-
33
- console.log("\nScenario B: Shielded Error (500)");
34
- const failedResult = await safeFetcher(mockFetch(false));
35
- console.log(`Result: ${failedResult} (Boolean 'false' expected)`);
36
-
37
- // 3. Test the Derivative 'valueOf'
38
- console.log("\nScenario C: Using valueOf Derivative");
39
- const value = await WaitForMe.valueOf(mockFetch(true, "Direct Value"));
40
- console.log(`Value: ${value}`);
41
-
42
- // 4. Test Go-Style handling via Barrel
43
- const goHandler = WaitForMe.create({ returnStyle: WaitForMe.STYLES.GO_STYLE });
44
- const [err, result] = await goHandler(mockFetch(false, null, 401));
45
-
46
- if (err) {
47
- console.log(`\nScenario D: Go-Style Error Check`);
48
- console.log(`Error Code: ${err.code} - Handled successfully without try/catch.`);
49
- }
50
-
51
- console.log("\nāœ… Ad-Hoc Test Completed.");
52
- }
53
-
54
- runAdHocTest().catch(console.error);
package/example.js DELETED
@@ -1,54 +0,0 @@
1
- import { WaitForMe } from './dist/index.js';
2
-
3
- // --- Mock Utilities ---
4
- const mockFetch = (shouldSucceed, data, errorCode) =>
5
- new Promise((resolve, reject) => {
6
- setTimeout(() => {
7
- if (shouldSucceed) {
8
- resolve(data);
9
- } else {
10
- const error = new Error("Request Failed");
11
- error.code = errorCode || 500;
12
- reject(error);
13
- }
14
- }, 50);
15
- });
16
-
17
- async function runAdHocTest() {
18
- console.log("šŸš€ Starting Ad-Hoc Test for await-me Bundle\n");
19
-
20
- // 1. Test the Barrel Class Constants
21
- console.log(`Checking STYLES: ${Object.keys(WaitForMe.STYLES).join(', ')}`);
22
-
23
- // 2. Test the "Safe" Handler (FALSE_STYLE)
24
- const safeFetcher = WaitForMe.create({
25
- returnStyle: WaitForMe.STYLES.FALSE_STYLE,
26
- defaultHandler: (e) => console.log(`[Shield] Caught expected error: ${e.message}`)
27
- });
28
-
29
- console.log("\nScenario A: Successful Data Fetch");
30
- const data = await safeFetcher(mockFetch(true, { id: 42, name: "Gemini" }));
31
- console.log(`Result: ${JSON.stringify(data)} (Success expected)`);
32
-
33
- console.log("\nScenario B: Shielded Error (500)");
34
- const failedResult = await safeFetcher(mockFetch(false));
35
- console.log(`Result: ${failedResult} (Boolean 'false' expected)`);
36
-
37
- // 3. Test the Derivative 'valueOf'
38
- console.log("\nScenario C: Using valueOf Derivative");
39
- const value = await WaitForMe.valueOf(mockFetch(true, "Direct Value"));
40
- console.log(`Value: ${value}`);
41
-
42
- // 4. Test Go-Style handling via Barrel
43
- const goHandler = WaitForMe.create({ returnStyle: WaitForMe.STYLES.GO_STYLE });
44
- const [err, result] = await goHandler(mockFetch(false, null, 401));
45
-
46
- if (err) {
47
- console.log(`\nScenario D: Go-Style Error Check`);
48
- console.log(`Error Code: ${err.code} - Handled successfully without try/catch.`);
49
- }
50
-
51
- console.log("\nāœ… Ad-Hoc Test Completed.");
52
- }
53
-
54
- runAdHocTest().catch(console.error);
package/src/index.ts DELETED
@@ -1,34 +0,0 @@
1
- import {
2
- createAsyncHandler,
3
- RETURN_STYLES,
4
- valueOf,
5
- isSuccess,
6
- toResult
7
- } from 'await-me-ts';
8
-
9
- /**
10
- * Symmetric Reflection:
11
- * We export the exact functions from the core engine.
12
- */
13
- export {
14
- createAsyncHandler,
15
- valueOf,
16
- isSuccess,
17
- toResult,
18
- RETURN_STYLES as STYLES // Alias for convenience, while keeping core name
19
- };
20
-
21
- /**
22
- * Optional: The Barrel Namespace
23
- * Provides the same symmetry for those who prefer dot-notation.
24
- */
25
- export const WaitForMe = {
26
- create: createAsyncHandler,
27
- valueOf,
28
- isSuccess,
29
- toResult,
30
- STYLES: RETURN_STYLES
31
- } as const;
32
-
33
- // Re-export all types from core for full IDE support
34
- export * from 'await-me-ts';
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "outDir": "dist",
7
- "esModuleInterop": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "strict": false,
10
- "skipLibCheck": true,
11
- "declaration": true
12
- },
13
- "include": ["src/**/*"],
14
- "exclude": ["node_modules", "dist" ,"public"]
15
- }
package/tsup.config.ts DELETED
@@ -1,21 +0,0 @@
1
- import { defineConfig } from 'tsup';
2
-
3
- export default defineConfig({
4
- entry: {
5
- 'index': 'src/index.ts'
6
- },
7
- // Added 'iife' for direct <script> tag support in browsers
8
- format: ['cjs', 'esm', 'iife'],
9
- globalName: 'WaitForMeJS',
10
- dts: true,
11
- splitting: false,
12
- sourcemap: true,
13
- clean: true,
14
- outDir: 'dist',
15
- // Lowered target to ES2015 for maximum compatibility
16
- target: 'es2015',
17
- minify: true,
18
- bundle: true,
19
- noExternal: ['await-me-ts'],
20
- skipNodeModulesBundle: false,
21
- });