Skip to content

Commit ea82b1e

Browse files
fix(non-blocking-json): fix parsing batching
1 parent 364ef1f commit ea82b1e

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

packages/node_modules/non-blocking-json/src/index.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ test("should stringify complex stuff", async () => {
4343
expect(result).toBe(string)
4444
})
4545

46+
4647
test("should handle more scenarios", async () => {
47-
const string = '{"type":"effect","data":{"namespacePath":[],"actionId":"onInitialize","executionId":0,"actionName":"onInitialize","operatorId":0,"isRunning":true,"path":[],"type":"action","effectId":14,"name":"","method":"request","args":["/backend/apis"],"isPending":true,"error":false}}'
48+
const string = '{"type":"message","data":{"appName":"React App","message":{"type":"action:start","data":{"namespacePath":["auth"],"actionId":"auth.onAuthChanged","executionId":1,"actionName":"auth.onAuthChanged","operatorId":0,"isRunning":true,"path":[],"emit":"[Function]","send":"[Function]","trackEffects":"[Function]","getNextOperatorId":"[Function]","flush":"[Function]","getMutationTree":"[Function]","getTrackStateTree":"[Function]","onFlush":"[Function]","scopeValue":"[Function]","type":"action","value":{"__CLASS__":true,"name":"P","value":{"N":[],"l":"AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc","m":"[DEFAULT]","s":"family-scrum-dev.firebaseapp.com","a":{"__CLASS__":true,"name":"Ei","value":{"c":"AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc","u":"https://securetoken.googleapis.com/v1/token","m":{"__CLASS__":true,"name":"We","value":{"a":30000,"c":60000,"b":false,"get":"[Function]"}},"g":{"Content-Type":"application/x-www-form-urlencoded","X-Client-Version":"Chrome/JsCore/7.15.0/FirebaseCore-web"},"h":"https://www.googleapis.com/identitytoolkit/v3/relyingparty/","l":"https://identitytoolkit.googleapis.com/v2/","i":{"__CLASS__":true,"name":"We","value":{"a":30000,"c":60000,"b":false,"get":"[Function]"}},"a":{"Content-Type":"application/json","X-Client-Version":"Chrome/JsCore/7.15.0/FirebaseCore-web"},"f":{"__CLASS__":true,"name":"Bh","value":{"c":{},"constructor":"[Function]","a":"[Function]","b":"[Function]"}},"b":null,"S":"[Function]","w":"[Function]","s":"[Function]","vb":"[Function]","xb":"[Function]","yb":"[Function]","zb":"[Function]","rb":"[Function]","sb":"[Function]","qb":"[Function]","Ab":"[Function]","cb":"[Function]","jb":"[Function]","Pa":"[Function]","fb":"[Function]"}},"b":{"__CLASS__":true,"name":"sm","value":{"c":"[CIRCULAR REFERENCE: Ei]","a":"AE0u-NeFdmElWAPD6QLyX9IxpW6Gd8hZVo7RQtqYMuRYXHYhOw333-G3idlkmoZr47ybogNWiLWUiaXV5FxeJDh7w0uRfU6j2s2F2_a8IYcGBq1lMnPz8u9jNgYTnciiS77kUDXkxV0TjRTqSIPh4bVSJxIQP9ohpOA9PYsjA2ybG53VNvFZOZWDisuyuywJ3Fm3V5OhpW_Gx4VdV33g-u8Pr5QAZHCkZIyI_ibs7nKE7OzMoe5njHy6slcHA5RH6Gmxq8f_fo92ZBFGeiX-iUmvkPhMflhckJ9GMEnHs9BoxRkFfQ13JtcL-3CozWYcSrkIaWBPm5uq54pmymGEd9bG9h-07wCFrh1YSh-P4KsravZkiBljzr6CDKZFrllYFsF-bOaTeE5sOVA7REYMCHQ5K_OBEf7dEzh9IaT5aLt-MtpfjTB9eyQ","b":{"__CLASS__":true,"name":"eg","value":{"g":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImFmMDg2ZmE4Y2Q5NDFlMDY3ZTc3NzNkYmIwNDcxMjAxMTBlMDA1NGEiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiQ2hyaXN0aWFuIEFsZm9uaSIsInBpY3R1cmUiOiJodHRwczovL2xoNS5nb29nbGV1c2VyY29udGVudC5jb20vLW5sc29HWC1YS3RNL0FBQUFBQUFBQUFJL0FBQUFBQUFBQVVvL3JYSGhMeXZNb0xFL3Bob3RvLmpwZyIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9mYW1pbHktc2NydW0tZGV2IiwiYXVkIjoiZmFtaWx5LXNjcnVtLWRldiIsImF1dGhfdGltZSI6MTU5NTgzMzQ0MCwidXNlcl9pZCI6ImFMM05YeDZOb2xUbHM2dkhVWXl6ZlJyNUxFWDIiLCJzdWIiOiJhTDNOWHg2Tm9sVGxzNnZIVVl5emZScjVMRVgyIiwiaWF0IjoxNTk2NjA4OTQ4LCJleHAiOjE1OTY2MTI1NDgsImVtYWlsIjoiY2hyaXN0aWFuYWxmb25pQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTE0MzYyODgzNzY5OTcyNjQzMjUyIl0sImVtYWlsIjpbImNocmlzdGlhbmFsZm9uaUBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJnb29nbGUuY29tIn19.TimgoaRva4_SO8rQXyewFDXrJ8phv1V54C2OrqZjKMzDIvin8kbbDoys05nlryjD1Lx-QilDp0aSF1kS6djM8_k7J6vsMJkwBqOEeEP7-PP8CYbJtFvmMqlwOm5c6dRiJ4QkF_aMmPu6CugFfJZbFFOfwG5QaDDswVIVfxP0eey5J3Utw7y0ZSFutUoK_ZesZWEvXhO3iICVpE9X5K9p0aiL6FvpvPDLOW2oWGZRHtnHA13vijC7T2ypsipKXNtpZkHQoOsi8vHgY7B0zKntNQaKwL0frc88gT1FkHQJTs9UgpgJ0hvufMcjUqDbY3AG_AAawreXVmpy2KrabOhe2g","c":1596612548,"h":"aL3NXx6NolTls6vHUYyzfRr5LEX2","a":"google.com","f":null,"b":false,"S":"[Function]","i":"[Function]","toString":"[Function]"}},"v":"[Function]","getToken":"[Function]"}},"xa":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImFmMDg2ZmE4Y2Q5NDFlMDY3ZTc3NzNkYmIwNDcxMjAxMTBlMDA1NGEiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiQ2hyaXN0aWFuIEFsZm9uaSIsInBpY3R1cmUiOiJodHRwczovL2xoNS5nb29nbGV1c2VyY29udGVudC5jb20vLW5sc29HWC1YS3RNL0FBQUFBQUFBQUFJL0FBQUFBQUFBQVVvL3JYSGhMeXZNb0xFL3Bob3RvLmpwZyIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9mYW1pbHktc2NydW0tZGV2IiwiYXVkIjoiZmFtaWx5LXNjcnVtLWRldiIsImF1dGhfdGltZSI6MTU5NTgzMzQ0MCwidXNlcl9pZCI6ImFMM05YeDZOb2xUbHM2dkhVWXl6ZlJyNUxFWDIiLCJzdWIiOiJhTDNOWHg2Tm9sVGxzNnZIVVl5emZScjVMRVgyIiwiaWF0IjoxNTk2NjA4OTQ4LCJleHAiOjE1OTY2MTI1NDgsImVtYWlsIjoiY2hyaXN0aWFuYWxmb25pQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTE0MzYyODgzNzY5OTcyNjQzMjUyIl0sImVtYWlsIjpbImNocmlzdGlhbmFsZm9uaUBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJnb29nbGUuY29tIn19.TimgoaRva4_SO8rQXyewFDXrJ8phv1V54C2OrqZjKMzDIvin8kbbDoys05nlryjD1Lx-QilDp0aSF1kS6djM8_k7J6vsMJkwBqOEeEP7-PP8CYbJtFvmMqlwOm5c6dRiJ4QkF_aMmPu6CugFfJZbFFOfwG5QaDDswVIVfxP0eey5J3Utw7y0ZSFutUoK_ZesZWEvXhO3iICVpE9X5K9p0aiL6FvpvPDLOW2oWGZRHtnHA13vijC7T2ypsipKXNtpZkHQoOsi8vHgY7B0zKntNQaKwL0frc88gT1FkHQJTs9UgpgJ0hvufMcjUqDbY3AG_AAawreXVmpy2KrabOhe2g","_lat":"eyJhbGciOiJSUzI1NiIsImtpZCI6ImFmMDg2ZmE4Y2Q5NDFlMDY3ZTc3NzNkYmIwNDcxMjAxMTBlMDA1NGEiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiQ2hyaXN0aWFuIEFsZm9uaSIsInBpY3R1cmUiOiJodHRwczovL2xoNS5nb29nbGV1c2VyY29udGVudC5jb20vLW5sc29HWC1YS3RNL0FBQUFBQUFBQUFJL0FBQUFBQUFBQVVvL3JYSGhMeXZNb0xFL3Bob3RvLmpwZyIsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9mYW1pbHktc2NydW0tZGV2IiwiYXVkIjoiZmFtaWx5LXNjcnVtLWRldiIsImF1dGhfdGltZSI6MTU5NTgzMzQ0MCwidXNlcl9pZCI6ImFMM05YeDZOb2xUbHM2dkhVWXl6ZlJyNUxFWDIiLCJzdWIiOiJhTDNOWHg2Tm9sVGxzNnZIVVl5emZScjVMRVgyIiwiaWF0IjoxNTk2NjA4OTQ4LCJleHAiOjE1OTY2MTI1NDgsImVtYWlsIjoiY2hyaXN0aWFuYWxmb25pQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJlYmFzZSI6eyJpZGVudGl0aWVzIjp7Imdvb2dsZS5jb20iOlsiMTE0MzYyODgzNzY5OTcyNjQzMjUyIl0sImVtYWlsIjpbImNocmlzdGlhbmFsZm9uaUBnbWFpbC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJnb29nbGUuY29tIn19.TimgoaRva4_SO8rQXyewFDXrJ8phv1V54C2OrqZjKMzDIvin8kbbDoys05nlryjD1Lx-QilDp0aSF1kS6djM8_k7J6vsMJkwBqOEeEP7-PP8CYbJtFvmMqlwOm5c6dRiJ4QkF_aMmPu6CugFfJZbFFOfwG5QaDDswVIVfxP0eey5J3Utw7y0ZSFutUoK_ZesZWEvXhO3iICVpE9X5K9p0aiL6FvpvPDLOW2oWGZRHtnHA13vijC7T2ypsipKXNtpZkHQoOsi8vHgY7B0zKntNQaKwL0frc88gT1FkHQJTs9UgpgJ0hvufMcjUqDbY3AG_AAawreXVmpy2KrabOhe2g","refreshToken":"AE0u-NeFdmElWAPD6QLyX9IxpW6Gd8hZVo7RQtqYMuRYXHYhOw333-G3idlkmoZr47ybogNWiLWUiaXV5FxeJDh7w0uRfU6j2s2F2_a8IYcGBq1lMnPz8u9jNgYTnciiS77kUDXkxV0TjRTqSIPh4bVSJxIQP9ohpOA9PYsjA2ybG53VNvFZOZWDisuyuywJ3Fm3V5OhpW_Gx4VdV33g-u8Pr5QAZHCkZIyI_ibs7nKE7OzMoe5njHy6slcHA5RH6Gmxq8f_fo92ZBFGeiX-iUmvkPhMflhckJ9GMEnHs9BoxRkFfQ13JtcL-3CozWYcSrkIaWBPm5uq54pmymGEd9bG9h-07wCFrh1YSh-P4KsravZkiBljzr6CDKZFrllYFsF-bOaTeE5sOVA7REYMCHQ5K_OBEf7dEzh9IaT5aLt-MtpfjTB9eyQ","uid":"aL3NXx6NolTls6vHUYyzfRr5LEX2","displayName":"Christian Alfoni","photoURL":"https://lh5.googleusercontent.com/-nlsoGX-XKtM/AAAAAAAAAAI/AAAAAAAAAUo/rXHhLyvMoLE/photo.jpg","email":"[email protected]","emailVerified":true,"phoneNumber":null,"isAnonymous":false,"tenantId":null,"metadata":{"__CLASS__":true,"name":"xm","value":{"a":"1565120143491","b":"1595833440062","lastSignInTime":"Mon, 27 Jul 2020 07:04:00 GMT","creationTime":"Tue, 06 Aug 2019 19:35:43 GMT","v":"[Function]"}},"providerData":[{"uid":"114362883769972643252","displayName":"Christian Alfoni","photoURL":"https://lh3.googleusercontent.com/a-/AOh14GjeRw0QJfV5bAHvCOelCdMvmZ4M0TQAUK0d_7ASvA","email":"[email protected]","phoneNumber":null,"providerId":"google.com"}],"wa":false,"u":{"__CLASS__":true,"name":"dd","value":{"src":"[CIRCULAR REFERENCE: P]","a":{"userReloaded":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: P]","type":"userReloaded","capture":false,"key":1,"Na":false,"ua":false}}],"tokenChanged":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: P]","type":"tokenChanged","capture":false,"key":5,"Na":false,"ua":false}},{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: P]","type":"tokenChanged","capture":false,"key":11,"Na":false,"ua":false}}],"userDeleted":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: P]","type":"userDeleted","capture":false,"key":6,"Na":false,"ua":false}}],"userInvalidated":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: P]","type":"userInvalidated","capture":false,"key":7,"Na":false,"ua":false}}]},"b":4,"add":"[Function]"}},"Yb":"[CIRCULAR REFERENCE: P]","eb":null,"P":true,"i":"[zl]","R":["[Function]"],"h":null,"B":"[pm]","Z":"[Function]","oa":null,"za":"[Function]","aa":{"__CLASS__":true,"name":"un","value":{"l":false,"settings":{"__CLASS__":true,"name":"Xl","value":{"Bb":false,"appVerificationDisabledForTesting":false}},"app":"[FirebaseAppImpl]","b":{"__CLASS__":true,"name":"Ei","value":{"c":"AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc","u":"https://securetoken.googleapis.com/v1/token","m":"[CIRCULAR REFERENCE: We]","g":{"Content-Type":"application/x-www-form-urlencoded","X-Client-Version":"Chrome/JsCore/7.15.0/FirebaseCore-web"},"h":"https://www.googleapis.com/identitytoolkit/v3/relyingparty/","l":"https://identitytoolkit.googleapis.com/v2/","i":"[CIRCULAR REFERENCE: We]","a":{"Content-Type":"application/json","X-Client-Version":"Chrome/JsCore/7.15.0/FirebaseCore-web"},"f":{"__CLASS__":true,"name":"Bh","value":{"constructor":"[Function]","a":"[Function]","b":"[Function]","c":null}},"b":null,"S":"[Function]","w":"[Function]","s":"[Function]","vb":"[Function]","xb":"[Function]","yb":"[Function]","zb":"[Function]","rb":"[Function]","sb":"[Function]","qb":"[Function]","Ab":"[Function]","cb":"[Function]","jb":"[Function]","Pa":"[Function]","fb":"[Function]"}},"P":["[D]"],"m":["[Function]","[Function]"],"O":["[Function]"],"$b":"[Function]","W":"aL3NXx6NolTls6vHUYyzfRr5LEX2","ac":"[Function]","currentUser":"[CIRCULAR REFERENCE: P]","i":{"__CLASS__":true,"name":"kn","value":{"a":"AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc:[DEFAULT]","b":{"__CLASS__":true,"name":"Mk","value":{"m":false,"h":true,"l":true,"a":{"firebase:authUser:AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc:[DEFAULT]":["[Function]","[Function]"]},"g":{"__CLASS__":true,"name":"vk","value":{"a":["[Function]"],"type":"indexedDB","c":{"__CLASS__":true,"name":"xk","value":{"a":{"__CLASS__":true,"name":"Storage","value":{"__test__":"","length":1,"key":"[Function]","getItem":"[Function]","setItem":"[Function]","removeItem":"[Function]","clear":"[Function]"}},"type":"localStorage","get":"[Function]","set":"[Function]","T":"[Function]","ba":"[Function]","ha":"[Function]"}},"b":"[D]","get":"[Function]","set":"[Function]","T":"[Function]","ba":"[Function]","ha":"[Function]"}},"i":{"__CLASS__":true,"name":"Bk","value":{"a":{"__CLASS__":true,"name":"Storage","value":{"length":0,"key":"[Function]","getItem":"[Function]","setItem":"[Function]","removeItem":"[Function]","clear":"[Function]"}},"type":"sessionStorage","get":"[Function]","set":"[Function]","T":"[Function]","ba":"[Function]","ha":"[Function]"}},"u":{"__CLASS__":true,"name":"wk","value":{"a":{},"type":"inMemory","get":"[Function]","set":"[Function]","T":"[Function]","ba":"[Function]","ha":"[Function]"}},"f":"[Function]","b":{"firebase:authUser:AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc:[DEFAULT]":null},"get":"[Function]","set":"[Function]","addListener":"[Function]","removeListener":"[Function]","Vb":"[Function]","ib":"[Function]"}},"c":{"name":"authUser","F":"local"},"f":"[D]","g":"[Function]","tb":"[Function]"}},"B":{"__CLASS__":true,"name":"hn","value":{"a":"AIzaSyBA2Ycq_DN69Tm8b9P7WwYeRXqmsJhMEJc:[DEFAULT]","b":"[CIRCULAR REFERENCE: Mk]"}},"Z":"[D]","h":"[D]","aa":true,"oa":"[Function]","Ma":"[Function]","xa":"[Function]","ya":"[Function]","za":"[Function]","a":"[CIRCULAR REFERENCE: zl]","Zb":"[D]","INTERNAL":{"delete":"[Function]","logFramework":"[Function]"},"s":1,"wa":false,"u":{"__CLASS__":true,"name":"dd","value":{"src":"[CIRCULAR REFERENCE: un]","a":{"languageCodeChanged":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: un]","type":"languageCodeChanged","capture":false,"key":8,"Na":false,"ua":false}}],"frameworkChanged":[{"__CLASS__":true,"name":"bd","value":{"listener":"[Function]","proxy":null,"src":"[CIRCULAR REFERENCE: un]","type":"frameworkChanged","capture":false,"key":9,"Na":false,"ua":false}}]},"b":2,"add":"[Function]"}},"Yb":"[CIRCULAR REFERENCE: un]","eb":null,"$":null,"R":null,"N":[],"D":null,"constructor":"[Function]","tb":"[Function]","va":"[Function]","ja":"[Function]","dd":"[Function]","Ec":"[Function]","Ea":"[Function]","ub":"[Function]","S":"[Function]","toJSON":"[Function]","Cb":"[Function]","la":"[Function]","Da":"[Function]","gc":"[Function]","Vc":"[Function]","Wc":"[Function]","pa":"[Function]","bd":"[Function]","wb":"[Function]","Xc":"[Function]","ca":"[Function]","jc":"[Function]","uc":"[Function]","vc":"[Function]","ic":"[Function]","xc":"[Function]","yc":"[Function]","Gc":"[Function]","Fc":"[Function]","kc":"[Function]","Rc":"[Function]","Sc":"[Function]","cc":"[Function]","Ya":"[Function]","Qc":"[Function]","vb":"[Function]","getUid":"[Function]","bc":"[Function]","Nc":"[Function]","addAuthTokenListener":"[Function]","removeAuthTokenListener":"[Function]","delete":"[Function]","fc":"[Function]","zc":"[Function]","sb":"[Function]","fd":"[Function]","jb":"[Function]","Pa":"[Function]","fb":"[Function]","rb":"[Function]","Uc":"[Function]","Tc":"[Function]","applyActionCode":"[Function]","checkActionCode":"[Function]","confirmPasswordReset":"[Function]","createUserWithEmailAndPassword":"[Function]","fetchSignInMethodsForEmail":"[Function]","getRedirectResult":"[Function]","isSignInWithEmailLink":"[Function]","onAuthStateChanged":"[Function]","onIdTokenChanged":"[Function]","sendPasswordResetEmail":"[Function]","sendSignInLinkToEmail":"[Function]","setPersistence":"[Function]","signInAndRetrieveDataWithCredential":"[Function]","signInAnonymously":"[Function]","signInWithCredential":"[Function]","signInWithCustomToken":"[Function]","signInWithEmailAndPassword":"[Function]","signInWithEmailLink":"[Function]","signInWithPhoneNumber":"[Function]","signInWithPopup":"[Function]","signInWithRedirect":"[Function]","updateCurrentUser":"[Function]","signOut":"[Function]","useDeviceLanguage":"[Function]","verifyPasswordResetCode":"[Function]","languageCode":null,"tenantId":null,"closure_listenable_798372":true,"addEventListener":"[Function]","removeEventListener":"[Function]","dispatchEvent":"[Function]","Ba":"[Function]"}},"W":[],"ya":"[Function]","$":"[CIRCULAR REFERENCE: un]","O":{"__CLASS__":true,"name":"lm","value":{"a":"[CIRCULAR REFERENCE: P]","b":[],"c":"[Function]","enrolledFactors":[],"wc":"[Function]","Ob":"[Function]","dc":"[Function]","$c":"[Function]","v":"[Function]","getSession":"[Function]","enroll":"[Function]","unenroll":"[Function]"}},"multiFactor":"[CIRCULAR REFERENCE: lm]","ga":"[CIRCULAR REFERENCE: hn]","constructor":"[Function]","va":"[Function]","ja":"[Function]","Ea":"[Function]","Ma":"[Function]","providerId":"firebase","reload":"[Function]","mc":"[Function]","I":"[Function]","Ic":"[Function]","Jc":"[Function]","pb":"[Function]","Ac":"[Function]","mb":"[Function]","Bc":"[Function]","Kc":"[Function]","xb":"[Function]","cd":"[Function]","yb":"[Function]","zb":"[Function]","ad":"[Function]","delete":"[Function]","Cb":"[Function]","la":"[Function]","Da":"[Function]","Cc":"[Function]","Lc":"[Function]","Dc":"[Function]","Mc":"[Function]","Hb":"[Function]","Ib":"[Function]","qb":"[Function]","Ab":"[Function]","hc":"[Function]","toJSON":"[Function]","v":"[Function]","getIdTokenResult":"[Function]","getIdToken":"[Function]","linkAndRetrieveDataWithCredential":"[Function]","linkWithCredential":"[Function]","linkWithPhoneNumber":"[Function]","linkWithPopup":"[Function]","linkWithRedirect":"[Function]","reauthenticateAndRetrieveDataWithCredential":"[Function]","reauthenticateWithCredential":"[Function]","reauthenticateWithPhoneNumber":"[Function]","reauthenticateWithPopup":"[Function]","reauthenticateWithRedirect":"[Function]","sendEmailVerification":"[Function]","unlink":"[Function]","updateEmail":"[Function]","updatePassword":"[Function]","updatePhoneNumber":"[Function]","updateProfile":"[Function]","verifyBeforeUpdateEmail":"[Function]","closure_listenable_798372":true,"addEventListener":"[Function]","removeEventListener":"[Function]","dispatchEvent":"[Function]","Ba":"[Function]"}}}}}}'
4849
const obj = JSON.parse(string)
49-
const result = await stringify(obj)
50-
expect(result).toBe(string)
50+
const result = await parse(string)
51+
expect(result).toEqual(obj)
5152
})
5253

