Comparing version 1.2.2 to 1.3.0
@@ -18,6 +18,6 @@ export declare class AjaonPromise<Res = any, Error = string> extends Promise<Res> { | ||
}; | ||
export default function ajaon(apiUrl?: string, sessKeyKey?: string | SessKeyKey, storage?: object, verbose?: boolean): { | ||
post: <Res = GenericObject>(url: string | string[], body?: string | object, headers?: HeadersInit, verbose?: boolean) => AjaonPromise<Res, string>; | ||
get: <Res_1>(url: string | string[], verbose?: boolean) => Promise<Res_1>; | ||
export default function ajaon(apiUrl?: string, sessKeyKey?: string | SessKeyKey, ensureDelivery?: boolean, storage?: object, verbose?: boolean): { | ||
post: <Res = GenericObject>(url: string | string[], body?: string | object, headers?: HeadersInit, ensureDelivery?: boolean, verbose?: boolean) => AjaonPromise<Res, string>; | ||
get: <Res_1>(url: string | string[], ensureDelivery?: boolean, verbose?: boolean) => Promise<Res_1>; | ||
}; | ||
export {}; |
@@ -84,4 +84,5 @@ import clone from "tiny-clone"; | ||
const baseUrl = getBaseUrl(); | ||
export default function ajaon(apiUrl = baseUrl, sessKeyKey, storage = localStorage, verbose = true) { | ||
export default function ajaon(apiUrl = baseUrl, sessKeyKey, ensureDelivery = false, storage = localStorage, verbose = true) { | ||
const defaultVervose = verbose; | ||
const defualtEnsureDelivery = ensureDelivery; | ||
let warn = constructConsoleWarnVerbose(verbose); | ||
@@ -97,4 +98,4 @@ if (!endsWithSlash(apiUrl)) | ||
const sess = sessKeyKey !== undefined ? typeof sessKeyKey === "string" ? { sessKeyKeyForStorage: sessKeyKey, sessKeyKeyForApi: sessKeyKey } : clone(sessKeyKey) : false; | ||
function post(url, body = {}, headers = { 'Content-Type': 'application/json' }, verbose = defaultVervose) { | ||
return new AjaonPromise((res, fail) => { | ||
function post(url, body = {}, headers = { 'Content-Type': 'application/json' }, ensureDelivery = defualtEnsureDelivery, verbose = defaultVervose) { | ||
let ret = new AjaonPromise((res, fail) => { | ||
headers = headers instanceof Headers ? headers : new Headers(headers); | ||
@@ -175,5 +176,15 @@ const error = constructConsoleType(console.error, fail)(verbose); | ||
}); | ||
if (ensureDelivery) { | ||
ret.fail(() => { | ||
if (!navigator.onLine) { | ||
window.addEventListener("online", () => { | ||
post(url, body, headers, false, verbose); | ||
}, { once: true }); | ||
} | ||
}); | ||
} | ||
return ret; | ||
} | ||
async function get(url, verbose = defaultVervose) { | ||
return new AjaonPromise((res, fail) => { | ||
async function get(url, ensureDelivery = defualtEnsureDelivery, verbose = defaultVervose) { | ||
let ret = new AjaonPromise((res, fail) => { | ||
let controller = new AbortController(); | ||
@@ -197,2 +208,12 @@ let signal = controller.signal; | ||
}); | ||
if (ensureDelivery) { | ||
ret.fail(() => { | ||
if (!navigator.onLine) { | ||
window.addEventListener("online", () => { | ||
get(url, false, verbose); | ||
}, { once: true }); | ||
} | ||
}); | ||
} | ||
return ret; | ||
} | ||
@@ -199,0 +220,0 @@ function assembleUrl(url) { |
@@ -94,4 +94,17 @@ import clone from "tiny-clone" | ||
export default function ajaon(apiUrl: string = baseUrl, sessKeyKey?: string | SessKeyKey, storage: object = localStorage, verbose: boolean = true) { | ||
export default function ajaon(apiUrl: string = baseUrl, sessKeyKey?: string | SessKeyKey, ensureDelivery: boolean = false, storage: object = localStorage, verbose: boolean = true) { | ||
const defaultVervose = verbose | ||
const defualtEnsureDelivery = ensureDelivery | ||
let warn = constructConsoleWarnVerbose(verbose) | ||
@@ -109,4 +122,4 @@ | ||
const sess: SessKeyKey = sessKeyKey !== undefined ? typeof sessKeyKey === "string" ? {sessKeyKeyForStorage: sessKeyKey, sessKeyKeyForApi: sessKeyKey} : clone(sessKeyKey) : false | ||
function post<Res = GenericObject>(url: string | string[], body: object | string = {}, headers: HeadersInit | Headers = {'Content-Type': 'application/json'}, verbose: boolean = defaultVervose) { | ||
return new AjaonPromise<Res, string>((res, fail) => { | ||
function post<Res = GenericObject>(url: string | string[], body: object | string = {}, headers: HeadersInit | Headers = {'Content-Type': 'application/json'}, ensureDelivery: boolean = defualtEnsureDelivery, verbose: boolean = defaultVervose) { | ||
let ret = new AjaonPromise<Res, string>((res, fail) => { | ||
headers = headers instanceof Headers ? headers : new Headers(headers) | ||
@@ -190,2 +203,16 @@ | ||
}) | ||
if (ensureDelivery) { | ||
ret.fail(() => { | ||
if (!navigator.onLine) { | ||
window.addEventListener("online", () => { | ||
post(url, body, headers, false, verbose) | ||
}, {once: true}) | ||
} | ||
}) | ||
} | ||
return ret | ||
} | ||
@@ -195,4 +222,4 @@ | ||
async function get<Res>(url: string | string[], verbose: boolean = defaultVervose) { | ||
return new AjaonPromise<Res, string>((res, fail) => { | ||
async function get<Res>(url: string | string[], ensureDelivery: boolean = defualtEnsureDelivery, verbose: boolean = defaultVervose) { | ||
let ret = new AjaonPromise<Res, string>((res, fail) => { | ||
let controller = new AbortController(); | ||
@@ -218,2 +245,14 @@ let signal = controller.signal; | ||
}) | ||
if (ensureDelivery) { | ||
ret.fail(() => { | ||
if (!navigator.onLine) { | ||
window.addEventListener("online", () => { | ||
get(url, false, verbose) | ||
}, {once: true}) | ||
} | ||
}) | ||
} | ||
return ret | ||
} | ||
@@ -220,0 +259,0 @@ |
{ | ||
"name": "ajaon", | ||
"version": "1.2.2", | ||
"version": "1.3.0", | ||
"description": "Asynchron js and json. A tiny, fetch based http client for the web.", | ||
@@ -5,0 +5,0 @@ "main": "app/dist/ajaon.js", |
63313
943