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 +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +24 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.global.js +2 -0
- package/dist/index.global.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +18 -1
- package/example.cjs +0 -54
- package/example.js +0 -54
- package/src/index.ts +0 -34
- package/tsconfig.json +0 -15
- package/tsup.config.ts +0 -21
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":"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","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"]}
|
package/dist/index.d.cts
ADDED
|
@@ -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 };
|
package/dist/index.d.ts
ADDED
|
@@ -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":"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","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
|
+
"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
|
-
});
|