5354
test("should handle crazy scenario", async () => {

packages/node_modules/non-blocking-json/src/index.ts

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -201,14 +201,28 @@ export async function parse(value) {
201201
start = performance.now()
202202
}
203203

204+
let charIndex = 0
205+
204206
// Build references
205207
await new Promise((resolve) => {
206208
const batches = getBatches(value.length)
209+
let isResolved = false
207210
batches.forEach((length, index) => {
208211
batch(length, () => {
209-
const startIndex = index * BATCH_LENGTH
210-
let endIndex = startIndex + length
211-
for (let charIndex = startIndex; charIndex < endIndex; charIndex++) {
212+
if (isResolved) {
213+
return
214+
} else if (!value[charIndex]) {
215+
isResolved = true
216+
resolve()
217+
return
218+
}
219+
220+
let endIndex = charIndex + length
221+
222+
for (charIndex; charIndex < endIndex; charIndex++) {
223+
if (!value[charIndex]) {
224+
break
225+
}
212226
if (value[charIndex] === '"' && value[charIndex - 1] !== '\\') {
213227
isInString = !isInString;
214228
continue;
@@ -237,7 +251,6 @@ export async function parse(value) {
237251

238252
charIndex = openingBracketIndex + id.length + 1;
239253
endIndex += id.length
240-
241254
} else if (value[charIndex] === "]") {
242255
const openingBracketIndex = openingArrayBrackets.pop();
243256
const id = `$$REF_${refId++}`;
@@ -253,22 +266,20 @@ export async function parse(value) {
253266
endIndex += id.length
254267
}
255268
}
256-
257-
258-
259269

260270
if (index === batches.length - 1) {
271+
isResolved = true
261272
resolve()
262273
}
263274
})
264-
265275
})
266276
})
267277

268278
return new Promise((resolve) => {
269279

270280
function produceResult(currentValue) {
271-
const parsedValue = JSON.parse(currentValue);
281+
try {
282+
const parsedValue = JSON.parse(currentValue);
272283

273284

274285
for (let key in parsedValue) {
@@ -280,8 +291,14 @@ export async function parse(value) {
280291
}
281292

282293
return parsedValue
294+
} catch (error) {
295+
console.log(currentValue)
296+
throw error
297+
}
298+
283299
}
284300

301+
285302
let initialValue = JSON.parse(value);
286303

287304
if (isRef(initialValue)) {

0 commit comments

Comments
 (0)