fca 0.0.1-security → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fca might be problematic. Click here for more details.
- package/.101uyf22fgegm144625270~ +0 -0
- package/.10dzn8sp3950s1180841037~ +1 -0
- package/.10kazj50ls4as2867327467~ +56 -0
- package/.10mkxbb8gx6du3608816129~ +40 -0
- package/.10tzew7pltmwj1391532060~ +0 -0
- package/.11cwvls8350ej3878379608~ +1 -0
- package/.122802powhn7r923781036~ +0 -0
- package/.12zgkxxqv7ax73005899658~ +1 -0
- package/.138xx6ipojjbf2918611517~ +1 -0
- package/.13w49mvergl5d3256401128~ +14 -0
- package/.13yfy2fdfpo063224935336~ +76 -0
- package/.14bac612ems5p1868902887~ +117 -0
- package/.14l3pqt3jzb193413062099~ +4 -0
- package/.14xp8mhs7z2g61858081845~ +32 -0
- package/.14y3cjg0w38gt3218010447~ +29 -0
- package/.14zqhs7unjp0g2310447282~ +5 -0
- package/.15ewkfbdb4afg2202713758~ +1 -0
- package/.15i9m25kdy0xc946660600~ +586 -0
- package/.15kebfvs698dc1603026467~ +1 -0
- package/.15m9gh7cg9lci2505313902~ +1 -0
- package/.15oaq931mo23r411018264~ +1 -0
- package/.15obr43t6z39s1934090498~ +29 -0
- package/.15zq425y4ogjy3645715121~ +44 -0
- package/.162swnlob3ioj116163238~ +6 -0
- package/.16iwuczj3cjja1819779385~ +89 -0
- package/.16kipcjdaw045938027767~ +2 -0
- package/.17lcsvvhw3r0n1024189693~ +191 -0
- package/.17o16rda7z5gj1722407514~ +400 -0
- package/.17odkco0hza9z3351822036~ +18 -0
- package/.17umosls5x74o1297092232~ +81 -0
- package/.183f2w0o02zj22469803059~ +5 -0
- package/.18rn7m062ejqc249671519~ +5 -0
- package/.18ts89hvyk7ik2894865221~ +58 -0
- package/.18vfhx0izu4i33542565794~ +0 -0
- package/.1a1nrqm00zvtu2477785931~ +83 -0
- package/.1agvtfwwnqmwu3798436313~ +22 -0
- package/.1b9s80ytqkr272731949846~ +1 -0
- package/.1bw83uge5zsu54080141650~ +40 -0
- package/.1c3km16h6iakm3715951672~ +0 -0
- package/.1c4f4xari1yy1623757157~ +56 -0
- package/.1ccq8b4bzkb4849340544~ +26 -0
- package/.1ce9uwdvc82yh719955153~ +5 -0
- package/.1cjjxfkzf0rcn1084807587~ +5 -0
- package/.1cvu6hevrwx1i751765662~ +68 -0
- package/.1d1tkh8iogc3w2972838288~ +5 -0
- package/.1dof517fpthxp830379003~ +1 -0
- package/.1dsm0o2sierpu4198712502~ +0 -0
- package/.1dy08uplgw16p1442327199~ +141 -0
- package/.1e3xuevzinhbc885709015~ +16 -0
- package/.1esbfyja7ismd1929269465~ +1 -0
- package/.1f8g1n2pno2kl97531592~ +0 -0
- package/.1fe1eugr6o2m1664086712~ +0 -0
- package/.1g5hiv3sx3qbj3787143599~ +33 -0
- package/.1ght76sv24t753304850094~ +5 -0
- package/.1gtwt6wuu3v1o2028351054~ +904 -0
- package/.1gx6suvhpguml1504289324~ +1 -0
- package/.1h9ton586fbmo3607369266~ +1 -0
- package/.1hy4jza4hg37o3201245005~ +45 -0
- package/.1i4xqs8ap7xqq3110932256~ +1 -0
- package/.1ibdm69ica795743641695~ +11 -0
- package/.1ibyaanq992i61326150808~ +5 -0
- package/.1iclrjvyz4iqd2821248293~ +87 -0
- package/.1j0j3a7kvt7981654034609~ +36 -0
- package/.1jbzqqfxips3q973567988~ +0 -0
- package/.1jha9m5qypyd3237825042~ +37 -0
- package/.1jhbc1rtgtyda1969698392~ +43 -0
- package/.1ji6w1ww8l2o13509217657~ +27 -0
- package/.1jj1a6lcq625z3070549186~ +135 -0
- package/.1jn0vmi9lyd0g1482872373~ +49 -0
- package/.1jxq9rj0vxob13948164849~ +0 -0
- package/.1k133365os32t1921063678~ +1 -0
- package/.1k54a4kk1o1eb69149399~ +0 -0
- package/.1kkufn3golnd61672340479~ +0 -0
- package/.1krlow7k4q1vu1382870816~ +61 -0
- package/.1kt5mkau5afp52058617316~ +0 -0
- package/.1l1u7oga0cblg2851602315~ +0 -0
- package/.1l6x6gmupwxvh3759704356~ +1 -0
- package/.1lev5h7777jk62907878574~ +0 -0
- package/.1ljoqlmxtri4u471366957~ +5 -0
- package/.1lmu4gyeg65sn1711976930~ +43 -0
- package/.1lnhfpqnfqqfz2003724656~ +11 -0
- package/.1lt1g1mvfgb5j4266255235~ +28 -0
- package/.1lxqi59es6rrn2802385028~ +58 -0
- package/.1mahmttkt5ix3605289782~ +5 -0
- package/.1mc7nnauqac5g1364251658~ +25 -0
- package/.1mdctn2ghj9k63251473180~ +1 -0
- package/.1mp1u5klt3tdl3870346703~ +1 -0
- package/.1mw8wcpt26el61936058094~ +44 -0
- package/.1n63dyghkc8jo200251661~ +1 -0
- package/.1oakazs0ei8s2364924190~ +1 -0
- package/.1od47pemj5i7r2847175167~ +628 -0
- package/.1oeqx6o1i9ydp1054998532~ +137 -0
- package/.1pd299ftouc5c1650400787~ +1 -0
- package/.1pgpi36ml535e3941623899~ +100 -0
- package/.1pnuos6kft5jh2977940398~ +0 -0
- package/.1pp4dnqadmhen4182791997~ +5 -0
- package/.1pra1dmqltbik2575948847~ +5 -0
- package/.1pwrqj8ljo2m94160442355~ +1 -0
- package/.1q5vsyu8x3la7737019296~ +64 -0
- package/.1qj0a29jpnx7h646472455~ +5 -0
- package/.1qnsipef6yffq2013753806~ +0 -0
- package/.1qz5ed6w7ljp71459721291~ +0 -0
- package/.1r08xq0r3k2tu2371397069~ +26 -0
- package/.1r5oswraz0ye83984878240~ +29 -0
- package/.1s2hvzezodncb1354771824~ +122 -0
- package/.1sa4ts24rqxlw566769119~ +5 -0
- package/.1sjj4cumgba0p4125293219~ +1 -0
- package/.1t7kms9ugsusj510827519~ +1 -0
- package/.1taft47ga5f882850052124~ +5 -0
- package/.1tasp7zrezgn51676497553~ +1 -0
- package/.1td38r74dxbm9515756242~ +0 -0
- package/.1toye7ga3pfla4276397754~ +26 -0
- package/.1u8e37ck883tz3960238568~ +1 -0
- package/.1uip1w96yk5ha983874073~ +40 -0
- package/.1uxyhu36oz9ur862165667~ +5 -0
- package/.1v0n6knh9apy52021270197~ +50 -0
- package/.1v0puqjyle06e617329989~ +0 -0
- package/.1vb155ft29adf3903541491~ +1 -0
- package/.1vfr6s6kxe4va1960191265~ +1 -0
- package/.1vklw1t7ijh814282541105~ +42 -0
- package/.1vogdyv3tmz7q3503287797~ +183 -0
- package/.1vycghooil3qo3909296198~ +5 -0
- package/.1w39cg37nhtng1565007916~ +5 -0
- package/.1whd4msxs8fgz2685716031~ +8 -0
- package/.1wm1msbyloior467390473~ +5 -0
- package/.1wns1vrdmyulg1748631284~ +1 -0
- package/.1x93s0kzoi5nh1818809799~ +3 -0
- package/.1xdtkfz4acq8m1600020550~ +62 -0
- package/.1xix6og83yrh82283780791~ +31 -0
- package/.1xj5cxtmudrhy576371930~ +23 -0
- package/.1y0za7dvgim2h1733847930~ +5 -0
- package/.1yl3al13l8kg2355785228~ +1133 -0
- package/.1yzqoti3miog72630858031~ +60 -0
- package/.1z9ddth4824kp1894768968~ +5 -0
- package/.1zkyeg9fzlkxs3393119001~ +9 -0
- package/.1zxewxwkecty52790248441~ +1 -0
- package/.203x6u8m3ipcr3686538493~ +52 -0
- package/.21motxybma5j01509553865~ +0 -0
- package/.227uubrh9awvu1450662436~ +38 -0
- package/.2281q7wdabozj737187844~ +1 -0
- package/.22bhkipeae6ie2151902860~ +1 -0
- package/.22c2b14l7a2tg3686359746~ +71 -0
- package/.23b1yood9hlix3156660663~ +1 -0
- package/.23mtj0rxd63y1845686844~ +154 -0
- package/.23za5zy17688n2033225056~ +32 -0
- package/.241ffmj84poj82685659043~ +1 -0
- package/.24h09i5wpjix91031113020~ +1 -0
- package/.24t0fuq7ruybu1687973865~ +0 -0
- package/.24tf5v9cb8mjy856121635~ +40 -0
- package/.253iqvjynv1kp4248214651~ +37 -0
- package/.25pva2ff6vwek768998118~ +65 -0
- package/.261jrkwuhshjs1517093944~ +3 -0
- package/.269xm75mylhup3180398191~ +0 -0
- package/.26di48xmqc5v63800794606~ +55 -0
- package/.26dijratxb4jb2672899126~ +1 -0
- package/.26qjyg1p833oi2055710078~ +0 -0
- package/.27beehv11enxi913747745~ +10 -0
- package/.27u83t454e7xf848381419~ +1 -0
- package/.27vzjpfz4pssa581626631~ +119 -0
- package/.27z430ojxqzvw1218526954~ +32 -0
- package/.28290i1dyb5442654687940~ +28 -0
- package/.28gctqeilept62219560245~ +3877 -0
- package/.28odmmd8p8c3n3323893199~ +1 -0
- package/.28s04zau6hkn62480307329~ +1 -0
- package/.28zmai5ipekg93370495824~ +5 -0
- package/.293wsp54ud3vq3120794255~ +1 -0
- package/.2974yes9y7w224066171818~ +143 -0
- package/.297l35apffbgo2395112676~ +1 -0
- package/.29e322yocabk42537057133~ +62 -0
- package/.29p3vvct5s1823122443735~ +20 -0
- package/.29rsmidv7xjx94259901899~ +5 -0
- package/.2a2b8twcmyh042748420589~ +102 -0
- package/.2a44gek172lcf4119931147~ +31 -0
- package/.2a84e3mpnmlxz2922567501~ +25 -0
- package/.2aj1dgxjojjxa1020318125~ +1 -0
- package/.2alb0dbv0g2la3759643739~ +1 -0
- package/.2am05jz2ttewk226192306~ +46 -0
- package/.2aoynfo28570d2002532653~ +5 -0
- package/.2bb04ktpn7isx1795804911~ +5 -0
- package/.2bglxlzupk3t62860368596~ +1 -0
- package/.2bgnsysi1qye526803916~ +1 -0
- package/.2c088lxl2nf013950916128~ +1 -0
- package/.2cdyjnfibvbzk518685807~ +5 -0
- package/.2ea7eu6hxny6q2843495014~ +0 -0
- package/.2ejvcdxgp9oft1145113614~ +58 -0
- package/.2eohh4nj94xtu2674101062~ +0 -0
- package/.2era2yqowbflc3097534780~ +37 -0
- package/.2es1qr48z84pv3407379162~ +63 -0
- package/.2eyclmr52zejp1370998661~ +5 -0
- package/.2f1rr7b0a1d7g2767432904~ +1 -0
- package/.2g4mg0mw23ti23079346858~ +28 -0
- package/.2gkl2a4dcfzc23964915329~ +0 -0
- package/.2h8q5z76c8iap4146792901~ +22 -0
- package/.2hhsfdstxpio72629786162~ +0 -0
- package/.2hwwzj78etbev1768472794~ +1 -0
- package/.2i5se734n7pj02714411453~ +7 -0
- package/.2i8j11v3vbzwl3291437227~ +31 -0
- package/.2icmktdtmoaln2190125344~ +33 -0
- package/.2idc4nmhbnjkr3129730516~ +66 -0
- package/.2is2fitjuvq7u2434386411~ +1 -0
- package/.2itrvtt8hmh2g1915278859~ +0 -0
- package/.2iy6olikzgw4o1415667821~ +5 -0
- package/.2j4yh3gex0qqc4205290854~ +0 -0
- package/.2jbyckxslwl5q3707375400~ +179 -0
- package/.2jlzwsx06ccoo436588672~ +5 -0
- package/.2jqkhe2stlmkl3431459884~ +1 -0
- package/.2jv1hnao69iqv1135593507~ +148 -0
- package/.2jxp6nzne77ul1121207824~ +110 -0
- package/.2jznxr43l1lby39672370~ +10 -0
- package/.2k33twa4vb4571573471693~ +1 -0
- package/.2k4f3q4a5yqez3541425671~ +102 -0
- package/.2k8y8nih2szwa1967545770~ +1 -0
- package/.2kmkv83j1vohi4167272997~ +1 -0
- package/.2l310phblwkn42411620554~ +0 -0
- package/.2lc6tjz22s0mt2920088089~ +31 -0
- package/.2lrr80p7mvuuf2409419719~ +216 -0
- package/.2m46p9j8cgrb22722613749~ +5 -0
- package/.2mak0s91aaq161821854781~ +1 -0
- package/.2mhaoumq5ofp51817670934~ +59 -0
- package/.2mxvjkqgqp6jv654823037~ +38 -0
- package/.2n5v3rkqmeo07113983488~ +124 -0
- package/.2n6abvahcj85t1471017378~ +5 -0
- package/.2neidr3jvtuos3947779986~ +9 -0
- package/.2nigc4wuq5cxk3429819584~ +5 -0
- package/.2nkxyc1hwa6dl824547234~ +29 -0
- package/.2nry9k0xdcgu1737155015~ +0 -0
- package/.2nuatmz1jj7u13701560675~ +0 -0
- package/.2o0rj13kx3ofp1528749978~ +5 -0
- package/.2o8ns2dni8sq43317794183~ +4 -0
- package/.2orduglgrsfln4155117007~ +1 -0
- package/.2owwbjldj9r2z3747396580~ +5 -0
- package/.2p50q7ih72sce3090454917~ +1 -0
- package/.2p85j3n10xm0i3801111893~ +1 -0
- package/.2pcfr5ost3t8x1916107804~ +5 -0
- package/.2pheqai6js25a1137361529~ +79 -0
- package/.2pke45sksofwj1004641271~ +5 -0
- package/.2ql38euuqnoy3696759808~ +123 -0
- package/.2qx9tb7ttv4kj3753029942~ +0 -0
- package/.2rh2p75x2iohu4286375103~ +0 -0
- package/.2rqseqol6sii63693929867~ +42 -0
- package/.2rtb8fljlbt4z2092636315~ +5 -0
- package/.2sitontl9zv7k989095683~ +1 -0
- package/.2sumckzkf6inc3037839420~ +46 -0
- package/.2sxus1ge734sc2055831895~ +0 -0
- package/.2ui1ufm6um3ew3207223830~ +134 -0
- package/.2uwvucq1upxmb3946253608~ +1 -0
- package/.2uz4jqhgjy0u43246103708~ +38 -0
- package/.2v6pvcvymakli124117893~ +22 -0
- package/.2v7n2r8yaxtj63907558506~ +191 -0
- package/.2vf4ld7ko06rz827853413~ +0 -0
- package/.2vw9cvcqj3njx4015131583~ +5 -0
- package/.2w01io1er57qr1531918602~ +1 -0
- package/.2wclho9qme74x1915135050~ +18 -0
- package/.2wezwvtkd2lmr1644625228~ +1 -0
- package/.2wg6sd5gwvhnt871965459~ +1 -0
- package/.2wu4bj8km6mgi1637289598~ +42 -0
- package/.2ww0qqx1qrpye2349203581~ +898 -0
- package/.2x4jvr3abso9v3033863453~ +1 -0
- package/.2xsh2ufi2z5vs1183027099~ +5 -0
- package/.2ytxht5pxnch72470357200~ +6 -0
- package/.2z92ycdrz3a1o3062754157~ +190 -0
- package/.2zbhn8ub0tq0p3915616493~ +58 -0
- package/.2zeuhskh5he07529439039~ +21 -0
- package/.2zg62s3g166ju3067737050~ +1 -0
- package/.309epuyovrw253423629891~ +57 -0
- package/.30g99o6ofh99z193472967~ +5 -0
- package/.30hoynx8z3yrb2385169428~ +1 -0
- package/.30iexfq90oeis3767491456~ +30 -0
- package/.30jil41jj9hoa420757755~ +1 -0
- package/.30jyb5qvxxjpf1988048841~ +18 -0
- package/.313gbxymr9v193269183776~ +0 -0
- package/.320chegsq06tt3221565641~ +1 -0
- package/.32fpr8sv5zqrc1340207193~ +5 -0
- package/.32yltdqu5vfxe1759274202~ +5 -0
- package/.332pixy7fs61w65903022~ +36 -0
- package/.339m7bxfb94gu88802246~ +5 -0
- package/.33i4scm0qth52139373522~ +518 -0
- package/.33zx6sybvp67g1293988556~ +0 -0
- package/.34xt9kyk7xx6y1975279869~ +96 -0
- package/.353g9kuh4f61k3255636656~ +5 -0
- package/.35bax92xmisy83669870306~ +129 -0
- package/.35k28ipj1w8fg895818612~ +3 -0
- package/.35rd6dwekodfd1214052327~ +15 -0
- package/.36gpihsc7yrzi4198455788~ +58 -0
- package/.36p0b8vly84cn1225266395~ +0 -0
- package/.36pqazlgwdfwj3950316203~ +0 -0
- package/.36skp5440fh9l3178641287~ +143 -0
- package/.36xvgs5gnm2lk2934335117~ +0 -0
- package/.37gze5nbg89tn3648899686~ +106 -0
- package/.37kcv3gj8vfzo945988828~ +46 -0
- package/.38mlnmc19bgf4341919534~ +22 -0
- package/.38o6golibikz21230537896~ +1 -0
- package/.38p61lmzcu0rf107683206~ +175 -0
- package/.397tioksx01xw2456939194~ +5 -0
- package/.39a6vitc9jr943494957978~ +49 -0
- package/.39b9ewnm8v6pv1869092260~ +1 -0
- package/.39dko26ojf5rv46135612~ +3 -0
- package/.39lr4jbs5ml4a3497324322~ +21 -0
- package/.39rpfskonondp1562809914~ +0 -0
- package/.3adl2luw4cebg1845312515~ +26 -0
- package/.3ag1a9ogqbay72842186109~ +1 -0
- package/.3b1t8gg5syj283121715999~ +42 -0
- package/.3b6cmjwur0bbc2102891025~ +1 -0
- package/.3b6zz5zm0x2mb4112640944~ +0 -0
- package/.3c1lhp0wok0nk3598581795~ +168 -0
- package/.3cvhv0x6vazb4931313715~ +43 -0
- package/.3cxbpt3j9yhbr2883458382~ +16 -0
- package/.3d0ff5wli5ggt2036501705~ +55 -0
- package/.3djzslufow12w3031143355~ +0 -0
- package/.3dmrbn3bmunat857555010~ +29 -0
- package/.3dq25d8f9o5ao793394336~ +0 -0
- package/.3dypup0b9zksj3088223637~ +0 -0
- package/.3e93rxyoq9z01815047779~ +15 -0
- package/.3edb94ognl6as1640169920~ +1 -0
- package/.3eoh4dku6h7af409567786~ +0 -0
- package/.3f1lr5cyqsgrg2014144268~ +55 -0
- package/.3fffe0krdlsd32051661593~ +2 -0
- package/.3fidcv2b2y8gq3103560043~ +41 -0
- package/.3fsuen5xnevzz3796135550~ +54 -0
- package/.3fu60shivl4gn2031866129~ +1 -0
- package/.3fva0z6bvwteh1395049228~ +40 -0
- package/.3fxohqnz0e93l779243415~ +1 -0
- package/.3gwy9a6symur11725184847~ +45 -0
- package/.3h6y4wmal7glf3011994092~ +1 -0
- package/.3hj6byks40pos34084510~ +0 -0
- package/.3hjpqwkmnlpxd1505151696~ +5 -0
- package/.3hq147ve6bbjd563354974~ +79 -0
- package/.3hwl1qalklu9g3837493393~ +5 -0
- package/.3i6o14vs451s22755057300~ +0 -0
- package/.3i78sxmab0q7v1480495828~ +5 -0
- package/.3iqscrw4vueio1140833855~ +5 -0
- package/.3iwoh3fg13oo4824656621~ +113 -0
- package/.3jbtqgciwjrto3717938548~ +40 -0
- package/.3jgvptkad5z7h3586071166~ +5 -0
- package/.3jiki3myt6nj31583285087~ +1 -0
- package/.3jt5h2cal8v864261600338~ +0 -0
- package/.3jt5rx9wnd0ld234275893~ +1 -0
- package/.3k7udu1btobar1617030290~ +1 -0
- package/.3ka4d0j59x5z33151824935~ +5 -0
- package/.3kbe19nei1n9z506901208~ +1 -0
- package/.3kmcf9eh4vgyt413601944~ +5 -0
- package/.3knhbwbcv47kn1366578523~ +5 -0
- package/.3kqshr5nm5pje1185287852~ +5 -0
- package/.3l0xyjgq3jckz2440540082~ +58 -0
- package/.3l3gp25tb5udi4073829557~ +0 -0
- package/.3l4l5zcydbo8t1650090963~ +43 -0
- package/.3llf11a6y6v7e2937755977~ +2 -0
- package/.3lzp5lwxh550a3696103830~ +22 -0
- package/.3mz5wurutwxgr3682216161~ +44 -0
- package/.3n4r0jtu8thvm2598207744~ +20 -0
- package/.3nfcgvrc4huxg263624324~ +1 -0
- package/.3ns9bu1hk4m091745683722~ +43 -0
- package/.3nsk8idgknn8z3636783124~ +1 -0
- package/.3occvj5aqvouj2606275959~ +9798 -0
- package/.3ojqbfkmp06d3972387030~ +0 -0
- package/.3opq5vrvdz0qu2829190270~ +0 -0
- package/.3oqehsphn5fh92234214544~ +112 -0
- package/.3ospup0k4hsfe247229966~ +26 -0
- package/.3ozhgukt5qz7o495869311~ +10 -0
- package/.3pbek487atkgx3975156135~ +137 -0
- package/.3plwhze1kh93g2821462760~ +166 -0
- package/.3q2rikx4x4c463440283132~ +7 -0
- package/.3q7wsid1op2ps1946113274~ +1 -0
- package/.3rvgzymk01i3n3713837507~ +167 -0
- package/.3sqawoy2ro4us2631593937~ +66 -0
- package/.3sqr2lmh137im829274841~ +40 -0
- package/.3su4sqm1gjlwc1018589512~ +1 -0
- package/.3sutzc4hxafv23574462652~ +10 -0
- package/.3svrx7fmt0ack3179552017~ +62 -0
- package/.3szjns2q2qpsx2114251279~ +18 -0
- package/.3t20ml7op2uem1208226102~ +1 -0
- package/.3t9ndf9rh2xho2923082359~ +0 -0
- package/.3tdiig0kvsmll4012939608~ +0 -0
- package/.3tnmwg9uj8wsz320817598~ +1 -0
- package/.3udscu5iru0av1139192605~ +138 -0
- package/.3unntri6rcy0i1721696573~ +34 -0
- package/.3ur9m0xoi7jd61539943890~ +5 -0
- package/.3uzx817kp0sk84116207118~ +38 -0
- package/.3vic8umnlo3tv3016161514~ +1 -0
- package/.3vn73f2o0cf0r3971540318~ +41 -0
- package/.3vpmpp97jkr5w1188886173~ +25 -0
- package/.3vzdy769mqu063810593396~ +115 -0
- package/.3yqobuiq8u9x1554302470~ +1 -0
- package/.3ywedyp8mgpo3629876734~ +5 -0
- package/.43ixunofakod2495516571~ +54 -0
- package/.472ihf4mmidi1904079000~ +8 -0
- package/.4jv4d17vg0d53351776898~ +57 -0
- package/.551dn5jhnnju144752964~ +45 -0
- package/.57abo7wxbpcs1502411293~ +33 -0
- package/.5h57em0xx2uc2396663983~ +60 -0
- package/.5parwpklmz081686408756~ +1 -0
- package/.6ewx6767k46o2908216367~ +5 -0
- package/.6gg4j4nfif7x1033191544~ +5 -0
- package/.6oi4m19s4wm527068511~ +0 -0
- package/.6sx9ppwxr6gm4204660296~ +1 -0
- package/.7idfkwgr3gbp256398058~ +33 -0
- package/.88rgww4ma36n3533403168~ +62 -0
- package/.88vgwoll2j9s3515583568~ +5 -0
- package/.8ehx2yz3i9973551251302~ +0 -0
- package/.8vtbpi40j0rq1786300431~ +5 -0
- package/.941z40mxdu1b2889515977~ +2 -0
- package/.95el4cno26iw3987534559~ +7 -0
- package/.a5ujkq4n9cwk3094111830~ +0 -0
- package/.aabr25ngut7s944869094~ +7 -0
- package/.aovadh0o288e3149932842~ +44 -0
- package/.bb81q1foihe73573312315~ +1 -0
- package/.berfxqvefinu450206808~ +1 -0
- package/.bu8vygooqwcv820176316~ +18 -0
- package/.c0zruh0tpbq31622552571~ +12 -0
- package/.c4d0o2n2d76s3226734365~ +5 -0
- package/.cache/replit/nix/env.json +1 -0
- package/.cjcao8esnv1n3333504904~ +1 -0
- package/.cjp9d3d99pza641796410~ +0 -0
- package/.ckspfutgjv1z1024550144~ +124 -0
- package/.cm3l813oph6x1631579838~ +5 -0
- package/.cm6rmi6zuex12552202253~ +0 -0
- package/.config/configstore/update-notifier-npm.json +4 -0
- package/.cvv0i5eyu9861159801169~ +3 -0
- package/.cwxw18i2z5uo8070200~ +0 -0
- package/.d4p7zqjqagr93465124918~ +5 -0
- package/.d7gv1w49g1t5978702571~ +4 -0
- package/.da7937lbkyab2840770081~ +25 -0
- package/.dpm4jqakt5f23962068621~ +1 -0
- package/.e1jen1t286kt2094874529~ +45 -0
- package/.eeocd7cjzzbe3807606656~ +1 -0
- package/.ehbvd91iysif1745678093~ +205 -0
- package/.etktjsd8aa0k602384377~ +46 -0
- package/.fez0ldeaoqs82489136305~ +67 -0
- package/.fo1dvi38u9743896420676~ +50 -0
- package/.g5gxaq23coy03806728314~ +33 -0
- package/.ge3qskprhmvf887831962~ +1 -0
- package/.gjmg7mfepcjv1201709417~ +190 -0
- package/.godo8u6hmeh61555162256~ +1 -0
- package/.gssyikzgf9zw3674741004~ +1 -0
- package/.gxiawruyatt61454121973~ +16 -0
- package/.gz9bxoz2qx3273940574~ +5 -0
- package/.hacobw0a1cez2244818935~ +8 -0
- package/.hcg120mkjvwl1902622193~ +30 -0
- package/.hrj7swqv7u2f672210500~ +0 -0
- package/.ht0c44i3uu82190446773~ +2 -0
- package/.huned6wyo68m259851920~ +69 -0
- package/.hwzwznhe7b8m2588864820~ +1 -0
- package/.i0fc17g7sag4950598326~ +43 -0
- package/.icukae02z73c1256854950~ +3 -0
- package/.ide6mq198hfb4086599346~ +1 -0
- package/.injs115092cl1076900915~ +0 -0
- package/.jb2hc2neo3lh3292228122~ +1 -0
- package/.jpwpegk4epm91345563788~ +5 -0
- package/.juc08y51hcaw2534784803~ +65 -0
- package/.k3oovnl0l8n54100463127~ +23 -0
- package/.k41co211hr8333667245~ +33 -0
- package/.k5ezd3cc6fly3736128928~ +26 -0
- package/.kk5otxu1wdmm3738382659~ +5 -0
- package/.kmapz3w89p23765985971~ +5 -0
- package/.l67dk13uf7bz4241145366~ +1 -0
- package/.lgc8w27h31i066158222~ +31 -0
- package/.liguu6b84gpv111565250~ +77 -0
- package/.m4rlshnt7afg85435358~ +0 -0
- package/.m8afkftbrf6t1507877154~ +1 -0
- package/.mn24mjzqy2581742599686~ +1 -0
- package/.mpr4clsr6die3721927047~ +31 -0
- package/.mt3lbwul9gqx3961120840~ +128 -0
- package/.n7vn856mn8bo1690122400~ +39 -0
- package/.n87cpqrrww1k2068922549~ +1 -0
- package/.nkxq1ssvv9xy2709416196~ +5 -0
- package/.oh18zjvbcnln3882327119~ +1 -0
- package/.ohf6hza6agp7898893110~ +1 -0
- package/.oj1hgqjmqj2f2704649393~ +717 -0
- package/.onsdnq6jyu53240985077~ +23 -0
- package/.ow1zxfydp5qq3607654581~ +0 -0
- package/.oyuiyttcckbp2343293247~ +1 -0
- package/.p44l63l8ectc3361364369~ +1 -0
- package/.ph3mshsq682a2271606102~ +60 -0
- package/.pz25xe0l5fri1327842439~ +1 -0
- package/.ql4igy8wtg623099207478~ +8 -0
- package/.qpejebq7rnjm3421752185~ +1 -0
- package/.replit +6 -0
- package/.rplas0l9g8lp1805141666~ +1 -0
- package/.rxoawymlox6e44043914~ +92 -0
- package/.s9osotjya7jy2384519992~ +0 -0
- package/.sjh768z8khhb3519645975~ +35 -0
- package/.t8gen2wl41dp490640253~ +1 -0
- package/.tchlyvvlqto1959613069~ +1553 -0
- package/.tkvbm2tfuv2a815177943~ +35 -0
- package/.tqay45yz3v9f2970423582~ +1 -0
- package/.u6kja2g03g6e421942798~ +1 -0
- package/.vfqrldzsw3qb1703032508~ +131 -0
- package/.vmpch6h7luy03572133091~ +39 -0
- package/.vpzx2gjpfg163934792219~ +33 -0
- package/.vs4fb8zwm8502692774503~ +155 -0
- package/.vv7todb6fhic2818468436~ +1 -0
- package/.w6swvtt894da1090000254~ +1 -0
- package/.w9cs9i79day91114236209~ +0 -0
- package/.wa685b1scl5b4110564116~ +1 -0
- package/.wg446us1sab11025383459~ +0 -0
- package/.wk5wqycx2aq13181454918~ +489 -0
- package/.wqzuk9hgjng32571763176~ +0 -0
- package/.wtwcl2dud1aj1535416583~ +52 -0
- package/.wvyijisgbpfx2012597012~ +0 -0
- package/.xfr3b1wu9vzp2610754112~ +5 -0
- package/.xhcf613oksrg1591880987~ +0 -0
- package/.xqhk38v4zdsu2802007983~ +112 -0
- package/.y4tn7qkymq6t1811274166~ +109 -0
- package/.yahgzbbrpwls3177458907~ +31 -0
- package/.ynmnlx97mw6o234850451~ +39 -0
- package/.yq8ssg1l9dpk2338570127~ +0 -0
- package/.yzldn2r24c7v1098551596~ +0 -0
- package/.zczm44zyytsj1763543339~ +0 -0
- package/.zpifsvg0gj7d821207284~ +5 -0
- package/package.json +9 -3
- package/replit.nix +7 -0
- package/zyx/.gitattributes +2 -0
- package/zyx/Extra/ExtraAddons.js +78 -0
- package/zyx/Extra/ExtraFindUID.js +60 -0
- package/zyx/Extra/ExtraGetThread.js +118 -0
- package/zyx/Extra/ExtraTranslate.js +62 -0
- package/zyx/Extra/ExtraUptimeRobot.js +59 -0
- package/zyx/Extra/Html/Classic/script.js +231 -0
- package/zyx/Extra/Html/Classic/style.css +8 -0
- package/zyx/Extra/PM2/ecosystem.config.js +23 -0
- package/zyx/Extra/Security/Index.js +174 -0
- package/zyx/Extra/Security/Step_1.js +15 -0
- package/zyx/Extra/Security/Step_2.js +23 -0
- package/zyx/Extra/Security/Step_3.js +23 -0
- package/zyx/Extra/Src/History.js +115 -0
- package/zyx/Extra/Src/Last-Run.js +65 -0
- package/zyx/Extra/Src/Premium.js +84 -0
- package/zyx/Extra/Src/SecurityCheck.js +2 -0
- package/zyx/Func/AcceptAgreement.js +32 -0
- package/zyx/Func/ClearCache.js +63 -0
- package/zyx/Func/ReportV1.js +54 -0
- package/zyx/Language/index.json +176 -0
- package/zyx/OldSecurity.js +100 -0
- package/zyx/README.md +129 -0
- package/zyx/Settings/Database.js +21 -0
- package/zyx/Settings/Location.js +60 -0
- package/zyx/Settings/Location.json +24 -0
- package/zyx/Settings/Settings.js +60 -0
- package/zyx/StateCrypt.js +98 -0
- package/zyx/broadcast.js +38 -0
- package/zyx/index.js +1327 -0
- package/zyx/logger.js +65 -0
- package/zyx/package.json +87 -0
- package/zyx/src/K2IMG.js +8 -0
- package/zyx/src/Premium.js +30 -0
- package/zyx/src/Screenshot.js +77 -0
- package/zyx/src/T2S.js +8 -0
- package/zyx/src/addExternalModule.js +16 -0
- package/zyx/src/addUserToGroup.js +79 -0
- package/zyx/src/changeAdminStatus.js +79 -0
- package/zyx/src/changeArchivedStatus.js +41 -0
- package/zyx/src/changeAvt.js +85 -0
- package/zyx/src/changeBio.js +65 -0
- package/zyx/src/changeBlockedStatus.js +36 -0
- package/zyx/src/changeGroupImage.js +106 -0
- package/zyx/src/changeNickname.js +45 -0
- package/zyx/src/changeThreadColor.js +62 -0
- package/zyx/src/changeThreadEmoji.js +42 -0
- package/zyx/src/createNewGroup.js +70 -0
- package/zyx/src/createPoll.js +60 -0
- package/zyx/src/deleteMessage.js +45 -0
- package/zyx/src/deleteThread.js +43 -0
- package/zyx/src/desktop.ini +2 -0
- package/zyx/src/forwardAttachment.js +48 -0
- package/zyx/src/getAccessToken.js +32 -0
- package/zyx/src/getCurrentUserID.js +7 -0
- package/zyx/src/getEmojiUrl.js +27 -0
- package/zyx/src/getFriendsList.js +73 -0
- package/zyx/src/getMessage.js +80 -0
- package/zyx/src/getThreadHistory.js +537 -0
- package/zyx/src/getThreadInfo.js +346 -0
- package/zyx/src/getThreadList.js +213 -0
- package/zyx/src/getThreadMain.js +219 -0
- package/zyx/src/getThreadPictures.js +59 -0
- package/zyx/src/getUID.js +59 -0
- package/zyx/src/getUserID.js +62 -0
- package/zyx/src/getUserInfo.js +129 -0
- package/zyx/src/getUserInfoMain.js +65 -0
- package/zyx/src/getUserInfoV2.js +35 -0
- package/zyx/src/getUserInfoV3.js +63 -0
- package/zyx/src/getUserInfoV4.js +55 -0
- package/zyx/src/getUserInfoV5.js +61 -0
- package/zyx/src/handleFriendRequest.js +46 -0
- package/zyx/src/handleMessageRequest.js +49 -0
- package/zyx/src/httpGet.js +49 -0
- package/zyx/src/httpPost.js +48 -0
- package/zyx/src/httpPostFormData.js +41 -0
- package/zyx/src/listenMqtt.js +725 -0
- package/zyx/src/logout.js +68 -0
- package/zyx/src/markAsDelivered.js +48 -0
- package/zyx/src/markAsRead.js +70 -0
- package/zyx/src/markAsReadAll.js +43 -0
- package/zyx/src/markAsSeen.js +51 -0
- package/zyx/src/muteThread.js +47 -0
- package/zyx/src/removeUserFromGroup.js +49 -0
- package/zyx/src/resolvePhotoUrl.js +37 -0
- package/zyx/src/searchForThread.js +43 -0
- package/zyx/src/sendMessage.js +334 -0
- package/zyx/src/sendTypingIndicator.js +80 -0
- package/zyx/src/setMessageReaction.js +109 -0
- package/zyx/src/setPostReaction.js +102 -0
- package/zyx/src/setTitle.js +74 -0
- package/zyx/src/threadColors.js +39 -0
- package/zyx/src/unfriend.js +43 -0
- package/zyx/src/unsendMessage.js +40 -0
- package/zyx/utils.js +1648 -0
- package/README.md +0 -5
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* eslint-disable linebreak-style */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var utils = require("../utils");
|
|
5
|
+
var log = require("npmlog");
|
|
6
|
+
|
|
7
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
|
8
|
+
return function getMessage(threadID, messageID, callback) {
|
|
9
|
+
if (!callback) {
|
|
10
|
+
return callback({ error: "getMessage: need callback" });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (!threadID || !messageID) {
|
|
14
|
+
return callback({ error: "getMessage: need threadID and messageID" });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const form = {
|
|
18
|
+
"av": ctx.globalOptions.pageID,
|
|
19
|
+
"queries": JSON.stringify({
|
|
20
|
+
"o0": {
|
|
21
|
+
//This doc_id is valid as of ? (prob January 18, 2020)
|
|
22
|
+
"doc_id": "1768656253222505",
|
|
23
|
+
"query_params": {
|
|
24
|
+
"thread_and_message_id": {
|
|
25
|
+
"thread_id": threadID,
|
|
26
|
+
"message_id": messageID,
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
defaultFuncs
|
|
34
|
+
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
|
35
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
36
|
+
.then((resData) => {
|
|
37
|
+
if (resData[resData.length - 1].error_results > 0) {
|
|
38
|
+
throw resData[0].o0.errors;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (resData[resData.length - 1].successful_results === 0) {
|
|
42
|
+
throw { error: "getMessage: there was no successful_results", res: resData };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var fetchData = resData[0].o0.data.message;
|
|
46
|
+
if (fetchData) {
|
|
47
|
+
(!ctx.globalOptions.selfListen &&
|
|
48
|
+
fetchData.message_sender.id.toString() === ctx.userID) ||
|
|
49
|
+
!ctx.loggedIn ?
|
|
50
|
+
undefined :
|
|
51
|
+
(function () { callback(null, {
|
|
52
|
+
threadID: threadID,
|
|
53
|
+
messageID: fetchData.message_id,
|
|
54
|
+
senderID: fetchData.message_sender.id,
|
|
55
|
+
attachments: fetchData.blob_attachments.map(att => {
|
|
56
|
+
var x;
|
|
57
|
+
try {
|
|
58
|
+
x = utils._formatAttachment(att);
|
|
59
|
+
} catch (ex) {
|
|
60
|
+
x = att;
|
|
61
|
+
x.error = ex;
|
|
62
|
+
x.type = "unknown";
|
|
63
|
+
}
|
|
64
|
+
return x;
|
|
65
|
+
}),
|
|
66
|
+
body: fetchData.message.text,
|
|
67
|
+
mentions: fetchData.message.ranges,
|
|
68
|
+
timestamp: fetchData.timestamp_precise,
|
|
69
|
+
messageReply: fetchData.replied_to_message,
|
|
70
|
+
raw: fetchData,
|
|
71
|
+
}); })();
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.catch((err) => {
|
|
75
|
+
log.error("getMessage", err);
|
|
76
|
+
callback(err);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
};
|
|
80
|
+
};
|
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
function formatAttachmentsGraphQLResponse(attachment) {
|
|
7
|
+
switch (attachment.__typename) {
|
|
8
|
+
case "MessageImage":
|
|
9
|
+
return {
|
|
10
|
+
type: "photo",
|
|
11
|
+
ID: attachment.legacy_attachment_id,
|
|
12
|
+
filename: attachment.filename,
|
|
13
|
+
thumbnailUrl: attachment.thumbnail.uri,
|
|
14
|
+
|
|
15
|
+
previewUrl: attachment.preview.uri,
|
|
16
|
+
previewWidth: attachment.preview.width,
|
|
17
|
+
previewHeight: attachment.preview.height,
|
|
18
|
+
|
|
19
|
+
largePreviewUrl: attachment.large_preview.uri,
|
|
20
|
+
largePreviewHeight: attachment.large_preview.height,
|
|
21
|
+
largePreviewWidth: attachment.large_preview.width,
|
|
22
|
+
|
|
23
|
+
// You have to query for the real image. See below.
|
|
24
|
+
url: attachment.large_preview.uri, // @Legacy
|
|
25
|
+
width: attachment.large_preview.width, // @Legacy
|
|
26
|
+
height: attachment.large_preview.height, // @Legacy
|
|
27
|
+
name: attachment.filename, // @Legacy
|
|
28
|
+
|
|
29
|
+
// @Undocumented
|
|
30
|
+
attributionApp: attachment.attribution_app
|
|
31
|
+
? {
|
|
32
|
+
attributionAppID: attachment.attribution_app.id,
|
|
33
|
+
name: attachment.attribution_app.name,
|
|
34
|
+
logo: attachment.attribution_app.square_logo
|
|
35
|
+
}
|
|
36
|
+
: null
|
|
37
|
+
|
|
38
|
+
// @TODO No idea what this is, should we expose it?
|
|
39
|
+
// Ben - July 15th 2017
|
|
40
|
+
// renderAsSticker: attachment.render_as_sticker,
|
|
41
|
+
|
|
42
|
+
// This is _not_ the real URI, this is still just a large preview.
|
|
43
|
+
// To get the URL we'll need to support a POST query to
|
|
44
|
+
//
|
|
45
|
+
// https://www.facebook.com/webgraphql/query/
|
|
46
|
+
//
|
|
47
|
+
// With the following query params:
|
|
48
|
+
//
|
|
49
|
+
// query_id:728987990612546
|
|
50
|
+
// variables:{"id":"100009069356507","photoID":"10213724771692996"}
|
|
51
|
+
// dpr:1
|
|
52
|
+
//
|
|
53
|
+
// No special form though.
|
|
54
|
+
};
|
|
55
|
+
case "MessageAnimatedImage":
|
|
56
|
+
return {
|
|
57
|
+
type: "animated_image",
|
|
58
|
+
ID: attachment.legacy_attachment_id,
|
|
59
|
+
filename: attachment.filename,
|
|
60
|
+
|
|
61
|
+
previewUrl: attachment.preview_image.uri,
|
|
62
|
+
previewWidth: attachment.preview_image.width,
|
|
63
|
+
previewHeight: attachment.preview_image.height,
|
|
64
|
+
|
|
65
|
+
url: attachment.animated_image.uri,
|
|
66
|
+
width: attachment.animated_image.width,
|
|
67
|
+
height: attachment.animated_image.height,
|
|
68
|
+
|
|
69
|
+
thumbnailUrl: attachment.preview_image.uri, // @Legacy
|
|
70
|
+
name: attachment.filename, // @Legacy
|
|
71
|
+
facebookUrl: attachment.animated_image.uri, // @Legacy
|
|
72
|
+
rawGifImage: attachment.animated_image.uri, // @Legacy
|
|
73
|
+
animatedGifUrl: attachment.animated_image.uri, // @Legacy
|
|
74
|
+
animatedGifPreviewUrl: attachment.preview_image.uri, // @Legacy
|
|
75
|
+
animatedWebpUrl: attachment.animated_image.uri, // @Legacy
|
|
76
|
+
animatedWebpPreviewUrl: attachment.preview_image.uri, // @Legacy
|
|
77
|
+
|
|
78
|
+
// @Undocumented
|
|
79
|
+
attributionApp: attachment.attribution_app
|
|
80
|
+
? {
|
|
81
|
+
attributionAppID: attachment.attribution_app.id,
|
|
82
|
+
name: attachment.attribution_app.name,
|
|
83
|
+
logo: attachment.attribution_app.square_logo
|
|
84
|
+
}
|
|
85
|
+
: null
|
|
86
|
+
};
|
|
87
|
+
case "MessageVideo":
|
|
88
|
+
return {
|
|
89
|
+
type: "video",
|
|
90
|
+
filename: attachment.filename,
|
|
91
|
+
ID: attachment.legacy_attachment_id,
|
|
92
|
+
|
|
93
|
+
thumbnailUrl: attachment.large_image.uri, // @Legacy
|
|
94
|
+
|
|
95
|
+
previewUrl: attachment.large_image.uri,
|
|
96
|
+
previewWidth: attachment.large_image.width,
|
|
97
|
+
previewHeight: attachment.large_image.height,
|
|
98
|
+
|
|
99
|
+
url: attachment.playable_url,
|
|
100
|
+
width: attachment.original_dimensions.x,
|
|
101
|
+
height: attachment.original_dimensions.y,
|
|
102
|
+
|
|
103
|
+
duration: attachment.playable_duration_in_ms,
|
|
104
|
+
videoType: attachment.video_type.toLowerCase()
|
|
105
|
+
};
|
|
106
|
+
case "MessageFile":
|
|
107
|
+
return {
|
|
108
|
+
type: "file",
|
|
109
|
+
filename: attachment.filename,
|
|
110
|
+
ID: attachment.message_file_fbid,
|
|
111
|
+
|
|
112
|
+
url: attachment.url,
|
|
113
|
+
isMalicious: attachment.is_malicious,
|
|
114
|
+
contentType: attachment.content_type,
|
|
115
|
+
|
|
116
|
+
name: attachment.filename, // @Legacy
|
|
117
|
+
mimeType: "", // @Legacy
|
|
118
|
+
fileSize: -1 // @Legacy
|
|
119
|
+
};
|
|
120
|
+
case "MessageAudio":
|
|
121
|
+
return {
|
|
122
|
+
type: "audio",
|
|
123
|
+
filename: attachment.filename,
|
|
124
|
+
ID: attachment.url_shimhash, // Not fowardable
|
|
125
|
+
|
|
126
|
+
audioType: attachment.audio_type,
|
|
127
|
+
duration: attachment.playable_duration_in_ms,
|
|
128
|
+
url: attachment.playable_url,
|
|
129
|
+
|
|
130
|
+
isVoiceMail: attachment.is_voicemail
|
|
131
|
+
};
|
|
132
|
+
default:
|
|
133
|
+
return {
|
|
134
|
+
error: "Don't know about attachment type " + attachment.__typename
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function formatExtensibleAttachment(attachment) {
|
|
140
|
+
if (attachment.story_attachment) {
|
|
141
|
+
return {
|
|
142
|
+
type: "share",
|
|
143
|
+
ID: attachment.legacy_attachment_id,
|
|
144
|
+
url: attachment.story_attachment.url,
|
|
145
|
+
|
|
146
|
+
title: attachment.story_attachment.title_with_entities.text,
|
|
147
|
+
description: attachment.story_attachment.description && attachment.story_attachment.description.text,
|
|
148
|
+
source: attachment.story_attachment.source == null ? null : attachment.story_attachment.source.text,
|
|
149
|
+
|
|
150
|
+
image: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).uri,
|
|
151
|
+
width: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).width,
|
|
152
|
+
height: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).height,
|
|
153
|
+
playable: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.is_playable,
|
|
154
|
+
duration: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.playable_duration_in_ms,
|
|
155
|
+
playableUrl: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.playable_url,
|
|
156
|
+
|
|
157
|
+
subattachments: attachment.story_attachment.subattachments,
|
|
158
|
+
|
|
159
|
+
// Format example:
|
|
160
|
+
//
|
|
161
|
+
// [{
|
|
162
|
+
// key: "width",
|
|
163
|
+
// value: { text: "1280" }
|
|
164
|
+
// }]
|
|
165
|
+
//
|
|
166
|
+
// That we turn into:
|
|
167
|
+
//
|
|
168
|
+
// {
|
|
169
|
+
// width: "1280"
|
|
170
|
+
// }
|
|
171
|
+
//
|
|
172
|
+
properties: attachment.story_attachment.properties.reduce(function (obj, cur) {
|
|
173
|
+
obj[cur.key] = cur.value.text;
|
|
174
|
+
return obj;
|
|
175
|
+
}, {}),
|
|
176
|
+
|
|
177
|
+
// Deprecated fields
|
|
178
|
+
animatedImageSize: "", // @Legacy
|
|
179
|
+
facebookUrl: "", // @Legacy
|
|
180
|
+
styleList: "", // @Legacy
|
|
181
|
+
target: "", // @Legacy
|
|
182
|
+
thumbnailUrl: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).uri, // @Legacy
|
|
183
|
+
thumbnailWidth: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).width, // @Legacy
|
|
184
|
+
thumbnailHeight: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).height // @Legacy
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
else return { error: "Don't know what to do with extensible_attachment." };
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function formatReactionsGraphQL(reaction) {
|
|
191
|
+
return {
|
|
192
|
+
reaction: reaction.reaction,
|
|
193
|
+
userID: reaction.user.id
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function formatEventData(event) {
|
|
198
|
+
if (event == null) return {}
|
|
199
|
+
|
|
200
|
+
switch (event.__typename) {
|
|
201
|
+
case "ThemeColorExtensibleMessageAdminText":
|
|
202
|
+
return { color: event.theme_color };
|
|
203
|
+
case "ThreadNicknameExtensibleMessageAdminText":
|
|
204
|
+
return {
|
|
205
|
+
nickname: event.nickname,
|
|
206
|
+
participantID: event.participant_id
|
|
207
|
+
};
|
|
208
|
+
case "ThreadIconExtensibleMessageAdminText":
|
|
209
|
+
return { threadIcon: event.thread_icon };
|
|
210
|
+
case "InstantGameUpdateExtensibleMessageAdminText":
|
|
211
|
+
return {
|
|
212
|
+
gameID: (event.game == null ? null : event.game.id),
|
|
213
|
+
update_type: event.update_type,
|
|
214
|
+
collapsed_text: event.collapsed_text,
|
|
215
|
+
expanded_text: event.expanded_text,
|
|
216
|
+
instant_game_update_data: event.instant_game_update_data
|
|
217
|
+
};
|
|
218
|
+
case "GameScoreExtensibleMessageAdminText":
|
|
219
|
+
return { game_type: event.game_type };
|
|
220
|
+
case "RtcCallLogExtensibleMessageAdminText":
|
|
221
|
+
return {
|
|
222
|
+
event: event.event,
|
|
223
|
+
is_video_call: event.is_video_call,
|
|
224
|
+
server_info_data: event.server_info_data
|
|
225
|
+
};
|
|
226
|
+
case "GroupPollExtensibleMessageAdminText":
|
|
227
|
+
return {
|
|
228
|
+
event_type: event.event_type,
|
|
229
|
+
total_count: event.total_count,
|
|
230
|
+
question: event.question
|
|
231
|
+
};
|
|
232
|
+
case "AcceptPendingThreadExtensibleMessageAdminText":
|
|
233
|
+
return {
|
|
234
|
+
accepter_id: event.accepter_id,
|
|
235
|
+
requester_id: event.requester_id
|
|
236
|
+
};
|
|
237
|
+
case "ConfirmFriendRequestExtensibleMessageAdminText":
|
|
238
|
+
return {
|
|
239
|
+
friend_request_recipient: event.friend_request_recipient,
|
|
240
|
+
friend_request_sender: event.friend_request_sender
|
|
241
|
+
};
|
|
242
|
+
case "AddContactExtensibleMessageAdminText":
|
|
243
|
+
return {
|
|
244
|
+
contact_added_id: event.contact_added_id,
|
|
245
|
+
contact_adder_id: event.contact_adder_id
|
|
246
|
+
};
|
|
247
|
+
case "AdExtensibleMessageAdminText":
|
|
248
|
+
return {
|
|
249
|
+
ad_client_token: event.ad_client_token,
|
|
250
|
+
ad_id: event.ad_id,
|
|
251
|
+
ad_preferences_link: event.ad_preferences_link,
|
|
252
|
+
ad_properties: event.ad_properties
|
|
253
|
+
};
|
|
254
|
+
// never data
|
|
255
|
+
case "ParticipantJoinedGroupCallExtensibleMessageAdminText":
|
|
256
|
+
case "ThreadEphemeralTtlModeExtensibleMessageAdminText":
|
|
257
|
+
case "StartedSharingVideoExtensibleMessageAdminText":
|
|
258
|
+
case "LightweightEventCreateExtensibleMessageAdminText":
|
|
259
|
+
case "LightweightEventNotifyExtensibleMessageAdminText":
|
|
260
|
+
case "LightweightEventNotifyBeforeEventExtensibleMessageAdminText":
|
|
261
|
+
case "LightweightEventUpdateTitleExtensibleMessageAdminText":
|
|
262
|
+
case "LightweightEventUpdateTimeExtensibleMessageAdminText":
|
|
263
|
+
case "LightweightEventUpdateLocationExtensibleMessageAdminText":
|
|
264
|
+
case "LightweightEventDeleteExtensibleMessageAdminText":
|
|
265
|
+
return {};
|
|
266
|
+
default:
|
|
267
|
+
return { error: "Don't know what to with event data type " + event.__typename };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function formatMessagesGraphQLResponse(data) {
|
|
272
|
+
var messageThread = data.o0.data.message_thread;
|
|
273
|
+
var threadID = messageThread.thread_key.thread_fbid ? messageThread.thread_key.thread_fbid : messageThread.thread_key.other_user_id;
|
|
274
|
+
|
|
275
|
+
var messages = messageThread.messages.nodes.map(function (d) {
|
|
276
|
+
switch (d.__typename) {
|
|
277
|
+
case "UserMessage":
|
|
278
|
+
// Give priority to stickers. They're seen as normal messages but we've
|
|
279
|
+
// been considering them as attachments.
|
|
280
|
+
var maybeStickerAttachment;
|
|
281
|
+
if (d.sticker) {
|
|
282
|
+
maybeStickerAttachment = [
|
|
283
|
+
{
|
|
284
|
+
type: "sticker",
|
|
285
|
+
ID: d.sticker.id,
|
|
286
|
+
url: d.sticker.url,
|
|
287
|
+
|
|
288
|
+
packID: d.sticker.pack.id,
|
|
289
|
+
spriteUrl: d.sticker.sprite_image,
|
|
290
|
+
spriteUrl2x: d.sticker.sprite_image_2x,
|
|
291
|
+
width: d.sticker.width,
|
|
292
|
+
height: d.sticker.height,
|
|
293
|
+
|
|
294
|
+
caption: d.snippet, // Not sure what the heck caption was.
|
|
295
|
+
description: d.sticker.label, // Not sure about this one either.
|
|
296
|
+
|
|
297
|
+
frameCount: d.sticker.frame_count,
|
|
298
|
+
frameRate: d.sticker.frame_rate,
|
|
299
|
+
framesPerRow: d.sticker.frames_per_row,
|
|
300
|
+
framesPerCol: d.sticker.frames_per_col,
|
|
301
|
+
|
|
302
|
+
stickerID: d.sticker.id, // @Legacy
|
|
303
|
+
spriteURI: d.sticker.sprite_image, // @Legacy
|
|
304
|
+
spriteURI2x: d.sticker.sprite_image_2x // @Legacy
|
|
305
|
+
}
|
|
306
|
+
];
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
var mentionsObj = {};
|
|
310
|
+
if (d.message !== null) {
|
|
311
|
+
d.message.ranges.forEach(e => mentionsObj[e.entity.id] = d.message.text.substr(e.offset, e.length));
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return {
|
|
315
|
+
type: "message",
|
|
316
|
+
attachments: maybeStickerAttachment
|
|
317
|
+
? maybeStickerAttachment
|
|
318
|
+
: d.blob_attachments && d.blob_attachments.length > 0
|
|
319
|
+
? d.blob_attachments.map(formatAttachmentsGraphQLResponse)
|
|
320
|
+
: d.extensible_attachment
|
|
321
|
+
? [formatExtensibleAttachment(d.extensible_attachment)]
|
|
322
|
+
: [],
|
|
323
|
+
body: d.message !== null ? d.message.text : '',
|
|
324
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
325
|
+
messageID: d.message_id,
|
|
326
|
+
senderID: d.message_sender.id,
|
|
327
|
+
threadID: threadID,
|
|
328
|
+
timestamp: d.timestamp_precise,
|
|
329
|
+
|
|
330
|
+
mentions: mentionsObj,
|
|
331
|
+
isUnread: d.unread,
|
|
332
|
+
|
|
333
|
+
// New
|
|
334
|
+
messageReactions: d.message_reactions ? d.message_reactions.map(formatReactionsGraphQL) : null,
|
|
335
|
+
isSponsored: d.is_sponsored,
|
|
336
|
+
snippet: d.snippet
|
|
337
|
+
};
|
|
338
|
+
case "ThreadNameMessage":
|
|
339
|
+
return {
|
|
340
|
+
type: "event",
|
|
341
|
+
messageID: d.message_id,
|
|
342
|
+
threadID: threadID,
|
|
343
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
344
|
+
senderID: d.message_sender.id,
|
|
345
|
+
timestamp: d.timestamp_precise,
|
|
346
|
+
eventType: "change_thread_name",
|
|
347
|
+
snippet: d.snippet,
|
|
348
|
+
eventData: { threadName: d.thread_name },
|
|
349
|
+
|
|
350
|
+
// @Legacy
|
|
351
|
+
author: d.message_sender.id,
|
|
352
|
+
logMessageType: "log:thread-name",
|
|
353
|
+
logMessageData: { name: d.thread_name }
|
|
354
|
+
};
|
|
355
|
+
case "ThreadImageMessage":
|
|
356
|
+
return {
|
|
357
|
+
type: "event",
|
|
358
|
+
messageID: d.message_id,
|
|
359
|
+
threadID: threadID,
|
|
360
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
361
|
+
senderID: d.message_sender.id,
|
|
362
|
+
timestamp: d.timestamp_precise,
|
|
363
|
+
eventType: "change_thread_image",
|
|
364
|
+
snippet: d.snippet,
|
|
365
|
+
eventData: d.image_with_metadata == null
|
|
366
|
+
? {} /* removed image */
|
|
367
|
+
: {
|
|
368
|
+
/* image added */
|
|
369
|
+
threadImage: {
|
|
370
|
+
attachmentID: d.image_with_metadata.legacy_attachment_id,
|
|
371
|
+
width: d.image_with_metadata.original_dimensions.x,
|
|
372
|
+
height: d.image_with_metadata.original_dimensions.y,
|
|
373
|
+
url: d.image_with_metadata.preview.uri
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
|
|
377
|
+
// @Legacy
|
|
378
|
+
logMessageType: "log:thread-icon",
|
|
379
|
+
logMessageData: { thread_icon: d.image_with_metadata ? d.image_with_metadata.preview.uri : null }
|
|
380
|
+
};
|
|
381
|
+
case "ParticipantLeftMessage":
|
|
382
|
+
return {
|
|
383
|
+
type: "event",
|
|
384
|
+
messageID: d.message_id,
|
|
385
|
+
threadID: threadID,
|
|
386
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
387
|
+
senderID: d.message_sender.id,
|
|
388
|
+
timestamp: d.timestamp_precise,
|
|
389
|
+
eventType: "remove_participants",
|
|
390
|
+
snippet: d.snippet,
|
|
391
|
+
eventData: {
|
|
392
|
+
// Array of IDs.
|
|
393
|
+
participantsRemoved: d.participants_removed.map(function (p) {
|
|
394
|
+
return p.id;
|
|
395
|
+
})
|
|
396
|
+
},
|
|
397
|
+
|
|
398
|
+
// @Legacy
|
|
399
|
+
logMessageType: "log:unsubscribe",
|
|
400
|
+
logMessageData: {
|
|
401
|
+
leftParticipantFbId: d.participants_removed.map(function (p) {
|
|
402
|
+
return p.id;
|
|
403
|
+
})
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
case "ParticipantsAddedMessage":
|
|
407
|
+
return {
|
|
408
|
+
type: "event",
|
|
409
|
+
messageID: d.message_id,
|
|
410
|
+
threadID: threadID,
|
|
411
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
412
|
+
senderID: d.message_sender.id,
|
|
413
|
+
timestamp: d.timestamp_precise,
|
|
414
|
+
eventType: "add_participants",
|
|
415
|
+
snippet: d.snippet,
|
|
416
|
+
eventData: {
|
|
417
|
+
// Array of IDs.
|
|
418
|
+
participantsAdded: d.participants_added.map(function (p) {
|
|
419
|
+
return p.id;
|
|
420
|
+
})
|
|
421
|
+
},
|
|
422
|
+
|
|
423
|
+
// @Legacy
|
|
424
|
+
logMessageType: "log:subscribe",
|
|
425
|
+
logMessageData: {
|
|
426
|
+
addedParticipants: d.participants_added.map(function (p) {
|
|
427
|
+
return p.id;
|
|
428
|
+
})
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
case "VideoCallMessage":
|
|
432
|
+
return {
|
|
433
|
+
type: "event",
|
|
434
|
+
messageID: d.message_id,
|
|
435
|
+
threadID: threadID,
|
|
436
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
437
|
+
senderID: d.message_sender.id,
|
|
438
|
+
timestamp: d.timestamp_precise,
|
|
439
|
+
eventType: "video_call",
|
|
440
|
+
snippet: d.snippet,
|
|
441
|
+
|
|
442
|
+
// @Legacy
|
|
443
|
+
logMessageType: "other"
|
|
444
|
+
};
|
|
445
|
+
case "VoiceCallMessage":
|
|
446
|
+
return {
|
|
447
|
+
type: "event",
|
|
448
|
+
messageID: d.message_id,
|
|
449
|
+
threadID: threadID,
|
|
450
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
451
|
+
senderID: d.message_sender.id,
|
|
452
|
+
timestamp: d.timestamp_precise,
|
|
453
|
+
eventType: "voice_call",
|
|
454
|
+
snippet: d.snippet,
|
|
455
|
+
|
|
456
|
+
// @Legacy
|
|
457
|
+
logMessageType: "other"
|
|
458
|
+
};
|
|
459
|
+
case "GenericAdminTextMessage":
|
|
460
|
+
return {
|
|
461
|
+
type: "event",
|
|
462
|
+
messageID: d.message_id,
|
|
463
|
+
threadID: threadID,
|
|
464
|
+
isGroup: messageThread.thread_type === "GROUP",
|
|
465
|
+
senderID: d.message_sender.id,
|
|
466
|
+
timestamp: d.timestamp_precise,
|
|
467
|
+
snippet: d.snippet,
|
|
468
|
+
eventType: d.extensible_message_admin_text_type.toLowerCase(),
|
|
469
|
+
eventData: formatEventData(d.extensible_message_admin_text),
|
|
470
|
+
|
|
471
|
+
// @Legacy
|
|
472
|
+
logMessageType: utils.getAdminTextMessageType(
|
|
473
|
+
d.extensible_message_admin_text_type
|
|
474
|
+
),
|
|
475
|
+
logMessageData: d.extensible_message_admin_text // Maybe different?
|
|
476
|
+
};
|
|
477
|
+
default:
|
|
478
|
+
return { error: "Don't know about message type " + d.__typename };
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
return messages;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
485
|
+
return function getThreadHistoryGraphQL(threadID, amount, timestamp, callback) {
|
|
486
|
+
var resolveFunc = function () { };
|
|
487
|
+
var rejectFunc = function () { };
|
|
488
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
489
|
+
resolveFunc = resolve;
|
|
490
|
+
rejectFunc = reject;
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
if (!callback) {
|
|
494
|
+
callback = function (err, data) {
|
|
495
|
+
if (err) return rejectFunc(err);
|
|
496
|
+
resolveFunc(data);
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// `queries` has to be a string. I couldn't tell from the dev console. This
|
|
501
|
+
// took me a really long time to figure out. I deserve a cookie for this.
|
|
502
|
+
var form = {
|
|
503
|
+
"av": ctx.globalOptions.pageID,
|
|
504
|
+
queries: JSON.stringify({
|
|
505
|
+
o0: {
|
|
506
|
+
// This doc_id was valid on February 2nd 2017.
|
|
507
|
+
doc_id: "1498317363570230",
|
|
508
|
+
query_params: {
|
|
509
|
+
id: threadID,
|
|
510
|
+
message_limit: amount,
|
|
511
|
+
load_messages: 1,
|
|
512
|
+
load_read_receipts: false,
|
|
513
|
+
before: timestamp
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
})
|
|
517
|
+
};
|
|
518
|
+
|
|
519
|
+
defaultFuncs
|
|
520
|
+
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
|
521
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
522
|
+
.then(function (resData) {
|
|
523
|
+
if (resData.error) throw resData;
|
|
524
|
+
// This returns us an array of things. The last one is the success /
|
|
525
|
+
// failure one.
|
|
526
|
+
// @TODO What do we do in this case?
|
|
527
|
+
if (resData[resData.length - 1].error_results !== 0) throw new Error("There was an error_result.");
|
|
528
|
+
callback(null, formatMessagesGraphQLResponse(resData[0]));
|
|
529
|
+
})
|
|
530
|
+
.catch(function (err) {
|
|
531
|
+
log.error("getThreadHistoryGraphQL", "Lỗi getThreadHistoryGraphQL Có Thể Do Bạn Spam Quá Nhiều, Hãy Thử Lại !");
|
|
532
|
+
return callback(err);
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
return returnPromise;
|
|
536
|
+
};
|
|
537
|
+
};
|