object-to-arguments
Advanced tools
Comparing version 0.0.8 to 0.1.0
{ | ||
"name": "object-to-arguments", | ||
"version": "0.0.8", | ||
"version": "0.1.0", | ||
"description": "Transforms object's properties into an array of arguments tailored for a specific function, respecting the expected order and handling destructuring and rest parameters when needed.", | ||
@@ -22,11 +22,11 @@ "main": "./lib/object-to-arguments.js", | ||
"dependencies": { | ||
"inspect-parameters-declaration": "0.0.10", | ||
"inspect-parameters-declaration": "0.1.0", | ||
"magicli": "0.0.5", | ||
"split-skip": "0.0.2", | ||
"stringify-parameters": "0.0.4", | ||
"stringify-parameters": "0.0.7", | ||
"unpack-string": "0.0.2" | ||
}, | ||
"devDependencies": { | ||
"mocha": "^3.5.0" | ||
"mocha": "^5.2.0" | ||
} | ||
} |
@@ -46,2 +46,6 @@ 'use strict'; | ||
const asyncFnRest = async function(a = 'dA', b, ...args) { | ||
return { a, b, args}; | ||
}; | ||
const fnWithComplexParams = function([a, [b = 'dB', [c, [d,e] = ['dD', 'dE'] ]]] = ['dA', ['dB', ['dC', ]]], {f} = {}, {g = 'dG'} = {}, {h: {i} = {}} = {},{j: {k = 'dK'} = {}} = {},{l: {m, n: {o} = {}} = {}} = {}, {p,q = 'dQ', r} = {}, [[[s,{t: {u} = {}} = {}]]] = [[[]]], {v: [{w} = {}, x = 'dX'] = []} = {}) { | ||
@@ -71,2 +75,27 @@ return { | ||
const asyncFnWithComplexParams = async function([a, [b = 'dB', [c, [d,e] = ['dD', 'dE'] ]]] = ['dA', ['dB', ['dC', ]]], {f} = {}, {g = 'dG'} = {}, {h: {i} = {}} = {},{j: {k = 'dK'} = {}} = {},{l: {m, n: {o} = {}} = {}} = {}, {p,q = 'dQ', r} = {}, [[[s,{t: {u} = {}} = {}]]] = [[[]]], {v: [{w} = {}, x = 'dX'] = []} = {}) { | ||
return { | ||
a, | ||
b, | ||
c, | ||
d, | ||
e, | ||
f, | ||
g, | ||
i, | ||
k, | ||
m, | ||
o, | ||
p, | ||
q, | ||
r, | ||
s, | ||
u, | ||
w, | ||
x, | ||
argumentsArray: Array.from(arguments) | ||
}; | ||
}; | ||
const tests = { | ||
@@ -208,2 +237,121 @@ 'Function defined without parameters with no arguments': { | ||
'All expected arguments plus some extra ones': { | ||
fn: asyncFnWithComplexParams, | ||
input: { | ||
a: 'aA', | ||
b: 'aB', | ||
c: 'aC', | ||
d: 'aD', | ||
e: 'aE', | ||
f: 'aF', | ||
g: 'aG', | ||
h: 'aH', | ||
i: 'aI', | ||
j: 'aJ', | ||
k: 'aK', | ||
l: 'aL', | ||
m: 'aM', | ||
n: 'aN', | ||
o: 'aO', | ||
p: 'aP', | ||
q: 'aQ', | ||
r: 'aR', | ||
s: 'aS', | ||
u: 'aU', | ||
v: 'aV', | ||
w: 'aW', | ||
x: 'aX', | ||
extra1: 'EXTRA1', | ||
extra2: 'EXTRA2', | ||
extra3: 'EXTRA3' | ||
}, | ||
output: Promise.resolve({ | ||
"a": "aA", | ||
"b": "aB", | ||
"c": "aC", | ||
"d": "aD", | ||
"e": "aE", | ||
"f": "aF", | ||
"g": "aG", | ||
"i": "aI", | ||
"k": "aK", | ||
"m": "aM", | ||
"o": "aO", | ||
"p": "aP", | ||
"q": "aQ", | ||
"r": "aR", | ||
"s": "aS", | ||
"u": "aU", | ||
"w": "aW", | ||
"x": "aX", | ||
"argumentsArray": { | ||
"0": [ | ||
"aA", [ | ||
"aB", [ | ||
"aC", [ | ||
"aD", | ||
"aE" | ||
] | ||
] | ||
] | ||
], | ||
"1": { | ||
"f": "aF" | ||
}, | ||
"2": { | ||
"g": "aG" | ||
}, | ||
"3": { | ||
"h": { | ||
"i": "aI" | ||
} | ||
}, | ||
"4": { | ||
"j": { | ||
"k": "aK" | ||
} | ||
}, | ||
"5": { | ||
"l": { | ||
"m": "aM", | ||
"n": { | ||
"o": "aO" | ||
} | ||
} | ||
}, | ||
"6": { | ||
"p": "aP", | ||
"q": "aQ", | ||
"r": "aR" | ||
}, | ||
"7": [ | ||
[ | ||
[ | ||
"aS", { | ||
"t": { | ||
"u": "aU" | ||
} | ||
} | ||
] | ||
] | ||
], | ||
"8": { | ||
"v": [{ | ||
"w": "aW" | ||
}, | ||
"aX" | ||
] | ||
}, | ||
"9": "aH", | ||
"10": "aJ", | ||
"11": "aL", | ||
"12": "aN", | ||
"13": "aV", | ||
"14": "EXTRA1", | ||
"15": "EXTRA2", | ||
"16": "EXTRA3" | ||
} | ||
}) | ||
}, | ||
'Undefined argument (must preserve all default values)': { | ||
@@ -347,2 +495,17 @@ fn: fnWithComplexParams, | ||
'Async Rest parameter must set the the arguments and passed in all the extra args': { | ||
fn: asyncFnRest, | ||
input: { | ||
b: 'aB', | ||
extra1: 'EXTRA1', | ||
args: ['restArgA', 'restArgB'], | ||
extra2: 'EXTRA2' | ||
}, | ||
output: Promise.resolve({ | ||
a: 'dA', | ||
b: 'aB', | ||
args: ['restArgA', 'restArgB', 'EXTRA1', 'EXTRA2'] | ||
}) | ||
}, | ||
'Rest parameter must set the expected parameters passed in and leave the rest for the rest parameter': { | ||
@@ -360,3 +523,18 @@ fn: fnRest, | ||
} | ||
}, | ||
'Async Rest parameter must set the expected parameters passed in and leave the rest for the rest parameter': { | ||
fn: asyncFnRest, | ||
input: { | ||
b: 'aB', | ||
extra1: 'EXTRA1', | ||
extra2: 'EXTRA2' | ||
}, | ||
output: Promise.resolve({ | ||
a: 'dA', | ||
b: 'aB', | ||
args: ['EXTRA1', 'EXTRA2'] | ||
}) | ||
} | ||
}; | ||
@@ -363,0 +541,0 @@ |
Sorry, the diff of this file is not supported yet
19079
615
7
+ Addedansi-escape-sequences@4.1.0(transitive)
+ Addedansi-regex@3.0.1(transitive)
+ Addedarray-back@2.0.03.1.0(transitive)
+ Addedcamelcase@4.1.0(transitive)
+ Addedcliss@0.0.2(transitive)
+ Addedcommand-line-usage@4.1.0(transitive)
+ Addeddeep-extend@0.6.0(transitive)
+ Addeddeepmerge@2.2.1(transitive)
+ Addedfind-up@2.1.0(transitive)
+ Addedfor-each-property@0.0.4(transitive)
+ Addedfor-each-property-deep@0.0.3(transitive)
+ Addedget-prototype-chain@1.0.1(transitive)
+ Addedinspect-function@0.3.4(transitive)
+ Addedinspect-parameters-declaration@0.0.80.0.90.1.0(transitive)
+ Addedinspect-property@0.0.6(transitive)
+ Addedlocate-path@2.0.0(transitive)
+ Addedlodash.padend@4.6.1(transitive)
+ Addedmagicli@0.0.8(transitive)
+ Addedobject-to-arguments@0.0.8(transitive)
+ Addedp-limit@1.3.0(transitive)
+ Addedp-locate@2.0.0(transitive)
+ Addedp-try@1.0.0(transitive)
+ Addedpath-exists@3.0.0(transitive)
+ Addedreduce-flatten@1.0.1(transitive)
+ Addedstringify-parameters@0.0.7(transitive)
+ Addedstrip-ansi@4.0.0(transitive)
+ Addedtable-layout@0.4.5(transitive)
+ Addedtypical@2.6.1(transitive)
+ Addedwordwrapjs@3.0.0(transitive)
+ Addedyargs-parser@7.0.0(transitive)
Updatedstringify-parameters@0.0.7