When serialising and object that produces more than 65534 names the output produces a function with more than 65534 parameters, which is in produces a syntax error when evaluated in chrome:
SyntaxError: Too many parameters in function definition (only 65534 allowed))
We solved it by replacing:
(function(${params.join(",")}){${statements.join(";")}}(${values.join(",")}))
with
if (params.length > 30000) {
const aggParams = []
const aggValues = []
const aggUnpack = []
for (let i = 0; i < params.length; i += 30000) {
const aggName = `aggregatedValues${i}`
const subParams = params.slice(i, i + 30000)
const subValues = values.slice(i, i + 30000)
aggParams.push(aggName)
aggValues.push(`[${subValues.join(",")}]`)
aggUnpack.push(`const [${subParams.join(",")}] = ${aggName}`)
}
return `(function(${aggParams.join(",")}){${aggUnpack.join(";")};${statements.join(";")}}(${aggValues.join(",")}))`
} else {
return `(function(${params.join(",")}){${statements.join(";")}}(${values.join(",")}))`
}
in the source code