Skip to content

Commit 6a5daf8

Browse files
committed
custom serializer ability on each property
1 parent dcfecae commit 6a5daf8

File tree

14 files changed

+122
-51
lines changed

14 files changed

+122
-51
lines changed

.eslintrc.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ module.exports = {
2323
"wrap-iife": "off",
2424
"no-eval": "off",
2525
"no-param-reassign": "off",
26+
"no-confusing-arrow": "off",
2627
}
27-
};
28+
};

dist/sjs.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/sjs.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/sjs.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
var _prepare=function(e){var r=JSON.stringify(e,function(e,r){return r.isSJS?r.type+"__sjs":r});return{preparedString:r,preparedSchema:JSON.parse(r)}},_find=function(path){for(var length=path.length,str="obj",i=0;i<length;i++)str=str.replace(/^/,"("),str+=" || {})."+path[i];return eval("((obj) => "+str+")")},_makeArraySerializer=function(e){return e instanceof Function?function(r){for(var n="",t=r.length,a=0;a<t-1;a++)n+=e(r[a])+",";return"["+(n+=e(r[t-1]))+"]"}:function(e){return JSON.stringify(e)}},TYPES=["number","string","boolean","array","null"],attr=function(e,r){if(!TYPES.includes(e))throw new Error('Expected one of: "number", "string", "boolean", "null". received "'+e+'" instead');var n=r||function(e){return e};return{isSJS:!0,type:e,serializer:"array"===e?_makeArraySerializer(r):n}},defaultRegex=new RegExp('\\n|\\r|\\t|\\"|\\\\',"gm"),escape=function(e){return void 0===e&&(e=defaultRegex),function(r){return r.replace(e,function(e){return"\\"+e})}},_makeQueue=function(e,r){var n=[];return function e(t,a){if(void 0===a&&(a=[]),!/__sjs/.test(t))return Object.keys(t).map(function(r){return e(t[r],a.concat([r]))});var i=Array.from(a),u=_find(i),f=u(r);n.push({serializer:f.serializer,find:u})}(e),n},_makeChunks=function(e,r){return e.replace(/"\w+__sjs"/gm,function(e){return/string/.test(e)?'"__par__"':"__par__"}).split("__par__").map(function(e,n,t){var a='("'+(r[n]||{}).name+'":("?))$',i="(,?)"+a,u=/^("}|})/.test(t[n+1]||""),f=new RegExp(u?i:a),o=/^(\"\,|\,|\")/;return{flag:!1,pure:e,prevUndef:e.replace(o,""),isUndef:e.replace(f,""),bothUndef:e.replace(o,"").replace(f,"")}})},_select=function(e){return function(r,n){var t=e[n];return void 0!==r?t.flag?t.prevUndef+r:t.pure+r:(e[n+1].flag=!0,t.flag?t.bothUndef:t.isUndef)}},sjs=function(e){var r=_prepare(e),n=r.preparedString,t=_makeQueue(r.preparedSchema,e),a=_makeChunks(n,t),i=_select(a),u=t.length;return function(e){for(var r="",n=0;n!==u;){var f=t[n],o=(0,f.serializer)((0,f.find)(e));r+=i(o,n),n+=1}var p=a[a.length-1];return r+(p.flag?p.prevUndef:p.pure)}};export{sjs,attr,escape};
1+
var _prepare=function(e){var r=JSON.stringify(e,function(e,r){return r.isSJS?r.type+"__sjs":r});return{preparedString:r,preparedSchema:JSON.parse(r)}},_find=function(path){for(var length=path.length,str="obj",i=0;i<length;i++)str=str.replace(/^/,"("),str+=" || {})."+path[i];return eval("((obj) => "+str+")")},_makeArraySerializer=function(e){return e instanceof Function?function(r){for(var n="",t=r.length,a=0;a<t-1;a++)n+=e(r[a])+",";return"["+(n+=e(r[t-1]))+"]"}:function(e){return JSON.stringify(e)}},TYPES=["number","string","boolean","array","null"],attr=function(e,r){if(!TYPES.includes(e))throw new Error('Expected one of: "number", "string", "boolean", "null". received "'+e+'" instead');var n=r||function(e){return e};return{isSJS:!0,type:e,serializer:"array"===e?_makeArraySerializer(r):n}},defaultRegex=new RegExp('\\n|\\r|\\t|\\"|\\\\',"gm"),escape=function(e){return void 0===e&&(e=defaultRegex),function(r){return r.replace(e,function(e){return"\\"+e})}},_makeQueue=function(e,r){var n=[];return function e(t,a){if(void 0===a&&(a=[]),!/__sjs/.test(t))return Object.keys(t).map(function(r){return e(t[r],a.concat([r]))});var i=Array.from(a),u=_find(i),f=u(r);n.push({serializer:f.serializer,find:u,name:a[a.length-1]})}(e),n},_makeChunks=function(e,r){return e.replace(/"\w+__sjs"/gm,function(e){return/string/.test(e)?'"__par__"':"__par__"}).split("__par__").map(function(e,n,t){var a='("'+(r[n]||{}).name+'":("?))$',i="(,?)"+a,u=/^("}|})/.test(t[n+1]||""),f=new RegExp(u?i:a),o=/^(\"\,|\,|\")/;return{flag:!1,pure:e,prevUndef:e.replace(o,""),isUndef:e.replace(f,""),bothUndef:e.replace(o,"").replace(f,"")}})},_select=function(e){return function(r,n){var t=e[n];return void 0!==r?t.flag?t.prevUndef+r:t.pure+r:(e[n+1].flag=!0,t.flag?t.bothUndef:t.isUndef)}},sjs=function(e){var r=_prepare(e),n=r.preparedString,t=_makeQueue(r.preparedSchema,e),a=_makeChunks(n,t),i=_select(a),u=t.length;return function(e){for(var r="",n=0;n!==u;){var f=t[n],o=f.serializer,p=(0,f.find)(e);r+=i(o(p),n),n+=1}var s=a[a.length-1];return r+(s.flag?s.prevUndef:s.pure)}};export{sjs,attr,escape};
22
//# sourceMappingURL=sjs.mjs.map

dist/sjs.mjs.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/sjs.umd.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)