UNPKG

3.75 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/utils/json.js"],"names":["mergeAdjacentJSONTextNodes","node","removeFunctions","visitedNodes","undefined","Set","has","add","Array","isArray","arr","length","concatString","i","child","push","key","value"],"mappings":";;;;;;;AAAA;;;;;;;;AAaA;AACO,SAASA,0BAAT,CAAoCC,IAApC,EAAgDC,eAAhD,EAA0EC,YAA1E,EAA+G;AACpH,MAAIA,iBAAiBC,SAArB,EAAgC;AAC9BD,mBAAe,IAAIE,GAAJ,EAAf;AACD;;AACD,MAAIF,aAAaG,GAAb,CAAiBL,IAAjB,CAAJ,EAA4B;AAC1B,WAAOA,IAAP;AACD;;AACDE,eAAaI,GAAb,CAAiBN,IAAjB,EAPoH,CASpH;;AACA,MAAIO,MAAMC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;AACvB;AACA,QAAIS,MAAM,EAAV;AACA,QAAIC,SAASV,KAAKU,MAAlB;AACA,QAAIC,eAAe,IAAnB;AACA,QAAIC,IAAI,CAAC,CAAT;;AACA,WAAOA,MAAMF,MAAb,EAAqB;AACnB,UAAIG,QAAQb,KAAKY,CAAL,CAAZ;;AACA,UAAI,OAAOC,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAAlD,EAA4D;AAC1D,YAAIF,iBAAiB,IAArB,EAA2B;AACzBA,0BAAgBE,KAAhB;AACD,SAFD,MAEO;AACLF,yBAAeE,KAAf;AACD;AACF,OAND,MAMO,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,UAAU,IAA3C,EAAiD;AACtD,YAAIF,iBAAiB,IAArB,EAA2B;AACzBF,cAAIK,IAAJ,CAASH,YAAT;AACAA,yBAAe,IAAf;AACD;;AACDF,YAAIK,IAAJ,CAAWf,2BAA2Bc,KAA3B,EAAkCZ,eAAlC,EAAmDC,YAAnD,CAAX;AACD;AACF;;AACD,QAAIS,iBAAiB,IAArB,EAA2B;AACzBF,UAAIK,IAAJ,CAASH,YAAT;AACD;;AACD,WAAOF,GAAP;AACD,GA1BD,MA0BO;AACL,SAAK,IAAIM,GAAT,IAAgBf,IAAhB,EAAsB;AACpB,UAAIgB,QAAQhB,KAAKe,GAAL,CAAZ;;AACA,UAAI,OAAOC,KAAP,KAAiB,UAArB,EAAiC;AAC/B,YAAIf,eAAJ,EAAqB;AACnB,iBAAOD,KAAKe,GAAL,CAAP;AACD,SAFD,MAEO;AACLf,eAAKe,GAAL,IAAY,UAAZ;AACD;AACF,OAND,MAMO,IAAI,OAAOC,KAAP,KAAiB,QAAjB,IAA6BA,UAAU,IAA3C,EAAiD;AACtDhB,aAAKe,GAAL,IAAchB,2BAA6BiB,KAA7B,EAAiDf,eAAjD,EAAkEC,YAAlE,CAAd;AACD;AACF;AACF;;AACD,SAAOF,IAAP;AACD","sourcesContent":["/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/* @flow */\ntype JSONValue = Array<JSONValue> | string | number | JSON;\ntype JSON = { [key: string]: JSONValue };\n\n// this will mutate the original JSON object\nexport function mergeAdjacentJSONTextNodes(node: JSON, removeFunctions: boolean, visitedNodes?: Set<JSON>): JSONValue {\n if (visitedNodes === undefined) {\n visitedNodes = new Set();\n }\n if (visitedNodes.has(node)) {\n return node;\n }\n visitedNodes.add(node);\n\n // we merge adjacent text nodes\n if (Array.isArray(node)) {\n // we create a new array rather than mutating the original\n let arr = [];\n let length = node.length;\n let concatString = null;\n let i = -1;\n while (i++ < length) {\n let child = node[i];\n if (typeof child === \"string\" || typeof child === \"number\") {\n if (concatString !== null) {\n concatString += child;\n } else {\n concatString = child;\n }\n } else if (typeof child === \"object\" && child !== null) {\n if (concatString !== null) {\n arr.push(concatString);\n concatString = null;\n }\n arr.push(((mergeAdjacentJSONTextNodes(child, removeFunctions, visitedNodes): any): JSON));\n }\n }\n if (concatString !== null) {\n arr.push(concatString);\n }\n return arr;\n } else {\n for (let key in node) {\n let value = node[key];\n if (typeof value === \"function\") {\n if (removeFunctions) {\n delete node[key];\n } else {\n node[key] = \"function\";\n }\n } else if (typeof value === \"object\" && value !== null) {\n node[key] = ((mergeAdjacentJSONTextNodes(((value: any): JSON), removeFunctions, visitedNodes): any): JSON);\n }\n }\n }\n return node;\n}\n"],"file":"json.js"}
\No newline at end of file