Comparing version 0.21.0-dev.1 to 0.21.0-dev.2
@@ -6,17 +6,18 @@ exports.isString=(t=>"string"==typeof t) | ||
exports.isInteger=t | ||
const r=t=>{const r=typeof t | ||
return"object"===r&&null!==t||"function"===r} | ||
exports.isObjectAlike=r | ||
const e=t=>"object"==typeof t&&null!==t&&!Array.isArray(t) | ||
exports.isBasicObject=e | ||
exports.isObjectKey=((t,r)=>e(t)&&t.hasOwnProperty(r)) | ||
exports.isObjectContain=((t,r)=>e(t)&&Object.entries(r).every(([r,e])=>t[r]===e)) | ||
const e=t=>{const e=typeof t | ||
return"object"===e&&null!==t||"function"===e} | ||
exports.isObjectAlike=e | ||
const r=t=>"object"==typeof t&&null!==t&&!Array.isArray(t) | ||
exports.isBasicObject=r | ||
exports.isObjectKey=((t,e)=>r(t)&&t.hasOwnProperty(e)) | ||
exports.isObjectContain=((t,e)=>r(t)&&Object.entries(e).every(([e,r])=>t[e]===r)) | ||
const s=Array.isArray | ||
exports.isBasicArray=s | ||
exports.isArrayLength=((t,r)=>s(t)&&t.length===r) | ||
exports.isArrayLength=((t,e)=>s(t)&&t.length===e) | ||
exports.isBasicFunction=(t=>"function"==typeof t) | ||
exports.isOneOf=((t,r)=>r.includes(t)) | ||
exports.isPromiseAlike=(t=>Boolean(t&&"function"==typeof t.then)) | ||
exports.isOneOf=((t,e)=>e.includes(t)) | ||
exports.isFunctionThrow=(t=>{try{return t()&&!1}catch(t){return!0}}) | ||
exports.isFunctionThrowAsync=(async t=>{try{return await t()&&!1}catch(t){return!0}}) | ||
exports.isStrictEqual=((t,r)=>Object.is(t,r)) | ||
exports.isStringifyEqual=((t,e)=>!!Object.is(t,e)||!(!r(t)||!r(e))&&JSON.stringify(t)===JSON.stringify(e)) | ||
exports.isStrictEqual=((t,e)=>Object.is(t,e)) | ||
exports.isStringifyEqual=((t,r)=>!!Object.is(t,r)||!(!e(t)||!e(r))&&JSON.stringify(t)===JSON.stringify(r)) |
var t=require("./time") | ||
var e=require("./error") | ||
const r=(t,e=250,r=!1)=>{let o=null | ||
var r=require("./check") | ||
const o=(t,e=250,r=!1)=>{let o=null | ||
return(...n)=>{const s=r&&null===o | ||
@@ -9,3 +10,3 @@ clearTimeout(o) | ||
s&&t.apply(null,n)}} | ||
exports.debounce=r | ||
exports.debounce=o | ||
exports.throttle=((t,e=250,r=!1)=>{let o=null | ||
@@ -17,12 +18,11 @@ return(...n)=>{if(o)return | ||
s&&t.apply(null,n)}}) | ||
exports.lossyAsync=((t,r=e.rethrowError)=>{let o | ||
const n=()=>{o=void 0} | ||
const s=t=>{o=void 0 | ||
r(t)} | ||
return{trigger:(...e)=>{if(!o)try{const r=t.apply(null,e) | ||
r instanceof Object&&r.then?o=r.then(n,s):n()}catch(t){s(t)}},getRunningPromise:()=>o}}) | ||
exports.withDelayArgvQueue=((t,e=r,...o)=>{let n=[] | ||
exports.lossyAsync=((t,o=e.rethrowError)=>{let n | ||
const s=()=>{n=void 0} | ||
const l=t=>{n=void 0 | ||
o(t)} | ||
return{trigger:(...e)=>{if(!n)try{const o=t.apply(null,e);(0,r.isPromiseAlike)(o)?n=o.then(s,l):s()}catch(t){l(t)}},getRunningPromise:()=>n}}) | ||
exports.withDelayArgvQueue=((t,e=o,...r)=>{let n=[] | ||
const s=e(()=>{const e=n | ||
n=[] | ||
t(e)},...o) | ||
t(e)},...r) | ||
return(...t)=>{n.push(t) | ||
@@ -46,8 +46,8 @@ s()}}) | ||
l>0&&await(0,t.setTimeoutAsync)(l)}}}) | ||
exports.withTimeoutAsync=((t,e)=>o(t(),e)) | ||
const o=(t,e)=>{let r=null | ||
exports.withTimeoutAsync=((t,e)=>n(t(),e)) | ||
const n=(t,e)=>{let r=null | ||
return Promise.race([t,new Promise((t,o)=>{r=setTimeout(()=>o(new Error(`timeout after: ${e}`)),e)})]).then(t=>{clearTimeout(r) | ||
return t},t=>{clearTimeout(r) | ||
throw t})} | ||
exports.withTimeoutPromise=o | ||
exports.withTimeoutPromise=n | ||
exports.createInsideOutPromise=(()=>{let t,e | ||
@@ -54,0 +54,0 @@ return{promise:new Promise((r,o)=>{t=r |
exports.arraySet=((r,e,t)=>{if(r[e]===t)return r | ||
const s=[...r] | ||
s[e]=t | ||
return s}) | ||
const n=[...r] | ||
n[e]=t | ||
return n}) | ||
exports.arrayDelete=((r,e)=>e>=0&&e<=r.length-1?[...r.slice(0,e),...r.slice(e+1)]:r) | ||
@@ -23,16 +23,22 @@ exports.arrayInsert=((r,e,t)=>[...r.slice(0,e),t,...r.slice(e)]) | ||
return~t?[...r.slice(0,t),...r.slice(t+1)]:r}) | ||
exports.arrayMatchMove=((e,t,s)=>{const n=e.indexOf(s) | ||
return~n?r(e,t,n):e}) | ||
exports.arrayFindPush=((r,e,t)=>void 0===r.find(e)?[...r,t]:r) | ||
exports.arrayMatchMove=((e,t,n)=>{const s=e.indexOf(n) | ||
return~s?r(e,t,s):e}) | ||
exports.arrayFindDelete=((r,e)=>{const t=r.findIndex(e) | ||
return~t?[...r.slice(0,t),...r.slice(t+1)]:r}) | ||
exports.arrayFindMove=((e,t,s)=>{const n=e.findIndex(t) | ||
return~n?r(e,s,n):e}) | ||
exports.arrayFindSet=((r,e,t)=>{const s=r.findIndex(e) | ||
if(!~s||r[s]===t)return r | ||
const n=[...r] | ||
n[s]=t | ||
return n}) | ||
exports.arrayFindMove=((e,t,n)=>{const s=e.findIndex(t) | ||
return~s?r(e,n,s):e}) | ||
exports.arrayFindSet=((r,e,t)=>{const n=r.findIndex(e) | ||
if(!~n||r[n]===t)return r | ||
const s=[...r] | ||
s[n]=t | ||
return s}) | ||
exports.arrayFindSetOrPush=((r,e,t)=>{const n=r.findIndex(e) | ||
if(!~n)return[...r,t] | ||
if(r[n]===t)return r | ||
const s=[...r] | ||
s[n]=t | ||
return s}) | ||
exports.arrayFindOrPush=((r,e,t)=>void 0===r.find(e)?[...r,t]:r) | ||
exports.arraySplitChunk=((r,e)=>{const t=[] | ||
for(let s=0,n=r.length;s<n;s+=e)t.push(r.slice(s,s+e)) | ||
for(let n=0,s=r.length;n<s;n+=e)t.push(r.slice(n,n+e)) | ||
return t}) |
var t=require("./check") | ||
var e=require("./format") | ||
const o=(t,e,o)=>{throw new Error(`[verify|${t}]${e?` ${e};`:""} ${o||""}`)} | ||
const r=(t,r)=>(s,i)=>r(s)||o(t,i,`get: ${(0,e.describe)(s)}`) | ||
const s=r("String",t.isString) | ||
exports.string=s | ||
const i=r("Boolean",t.isBoolean) | ||
exports.boolean=i | ||
const r=(t,r)=>(i,s)=>r(i)||o(t,s,`get: ${(0,e.describe)(i)}`) | ||
const i=r("String",t.isString) | ||
exports.string=i | ||
const s=r("Boolean",t.isBoolean) | ||
exports.boolean=s | ||
const n=r("Number",t.isNumber) | ||
@@ -17,10 +17,12 @@ exports.number=n | ||
exports.basicObject=u | ||
exports.objectKey=((e,r,s)=>(0,t.isObjectKey)(e,r)||o("ObjectKey",s,`expect to have key: ${r}`)) | ||
exports.objectContain=((r,s,i)=>(0,t.isObjectContain)(r,s)||o("ObjectContain",i,`expect to contain: ${(0,e.describe)(s)}`)) | ||
const y=r("Array",t.isBasicArray) | ||
exports.basicArray=y | ||
exports.arrayLength=((r,s,i)=>(0,t.isArrayLength)(r,s)||o("ArrayLength",i,`expect length: ${s}, get: ${(0,t.isBasicArray)(r)?r.length:(0,e.describe)(r)}`)) | ||
const b=r("Function",t.isBasicFunction) | ||
exports.basicFunction=b | ||
exports.oneOf=((r,s,i)=>(0,t.isOneOf)(r,s)||o("OneOf",i,`expect one of: [${s}], get: ${(0,e.describe)(r)}`)) | ||
exports.objectKey=((e,r,i)=>(0,t.isObjectKey)(e,r)||o("ObjectKey",i,`expect to have key: ${r}`)) | ||
exports.objectContain=((r,i,s)=>(0,t.isObjectContain)(r,i)||o("ObjectContain",s,`expect to contain: ${(0,e.describe)(i)}`)) | ||
const l=r("Array",t.isBasicArray) | ||
exports.basicArray=l | ||
exports.arrayLength=((r,i,s)=>(0,t.isArrayLength)(r,i)||o("ArrayLength",s,`expect length: ${i}, get: ${(0,t.isBasicArray)(r)?r.length:(0,e.describe)(r)}`)) | ||
const y=r("Function",t.isBasicFunction) | ||
exports.basicFunction=y | ||
const p=r("PromiseAlike",t.isPromiseAlike) | ||
exports.promiseAlike=p | ||
exports.oneOf=((r,i,s)=>(0,t.isOneOf)(r,i)||o("OneOf",s,`expect one of: [${i}], get: ${(0,e.describe)(r)}`)) | ||
exports.doThrow=((e,r)=>(0,t.isFunctionThrow)(e)||o("DoThrow",r)) | ||
@@ -30,6 +32,6 @@ exports.doNotThrow=((e,r)=>(0,t.isFunctionThrow)(e)&&o("DoNotThrow",r)) | ||
exports.doNotThrowAsync=(async(e,r)=>await(0,t.isFunctionThrowAsync)(e)&&o("DoThrowAsync",r)) | ||
const l=(t,o)=>`\nactual: ${(0,e.describe)(t)}\nexpect: ${(0,e.describe)(o)}` | ||
exports.strictEqual=((e,r,s)=>(0,t.isStrictEqual)(e,r)||o("StrictEqual",s,l(e,r))) | ||
exports.notStrictEqual=((e,r,s)=>(0,t.isStrictEqual)(e,r)&&o("NotStrictEqual",s,l(e,r))) | ||
exports.stringifyEqual=((e,r,s="should stringify equal")=>(0,t.isStringifyEqual)(e,r)||o("StringifyEqual",s,l(e,r))) | ||
exports.notStringifyEqual=((e,r,s="should not stringify equal")=>(0,t.isStringifyEqual)(e,r)&&o("NotStringifyEqual",s,l(e,r))) | ||
const x=(t,o)=>`\nactual: ${(0,e.describe)(t)}\nexpect: ${(0,e.describe)(o)}` | ||
exports.strictEqual=((e,r,i)=>(0,t.isStrictEqual)(e,r)||o("StrictEqual",i,x(e,r))) | ||
exports.notStrictEqual=((e,r,i)=>(0,t.isStrictEqual)(e,r)&&o("NotStrictEqual",i,x(e,r))) | ||
exports.stringifyEqual=((e,r,i="should stringify equal")=>(0,t.isStringifyEqual)(e,r)||o("StringifyEqual",i,x(e,r))) | ||
exports.notStringifyEqual=((e,r,i="should not stringify equal")=>(0,t.isStringifyEqual)(e,r)&&o("NotStringifyEqual",i,x(e,r))) |
@@ -8,12 +8,14 @@ var e=require("zlib") | ||
const o=(0,t.promisify)(e.gzip) | ||
const p=(e,t,n,r)=>{t&&e.response.setHeader("etag",t) | ||
const p=(e,t,n,r)=>{if(e.request.aborted)return | ||
t&&e.response.setHeader("etag",t) | ||
const s=!t||!e.request.headers["if-none-match"]||!e.request.headers["if-none-match"].includes(t) | ||
s?e.response.writeHead(200,r?{"content-type":n,"content-length":r}:{"content-type":n}):e.response.writeHead(304,{"content-type":n}) | ||
return s} | ||
const c=(e,t,n,r="*",s,a)=>{t&&e.response.setHeader("etag",t) | ||
const c=(e,t,n,r="*",s,a)=>{if(!e.request.aborted){t&&e.response.setHeader("etag",t) | ||
e.response.writeHead(206,{"content-type":n,"content-length":a-s+1,"content-range":`bytes ${s}-${a}/${r}`}) | ||
return!0} | ||
return!0}} | ||
exports.responderSendBuffer=((e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length})=>p(e,s,a,o)&&o&&(0,r.sendBufferAsync)(e.response,t)) | ||
exports.responderSendBufferRange=((e,{buffer:t,entityTag:s,type:a=n.DEFAULT_MIME,length:o=t.length},[p,i])=>c(e,s,a,o,p,i)&&o&&(0,r.sendBufferAsync)(e.response,t.slice(p,i+1))) | ||
const i=async(e,{buffer:t,bufferGzip:s,entityTag:a,type:p=n.DEFAULT_MIME,length:c=t.length})=>{a&&e.response.setHeader("etag",a) | ||
const i=async(e,{buffer:t,bufferGzip:s,entityTag:a,type:p=n.DEFAULT_MIME,length:c=t.length})=>{if(e.request.aborted)return | ||
a&&e.response.setHeader("etag",a) | ||
const i=!a||!e.request.headers["if-none-match"]||!e.request.headers["if-none-match"].includes(a) | ||
@@ -27,3 +29,4 @@ const g=i&&c&&e.request.headers["accept-encoding"]&&e.request.headers["accept-encoding"].includes("gzip") | ||
exports.responderSendStreamRange=((e,{streamRange:t,entityTag:r,type:a=n.DEFAULT_MIME,length:o},[p,i])=>c(e,r,a,o,p,i)&&(0,s.pipeStreamAsync)(e.response,t)) | ||
exports.responderSendStreamCompress=(async(t,{stream:r,streamGzip:a,entityTag:o,type:p=n.DEFAULT_MIME,length:c})=>{o&&t.response.setHeader("etag",o) | ||
exports.responderSendStreamCompress=(async(t,{stream:r,streamGzip:a,entityTag:o,type:p=n.DEFAULT_MIME,length:c})=>{if(t.request.aborted)return | ||
o&&t.response.setHeader("etag",o) | ||
const i=!o||!t.request.headers["if-none-match"]||!t.request.headers["if-none-match"].includes(o) | ||
@@ -30,0 +33,0 @@ const g=i&&c&&t.request.headers["accept-encoding"]&&t.request.headers["accept-encoding"].includes("gzip") |
@@ -15,2 +15,3 @@ const isString = value => "string" == typeof value; | ||
const isBasicFunction = value => "function" == typeof value; | ||
const isPromiseAlike = value => Boolean(value && "function" == typeof value.then); | ||
const isOneOf = (value, validList) => validList.includes(value); | ||
@@ -33,2 +34,2 @@ const isFunctionThrow = func => { | ||
const isStringifyEqual = (value, target) => !!Object.is(value, target) || !(!isObjectAlike(value) || !isObjectAlike(target)) && JSON.stringify(value) === JSON.stringify(target); | ||
export { isString, isBoolean, isNumber, isInteger, isObjectAlike, isBasicObject, isObjectKey, isObjectContain, isBasicArray, isArrayLength, isBasicFunction, isOneOf, isFunctionThrow, isFunctionThrowAsync, isStrictEqual, isStringifyEqual }; | ||
export { isString, isBoolean, isNumber, isInteger, isObjectAlike, isBasicObject, isObjectKey, isObjectContain, isBasicArray, isArrayLength, isBasicFunction, isPromiseAlike, isOneOf, isFunctionThrow, isFunctionThrowAsync, isStrictEqual, isStringifyEqual }; |
import { clock, setTimeoutAsync } from "./time"; | ||
import { rethrowError } from "./error"; | ||
import { isPromiseAlike } from "./check"; | ||
const debounce = (func, wait = 250, isLeadingEdge = !1) => { | ||
@@ -40,3 +41,3 @@ let timeoutToken = null; | ||
const result = func.apply(null, args); | ||
result instanceof Object && result.then ? runningPromise = result.then(onResolve, onReject) : onResolve(); | ||
isPromiseAlike(result) ? runningPromise = result.then(onResolve, onReject) : onResolve(); | ||
} catch (error) { | ||
@@ -43,0 +44,0 @@ onReject(error); |
@@ -34,3 +34,2 @@ const arraySet = (array, index, value) => { | ||
}; | ||
const arrayFindPush = (array, findFunc, value) => void 0 === array.find(findFunc) ? [ ...array, value ] : array; | ||
const arrayFindDelete = (array, findFunc) => { | ||
@@ -51,2 +50,11 @@ const index = array.findIndex(findFunc); | ||
}; | ||
const arrayFindSetOrPush = (array, findFunc, value) => { | ||
const index = array.findIndex(findFunc); | ||
if (!~index) return [ ...array, value ]; | ||
if (array[index] === value) return array; | ||
const result = [ ...array ]; | ||
result[index] = value; | ||
return result; | ||
}; | ||
const arrayFindOrPush = (array, findFunc, value) => void 0 === array.find(findFunc) ? [ ...array, value ] : array; | ||
const arraySplitChunk = (array, chunkLength) => { | ||
@@ -57,2 +65,2 @@ const result = []; | ||
}; | ||
export { arraySet, arrayDelete, arrayInsert, arrayMove, arrayPush, arrayUnshift, arrayPop, arrayShift, arrayConcat, arrayMatchPush, arrayMatchDelete, arrayMatchMove, arrayFindPush, arrayFindDelete, arrayFindMove, arrayFindSet, arraySplitChunk }; | ||
export { arraySet, arrayDelete, arrayInsert, arrayMove, arrayPush, arrayUnshift, arrayPop, arrayShift, arrayConcat, arrayMatchDelete, arrayMatchPush, arrayMatchMove, arrayFindDelete, arrayFindMove, arrayFindSet, arrayFindSetOrPush, arrayFindOrPush, arraySplitChunk }; |
@@ -1,2 +0,2 @@ | ||
import { isString, isBoolean, isNumber, isInteger, isObjectAlike, isBasicObject, isObjectKey, isObjectContain, isBasicArray, isArrayLength, isBasicFunction, isOneOf, isFunctionThrow, isFunctionThrowAsync, isStrictEqual, isStringifyEqual } from "./check"; | ||
import { isString, isBoolean, isNumber, isInteger, isObjectAlike, isBasicObject, isObjectKey, isObjectContain, isBasicArray, isArrayLength, isBasicFunction, isPromiseAlike, isOneOf, isFunctionThrow, isFunctionThrowAsync, isStrictEqual, isStringifyEqual } from "./check"; | ||
import { describe } from "./format"; | ||
@@ -18,2 +18,3 @@ const throwError = (title, message, detail) => { | ||
const basicFunction = createVerify("Function", isBasicFunction); | ||
const promiseAlike = createVerify("PromiseAlike", isPromiseAlike); | ||
const oneOf = (value, validList, message) => isOneOf(value, validList) || throwError("OneOf", message, `expect one of: [${validList}], get: ${describe(value)}`); | ||
@@ -29,2 +30,2 @@ const doThrow = (func, message) => isFunctionThrow(func) || throwError("DoThrow", message); | ||
const notStringifyEqual = (actual, expect, message = "should not stringify equal") => isStringifyEqual(actual, expect) && throwError("NotStringifyEqual", message, describeEqual(actual, expect)); | ||
export { string, boolean, number, integer, objectAlike, basicObject, objectKey, objectContain, basicArray, arrayLength, basicFunction, oneOf, doThrow, doNotThrow, doThrowAsync, doNotThrowAsync, strictEqual, notStrictEqual, stringifyEqual, notStringifyEqual }; | ||
export { string, boolean, number, integer, objectAlike, basicObject, objectKey, objectContain, basicArray, arrayLength, basicFunction, promiseAlike, oneOf, doThrow, doNotThrow, doThrowAsync, doNotThrowAsync, strictEqual, notStrictEqual, stringifyEqual, notStringifyEqual }; |
@@ -9,2 +9,3 @@ import { gzip, gzipSync, createGzip } from "zlib"; | ||
const setResponseContent = (store, entityTag, type, length) => { | ||
if (store.request.aborted) return; | ||
entityTag && store.response.setHeader("etag", entityTag); | ||
@@ -23,9 +24,11 @@ const shouldSendContent = !entityTag || !store.request.headers["if-none-match"] || !store.request.headers["if-none-match"].includes(entityTag); | ||
const setResponseContentRange = (store, entityTag, type, length = "*", start, end) => { | ||
entityTag && store.response.setHeader("etag", entityTag); | ||
store.response.writeHead(206, { | ||
"content-type": type, | ||
"content-length": end - start + 1, | ||
"content-range": `bytes ${start}-${end}/${length}` | ||
}); | ||
return !0; | ||
if (!store.request.aborted) { | ||
entityTag && store.response.setHeader("etag", entityTag); | ||
store.response.writeHead(206, { | ||
"content-type": type, | ||
"content-length": end - start + 1, | ||
"content-range": `bytes ${start}-${end}/${length}` | ||
}); | ||
return !0; | ||
} | ||
}; | ||
@@ -35,2 +38,3 @@ const responderSendBuffer = (store, {buffer, entityTag, type = DEFAULT_MIME, length = buffer.length}) => setResponseContent(store, entityTag, type, length) && length && sendBufferAsync(store.response, buffer); | ||
const responderSendBufferCompress = async (store, {buffer, bufferGzip, entityTag, type = DEFAULT_MIME, length = buffer.length}) => { | ||
if (store.request.aborted) return; | ||
entityTag && store.response.setHeader("etag", entityTag); | ||
@@ -55,2 +59,3 @@ const shouldSendContent = !entityTag || !store.request.headers["if-none-match"] || !store.request.headers["if-none-match"].includes(entityTag); | ||
const responderSendStreamCompress = async (store, {stream, streamGzip, entityTag, type = DEFAULT_MIME, length}) => { | ||
if (store.request.aborted) return; | ||
entityTag && store.response.setHeader("etag", entityTag); | ||
@@ -57,0 +62,0 @@ const shouldSendContent = !entityTag || !store.request.headers["if-none-match"] || !store.request.headers["if-none-match"].includes(entityTag); |
@@ -1,1 +0,1 @@ | ||
{"name":"dr-js","version":"0.21.0-dev.1","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false} | ||
{"name":"dr-js","version":"0.21.0-dev.2","description":"A collection of strange functions","author":"dr-js","license":"MIT","keywords":["Dr","Dr-js","JavaScript"],"repository":"github:dr-js/dr-js","bin":"bin/index.js","browser":"library/Dr.browser.js","engines":{"node":">=10.15","npm":">=6"},"sideEffects":false} |
Sorry, the diff of this file is too big to display
449376
10448