@koda-sl/baker-cli 0.512.0 → 0.514.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.
- package/README.md +3 -3
- package/dist/account-D6LEVVWT.js +82 -0
- package/dist/account-D6LEVVWT.js.map +1 -0
- package/dist/account-SGK3IJ6N.js +82 -0
- package/dist/account-SGK3IJ6N.js.map +1 -0
- package/dist/account-assets-J5Z4URLQ.js +290 -0
- package/dist/account-level-4SBYYHRS.js +611 -0
- package/dist/account-level-4SBYYHRS.js.map +1 -0
- package/dist/account-reads-2MSUVG46.js +219 -0
- package/dist/account-users-MHC7AD6K.js +64 -0
- package/dist/account-users-MHC7AD6K.js.map +1 -0
- package/dist/account-writes-QQQC54WC.js +68 -0
- package/dist/account-writes-QQQC54WC.js.map +1 -0
- package/dist/accounts-2O6I7YBN.js +80 -0
- package/dist/accounts-2O6I7YBN.js.map +1 -0
- package/dist/accounts-QNE5QWBG.js +701 -0
- package/dist/accounts-QNE5QWBG.js.map +1 -0
- package/dist/actions-D7OWCP36.js +55 -0
- package/dist/activecampaign-LBS4M4C4.js +938 -0
- package/dist/activecampaign-LBS4M4C4.js.map +1 -0
- package/dist/ad-group-writes-CJTTUUIT.js +172 -0
- package/dist/ad-group-writes-CJTTUUIT.js.map +1 -0
- package/dist/ad-groups-HLGSVH74.js +70 -0
- package/dist/ad-groups-HLGSVH74.js.map +1 -0
- package/dist/ad-writes-3UE3U7VE.js +176 -0
- package/dist/ad-writes-3UE3U7VE.js.map +1 -0
- package/dist/add-HFQB2NTU.js +107 -0
- package/dist/add-HFQB2NTU.js.map +1 -0
- package/dist/add-IUYE5H6A.js +305 -0
- package/dist/add-IUYE5H6A.js.map +1 -0
- package/dist/ads-HLUJB5SQ.js +48 -0
- package/dist/ads-MAOI7S6V.js +115 -0
- package/dist/ads-PYNDMHUD.js +79 -0
- package/dist/ads-PYNDMHUD.js.map +1 -0
- package/dist/adsets-QRKICEFD.js +182 -0
- package/dist/advertisers-XXM6POO5.js +123 -0
- package/dist/advertisers-XXM6POO5.js.map +1 -0
- package/dist/analytics-AULKYNNT.js +447 -0
- package/dist/analytics-AULKYNNT.js.map +1 -0
- package/dist/analytics-DNDTC643.js +2437 -0
- package/dist/analytics-DNDTC643.js.map +1 -0
- package/dist/asset-writes-JLVUAVUZ.js +50 -0
- package/dist/assign-2GQVQKKO.js +80 -0
- package/dist/assign-2GQVQKKO.js.map +1 -0
- package/dist/audience-size-C3YHQPZB.js +76 -0
- package/dist/audience-size-C3YHQPZB.js.map +1 -0
- package/dist/audience-writes-CDKQB3SM.js +327 -0
- package/dist/audience-writes-CDKQB3SM.js.map +1 -0
- package/dist/audiences-CDDI5HR5.js +86 -0
- package/dist/audiences-M3A3QK52.js +280 -0
- package/dist/audiences-M3A3QK52.js.map +1 -0
- package/dist/audit-FLPJ7GTE.js +154 -0
- package/dist/audit-FLPJ7GTE.js.map +1 -0
- package/dist/autocomplete-ZYMHHV7E.js +114 -0
- package/dist/autocomplete-ZYMHHV7E.js.map +1 -0
- package/dist/avatars-WZ2JDMHH.js +38 -0
- package/dist/bid-pricing-H3M63PTW.js +103 -0
- package/dist/bid-pricing-H3M63PTW.js.map +1 -0
- package/dist/brand-IZTTBZII.js +22 -0
- package/dist/brief-OPQ7ICOY.js +543 -0
- package/dist/brief-OPQ7ICOY.js.map +1 -0
- package/dist/campaign-groups-IQSDKOVI.js +99 -0
- package/dist/campaign-groups-IQSDKOVI.js.map +1 -0
- package/dist/campaign-writes-APAAV4ZU.js +168 -0
- package/dist/campaign-writes-APAAV4ZU.js.map +1 -0
- package/dist/campaign-writes-BN4PZP4Z.js +176 -0
- package/dist/campaign-writes-BN4PZP4Z.js.map +1 -0
- package/dist/campaigns-4Y3JQC2U.js +111 -0
- package/dist/campaigns-GA34MEN2.js +78 -0
- package/dist/campaigns-GA34MEN2.js.map +1 -0
- package/dist/campaigns-HES5MDUG.js +130 -0
- package/dist/campaigns-K2FVD3XW.js +113 -0
- package/dist/campaigns-K2FVD3XW.js.map +1 -0
- package/dist/canvas-IQ753Q2O.js +46 -0
- package/dist/capabilities-ZITW4RF7.js +147 -0
- package/dist/capabilities-ZITW4RF7.js.map +1 -0
- package/dist/catalogs-TGLSJEK5.js +781 -0
- package/dist/catalogs-TGLSJEK5.js.map +1 -0
- package/dist/catalogs-ZR7DECMG.js +130 -0
- package/dist/catalogs-ZR7DECMG.js.map +1 -0
- package/dist/changes-VWKTM27U.js +135 -0
- package/dist/chatgpt-OPOD2WHB.js +47 -0
- package/dist/chats-AL2SYBJO.js +279 -0
- package/dist/chats-AL2SYBJO.js.map +1 -0
- package/dist/check-U2YLRD6H.js +107 -0
- package/dist/check-U2YLRD6H.js.map +1 -0
- package/dist/chunk-2GYCWRF3.js +170 -0
- package/dist/chunk-2L7F7KR4.js +61 -0
- package/dist/chunk-44ZRCSR7.js +228 -0
- package/dist/chunk-46YLDIQG.js +4254 -0
- package/dist/chunk-4EDWXZ3I.js +363 -0
- package/dist/chunk-4FFBGR5L.js +66 -0
- package/dist/chunk-4UQRXKYJ.js +219 -0
- package/dist/chunk-4UZUUSVL.js +592 -0
- package/dist/chunk-4XHCEYHI.js +831 -0
- package/dist/chunk-4Z6PVR3M.js +479 -0
- package/dist/chunk-5Y5FZV2W.js +122 -0
- package/dist/chunk-6HJXLGDV.js +392 -0
- package/dist/chunk-6S5CWGDA.js +429 -0
- package/dist/chunk-6VYROVWO.js +494 -0
- package/dist/chunk-7BUIOP36.js +287 -0
- package/dist/chunk-AQRXXC6E.js +319 -0
- package/dist/chunk-ARBXT73X.js +387 -0
- package/dist/chunk-BEZHQIEI.js +97 -0
- package/dist/chunk-BFURWHVR.js +547 -0
- package/dist/chunk-BX6B25KK.js +358 -0
- package/dist/chunk-BX6B25KK.js.map +1 -0
- package/dist/chunk-DSCEXBDR.js +676 -0
- package/dist/chunk-FLWDFPXE.js +23 -0
- package/dist/chunk-FRNBRN2C.js +1646 -0
- package/dist/chunk-G4FG5EQO.js +110 -0
- package/dist/chunk-G4FG5EQO.js.map +1 -0
- package/dist/chunk-GE3VT3CA.js +51 -0
- package/dist/chunk-GW2WRZZA.js +24026 -0
- package/dist/chunk-GW2WRZZA.js.map +1 -0
- package/dist/chunk-HGBJQGO5.js +142 -0
- package/dist/chunk-I7AYMJZA.js +783 -0
- package/dist/chunk-IRM273C7.js +207 -0
- package/dist/chunk-IWKD56AY.js +156 -0
- package/dist/chunk-JLAQWMVF.js +3868 -0
- package/dist/chunk-JOE42ZW6.js +2984 -0
- package/dist/chunk-JOE42ZW6.js.map +1 -0
- package/dist/chunk-K6NULQN7.js +57 -0
- package/dist/chunk-L2BRAC2J.js +19 -0
- package/dist/chunk-LGMI4LSY.js +455 -0
- package/dist/chunk-NB2FU6EZ.js +179 -0
- package/dist/chunk-NKQWDEB7.js +115 -0
- package/dist/chunk-NKQWDEB7.js.map +1 -0
- package/dist/chunk-NWF2LRKO.js +188 -0
- package/dist/chunk-OG47L5GG.js +275 -0
- package/dist/chunk-OR6KVLI5.js +169 -0
- package/dist/chunk-PC3FJEZH.js +7211 -0
- package/dist/chunk-PC3FJEZH.js.map +1 -0
- package/dist/chunk-Q3GSVLE5.js +4274 -0
- package/dist/chunk-Q3GSVLE5.js.map +1 -0
- package/dist/chunk-QDQZ62FL.js +207 -0
- package/dist/chunk-QIOFOD4K.js +344 -0
- package/dist/chunk-R2SYF5FC.js +249 -0
- package/dist/chunk-RTH2I55B.js +942 -0
- package/dist/chunk-S6VFDNSQ.js +63 -0
- package/dist/chunk-SG2TDQEE.js +150 -0
- package/dist/chunk-SOPVIIUW.js +68 -0
- package/dist/chunk-SOPVIIUW.js.map +1 -0
- package/dist/chunk-T3P6O2VU.js +89 -0
- package/dist/chunk-TXDE2QJ3.js +604 -0
- package/dist/chunk-UDIEKCIR.js +203 -0
- package/dist/chunk-USCADMM3.js +163 -0
- package/dist/chunk-UUGISMNE.js +910 -0
- package/dist/chunk-VDPOCAQ2.js +197 -0
- package/dist/chunk-VEJ3QX6M.js +103 -0
- package/dist/chunk-VFJB7OG6.js +91 -0
- package/dist/chunk-VRIPVLE7.js +8954 -0
- package/dist/chunk-WFY7KSHB.js +274 -0
- package/dist/chunk-WLESMH4J.js +45 -0
- package/dist/chunk-XHQYFNNK.js +846 -0
- package/dist/chunk-XOQNM7I4.js +396 -0
- package/dist/chunk-XOQNM7I4.js.map +1 -0
- package/dist/chunk-YILZR3XI.js +224 -0
- package/dist/chunk-YJFLXOH4.js +191 -0
- package/dist/chunk-YWHZYR6S.js +297 -0
- package/dist/claim-GOLUTAJ3.js +200 -0
- package/dist/claim-GOLUTAJ3.js.map +1 -0
- package/dist/cli.js +30 -30
- package/dist/companies-4AJJGTMC.js +198 -0
- package/dist/companies-4AJJGTMC.js.map +1 -0
- package/dist/company-MOSPLRZJ.js +308 -0
- package/dist/company-MOSPLRZJ.js.map +1 -0
- package/dist/complete-777BDV45.js +84 -0
- package/dist/complete-777BDV45.js.map +1 -0
- package/dist/connect-3YY7MF3I.js +45 -0
- package/dist/conversation-KROMHDHK.js +96 -0
- package/dist/conversation-KROMHDHK.js.map +1 -0
- package/dist/conversion-report-JZHI2IHY.js +127 -0
- package/dist/conversion-report-JZHI2IHY.js.map +1 -0
- package/dist/conversion-upload-command-7RSZ5ZQU.js +439 -0
- package/dist/conversion-writes-SNCLQDXQ.js +122 -0
- package/dist/conversion-writes-SNCLQDXQ.js.map +1 -0
- package/dist/conversions-43EYP2W2.js +140 -0
- package/dist/conversions-43EYP2W2.js.map +1 -0
- package/dist/conversions-EUOWILCQ.js +78 -0
- package/dist/conversions-EUOWILCQ.js.map +1 -0
- package/dist/copy-writes-CIHIFLY6.js +170 -0
- package/dist/copy-writes-CIHIFLY6.js.map +1 -0
- package/dist/create-3WOZO2XT.js +239 -0
- package/dist/create-3WOZO2XT.js.map +1 -0
- package/dist/create-7IFYLX7P.js +210 -0
- package/dist/create-7IFYLX7P.js.map +1 -0
- package/dist/create-FOHIQC3E.js +62 -0
- package/dist/create-FOHIQC3E.js.map +1 -0
- package/dist/create-UWQSQTK6.js +135 -0
- package/dist/create-UWQSQTK6.js.map +1 -0
- package/dist/creatives-2DR3QHJW.js +58 -0
- package/dist/creatives-BB6S2OF6.js +89 -0
- package/dist/creatives-KUO67WYA.js +223 -0
- package/dist/creatives-KUO67WYA.js.map +1 -0
- package/dist/credentials-IP4L37XP.js +290 -0
- package/dist/credentials-IP4L37XP.js.map +1 -0
- package/dist/critique-LGDNMLBL.js +232 -0
- package/dist/critique-LGDNMLBL.js.map +1 -0
- package/dist/critique-LJMFAURK.js +1451 -0
- package/dist/critique-LJMFAURK.js.map +1 -0
- package/dist/crm-BNYW7PF7.js +323 -0
- package/dist/crm-BNYW7PF7.js.map +1 -0
- package/dist/crm-J53V2QTN.js +227 -0
- package/dist/crm-J53V2QTN.js.map +1 -0
- package/dist/currency-X7Y6TSLF.js +88 -0
- package/dist/custom-conversions-HAGG72LF.js +128 -0
- package/dist/customers-663K2OCP.js +59 -0
- package/dist/delete-5W3YVA4L.js +67 -0
- package/dist/delete-5W3YVA4L.js.map +1 -0
- package/dist/delete-6U7E6YUW.js +57 -0
- package/dist/delete-6U7E6YUW.js.map +1 -0
- package/dist/delete-G4NY6ZG6.js +69 -0
- package/dist/delete-G4NY6ZG6.js.map +1 -0
- package/dist/demographics-4Y5LTCU4.js +141 -0
- package/dist/demographics-4Y5LTCU4.js.map +1 -0
- package/dist/discard-RKCZNKMN.js +69 -0
- package/dist/discard-RKCZNKMN.js.map +1 -0
- package/dist/discover-6DORQWXY.js +172 -0
- package/dist/domain-PLA2O4FW.js +101 -0
- package/dist/domain-PLA2O4FW.js.map +1 -0
- package/dist/download-4EFLVSA4.js +172 -0
- package/dist/download-4EFLVSA4.js.map +1 -0
- package/dist/draft-4V7W5DV2.js +310 -0
- package/dist/draft-4V7W5DV2.js.map +1 -0
- package/dist/draft-HY3U2GHU.js +283 -0
- package/dist/draft-HY3U2GHU.js.map +1 -0
- package/dist/draft-JMNAGW7C.js +220 -0
- package/dist/draft-JMNAGW7C.js.map +1 -0
- package/dist/draft-R6EKORNS.js +308 -0
- package/dist/draft-TRPQCJ4B.js +335 -0
- package/dist/draft-TRPQCJ4B.js.map +1 -0
- package/dist/experiments-4V242DG2.js +236 -0
- package/dist/experiments-4V242DG2.js.map +1 -0
- package/dist/facets-WXJ2MCU6.js +117 -0
- package/dist/facets-WXJ2MCU6.js.map +1 -0
- package/dist/feedback-IRSRPXV6.js +111 -0
- package/dist/feedback-IRSRPXV6.js.map +1 -0
- package/dist/feedback-record-DT3R4NA3.js +265 -0
- package/dist/feedback-record-DT3R4NA3.js.map +1 -0
- package/dist/fetch-YLQP5VQL.js +179 -0
- package/dist/fetch-YLQP5VQL.js.map +1 -0
- package/dist/fit-BEFCY2B4.js +65 -0
- package/dist/flows-FDMF3F3P.js +250 -0
- package/dist/flows-FDMF3F3P.js.map +1 -0
- package/dist/fonts-C6XN5667.js +39 -0
- package/dist/forecast-BTPIXEQ5.js +169 -0
- package/dist/forecast-ZTXZD3HD.js +121 -0
- package/dist/forecast-ZTXZD3HD.js.map +1 -0
- package/dist/funnel-7KOEX7YM.js +397 -0
- package/dist/funnel-7KOEX7YM.js.map +1 -0
- package/dist/get-KBSKPTAV.js +59 -0
- package/dist/get-KBSKPTAV.js.map +1 -0
- package/dist/get-OSVQVMP6.js +82 -0
- package/dist/get-OSVQVMP6.js.map +1 -0
- package/dist/google-M6BJ22UL.js +3267 -0
- package/dist/google-ads-XCJVAXWF.js +198 -0
- package/dist/google-ads-XCJVAXWF.js.map +1 -0
- package/dist/history-3NTM5SFN.js +69 -0
- package/dist/history-3NTM5SFN.js.map +1 -0
- package/dist/history-4TN2A6BL.js +136 -0
- package/dist/history-4TN2A6BL.js.map +1 -0
- package/dist/history-5IWW2X33.js +102 -0
- package/dist/history-5IWW2X33.js.map +1 -0
- package/dist/hubspot-HMVSRJQZ.js +782 -0
- package/dist/hubspot-HMVSRJQZ.js.map +1 -0
- package/dist/ideas-M66FU45H.js +45 -0
- package/dist/images-MM5OPUKV.js +92 -0
- package/dist/ingest-GU3WEBN3.js +110 -0
- package/dist/ingest-GU3WEBN3.js.map +1 -0
- package/dist/ingest-KMLYCFF4.js +26 -0
- package/dist/insights-CQCWOCIT.js +132 -0
- package/dist/insights-CQCWOCIT.js.map +1 -0
- package/dist/insights-XZL2EM53.js +439 -0
- package/dist/insights-XZL2EM53.js.map +1 -0
- package/dist/inspect-4JO2J3D6.js +192 -0
- package/dist/inspect-4JO2J3D6.js.map +1 -0
- package/dist/instant-experiences-RM4MLJTL.js +260 -0
- package/dist/instant-experiences-RM4MLJTL.js.map +1 -0
- package/dist/intent-YCQCUCV3.js +95 -0
- package/dist/keyword-gap-PUSF7EKY.js +130 -0
- package/dist/keyword-metrics-JXBM22ZD.js +200 -0
- package/dist/keyword-metrics-JXBM22ZD.js.map +1 -0
- package/dist/keywords-for-site-OAYA7KP7.js +131 -0
- package/dist/keywords-for-site-OAYA7KP7.js.map +1 -0
- package/dist/landing-OZU5RRFV.js +28 -0
- package/dist/languages-SLFV73GE.js +40 -0
- package/dist/leads-Q7APIJRQ.js +115 -0
- package/dist/leads-Q7APIJRQ.js.map +1 -0
- package/dist/leads-ULYHTG22.js +540 -0
- package/dist/leads-ULYHTG22.js.map +1 -0
- package/dist/learn-NBBJRMVZ.js +207 -0
- package/dist/learn-NBBJRMVZ.js.map +1 -0
- package/dist/line-item-writes-X3L5NQEH.js +211 -0
- package/dist/line-item-writes-X3L5NQEH.js.map +1 -0
- package/dist/line-items-NJMEPEF5.js +107 -0
- package/dist/link-WZSNUQQ2.js +67 -0
- package/dist/link-WZSNUQQ2.js.map +1 -0
- package/dist/linkedin-55PAID62.js +1316 -0
- package/dist/linkedin-55PAID62.js.map +1 -0
- package/dist/linkedin-person-MVRI7LLC.js +139 -0
- package/dist/linkedin-person-MVRI7LLC.js.map +1 -0
- package/dist/list-6S54IAUX.js +67 -0
- package/dist/list-6S54IAUX.js.map +1 -0
- package/dist/list-QRJ4E3SC.js +154 -0
- package/dist/list-QRJ4E3SC.js.map +1 -0
- package/dist/list-RZUDFLJN.js +306 -0
- package/dist/list-RZUDFLJN.js.map +1 -0
- package/dist/locations-T2OMP6QN.js +40 -0
- package/dist/locations-W3VOYBWL.js +69 -0
- package/dist/locations-W3VOYBWL.js.map +1 -0
- package/dist/log-53SAPZZ3.js +95 -0
- package/dist/log-53SAPZZ3.js.map +1 -0
- package/dist/lookup-S5VG7AWH.js +23 -0
- package/dist/make-ZF3YIMKW.js +1370 -0
- package/dist/make-ZF3YIMKW.js.map +1 -0
- package/dist/map-J37QFJSV.js +436 -0
- package/dist/map-J37QFJSV.js.map +1 -0
- package/dist/mcp-YRIFPYNU.js +717 -0
- package/dist/mcp-YRIFPYNU.js.map +1 -0
- package/dist/media-P4T4ZBNS.js +18 -0
- package/dist/media-sources-EQI3U4TC.js +35 -0
- package/dist/members-GYVMSCKL.js +47 -0
- package/dist/members-GYVMSCKL.js.map +1 -0
- package/dist/meta-IPLWNYC7.js +122 -0
- package/dist/metrics-4YVJHYRI.js +152 -0
- package/dist/normalize-MFN3WCH5.js +144 -0
- package/dist/normalize-MFN3WCH5.js.map +1 -0
- package/dist/options-DLHDHO7H.js +125 -0
- package/dist/options-DLHDHO7H.js.map +1 -0
- package/dist/organization-C2VOA2SD.js +949 -0
- package/dist/organization-C2VOA2SD.js.map +1 -0
- package/dist/page-photos-OQ5QATQH.js +118 -0
- package/dist/page-photos-OQ5QATQH.js.map +1 -0
- package/dist/performance-NIF3CESZ.js +27 -0
- package/dist/performance-T6TBVHVU.js +5541 -0
- package/dist/performance-T6TBVHVU.js.map +1 -0
- package/dist/pixels-LQAJOZIM.js +62 -0
- package/dist/pixels-LQAJOZIM.js.map +1 -0
- package/dist/plan-7UF76Q6U.js +208 -0
- package/dist/plan-7UF76Q6U.js.map +1 -0
- package/dist/preview-LRJOQ7LM.js +218 -0
- package/dist/preview-LRJOQ7LM.js.map +1 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js +183 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js.map +1 -0
- package/dist/promoted-tweets-RJT53DRM.js +119 -0
- package/dist/publish-IOTMJCCY.js +344 -0
- package/dist/publish-IOTMJCCY.js.map +1 -0
- package/dist/query-XZMDGRO5.js +62 -0
- package/dist/questionnaire-DWEH5II4.js +94 -0
- package/dist/questionnaire-DWEH5II4.js.map +1 -0
- package/dist/reddit-JIHMAKAQ.js +29 -0
- package/dist/refresh-OQZ263CS.js +97 -0
- package/dist/refresh-OQZ263CS.js.map +1 -0
- package/dist/release-4CHFURO3.js +63 -0
- package/dist/release-4CHFURO3.js.map +1 -0
- package/dist/relevant-pages-FS7GBVXK.js +99 -0
- package/dist/remove-IJQPHPDI.js +53 -0
- package/dist/remove-IJQPHPDI.js.map +1 -0
- package/dist/reopen-YTLPVKUR.js +66 -0
- package/dist/reopen-YTLPVKUR.js.map +1 -0
- package/dist/rerun-C7NB7B35.js +95 -0
- package/dist/rerun-C7NB7B35.js.map +1 -0
- package/dist/research-PNBACCCP.js +72 -0
- package/dist/research-TLHNPK3O.js +265 -0
- package/dist/research-TLHNPK3O.js.map +1 -0
- package/dist/reset-JVLW7HA2.js +57 -0
- package/dist/reset-JVLW7HA2.js.map +1 -0
- package/dist/reset-Y6FXLAQE.js +57 -0
- package/dist/reset-Y6FXLAQE.js.map +1 -0
- package/dist/resolve-YLRESES5.js +124 -0
- package/dist/resolve-YLRESES5.js.map +1 -0
- package/dist/retry-3V3IGDRR.js +65 -0
- package/dist/retry-3V3IGDRR.js.map +1 -0
- package/dist/retry-AEKQLQMP.js +63 -0
- package/dist/retry-AEKQLQMP.js.map +1 -0
- package/dist/revenue-E4GQIOUY.js +91 -0
- package/dist/revenue-E4GQIOUY.js.map +1 -0
- package/dist/rule-writes-UAVWT4XS.js +525 -0
- package/dist/rule-writes-UAVWT4XS.js.map +1 -0
- package/dist/rules-34BQAWU3.js +99 -0
- package/dist/rules-34BQAWU3.js.map +1 -0
- package/dist/rules-ZVS2MWED.js +217 -0
- package/dist/rules-add-CM5XUYNS.js +465 -0
- package/dist/rules-add-CM5XUYNS.js.map +1 -0
- package/dist/run-MD64RDHZ.js +69 -0
- package/dist/run-MD64RDHZ.js.map +1 -0
- package/dist/run-QCNRR3CA.js +70 -0
- package/dist/scaffold-ad-NADPY3CB.js +1516 -0
- package/dist/scaffold-ad-NADPY3CB.js.map +1 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js +1015 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js.map +1 -0
- package/dist/scaffold-video-W7DF2CBJ.js +888 -0
- package/dist/scaffold-video-W7DF2CBJ.js.map +1 -0
- package/dist/schedule-CTRRF6TS.js +64 -0
- package/dist/schedule-CTRRF6TS.js.map +1 -0
- package/dist/scheduled-agents-OXYAVSIE.js +55 -0
- package/dist/schema-BEUYOGSW.js +135 -0
- package/dist/schema-BEUYOGSW.js.map +1 -0
- package/dist/search-GFJKWPKN.js +177 -0
- package/dist/search-GFJKWPKN.js.map +1 -0
- package/dist/select-S72CCL57.js +106 -0
- package/dist/select-S72CCL57.js.map +1 -0
- package/dist/sends-LAY5C74B.js +349 -0
- package/dist/sends-LAY5C74B.js.map +1 -0
- package/dist/set-prompt-YYFDRXRI.js +198 -0
- package/dist/set-prompt-YYFDRXRI.js.map +1 -0
- package/dist/setup-links-D4JJLESN.js +144 -0
- package/dist/setup-links-D4JJLESN.js.map +1 -0
- package/dist/shopify-T4UWFIQC.js +3958 -0
- package/dist/shopify-T4UWFIQC.js.map +1 -0
- package/dist/site-BBZAUZA3.js +180 -0
- package/dist/site-BBZAUZA3.js.map +1 -0
- package/dist/sources-BUPV7H7F.js +457 -0
- package/dist/sources-BUPV7H7F.js.map +1 -0
- package/dist/sources-FLUGHSVP.js +30 -0
- package/dist/stale-HP54JS5X.js +76 -0
- package/dist/stale-HP54JS5X.js.map +1 -0
- package/dist/status-CLSWQFCQ.js +65 -0
- package/dist/status-CLSWQFCQ.js.map +1 -0
- package/dist/studies-EPO2AM4M.js +250 -0
- package/dist/study-writes-7FP443QQ.js +470 -0
- package/dist/study-writes-7FP443QQ.js.map +1 -0
- package/dist/sync-4YTVVEVC.js +57 -0
- package/dist/sync-4YTVVEVC.js.map +1 -0
- package/dist/sync-definition-OGQ5XTQE.js +69 -0
- package/dist/tags-CZTRQNXV.js +26 -0
- package/dist/tags-FDQXWTCQ.js +23 -0
- package/dist/tags-FDQXWTCQ.js.map +1 -0
- package/dist/tags-R67DKRZ6.js +23 -0
- package/dist/tags-R67DKRZ6.js.map +1 -0
- package/dist/tags-SA2LU6AW.js +227 -0
- package/dist/tags-SA2LU6AW.js.map +1 -0
- package/dist/tags-ZOXX6VRE.js +23 -0
- package/dist/tags-ZOXX6VRE.js.map +1 -0
- package/dist/targeting-NKZFEZD7.js +762 -0
- package/dist/targeting-NKZFEZD7.js.map +1 -0
- package/dist/targeting-criteria-AQYXVSGN.js +113 -0
- package/dist/targets-UUVCEG3F.js +106 -0
- package/dist/targets-UUVCEG3F.js.map +1 -0
- package/dist/testimonials-G3OCNPBY.js +32 -0
- package/dist/themes-FEVYZZCW.js +95 -0
- package/dist/top-companies-BQGWKYUK.js +111 -0
- package/dist/top-companies-BQGWKYUK.js.map +1 -0
- package/dist/transcript-U46AEOEI.js +165 -0
- package/dist/transcript-U46AEOEI.js.map +1 -0
- package/dist/translate-AS7JVKYM.js +609 -0
- package/dist/translate-AS7JVKYM.js.map +1 -0
- package/dist/triggers-ECRBPYYF.js +144 -0
- package/dist/triggers-ECRBPYYF.js.map +1 -0
- package/dist/unlink-VDNCSRJV.js +70 -0
- package/dist/unlink-VDNCSRJV.js.map +1 -0
- package/dist/unstage-ATDXUYP2.js +88 -0
- package/dist/unstage-ATDXUYP2.js.map +1 -0
- package/dist/unstage-ZA3WQBEA.js +96 -0
- package/dist/unstage-ZA3WQBEA.js.map +1 -0
- package/dist/update-FJ6TBV3E.js +101 -0
- package/dist/update-FJ6TBV3E.js.map +1 -0
- package/dist/update-HDBJCSTI.js +66 -0
- package/dist/update-HDBJCSTI.js.map +1 -0
- package/dist/update-U43DJRGV.js +155 -0
- package/dist/update-U43DJRGV.js.map +1 -0
- package/dist/update-Z7TIUBMJ.js +192 -0
- package/dist/update-Z7TIUBMJ.js.map +1 -0
- package/dist/upload-LXCFSRIU.js +129 -0
- package/dist/upload-LXCFSRIU.js.map +1 -0
- package/dist/url-options-Z4BQBEMI.js +131 -0
- package/dist/url-options-Z4BQBEMI.js.map +1 -0
- package/dist/url-params-J7RKP5RB.js +101 -0
- package/dist/url-params-J7RKP5RB.js.map +1 -0
- package/dist/validate-VR3HEOMJ.js +122 -0
- package/dist/validate-VR3HEOMJ.js.map +1 -0
- package/dist/videos-36AXDUGZ.js +41 -0
- package/dist/viewer-check-6HL4OUQY.js +83 -0
- package/dist/web-7BRJRQX7.js +143 -0
- package/dist/web-7BRJRQX7.js.map +1 -0
- package/dist/winning-ads-GMM5W2O4.js +86 -0
- package/dist/write-commands-IM5DPG3R.js +1502 -0
- package/dist/write-commands-IM5DPG3R.js.map +1 -0
- package/dist/write-commands-OGVDWWBV.js +1172 -0
- package/dist/write-commands-OGVDWWBV.js.map +1 -0
- package/dist/x-HGFAL3NY.js +47 -0
- package/package.json +1 -1
- package/dist/account-C635ATVM.js +0 -80
- package/dist/account-C635ATVM.js.map +0 -1
- package/dist/account-WLQBAQMD.js +0 -80
- package/dist/account-WLQBAQMD.js.map +0 -1
- package/dist/account-assets-O7IA37RE.js +0 -290
- package/dist/account-level-EU7BWCO7.js +0 -609
- package/dist/account-level-EU7BWCO7.js.map +0 -1
- package/dist/account-reads-SNOWDHHF.js +0 -219
- package/dist/account-users-XYYENK6X.js +0 -62
- package/dist/account-users-XYYENK6X.js.map +0 -1
- package/dist/account-writes-TU3WJRSI.js +0 -66
- package/dist/account-writes-TU3WJRSI.js.map +0 -1
- package/dist/accounts-A2FBLZ5H.js +0 -78
- package/dist/accounts-A2FBLZ5H.js.map +0 -1
- package/dist/accounts-V2IZZ5KU.js +0 -699
- package/dist/accounts-V2IZZ5KU.js.map +0 -1
- package/dist/actions-Y4SULW2E.js +0 -55
- package/dist/activecampaign-63XG6CLL.js +0 -936
- package/dist/activecampaign-63XG6CLL.js.map +0 -1
- package/dist/ad-group-writes-HLBWN4E4.js +0 -170
- package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
- package/dist/ad-groups-33NZD6J3.js +0 -68
- package/dist/ad-groups-33NZD6J3.js.map +0 -1
- package/dist/ad-writes-7ZDNDZ2E.js +0 -174
- package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
- package/dist/add-FOLFVGQO.js +0 -303
- package/dist/add-FOLFVGQO.js.map +0 -1
- package/dist/add-RYB4JSYC.js +0 -105
- package/dist/add-RYB4JSYC.js.map +0 -1
- package/dist/ads-2TVWICGM.js +0 -48
- package/dist/ads-KBE5JXCH.js +0 -115
- package/dist/ads-X3AM6M7L.js +0 -77
- package/dist/ads-X3AM6M7L.js.map +0 -1
- package/dist/adsets-YWBJFPAZ.js +0 -182
- package/dist/advertisers-IGUMSK5Q.js +0 -121
- package/dist/advertisers-IGUMSK5Q.js.map +0 -1
- package/dist/analytics-3DKM7J43.js +0 -445
- package/dist/analytics-3DKM7J43.js.map +0 -1
- package/dist/analytics-R3QDSX2K.js +0 -2435
- package/dist/analytics-R3QDSX2K.js.map +0 -1
- package/dist/asset-writes-72DEVXGO.js +0 -48
- package/dist/assign-EKCGLNZB.js +0 -78
- package/dist/assign-EKCGLNZB.js.map +0 -1
- package/dist/audience-size-IKXK32HU.js +0 -74
- package/dist/audience-size-IKXK32HU.js.map +0 -1
- package/dist/audience-writes-KCHLNFSI.js +0 -325
- package/dist/audience-writes-KCHLNFSI.js.map +0 -1
- package/dist/audiences-QAH42HIM.js +0 -86
- package/dist/audiences-WCDWN64L.js +0 -268
- package/dist/audiences-WCDWN64L.js.map +0 -1
- package/dist/audit-CY76S4V7.js +0 -152
- package/dist/audit-CY76S4V7.js.map +0 -1
- package/dist/autocomplete-G2S5HNUS.js +0 -112
- package/dist/autocomplete-G2S5HNUS.js.map +0 -1
- package/dist/avatars-P4UPNZM4.js +0 -38
- package/dist/bid-pricing-AJT4QU2C.js +0 -101
- package/dist/bid-pricing-AJT4QU2C.js.map +0 -1
- package/dist/brand-HALQWZWB.js +0 -22
- package/dist/brief-NW7TGG2Q.js +0 -541
- package/dist/brief-NW7TGG2Q.js.map +0 -1
- package/dist/campaign-groups-I43KMAJP.js +0 -97
- package/dist/campaign-groups-I43KMAJP.js.map +0 -1
- package/dist/campaign-writes-DLLPFAGG.js +0 -166
- package/dist/campaign-writes-DLLPFAGG.js.map +0 -1
- package/dist/campaign-writes-XO74BALZ.js +0 -174
- package/dist/campaign-writes-XO74BALZ.js.map +0 -1
- package/dist/campaigns-LS65QM6W.js +0 -76
- package/dist/campaigns-LS65QM6W.js.map +0 -1
- package/dist/campaigns-UIYSYCF3.js +0 -111
- package/dist/campaigns-UIYSYCF3.js.map +0 -1
- package/dist/campaigns-XZOQ2VTK.js +0 -130
- package/dist/campaigns-YMM5TQVO.js +0 -111
- package/dist/canvas-IJS7H3VE.js +0 -46
- package/dist/capabilities-XMQPM3UL.js +0 -145
- package/dist/capabilities-XMQPM3UL.js.map +0 -1
- package/dist/catalogs-JLCSFZYC.js +0 -779
- package/dist/catalogs-JLCSFZYC.js.map +0 -1
- package/dist/catalogs-T23RKYFC.js +0 -128
- package/dist/catalogs-T23RKYFC.js.map +0 -1
- package/dist/changes-36C754R4.js +0 -135
- package/dist/chatgpt-3WFOPURY.js +0 -47
- package/dist/chats-ZI6EYDAF.js +0 -277
- package/dist/chats-ZI6EYDAF.js.map +0 -1
- package/dist/check-CHJ2OLAU.js +0 -105
- package/dist/check-CHJ2OLAU.js.map +0 -1
- package/dist/chunk-2TOIY2WN.js +0 -4254
- package/dist/chunk-4GAEB6NK.js +0 -228
- package/dist/chunk-5RVQK3SP.js +0 -494
- package/dist/chunk-5SRUAGTG.js +0 -547
- package/dist/chunk-5XTGG4PV.js +0 -274
- package/dist/chunk-6Z7Y4KQB.js +0 -275
- package/dist/chunk-7J3NZBPV.js +0 -2982
- package/dist/chunk-7J3NZBPV.js.map +0 -1
- package/dist/chunk-AIRD6T4W.js +0 -169
- package/dist/chunk-AQOFQNKQ.js +0 -57
- package/dist/chunk-ARUXGKZO.js +0 -91
- package/dist/chunk-AYPBARKP.js +0 -156
- package/dist/chunk-BRLZX3VP.js +0 -207
- package/dist/chunk-BTJSGJNQ.js +0 -604
- package/dist/chunk-C7QQQVBS.js +0 -51
- package/dist/chunk-CCEDZTP7.js +0 -391
- package/dist/chunk-CCEDZTP7.js.map +0 -1
- package/dist/chunk-D3KLDIPQ.js +0 -45
- package/dist/chunk-DUR7PEJI.js +0 -170
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-FFFJBNHA.js +0 -63
- package/dist/chunk-FPWQA7TK.js +0 -344
- package/dist/chunk-G5Y7OIPL.js +0 -392
- package/dist/chunk-GACSA5A6.js +0 -1646
- package/dist/chunk-GMHCHHAA.js +0 -19
- package/dist/chunk-H4NNQGG6.js +0 -66
- package/dist/chunk-HSQRITKG.js +0 -203
- package/dist/chunk-I47BEKYK.js +0 -831
- package/dist/chunk-JND6XSGZ.js +0 -7192
- package/dist/chunk-JND6XSGZ.js.map +0 -1
- package/dist/chunk-KBRJSPIM.js +0 -676
- package/dist/chunk-KQTNUDKD.js +0 -97
- package/dist/chunk-M7HD42M6.js +0 -24017
- package/dist/chunk-M7HD42M6.js.map +0 -1
- package/dist/chunk-MBSFEVOG.js +0 -163
- package/dist/chunk-MGYC2IRC.js +0 -783
- package/dist/chunk-MUXKYSTI.js +0 -297
- package/dist/chunk-MZCTX37B.js +0 -3868
- package/dist/chunk-N7M2TWR5.js +0 -592
- package/dist/chunk-NDFS3APP.js +0 -319
- package/dist/chunk-OBJCNGZL.js +0 -207
- package/dist/chunk-OJGYYH6K.js +0 -179
- package/dist/chunk-P6BKKUSX.js +0 -142
- package/dist/chunk-PLAOK4AK.js +0 -103
- package/dist/chunk-PLBITHV6.js +0 -846
- package/dist/chunk-PNKIOTCK.js +0 -349
- package/dist/chunk-PNKIOTCK.js.map +0 -1
- package/dist/chunk-QBRPM3DQ.js +0 -61
- package/dist/chunk-QMDMTZAW.js +0 -224
- package/dist/chunk-QW6HL7D6.js +0 -429
- package/dist/chunk-R53XMPDO.js +0 -363
- package/dist/chunk-RFIUOQLN.js +0 -89
- package/dist/chunk-RVEY7BTT.js +0 -8954
- package/dist/chunk-SCL7PM6P.js +0 -479
- package/dist/chunk-SM7G7RUA.js +0 -910
- package/dist/chunk-SVBJ56T7.js +0 -455
- package/dist/chunk-TVAIOC77.js +0 -287
- package/dist/chunk-TVTSA4EN.js +0 -188
- package/dist/chunk-VIPKDXGU.js +0 -4229
- package/dist/chunk-VIPKDXGU.js.map +0 -1
- package/dist/chunk-W574NV67.js +0 -191
- package/dist/chunk-XGPU2VDU.js +0 -219
- package/dist/chunk-XQXZJ5IR.js +0 -249
- package/dist/chunk-YMF2RG4Z.js +0 -942
- package/dist/chunk-Z2DRGXBB.js +0 -197
- package/dist/chunk-Z7YMSHRZ.js +0 -23
- package/dist/chunk-ZEC46NWW.js +0 -122
- package/dist/chunk-ZFC562TP.js +0 -387
- package/dist/chunk-ZNRGH4NS.js +0 -150
- package/dist/claim-OUYHVGB4.js +0 -198
- package/dist/claim-OUYHVGB4.js.map +0 -1
- package/dist/companies-XDNSG7ME.js +0 -196
- package/dist/companies-XDNSG7ME.js.map +0 -1
- package/dist/company-4FAYYPEJ.js +0 -306
- package/dist/company-4FAYYPEJ.js.map +0 -1
- package/dist/complete-M2PAUMDP.js +0 -82
- package/dist/complete-M2PAUMDP.js.map +0 -1
- package/dist/connect-PP6Z3F7Y.js +0 -43
- package/dist/conversation-B5NPTLFQ.js +0 -94
- package/dist/conversation-B5NPTLFQ.js.map +0 -1
- package/dist/conversion-report-DKXFHLLX.js +0 -125
- package/dist/conversion-report-DKXFHLLX.js.map +0 -1
- package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
- package/dist/conversion-writes-7ODJDAUP.js +0 -120
- package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
- package/dist/conversions-BKVGNNC6.js +0 -76
- package/dist/conversions-BKVGNNC6.js.map +0 -1
- package/dist/conversions-QRJL6JIO.js +0 -138
- package/dist/conversions-QRJL6JIO.js.map +0 -1
- package/dist/copy-writes-P4WK6OPM.js +0 -168
- package/dist/copy-writes-P4WK6OPM.js.map +0 -1
- package/dist/create-4DWCJ2UA.js +0 -208
- package/dist/create-4DWCJ2UA.js.map +0 -1
- package/dist/create-OYV33CQ6.js +0 -60
- package/dist/create-OYV33CQ6.js.map +0 -1
- package/dist/create-U6JVIYFY.js +0 -237
- package/dist/create-U6JVIYFY.js.map +0 -1
- package/dist/create-V4FNRO63.js +0 -133
- package/dist/create-V4FNRO63.js.map +0 -1
- package/dist/creatives-64FKWEGL.js +0 -221
- package/dist/creatives-64FKWEGL.js.map +0 -1
- package/dist/creatives-JPKA2RHU.js +0 -89
- package/dist/creatives-UJDPD4CI.js +0 -58
- package/dist/credentials-EIPEZ2C2.js +0 -288
- package/dist/credentials-EIPEZ2C2.js.map +0 -1
- package/dist/critique-BADMZAZP.js +0 -230
- package/dist/critique-BADMZAZP.js.map +0 -1
- package/dist/critique-M3DEVEDA.js +0 -1449
- package/dist/critique-M3DEVEDA.js.map +0 -1
- package/dist/crm-GIYSLLY7.js +0 -321
- package/dist/crm-GIYSLLY7.js.map +0 -1
- package/dist/crm-HXKSJRY3.js +0 -225
- package/dist/crm-HXKSJRY3.js.map +0 -1
- package/dist/currency-R4ORE2U3.js +0 -88
- package/dist/custom-conversions-5HJBB5XL.js +0 -128
- package/dist/customers-7J3QGSOJ.js +0 -57
- package/dist/delete-EDWJQMMV.js +0 -65
- package/dist/delete-EDWJQMMV.js.map +0 -1
- package/dist/delete-O24CVQMJ.js +0 -67
- package/dist/delete-O24CVQMJ.js.map +0 -1
- package/dist/delete-QN2OYUCS.js +0 -55
- package/dist/delete-QN2OYUCS.js.map +0 -1
- package/dist/demographics-MPYYF2OI.js +0 -139
- package/dist/demographics-MPYYF2OI.js.map +0 -1
- package/dist/discard-FJCFB6SA.js +0 -67
- package/dist/discard-FJCFB6SA.js.map +0 -1
- package/dist/discover-GSJRZUOC.js +0 -172
- package/dist/domain-UILPSEA5.js +0 -99
- package/dist/domain-UILPSEA5.js.map +0 -1
- package/dist/download-ZMAI7QSG.js +0 -170
- package/dist/download-ZMAI7QSG.js.map +0 -1
- package/dist/draft-5OQT3APG.js +0 -308
- package/dist/draft-5OQT3APG.js.map +0 -1
- package/dist/draft-LPVK6YHI.js +0 -281
- package/dist/draft-LPVK6YHI.js.map +0 -1
- package/dist/draft-MSESA5UE.js +0 -333
- package/dist/draft-MSESA5UE.js.map +0 -1
- package/dist/draft-WYDMLNYA.js +0 -308
- package/dist/draft-XOOSEVY5.js +0 -218
- package/dist/draft-XOOSEVY5.js.map +0 -1
- package/dist/experiments-PVOQUL47.js +0 -234
- package/dist/experiments-PVOQUL47.js.map +0 -1
- package/dist/facets-5RW4Z3D3.js +0 -115
- package/dist/facets-5RW4Z3D3.js.map +0 -1
- package/dist/feedback-GC56R2EJ.js +0 -109
- package/dist/feedback-GC56R2EJ.js.map +0 -1
- package/dist/feedback-record-JX7ZU6J7.js +0 -263
- package/dist/feedback-record-JX7ZU6J7.js.map +0 -1
- package/dist/fetch-WUTXAPBL.js +0 -177
- package/dist/fetch-WUTXAPBL.js.map +0 -1
- package/dist/fit-N7WDGWYZ.js +0 -63
- package/dist/flows-ULZACISF.js +0 -248
- package/dist/flows-ULZACISF.js.map +0 -1
- package/dist/fonts-TTUAP7HS.js +0 -37
- package/dist/forecast-4AG5F7YC.js +0 -169
- package/dist/forecast-RQJJRN5D.js +0 -119
- package/dist/forecast-RQJJRN5D.js.map +0 -1
- package/dist/funnel-QPWJIXWK.js +0 -395
- package/dist/funnel-QPWJIXWK.js.map +0 -1
- package/dist/get-35D7YHWJ.js +0 -57
- package/dist/get-35D7YHWJ.js.map +0 -1
- package/dist/get-GIETDPF4.js +0 -80
- package/dist/get-GIETDPF4.js.map +0 -1
- package/dist/google-NAA4BASO.js +0 -3267
- package/dist/google-ads-2IZFZO4C.js +0 -196
- package/dist/google-ads-2IZFZO4C.js.map +0 -1
- package/dist/history-5MRLNTCI.js +0 -67
- package/dist/history-5MRLNTCI.js.map +0 -1
- package/dist/history-RPLWWPLQ.js +0 -134
- package/dist/history-RPLWWPLQ.js.map +0 -1
- package/dist/history-TQYLUYVU.js +0 -100
- package/dist/history-TQYLUYVU.js.map +0 -1
- package/dist/hubspot-EPK43X4C.js +0 -780
- package/dist/hubspot-EPK43X4C.js.map +0 -1
- package/dist/ideas-SUXKKZC7.js +0 -43
- package/dist/images-VKVZ3DWG.js +0 -92
- package/dist/ingest-BBBFT6FZ.js +0 -24
- package/dist/ingest-EM2UY42Z.js +0 -108
- package/dist/ingest-EM2UY42Z.js.map +0 -1
- package/dist/insights-M3CYB22P.js +0 -437
- package/dist/insights-M3CYB22P.js.map +0 -1
- package/dist/insights-XCT3ONC7.js +0 -130
- package/dist/insights-XCT3ONC7.js.map +0 -1
- package/dist/inspect-ZPOVOENK.js +0 -190
- package/dist/inspect-ZPOVOENK.js.map +0 -1
- package/dist/instant-experiences-HT3HB4QZ.js +0 -258
- package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
- package/dist/intent-NSHW7EJT.js +0 -95
- package/dist/keyword-gap-ITTWKBWZ.js +0 -130
- package/dist/keyword-metrics-7DPR264W.js +0 -198
- package/dist/keyword-metrics-7DPR264W.js.map +0 -1
- package/dist/keywords-for-site-IXL22UKQ.js +0 -129
- package/dist/keywords-for-site-IXL22UKQ.js.map +0 -1
- package/dist/landing-KZ4OSHHR.js +0 -28
- package/dist/languages-MEFQQBJ2.js +0 -40
- package/dist/leads-DNQTRYIR.js +0 -113
- package/dist/leads-DNQTRYIR.js.map +0 -1
- package/dist/leads-SZOGCQFK.js +0 -538
- package/dist/leads-SZOGCQFK.js.map +0 -1
- package/dist/learn-Q7WZG7FA.js +0 -205
- package/dist/learn-Q7WZG7FA.js.map +0 -1
- package/dist/line-item-writes-3K7FT5GO.js +0 -209
- package/dist/line-item-writes-3K7FT5GO.js.map +0 -1
- package/dist/line-items-G5YJG25N.js +0 -107
- package/dist/link-2QVSIZJT.js +0 -65
- package/dist/link-2QVSIZJT.js.map +0 -1
- package/dist/linkedin-VAFPZNWZ.js +0 -1314
- package/dist/linkedin-VAFPZNWZ.js.map +0 -1
- package/dist/linkedin-person-EHTYVNZY.js +0 -137
- package/dist/linkedin-person-EHTYVNZY.js.map +0 -1
- package/dist/list-5TS2VPQZ.js +0 -152
- package/dist/list-5TS2VPQZ.js.map +0 -1
- package/dist/list-PSSQXQRJ.js +0 -65
- package/dist/list-PSSQXQRJ.js.map +0 -1
- package/dist/list-UMVIFQ3X.js +0 -304
- package/dist/list-UMVIFQ3X.js.map +0 -1
- package/dist/locations-RLWAS6AC.js +0 -40
- package/dist/locations-UKBOT6SB.js +0 -67
- package/dist/locations-UKBOT6SB.js.map +0 -1
- package/dist/log-ZZK3QMZB.js +0 -93
- package/dist/log-ZZK3QMZB.js.map +0 -1
- package/dist/lookup-ZJIP2M4X.js +0 -22
- package/dist/make-DB2BDVB3.js +0 -1368
- package/dist/make-DB2BDVB3.js.map +0 -1
- package/dist/map-UJ23GKRH.js +0 -434
- package/dist/map-UJ23GKRH.js.map +0 -1
- package/dist/mcp-SS2ALFRJ.js +0 -715
- package/dist/mcp-SS2ALFRJ.js.map +0 -1
- package/dist/media-ZWN7E777.js +0 -18
- package/dist/media-sources-GKSEDSE3.js +0 -35
- package/dist/members-KD2XRYPZ.js +0 -45
- package/dist/members-KD2XRYPZ.js.map +0 -1
- package/dist/meta-EHKXH257.js +0 -122
- package/dist/metrics-K6FDCMK7.js +0 -152
- package/dist/normalize-ZNTXNX6D.js +0 -142
- package/dist/normalize-ZNTXNX6D.js.map +0 -1
- package/dist/options-TBIFJF3E.js +0 -123
- package/dist/options-TBIFJF3E.js.map +0 -1
- package/dist/organization-26J2ZIKM.js +0 -947
- package/dist/organization-26J2ZIKM.js.map +0 -1
- package/dist/page-photos-HWKQOSCU.js +0 -116
- package/dist/page-photos-HWKQOSCU.js.map +0 -1
- package/dist/performance-6TPJGM6A.js +0 -25
- package/dist/performance-O5BXZGS6.js +0 -5539
- package/dist/performance-O5BXZGS6.js.map +0 -1
- package/dist/pixels-Z7ZGXAGB.js +0 -60
- package/dist/pixels-Z7ZGXAGB.js.map +0 -1
- package/dist/plan-TVQSEKYL.js +0 -207
- package/dist/plan-TVQSEKYL.js.map +0 -1
- package/dist/preview-CWRGDFCP.js +0 -216
- package/dist/preview-CWRGDFCP.js.map +0 -1
- package/dist/promoted-tweet-writes-SZN74JHY.js +0 -181
- package/dist/promoted-tweet-writes-SZN74JHY.js.map +0 -1
- package/dist/promoted-tweets-7P4TSQU7.js +0 -119
- package/dist/publish-3DUERLGT.js +0 -342
- package/dist/publish-3DUERLGT.js.map +0 -1
- package/dist/query-QM7MBQD7.js +0 -62
- package/dist/questionnaire-LEZJLMAV.js +0 -93
- package/dist/questionnaire-LEZJLMAV.js.map +0 -1
- package/dist/reddit-SN5CESF4.js +0 -27
- package/dist/refresh-2ICQBTK4.js +0 -95
- package/dist/refresh-2ICQBTK4.js.map +0 -1
- package/dist/release-JSZ4JXYJ.js +0 -61
- package/dist/release-JSZ4JXYJ.js.map +0 -1
- package/dist/relevant-pages-VOICMQ7U.js +0 -99
- package/dist/remove-TFUAVRFM.js +0 -51
- package/dist/remove-TFUAVRFM.js.map +0 -1
- package/dist/reopen-5T2PE7MU.js +0 -64
- package/dist/reopen-5T2PE7MU.js.map +0 -1
- package/dist/rerun-EZJ4MLYG.js +0 -93
- package/dist/rerun-EZJ4MLYG.js.map +0 -1
- package/dist/research-BKYSU2C6.js +0 -263
- package/dist/research-BKYSU2C6.js.map +0 -1
- package/dist/research-QU63CJB5.js +0 -72
- package/dist/reset-DKTKZF7G.js +0 -55
- package/dist/reset-DKTKZF7G.js.map +0 -1
- package/dist/reset-SXABIVP6.js +0 -55
- package/dist/reset-SXABIVP6.js.map +0 -1
- package/dist/resolve-L47U2T77.js +0 -122
- package/dist/resolve-L47U2T77.js.map +0 -1
- package/dist/retry-JEWPK2B5.js +0 -63
- package/dist/retry-JEWPK2B5.js.map +0 -1
- package/dist/retry-SXFVLT3W.js +0 -61
- package/dist/retry-SXFVLT3W.js.map +0 -1
- package/dist/revenue-2MAYTXRM.js +0 -89
- package/dist/revenue-2MAYTXRM.js.map +0 -1
- package/dist/rule-writes-S3RN47OG.js +0 -523
- package/dist/rule-writes-S3RN47OG.js.map +0 -1
- package/dist/rules-CHWTFASP.js +0 -97
- package/dist/rules-CHWTFASP.js.map +0 -1
- package/dist/rules-KTJ2ZZ62.js +0 -217
- package/dist/rules-add-3M5TALWN.js +0 -463
- package/dist/rules-add-3M5TALWN.js.map +0 -1
- package/dist/run-2DLA6YO4.js +0 -68
- package/dist/run-JCGH2NHD.js +0 -67
- package/dist/run-JCGH2NHD.js.map +0 -1
- package/dist/scaffold-ad-VEW7JDY7.js +0 -1514
- package/dist/scaffold-ad-VEW7JDY7.js.map +0 -1
- package/dist/scaffold-static-ad-DYRL7DOS.js +0 -1013
- package/dist/scaffold-static-ad-DYRL7DOS.js.map +0 -1
- package/dist/scaffold-video-YRAVVKUH.js +0 -886
- package/dist/scaffold-video-YRAVVKUH.js.map +0 -1
- package/dist/schedule-WYIC6VNW.js +0 -62
- package/dist/schedule-WYIC6VNW.js.map +0 -1
- package/dist/scheduled-agents-FRBF4EOK.js +0 -55
- package/dist/schema-TC2O3FYY.js +0 -133
- package/dist/schema-TC2O3FYY.js.map +0 -1
- package/dist/search-VDW242BN.js +0 -175
- package/dist/search-VDW242BN.js.map +0 -1
- package/dist/select-O5HSSC36.js +0 -104
- package/dist/select-O5HSSC36.js.map +0 -1
- package/dist/sends-6FI7WELX.js +0 -348
- package/dist/sends-6FI7WELX.js.map +0 -1
- package/dist/set-prompt-TI7N64PJ.js +0 -196
- package/dist/set-prompt-TI7N64PJ.js.map +0 -1
- package/dist/setup-links-BM2FTXUZ.js +0 -142
- package/dist/setup-links-BM2FTXUZ.js.map +0 -1
- package/dist/shopify-FIHG5PYP.js +0 -3956
- package/dist/shopify-FIHG5PYP.js.map +0 -1
- package/dist/site-S3IGBMVC.js +0 -178
- package/dist/site-S3IGBMVC.js.map +0 -1
- package/dist/sources-77WLFY4Y.js +0 -30
- package/dist/sources-A4B3R5JC.js +0 -455
- package/dist/sources-A4B3R5JC.js.map +0 -1
- package/dist/stale-YIRCXDOK.js +0 -74
- package/dist/stale-YIRCXDOK.js.map +0 -1
- package/dist/status-6YNR647D.js +0 -63
- package/dist/status-6YNR647D.js.map +0 -1
- package/dist/studies-ZOEUY6YP.js +0 -250
- package/dist/study-writes-DTGMCNFP.js +0 -468
- package/dist/study-writes-DTGMCNFP.js.map +0 -1
- package/dist/sync-FFVWHGLE.js +0 -55
- package/dist/sync-FFVWHGLE.js.map +0 -1
- package/dist/sync-definition-K4XOAG2B.js +0 -67
- package/dist/tags-5KIOGEKN.js +0 -21
- package/dist/tags-5KIOGEKN.js.map +0 -1
- package/dist/tags-BKAN5EAJ.js +0 -21
- package/dist/tags-BKAN5EAJ.js.map +0 -1
- package/dist/tags-ETOOYQ57.js +0 -26
- package/dist/tags-RPNK7TMO.js +0 -225
- package/dist/tags-RPNK7TMO.js.map +0 -1
- package/dist/tags-UM4QO46J.js +0 -21
- package/dist/tags-UM4QO46J.js.map +0 -1
- package/dist/targeting-VBQY3HUN.js +0 -760
- package/dist/targeting-VBQY3HUN.js.map +0 -1
- package/dist/targeting-criteria-L4DYIJZI.js +0 -113
- package/dist/targets-S6N7327Q.js +0 -104
- package/dist/targets-S6N7327Q.js.map +0 -1
- package/dist/testimonials-65N7IYN7.js +0 -32
- package/dist/themes-B4LCQUXB.js +0 -95
- package/dist/top-companies-SJKND75M.js +0 -109
- package/dist/top-companies-SJKND75M.js.map +0 -1
- package/dist/transcript-5I7I6DWL.js +0 -163
- package/dist/transcript-5I7I6DWL.js.map +0 -1
- package/dist/translate-SH6IG5Y7.js +0 -607
- package/dist/translate-SH6IG5Y7.js.map +0 -1
- package/dist/triggers-YRY3HTYU.js +0 -142
- package/dist/triggers-YRY3HTYU.js.map +0 -1
- package/dist/unlink-4B4YTQE4.js +0 -68
- package/dist/unlink-4B4YTQE4.js.map +0 -1
- package/dist/unstage-H5NTDJ6A.js +0 -86
- package/dist/unstage-H5NTDJ6A.js.map +0 -1
- package/dist/unstage-MDSSPUKV.js +0 -95
- package/dist/unstage-MDSSPUKV.js.map +0 -1
- package/dist/update-DI52JJGB.js +0 -99
- package/dist/update-DI52JJGB.js.map +0 -1
- package/dist/update-DMPDLMMV.js +0 -64
- package/dist/update-DMPDLMMV.js.map +0 -1
- package/dist/update-TUS4PJIG.js +0 -190
- package/dist/update-TUS4PJIG.js.map +0 -1
- package/dist/update-Z66LMXNS.js +0 -153
- package/dist/update-Z66LMXNS.js.map +0 -1
- package/dist/upload-7KQYZ7T7.js +0 -127
- package/dist/upload-7KQYZ7T7.js.map +0 -1
- package/dist/url-options-IHL4OU4C.js +0 -130
- package/dist/url-options-IHL4OU4C.js.map +0 -1
- package/dist/url-params-SDA2MWB5.js +0 -99
- package/dist/url-params-SDA2MWB5.js.map +0 -1
- package/dist/validate-ZABZNCSB.js +0 -120
- package/dist/validate-ZABZNCSB.js.map +0 -1
- package/dist/videos-BKVCCKIH.js +0 -41
- package/dist/viewer-check-B5O7ZY3Q.js +0 -81
- package/dist/web-KN3BTVG4.js +0 -141
- package/dist/web-KN3BTVG4.js.map +0 -1
- package/dist/winning-ads-JIDPISKM.js +0 -86
- package/dist/write-commands-K6M3RTVK.js +0 -1170
- package/dist/write-commands-K6M3RTVK.js.map +0 -1
- package/dist/write-commands-RVHLLLDR.js +0 -1498
- package/dist/write-commands-RVHLLLDR.js.map +0 -1
- package/dist/x-NLGWZCGX.js +0 -47
- /package/dist/{account-assets-O7IA37RE.js.map → account-assets-J5Z4URLQ.js.map} +0 -0
- /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-2MSUVG46.js.map} +0 -0
- /package/dist/{actions-Y4SULW2E.js.map → actions-D7OWCP36.js.map} +0 -0
- /package/dist/{ads-2TVWICGM.js.map → ads-HLUJB5SQ.js.map} +0 -0
- /package/dist/{ads-KBE5JXCH.js.map → ads-MAOI7S6V.js.map} +0 -0
- /package/dist/{adsets-YWBJFPAZ.js.map → adsets-QRKICEFD.js.map} +0 -0
- /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-JLVUAVUZ.js.map} +0 -0
- /package/dist/{audiences-QAH42HIM.js.map → audiences-CDDI5HR5.js.map} +0 -0
- /package/dist/{avatars-P4UPNZM4.js.map → avatars-WZ2JDMHH.js.map} +0 -0
- /package/dist/{brand-HALQWZWB.js.map → brand-IZTTBZII.js.map} +0 -0
- /package/dist/{campaigns-YMM5TQVO.js.map → campaigns-4Y3JQC2U.js.map} +0 -0
- /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-HES5MDUG.js.map} +0 -0
- /package/dist/{canvas-IJS7H3VE.js.map → canvas-IQ753Q2O.js.map} +0 -0
- /package/dist/{changes-36C754R4.js.map → changes-VWKTM27U.js.map} +0 -0
- /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-OPOD2WHB.js.map} +0 -0
- /package/dist/{chunk-DUR7PEJI.js.map → chunk-2GYCWRF3.js.map} +0 -0
- /package/dist/{chunk-QBRPM3DQ.js.map → chunk-2L7F7KR4.js.map} +0 -0
- /package/dist/{chunk-4GAEB6NK.js.map → chunk-44ZRCSR7.js.map} +0 -0
- /package/dist/{chunk-2TOIY2WN.js.map → chunk-46YLDIQG.js.map} +0 -0
- /package/dist/{chunk-R53XMPDO.js.map → chunk-4EDWXZ3I.js.map} +0 -0
- /package/dist/{chunk-H4NNQGG6.js.map → chunk-4FFBGR5L.js.map} +0 -0
- /package/dist/{chunk-XGPU2VDU.js.map → chunk-4UQRXKYJ.js.map} +0 -0
- /package/dist/{chunk-N7M2TWR5.js.map → chunk-4UZUUSVL.js.map} +0 -0
- /package/dist/{chunk-I47BEKYK.js.map → chunk-4XHCEYHI.js.map} +0 -0
- /package/dist/{chunk-SCL7PM6P.js.map → chunk-4Z6PVR3M.js.map} +0 -0
- /package/dist/{chunk-ZEC46NWW.js.map → chunk-5Y5FZV2W.js.map} +0 -0
- /package/dist/{chunk-G5Y7OIPL.js.map → chunk-6HJXLGDV.js.map} +0 -0
- /package/dist/{chunk-QW6HL7D6.js.map → chunk-6S5CWGDA.js.map} +0 -0
- /package/dist/{chunk-5RVQK3SP.js.map → chunk-6VYROVWO.js.map} +0 -0
- /package/dist/{chunk-TVAIOC77.js.map → chunk-7BUIOP36.js.map} +0 -0
- /package/dist/{chunk-NDFS3APP.js.map → chunk-AQRXXC6E.js.map} +0 -0
- /package/dist/{chunk-ZFC562TP.js.map → chunk-ARBXT73X.js.map} +0 -0
- /package/dist/{chunk-KQTNUDKD.js.map → chunk-BEZHQIEI.js.map} +0 -0
- /package/dist/{chunk-5SRUAGTG.js.map → chunk-BFURWHVR.js.map} +0 -0
- /package/dist/{chunk-KBRJSPIM.js.map → chunk-DSCEXBDR.js.map} +0 -0
- /package/dist/{chunk-Z7YMSHRZ.js.map → chunk-FLWDFPXE.js.map} +0 -0
- /package/dist/{chunk-GACSA5A6.js.map → chunk-FRNBRN2C.js.map} +0 -0
- /package/dist/{chunk-C7QQQVBS.js.map → chunk-GE3VT3CA.js.map} +0 -0
- /package/dist/{chunk-P6BKKUSX.js.map → chunk-HGBJQGO5.js.map} +0 -0
- /package/dist/{chunk-MGYC2IRC.js.map → chunk-I7AYMJZA.js.map} +0 -0
- /package/dist/{chunk-BRLZX3VP.js.map → chunk-IRM273C7.js.map} +0 -0
- /package/dist/{chunk-AYPBARKP.js.map → chunk-IWKD56AY.js.map} +0 -0
- /package/dist/{chunk-MZCTX37B.js.map → chunk-JLAQWMVF.js.map} +0 -0
- /package/dist/{chunk-AQOFQNKQ.js.map → chunk-K6NULQN7.js.map} +0 -0
- /package/dist/{chunk-GMHCHHAA.js.map → chunk-L2BRAC2J.js.map} +0 -0
- /package/dist/{chunk-SVBJ56T7.js.map → chunk-LGMI4LSY.js.map} +0 -0
- /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
- /package/dist/{chunk-TVTSA4EN.js.map → chunk-NWF2LRKO.js.map} +0 -0
- /package/dist/{chunk-6Z7Y4KQB.js.map → chunk-OG47L5GG.js.map} +0 -0
- /package/dist/{chunk-AIRD6T4W.js.map → chunk-OR6KVLI5.js.map} +0 -0
- /package/dist/{chunk-OBJCNGZL.js.map → chunk-QDQZ62FL.js.map} +0 -0
- /package/dist/{chunk-FPWQA7TK.js.map → chunk-QIOFOD4K.js.map} +0 -0
- /package/dist/{chunk-XQXZJ5IR.js.map → chunk-R2SYF5FC.js.map} +0 -0
- /package/dist/{chunk-YMF2RG4Z.js.map → chunk-RTH2I55B.js.map} +0 -0
- /package/dist/{chunk-FFFJBNHA.js.map → chunk-S6VFDNSQ.js.map} +0 -0
- /package/dist/{chunk-ZNRGH4NS.js.map → chunk-SG2TDQEE.js.map} +0 -0
- /package/dist/{chunk-RFIUOQLN.js.map → chunk-T3P6O2VU.js.map} +0 -0
- /package/dist/{chunk-BTJSGJNQ.js.map → chunk-TXDE2QJ3.js.map} +0 -0
- /package/dist/{chunk-HSQRITKG.js.map → chunk-UDIEKCIR.js.map} +0 -0
- /package/dist/{chunk-MBSFEVOG.js.map → chunk-USCADMM3.js.map} +0 -0
- /package/dist/{chunk-SM7G7RUA.js.map → chunk-UUGISMNE.js.map} +0 -0
- /package/dist/{chunk-Z2DRGXBB.js.map → chunk-VDPOCAQ2.js.map} +0 -0
- /package/dist/{chunk-PLAOK4AK.js.map → chunk-VEJ3QX6M.js.map} +0 -0
- /package/dist/{chunk-ARUXGKZO.js.map → chunk-VFJB7OG6.js.map} +0 -0
- /package/dist/{chunk-RVEY7BTT.js.map → chunk-VRIPVLE7.js.map} +0 -0
- /package/dist/{chunk-5XTGG4PV.js.map → chunk-WFY7KSHB.js.map} +0 -0
- /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
- /package/dist/{chunk-PLBITHV6.js.map → chunk-XHQYFNNK.js.map} +0 -0
- /package/dist/{chunk-QMDMTZAW.js.map → chunk-YILZR3XI.js.map} +0 -0
- /package/dist/{chunk-W574NV67.js.map → chunk-YJFLXOH4.js.map} +0 -0
- /package/dist/{chunk-MUXKYSTI.js.map → chunk-YWHZYR6S.js.map} +0 -0
- /package/dist/{connect-PP6Z3F7Y.js.map → connect-3YY7MF3I.js.map} +0 -0
- /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-7RSZ5ZQU.js.map} +0 -0
- /package/dist/{creatives-UJDPD4CI.js.map → creatives-2DR3QHJW.js.map} +0 -0
- /package/dist/{creatives-JPKA2RHU.js.map → creatives-BB6S2OF6.js.map} +0 -0
- /package/dist/{currency-R4ORE2U3.js.map → currency-X7Y6TSLF.js.map} +0 -0
- /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-HAGG72LF.js.map} +0 -0
- /package/dist/{customers-7J3QGSOJ.js.map → customers-663K2OCP.js.map} +0 -0
- /package/dist/{discover-GSJRZUOC.js.map → discover-6DORQWXY.js.map} +0 -0
- /package/dist/{draft-WYDMLNYA.js.map → draft-R6EKORNS.js.map} +0 -0
- /package/dist/{fit-N7WDGWYZ.js.map → fit-BEFCY2B4.js.map} +0 -0
- /package/dist/{fonts-TTUAP7HS.js.map → fonts-C6XN5667.js.map} +0 -0
- /package/dist/{forecast-4AG5F7YC.js.map → forecast-BTPIXEQ5.js.map} +0 -0
- /package/dist/{google-NAA4BASO.js.map → google-M6BJ22UL.js.map} +0 -0
- /package/dist/{ideas-SUXKKZC7.js.map → ideas-M66FU45H.js.map} +0 -0
- /package/dist/{images-VKVZ3DWG.js.map → images-MM5OPUKV.js.map} +0 -0
- /package/dist/{ingest-BBBFT6FZ.js.map → ingest-KMLYCFF4.js.map} +0 -0
- /package/dist/{intent-NSHW7EJT.js.map → intent-YCQCUCV3.js.map} +0 -0
- /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-PUSF7EKY.js.map} +0 -0
- /package/dist/{landing-KZ4OSHHR.js.map → landing-OZU5RRFV.js.map} +0 -0
- /package/dist/{languages-MEFQQBJ2.js.map → languages-SLFV73GE.js.map} +0 -0
- /package/dist/{line-items-G5YJG25N.js.map → line-items-NJMEPEF5.js.map} +0 -0
- /package/dist/{locations-RLWAS6AC.js.map → locations-T2OMP6QN.js.map} +0 -0
- /package/dist/{lookup-ZJIP2M4X.js.map → lookup-S5VG7AWH.js.map} +0 -0
- /package/dist/{media-ZWN7E777.js.map → media-P4T4ZBNS.js.map} +0 -0
- /package/dist/{media-sources-GKSEDSE3.js.map → media-sources-EQI3U4TC.js.map} +0 -0
- /package/dist/{meta-EHKXH257.js.map → meta-IPLWNYC7.js.map} +0 -0
- /package/dist/{metrics-K6FDCMK7.js.map → metrics-4YVJHYRI.js.map} +0 -0
- /package/dist/{performance-6TPJGM6A.js.map → performance-NIF3CESZ.js.map} +0 -0
- /package/dist/{promoted-tweets-7P4TSQU7.js.map → promoted-tweets-RJT53DRM.js.map} +0 -0
- /package/dist/{query-QM7MBQD7.js.map → query-XZMDGRO5.js.map} +0 -0
- /package/dist/{reddit-SN5CESF4.js.map → reddit-JIHMAKAQ.js.map} +0 -0
- /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-FS7GBVXK.js.map} +0 -0
- /package/dist/{research-QU63CJB5.js.map → research-PNBACCCP.js.map} +0 -0
- /package/dist/{rules-KTJ2ZZ62.js.map → rules-ZVS2MWED.js.map} +0 -0
- /package/dist/{run-2DLA6YO4.js.map → run-QCNRR3CA.js.map} +0 -0
- /package/dist/{scheduled-agents-FRBF4EOK.js.map → scheduled-agents-OXYAVSIE.js.map} +0 -0
- /package/dist/{sources-77WLFY4Y.js.map → sources-FLUGHSVP.js.map} +0 -0
- /package/dist/{studies-ZOEUY6YP.js.map → studies-EPO2AM4M.js.map} +0 -0
- /package/dist/{sync-definition-K4XOAG2B.js.map → sync-definition-OGQ5XTQE.js.map} +0 -0
- /package/dist/{tags-ETOOYQ57.js.map → tags-CZTRQNXV.js.map} +0 -0
- /package/dist/{targeting-criteria-L4DYIJZI.js.map → targeting-criteria-AQYXVSGN.js.map} +0 -0
- /package/dist/{testimonials-65N7IYN7.js.map → testimonials-G3OCNPBY.js.map} +0 -0
- /package/dist/{themes-B4LCQUXB.js.map → themes-FEVYZZCW.js.map} +0 -0
- /package/dist/{videos-BKVCCKIH.js.map → videos-36AXDUGZ.js.map} +0 -0
- /package/dist/{viewer-check-B5O7ZY3Q.js.map → viewer-check-6HL4OUQY.js.map} +0 -0
- /package/dist/{winning-ads-JIDPISKM.js.map → winning-ads-GMM5W2O4.js.map} +0 -0
- /package/dist/{x-NLGWZCGX.js.map → x-HGFAL3NY.js.map} +0 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CUSTOMER_LIST_BATCH_ROWS,
|
|
3
|
+
CUSTOMER_LIST_KEYS,
|
|
4
|
+
IDENTIFYING_CUSTOMER_LIST_KEYS,
|
|
5
|
+
UNHASHED_CUSTOMER_LIST_KEYS,
|
|
6
|
+
customAudienceMembersSchema,
|
|
7
|
+
customerListBatchSchema,
|
|
8
|
+
customerListPreviewCell
|
|
9
|
+
} from "./chunk-Q3GSVLE5.js";
|
|
10
|
+
|
|
11
|
+
// src/commands/ads/meta/customer-list.ts
|
|
12
|
+
import { createHash } from "crypto";
|
|
13
|
+
import { parse } from "csv-parse/sync";
|
|
14
|
+
import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
|
|
15
|
+
var DATE_ORDERS = ["DMY", "MDY"];
|
|
16
|
+
function sha256(value) {
|
|
17
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
18
|
+
}
|
|
19
|
+
function headerWords(cell) {
|
|
20
|
+
return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
21
|
+
}
|
|
22
|
+
var HEADER_PATTERNS = [
|
|
23
|
+
[/^(e ?mail|email address|correo|correo electronico|mail)$/, "EMAIL"],
|
|
24
|
+
[/^(phone|phone number|mobile|mobile phone|telefono|movil|tel|celular|cell)$/, "PHONE"],
|
|
25
|
+
[/^(first name|firstname|fname|fn|given name|nombre)$/, "FN"],
|
|
26
|
+
[/^(last name|lastname|lname|ln|surname|family name|apellido|apellidos)$/, "LN"],
|
|
27
|
+
[/^(first initial|fi)$/, "FI"],
|
|
28
|
+
[/^(city|town|ct|ciudad|localidad)$/, "CT"],
|
|
29
|
+
[/^(state|province|region|st|provincia|estado)$/, "ST"],
|
|
30
|
+
[/^(zip|zip code|zipcode|postcode|post code|postal code|cp|codigo postal)$/, "ZIP"],
|
|
31
|
+
[/^(country|country code|pais)$/, "COUNTRY"],
|
|
32
|
+
[/^(dob|birthday|birth date|birthdate|date of birth|fecha de nacimiento|fecha nacimiento)$/, "DOB"],
|
|
33
|
+
[/^(doby|birth year|year of birth)$/, "DOBY"],
|
|
34
|
+
[/^(dobm|birth month)$/, "DOBM"],
|
|
35
|
+
[/^(dobd|birth day)$/, "DOBD"],
|
|
36
|
+
[/^(gen|gender|sex|genero|sexo)$/, "GEN"],
|
|
37
|
+
[/^(madid|idfa|aaid|gaid|advertising id|mobile advertiser id)$/, "MADID"],
|
|
38
|
+
[/^(extern id|external id|customer id|client id|crm id)$/, "EXTERN_ID"],
|
|
39
|
+
[/^(lookalike value|value)$/, "LOOKALIKE_VALUE"]
|
|
40
|
+
];
|
|
41
|
+
function headerKey(cell) {
|
|
42
|
+
const words = headerWords(cell);
|
|
43
|
+
const upper = cell.trim().toUpperCase();
|
|
44
|
+
if (CUSTOMER_LIST_KEYS.includes(upper)) {
|
|
45
|
+
return upper;
|
|
46
|
+
}
|
|
47
|
+
return HEADER_PATTERNS.find(([pattern]) => pattern.test(words))?.[1];
|
|
48
|
+
}
|
|
49
|
+
function lettersOnly(value) {
|
|
50
|
+
return value.normalize("NFC").toLowerCase().replace(/[^\p{L}]/gu, "");
|
|
51
|
+
}
|
|
52
|
+
function email(value) {
|
|
53
|
+
const normalized = value.trim().toLowerCase();
|
|
54
|
+
return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(normalized) ? normalized : void 0;
|
|
55
|
+
}
|
|
56
|
+
function country(value) {
|
|
57
|
+
const code = value.trim().toUpperCase();
|
|
58
|
+
return /^[A-Z]{2}$/.test(code) && isSupportedCountry(code) ? code : void 0;
|
|
59
|
+
}
|
|
60
|
+
function phone(value, rowCountry) {
|
|
61
|
+
const region = rowCountry ? rowCountry : void 0;
|
|
62
|
+
const parsed = parsePhoneNumberFromString(value.trim(), region);
|
|
63
|
+
return parsed?.isValid() ? parsed.number.replace(/^\+/, "") : void 0;
|
|
64
|
+
}
|
|
65
|
+
function zip(value, rowCountry) {
|
|
66
|
+
const compact = value.toLowerCase().replace(/\s+/g, "");
|
|
67
|
+
if (compact === "") return void 0;
|
|
68
|
+
const us = rowCountry === "US" || /^\d{5}-\d{4}$/.test(compact);
|
|
69
|
+
return us ? /^\d{5}/.exec(compact)?.[0] ?? void 0 : compact;
|
|
70
|
+
}
|
|
71
|
+
function gender(value) {
|
|
72
|
+
const first = value.trim().toLowerCase();
|
|
73
|
+
if (/^(m|male|man|hombre|masculino|h)$/.test(first)) return "m";
|
|
74
|
+
if (/^(f|female|woman|mujer|femenino)$/.test(first)) return "f";
|
|
75
|
+
return void 0;
|
|
76
|
+
}
|
|
77
|
+
var US_STATE_CODES = {
|
|
78
|
+
alabama: "al",
|
|
79
|
+
alaska: "ak",
|
|
80
|
+
arizona: "az",
|
|
81
|
+
arkansas: "ar",
|
|
82
|
+
california: "ca",
|
|
83
|
+
colorado: "co",
|
|
84
|
+
connecticut: "ct",
|
|
85
|
+
delaware: "de",
|
|
86
|
+
districtofcolumbia: "dc",
|
|
87
|
+
washingtondc: "dc",
|
|
88
|
+
florida: "fl",
|
|
89
|
+
georgia: "ga",
|
|
90
|
+
hawaii: "hi",
|
|
91
|
+
idaho: "id",
|
|
92
|
+
illinois: "il",
|
|
93
|
+
indiana: "in",
|
|
94
|
+
iowa: "ia",
|
|
95
|
+
kansas: "ks",
|
|
96
|
+
kentucky: "ky",
|
|
97
|
+
louisiana: "la",
|
|
98
|
+
maine: "me",
|
|
99
|
+
maryland: "md",
|
|
100
|
+
massachusetts: "ma",
|
|
101
|
+
michigan: "mi",
|
|
102
|
+
minnesota: "mn",
|
|
103
|
+
mississippi: "ms",
|
|
104
|
+
missouri: "mo",
|
|
105
|
+
montana: "mt",
|
|
106
|
+
nebraska: "ne",
|
|
107
|
+
nevada: "nv",
|
|
108
|
+
newhampshire: "nh",
|
|
109
|
+
newjersey: "nj",
|
|
110
|
+
newmexico: "nm",
|
|
111
|
+
newyork: "ny",
|
|
112
|
+
northcarolina: "nc",
|
|
113
|
+
northdakota: "nd",
|
|
114
|
+
ohio: "oh",
|
|
115
|
+
oklahoma: "ok",
|
|
116
|
+
oregon: "or",
|
|
117
|
+
pennsylvania: "pa",
|
|
118
|
+
rhodeisland: "ri",
|
|
119
|
+
southcarolina: "sc",
|
|
120
|
+
southdakota: "sd",
|
|
121
|
+
tennessee: "tn",
|
|
122
|
+
texas: "tx",
|
|
123
|
+
utah: "ut",
|
|
124
|
+
vermont: "vt",
|
|
125
|
+
virginia: "va",
|
|
126
|
+
washington: "wa",
|
|
127
|
+
westvirginia: "wv",
|
|
128
|
+
wisconsin: "wi",
|
|
129
|
+
wyoming: "wy",
|
|
130
|
+
puertorico: "pr",
|
|
131
|
+
guam: "gu",
|
|
132
|
+
americansamoa: "as",
|
|
133
|
+
virginislands: "vi",
|
|
134
|
+
usvirginislands: "vi",
|
|
135
|
+
northernmarianaislands: "mp"
|
|
136
|
+
};
|
|
137
|
+
var US_STATE_ABBREVIATIONS = new Set(Object.values(US_STATE_CODES));
|
|
138
|
+
function state(value, rowCountry) {
|
|
139
|
+
const letters = lettersOnly(value);
|
|
140
|
+
if (letters === "") return void 0;
|
|
141
|
+
if (rowCountry === "US") {
|
|
142
|
+
return US_STATE_CODES[letters] ?? (US_STATE_ABBREVIATIONS.has(letters) ? letters : void 0);
|
|
143
|
+
}
|
|
144
|
+
return (rowCountry === void 0 ? US_STATE_CODES[letters] : void 0) ?? letters;
|
|
145
|
+
}
|
|
146
|
+
function datePart(value, length, max) {
|
|
147
|
+
const digits = value.trim();
|
|
148
|
+
if (!/^\d{1,4}$/.test(digits)) return void 0;
|
|
149
|
+
const n = Number(digits);
|
|
150
|
+
if (length === 4) return digits.length === 4 && n >= 1900 && n <= max ? digits : void 0;
|
|
151
|
+
return n >= 1 && n <= max ? String(n).padStart(2, "0") : void 0;
|
|
152
|
+
}
|
|
153
|
+
var SLASHED_DATE = /^(\d{1,2})[/.-](\d{1,2})[/.-](\d{4})$/;
|
|
154
|
+
function dateOrderOf(values, explicit) {
|
|
155
|
+
if (explicit) return explicit;
|
|
156
|
+
let dayFirst = false;
|
|
157
|
+
let monthFirst = false;
|
|
158
|
+
let ambiguous = false;
|
|
159
|
+
for (const value of values) {
|
|
160
|
+
const match = SLASHED_DATE.exec(value.trim());
|
|
161
|
+
if (!match) continue;
|
|
162
|
+
const [first, second] = [Number(match[1]), Number(match[2])];
|
|
163
|
+
dayFirst ||= first > 12;
|
|
164
|
+
monthFirst ||= second > 12;
|
|
165
|
+
ambiguous ||= first <= 12 && second <= 12 && first !== second;
|
|
166
|
+
}
|
|
167
|
+
if (dayFirst && monthFirst) {
|
|
168
|
+
throw new Error(
|
|
169
|
+
"this file writes birthdays both day-first and month-first \u2014 make them one order, or pass --date-format DMY|MDY for the order most use"
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
if (dayFirst) return "DMY";
|
|
173
|
+
if (monthFirst) return "MDY";
|
|
174
|
+
if (ambiguous) {
|
|
175
|
+
throw new Error(
|
|
176
|
+
"this file's birthdays (like 03/07/1990) can be read day-first or month-first \u2014 pass --date-format DMY (day/month/year) or MDY (month/day/year)"
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
return void 0;
|
|
180
|
+
}
|
|
181
|
+
function dateOfBirth(value, order) {
|
|
182
|
+
const text = value.trim();
|
|
183
|
+
const iso = /^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(text);
|
|
184
|
+
const slashed = SLASHED_DATE.exec(text);
|
|
185
|
+
const parts = iso ? [iso[1], iso[2], iso[3]] : slashed ? order === "MDY" ? [slashed[3], slashed[1], slashed[2]] : [slashed[3], slashed[2], slashed[1]] : void 0;
|
|
186
|
+
if (!parts) return void 0;
|
|
187
|
+
const year = datePart(parts[0] ?? "", 4, (/* @__PURE__ */ new Date()).getUTCFullYear());
|
|
188
|
+
const month = datePart(parts[1] ?? "", 2, 12);
|
|
189
|
+
const day = datePart(parts[2] ?? "", 2, 31);
|
|
190
|
+
return year && month && day ? [year, month, day] : void 0;
|
|
191
|
+
}
|
|
192
|
+
function decimalMarkShown(value) {
|
|
193
|
+
const cleaned = value.replace(/[^\d.,]/g, "");
|
|
194
|
+
const lastDot = cleaned.lastIndexOf(".");
|
|
195
|
+
const lastComma = cleaned.lastIndexOf(",");
|
|
196
|
+
if (lastDot >= 0 && lastComma >= 0) return lastDot > lastComma ? "." : ",";
|
|
197
|
+
const mark = lastDot >= 0 ? "." : lastComma >= 0 ? "," : void 0;
|
|
198
|
+
if (mark === void 0) return void 0;
|
|
199
|
+
if (cleaned.split(mark).length > 2) return mark === "." ? "," : ".";
|
|
200
|
+
return /^\d{3}$/.test(cleaned.slice(cleaned.indexOf(mark) + 1)) ? void 0 : mark;
|
|
201
|
+
}
|
|
202
|
+
function decimalMarkOf(values) {
|
|
203
|
+
for (const value of values) {
|
|
204
|
+
const mark = decimalMarkShown(value);
|
|
205
|
+
if (mark) return mark;
|
|
206
|
+
}
|
|
207
|
+
return void 0;
|
|
208
|
+
}
|
|
209
|
+
function numericValue(value, fileMark) {
|
|
210
|
+
const cleaned = value.replace(/[^\d.,-]/g, "");
|
|
211
|
+
const mark = decimalMarkShown(cleaned) ?? fileMark;
|
|
212
|
+
if (mark === void 0 && /[.,]/.test(cleaned)) return void 0;
|
|
213
|
+
const thousands = mark === "," ? "." : ",";
|
|
214
|
+
const plain = cleaned.split(thousands).join("").replace(",", ".");
|
|
215
|
+
const n = Number(plain);
|
|
216
|
+
return plain !== "" && Number.isFinite(n) && n >= 0 ? String(n) : void 0;
|
|
217
|
+
}
|
|
218
|
+
function normalizedCell(key, value, rowCountry, conventions) {
|
|
219
|
+
switch (key) {
|
|
220
|
+
case "EMAIL":
|
|
221
|
+
return email(value);
|
|
222
|
+
case "PHONE":
|
|
223
|
+
return phone(value, rowCountry);
|
|
224
|
+
case "FN":
|
|
225
|
+
case "LN":
|
|
226
|
+
case "CT":
|
|
227
|
+
return lettersOnly(value) || void 0;
|
|
228
|
+
case "FI":
|
|
229
|
+
return lettersOnly(value).slice(0, 1) || void 0;
|
|
230
|
+
case "ST":
|
|
231
|
+
return state(value, rowCountry);
|
|
232
|
+
case "ZIP":
|
|
233
|
+
return zip(value, rowCountry);
|
|
234
|
+
case "COUNTRY":
|
|
235
|
+
return country(value)?.toLowerCase();
|
|
236
|
+
case "DOBY":
|
|
237
|
+
return datePart(value, 4, (/* @__PURE__ */ new Date()).getUTCFullYear());
|
|
238
|
+
case "DOBM":
|
|
239
|
+
return datePart(value, 2, 12);
|
|
240
|
+
case "DOBD":
|
|
241
|
+
return datePart(value, 2, 31);
|
|
242
|
+
case "GEN":
|
|
243
|
+
return gender(value);
|
|
244
|
+
case "MADID":
|
|
245
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value.trim().toLowerCase()) ? value.trim().toLowerCase() : void 0;
|
|
246
|
+
case "EXTERN_ID":
|
|
247
|
+
return value.trim() || void 0;
|
|
248
|
+
case "LOOKALIKE_VALUE":
|
|
249
|
+
return numericValue(value, conventions.decimalMark);
|
|
250
|
+
default:
|
|
251
|
+
return void 0;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
function planColumns(firstRow, options) {
|
|
255
|
+
if (options.columns) {
|
|
256
|
+
const plan2 = options.columns.map((name, source) => {
|
|
257
|
+
const key = headerKey(name);
|
|
258
|
+
if (!key)
|
|
259
|
+
throw new Error(`--columns: "${name}" is not a column Meta matches on (${CUSTOMER_LIST_KEYS.join(", ")})`);
|
|
260
|
+
return { source, key };
|
|
261
|
+
});
|
|
262
|
+
return { plan: plan2, ignored: [], hasHeader: false };
|
|
263
|
+
}
|
|
264
|
+
const valueHeader = options.valueColumn ? headerWords(options.valueColumn) : void 0;
|
|
265
|
+
const plan = [];
|
|
266
|
+
const ignored = [];
|
|
267
|
+
firstRow.forEach((cell, source) => {
|
|
268
|
+
const named = valueHeader !== void 0 && headerWords(cell) === valueHeader;
|
|
269
|
+
const key = named ? "LOOKALIKE_VALUE" : headerKey(cell);
|
|
270
|
+
if (key && (key !== "LOOKALIKE_VALUE" || named) && !plan.some((entry) => entry.key === key)) {
|
|
271
|
+
plan.push({ source, key });
|
|
272
|
+
} else if (cell.trim() !== "") {
|
|
273
|
+
ignored.push(cell.trim());
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
if (valueHeader && !plan.some((entry) => entry.key === "LOOKALIKE_VALUE")) {
|
|
277
|
+
throw new Error(`--value-column "${options.valueColumn}" is not a column of this file`);
|
|
278
|
+
}
|
|
279
|
+
return { plan, ignored, hasHeader: true };
|
|
280
|
+
}
|
|
281
|
+
function schemaOf(plan) {
|
|
282
|
+
return plan.flatMap((entry) => entry.key === "DOB" ? ["DOBY", "DOBM", "DOBD"] : [entry.key]);
|
|
283
|
+
}
|
|
284
|
+
function hashed(key, normalized) {
|
|
285
|
+
return UNHASHED_CUSTOMER_LIST_KEYS.has(key) ? normalized : sha256(normalized);
|
|
286
|
+
}
|
|
287
|
+
function rowCountryOf(row, plan, defaultCountry) {
|
|
288
|
+
const column = plan.find((entry) => entry.key === "COUNTRY");
|
|
289
|
+
return (column ? country(row[column.source] ?? "") : void 0) ?? defaultCountry;
|
|
290
|
+
}
|
|
291
|
+
function countUnreadable(unreadable, key) {
|
|
292
|
+
unreadable[key] = (unreadable[key] ?? 0) + 1;
|
|
293
|
+
}
|
|
294
|
+
function columnCells(entry, raw, rowCountry, unreadable, conventions) {
|
|
295
|
+
const blank = raw.trim() === "";
|
|
296
|
+
if (entry.key === "DOB") {
|
|
297
|
+
const parts = blank ? void 0 : dateOfBirth(raw, conventions.dateOrder);
|
|
298
|
+
if (!blank && !parts) countUnreadable(unreadable, "DOBY");
|
|
299
|
+
return [
|
|
300
|
+
["DOBY", parts?.[0] ?? ""],
|
|
301
|
+
["DOBM", parts?.[1] ?? ""],
|
|
302
|
+
["DOBD", parts?.[2] ?? ""]
|
|
303
|
+
];
|
|
304
|
+
}
|
|
305
|
+
if (blank) return [[entry.key, ""]];
|
|
306
|
+
const normalized = normalizedCell(entry.key, raw, rowCountry, conventions);
|
|
307
|
+
if (normalized === void 0) countUnreadable(unreadable, entry.key);
|
|
308
|
+
return [[entry.key, normalized ?? ""]];
|
|
309
|
+
}
|
|
310
|
+
function delimiterOf(content) {
|
|
311
|
+
const firstLine = content.replace(/^\uFEFF/, "").split(/\r?\n/).find((line) => line.trim() !== "") ?? "";
|
|
312
|
+
const unquoted = firstLine.replace(/"[^"]*"/g, "");
|
|
313
|
+
const count = (mark) => unquoted.split(mark).length - 1;
|
|
314
|
+
const most = Math.max(count(" "), count(";"), count(","));
|
|
315
|
+
return most === 0 ? "," : [" ", ";", ","].find((mark) => count(mark) === most) ?? ",";
|
|
316
|
+
}
|
|
317
|
+
function customerListFromFile(content, options) {
|
|
318
|
+
const delimiter = delimiterOf(content);
|
|
319
|
+
const table = parse(content, {
|
|
320
|
+
bom: true,
|
|
321
|
+
skip_empty_lines: true,
|
|
322
|
+
relax_column_count: true,
|
|
323
|
+
trim: true,
|
|
324
|
+
delimiter
|
|
325
|
+
});
|
|
326
|
+
const { plan, ignored, hasHeader } = planColumns(table[0] ?? [], options);
|
|
327
|
+
const schema = schemaOf(plan);
|
|
328
|
+
if (!schema.some((key) => IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key))) {
|
|
329
|
+
throw new Error(
|
|
330
|
+
"this file has no column Meta can match people on \u2014 it needs one of email, phone, mobile advertiser id or your own customer id (name the columns with --columns for a file without a header)"
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
const defaultCountry = options.defaultCountry ? country(options.defaultCountry) : void 0;
|
|
334
|
+
const body = table.slice(hasHeader ? 1 : 0);
|
|
335
|
+
const columnValues = (key) => {
|
|
336
|
+
const column = plan.find((entry) => entry.key === key);
|
|
337
|
+
return column ? body.map((row) => row[column.source] ?? "") : [];
|
|
338
|
+
};
|
|
339
|
+
const conventions = {
|
|
340
|
+
dateOrder: dateOrderOf(columnValues("DOB"), options.dateFormat),
|
|
341
|
+
decimalMark: decimalMarkOf(columnValues("LOOKALIKE_VALUE"))
|
|
342
|
+
};
|
|
343
|
+
const valueBased = schema.includes("LOOKALIKE_VALUE");
|
|
344
|
+
const unreadable = {};
|
|
345
|
+
const rows = [];
|
|
346
|
+
const previews = [];
|
|
347
|
+
let skippedRows = 0;
|
|
348
|
+
for (const row of body) {
|
|
349
|
+
const rowCountry = rowCountryOf(row, plan, defaultCountry);
|
|
350
|
+
const cells = plan.flatMap(
|
|
351
|
+
(entry) => columnCells(entry, row[entry.source] ?? "", rowCountry, unreadable, conventions)
|
|
352
|
+
);
|
|
353
|
+
const identified = cells.some(([key, value]) => value !== "" && IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key));
|
|
354
|
+
const valued = !valueBased || cells.some(([key, value]) => key === "LOOKALIKE_VALUE" && value !== "");
|
|
355
|
+
if (!identified || !valued) {
|
|
356
|
+
skippedRows++;
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
rows.push(cells.map(([key, value]) => value === "" ? "" : hashed(key, value)));
|
|
360
|
+
previews.push(cells.map(([key, value]) => customerListPreviewCell(key, value)));
|
|
361
|
+
}
|
|
362
|
+
return { schema, rows, previews, skippedRows, unreadable, ignoredColumns: ignored };
|
|
363
|
+
}
|
|
364
|
+
function customerListBatches(list) {
|
|
365
|
+
const out = [];
|
|
366
|
+
for (let at = 0; at < list.rows.length; at += CUSTOMER_LIST_BATCH_ROWS) {
|
|
367
|
+
const end = at + CUSTOMER_LIST_BATCH_ROWS;
|
|
368
|
+
out.push({ schema: list.schema, rows: list.rows.slice(at, end), previews: list.previews.slice(at, end) });
|
|
369
|
+
}
|
|
370
|
+
return out;
|
|
371
|
+
}
|
|
372
|
+
function customerListUploadRefusal(audienceId, action, list) {
|
|
373
|
+
const batches = customerListBatches(list);
|
|
374
|
+
for (const body of batches) {
|
|
375
|
+
const batch = customerListBatchSchema.safeParse(body);
|
|
376
|
+
if (!batch.success) return batch.error.issues[0]?.message;
|
|
377
|
+
}
|
|
378
|
+
const change = customAudienceMembersSchema.safeParse({
|
|
379
|
+
audience_id: audienceId,
|
|
380
|
+
action,
|
|
381
|
+
schema: list.schema,
|
|
382
|
+
batches: batches.map((batch, index) => ({ fileId: `local-${index}`, rows: batch.rows.length }))
|
|
383
|
+
});
|
|
384
|
+
if (change.success) return void 0;
|
|
385
|
+
const issue = change.error.issues[0];
|
|
386
|
+
return issue?.path[0] === "audience_id" ? `${audienceId} is not a custom audience id or a meta_temp_* ref from this chat` : issue?.message;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export {
|
|
390
|
+
DATE_ORDERS,
|
|
391
|
+
decimalMarkShown,
|
|
392
|
+
customerListFromFile,
|
|
393
|
+
customerListBatches,
|
|
394
|
+
customerListUploadRefusal
|
|
395
|
+
};
|
|
396
|
+
//# sourceMappingURL=chunk-XOQNM7I4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/customer-list.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport {\n CUSTOMER_LIST_BATCH_ROWS,\n CUSTOMER_LIST_KEYS,\n type CustomerListAction,\n type CustomerListBatch,\n type CustomerListKey,\n customAudienceMembersSchema,\n customerListBatchSchema,\n customerListPreviewCell,\n IDENTIFYING_CUSTOMER_LIST_KEYS,\n UNHASHED_CUSTOMER_LIST_KEYS,\n} from \"@baker/api/ads-meta/customerList\";\nimport { parse } from \"csv-parse/sync\";\nimport { type CountryCode, isSupportedCountry, parsePhoneNumberFromString } from \"libphonenumber-js\";\n\n/**\n * A customer list read from a marketer's file and hashed here — on the agent's\n * machine — so no raw email, phone or name ever reaches Baker or Meta.\n *\n * The normalization is Meta's own (Custom Audiences guide, \"Hashing and\n * normalization\"): an email trimmed and lowercased; a phone as digits with its\n * country code and no leading zero; names, city and state lowercase with no\n * punctuation or spaces (accented letters kept, in UTF-8); a US zip cut to its\n * first five digits; a country as its two-letter code; a birth date as year,\n * month and day; gender as m or f. Each is then SHA-256 hex. A mobile\n * advertiser id and your own customer id are sent as they are, and a\n * value-based list's value as a plain number.\n */\n\n/** The parts of a person Meta can match on, as `customerListFromFile` returns them: already hashed. */\nexport interface HashedCustomerList {\n schema: CustomerListKey[];\n rows: string[][];\n /** Each row's person masked for the review (`l***@empresa.com`), in the rows' order — never a value. */\n previews: string[][];\n /** Rows with nothing Meta can match on once unreadable values were set aside — not sent. */\n skippedRows: number;\n /** Values that could not be read, by column — counted, never shown. */\n unreadable: Partial<Record<CustomerListKey, number>>;\n /** Columns that are not something Meta matches on — not sent. */\n ignoredColumns: string[];\n}\n\nexport interface CustomerListOptions {\n /** Two-letter country for phones written without their country code, when a row names no country. */\n defaultCountry?: string;\n /** The column holding each person's value, for a value-based list. */\n valueColumn?: string;\n /** Meta keys for a file with no header row, in column order. */\n columns?: string[];\n /** How slashed birthdays are written (07/03/1990): day first or month first. Read from the file when it shows. */\n dateFormat?: DateOrder;\n}\n\nexport const DATE_ORDERS = [\"DMY\", \"MDY\"] as const;\nexport type DateOrder = (typeof DATE_ORDERS)[number];\n\n/** How the whole file writes what one cell cannot say alone: the order of a slashed date, the decimal mark of a value. */\ninterface FileConventions {\n dateOrder: DateOrder | undefined;\n decimalMark: \".\" | \",\" | undefined;\n}\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\n/** A header as its words: lowercased, accents and separators gone — \"Teléfono móvil\" is \"telefono movil\". */\nfunction headerWords(cell: string): string {\n return cell\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim();\n}\n\n/** \"dob\" is not a Meta key: a whole date of birth is split into DOBY, DOBM and DOBD. */\ntype HeaderKey = CustomerListKey | \"DOB\";\n\nconst HEADER_PATTERNS: ReadonlyArray<[RegExp, HeaderKey]> = [\n [/^(e ?mail|email address|correo|correo electronico|mail)$/, \"EMAIL\"],\n [/^(phone|phone number|mobile|mobile phone|telefono|movil|tel|celular|cell)$/, \"PHONE\"],\n [/^(first name|firstname|fname|fn|given name|nombre)$/, \"FN\"],\n [/^(last name|lastname|lname|ln|surname|family name|apellido|apellidos)$/, \"LN\"],\n [/^(first initial|fi)$/, \"FI\"],\n [/^(city|town|ct|ciudad|localidad)$/, \"CT\"],\n [/^(state|province|region|st|provincia|estado)$/, \"ST\"],\n [/^(zip|zip code|zipcode|postcode|post code|postal code|cp|codigo postal)$/, \"ZIP\"],\n [/^(country|country code|pais)$/, \"COUNTRY\"],\n [/^(dob|birthday|birth date|birthdate|date of birth|fecha de nacimiento|fecha nacimiento)$/, \"DOB\"],\n [/^(doby|birth year|year of birth)$/, \"DOBY\"],\n [/^(dobm|birth month)$/, \"DOBM\"],\n [/^(dobd|birth day)$/, \"DOBD\"],\n [/^(gen|gender|sex|genero|sexo)$/, \"GEN\"],\n [/^(madid|idfa|aaid|gaid|advertising id|mobile advertiser id)$/, \"MADID\"],\n [/^(extern id|external id|customer id|client id|crm id)$/, \"EXTERN_ID\"],\n [/^(lookalike value|value)$/, \"LOOKALIKE_VALUE\"],\n];\n\nfunction headerKey(cell: string): HeaderKey | undefined {\n const words = headerWords(cell);\n const upper = cell.trim().toUpperCase();\n if ((CUSTOMER_LIST_KEYS as readonly string[]).includes(upper)) {\n return upper as CustomerListKey;\n }\n return HEADER_PATTERNS.find(([pattern]) => pattern.test(words))?.[1];\n}\n\n/** Letters only, lowercase — punctuation, spaces and digits gone, accented letters kept. */\nfunction lettersOnly(value: string): string {\n return value\n .normalize(\"NFC\")\n .toLowerCase()\n .replace(/[^\\p{L}]/gu, \"\");\n}\n\nfunction email(value: string): string | undefined {\n const normalized = value.trim().toLowerCase();\n return /^[^@\\s;,|]+@[^@\\s;,|]+\\.[^@\\s;,|]+$/.test(normalized) ? normalized : undefined;\n}\n\nfunction country(value: string): string | undefined {\n const code = value.trim().toUpperCase();\n return /^[A-Z]{2}$/.test(code) && isSupportedCountry(code) ? code : undefined;\n}\n\nfunction phone(value: string, rowCountry: string | undefined): string | undefined {\n const region = rowCountry ? (rowCountry as CountryCode) : undefined;\n const parsed = parsePhoneNumberFromString(value.trim(), region);\n return parsed?.isValid() ? parsed.number.replace(/^\\+/, \"\") : undefined;\n}\n\nfunction zip(value: string, rowCountry: string | undefined): string | undefined {\n const compact = value.toLowerCase().replace(/\\s+/g, \"\");\n if (compact === \"\") return undefined;\n const us = rowCountry === \"US\" || /^\\d{5}-\\d{4}$/.test(compact);\n return us ? (/^\\d{5}/.exec(compact)?.[0] ?? undefined) : compact;\n}\n\nfunction gender(value: string): string | undefined {\n const first = value.trim().toLowerCase();\n if (/^(m|male|man|hombre|masculino|h)$/.test(first)) return \"m\";\n if (/^(f|female|woman|mujer|femenino)$/.test(first)) return \"f\";\n return undefined;\n}\n\n/** The 50 states, DC and the territories, by name — Meta matches a US state on its two-letter code. */\nconst US_STATE_CODES: Record<string, string> = {\n alabama: \"al\",\n alaska: \"ak\",\n arizona: \"az\",\n arkansas: \"ar\",\n california: \"ca\",\n colorado: \"co\",\n connecticut: \"ct\",\n delaware: \"de\",\n districtofcolumbia: \"dc\",\n washingtondc: \"dc\",\n florida: \"fl\",\n georgia: \"ga\",\n hawaii: \"hi\",\n idaho: \"id\",\n illinois: \"il\",\n indiana: \"in\",\n iowa: \"ia\",\n kansas: \"ks\",\n kentucky: \"ky\",\n louisiana: \"la\",\n maine: \"me\",\n maryland: \"md\",\n massachusetts: \"ma\",\n michigan: \"mi\",\n minnesota: \"mn\",\n mississippi: \"ms\",\n missouri: \"mo\",\n montana: \"mt\",\n nebraska: \"ne\",\n nevada: \"nv\",\n newhampshire: \"nh\",\n newjersey: \"nj\",\n newmexico: \"nm\",\n newyork: \"ny\",\n northcarolina: \"nc\",\n northdakota: \"nd\",\n ohio: \"oh\",\n oklahoma: \"ok\",\n oregon: \"or\",\n pennsylvania: \"pa\",\n rhodeisland: \"ri\",\n southcarolina: \"sc\",\n southdakota: \"sd\",\n tennessee: \"tn\",\n texas: \"tx\",\n utah: \"ut\",\n vermont: \"vt\",\n virginia: \"va\",\n washington: \"wa\",\n westvirginia: \"wv\",\n wisconsin: \"wi\",\n wyoming: \"wy\",\n puertorico: \"pr\",\n guam: \"gu\",\n americansamoa: \"as\",\n virginislands: \"vi\",\n usvirginislands: \"vi\",\n northernmarianaislands: \"mp\",\n};\nconst US_STATE_ABBREVIATIONS = new Set(Object.values(US_STATE_CODES));\n\n/**\n * A state as Meta matches it: a US state by its two-letter code (\"California\"\n * is `ca`), anything else as letters only. A row that names no country is read\n * as US when its state is a US state's full name — \"Georgia\" included, which is\n * far likelier the state than the country in a state column.\n */\nfunction state(value: string, rowCountry: string | undefined): string | undefined {\n const letters = lettersOnly(value);\n if (letters === \"\") return undefined;\n if (rowCountry === \"US\") {\n return US_STATE_CODES[letters] ?? (US_STATE_ABBREVIATIONS.has(letters) ? letters : undefined);\n }\n return (rowCountry === undefined ? US_STATE_CODES[letters] : undefined) ?? letters;\n}\n\nfunction datePart(value: string, length: 2 | 4, max: number): string | undefined {\n const digits = value.trim();\n if (!/^\\d{1,4}$/.test(digits)) return undefined;\n const n = Number(digits);\n if (length === 4) return digits.length === 4 && n >= 1900 && n <= max ? digits : undefined;\n return n >= 1 && n <= max ? String(n).padStart(2, \"0\") : undefined;\n}\n\nconst SLASHED_DATE = /^(\\d{1,2})[/.-](\\d{1,2})[/.-](\\d{4})$/;\n\n/**\n * The order a file writes its slashed dates in. \"03/07/1990\" alone is 3 July\n * or March 7, and a wrong guess hashes a different birthday — the row silently\n * stops matching — so the order comes from `--date-format`, else from a date\n * in the file that can only be read one way (25/03 is day-first, 03/25\n * month-first). A file that never shows it is refused.\n */\nfunction dateOrderOf(values: readonly string[], explicit: DateOrder | undefined): DateOrder | undefined {\n if (explicit) return explicit;\n let dayFirst = false;\n let monthFirst = false;\n let ambiguous = false;\n for (const value of values) {\n const match = SLASHED_DATE.exec(value.trim());\n if (!match) continue;\n const [first, second] = [Number(match[1]), Number(match[2])];\n dayFirst ||= first > 12;\n monthFirst ||= second > 12;\n ambiguous ||= first <= 12 && second <= 12 && first !== second;\n }\n if (dayFirst && monthFirst) {\n throw new Error(\n \"this file writes birthdays both day-first and month-first — make them one order, or pass --date-format DMY|MDY for the order most use\",\n );\n }\n if (dayFirst) return \"DMY\";\n if (monthFirst) return \"MDY\";\n if (ambiguous) {\n throw new Error(\n \"this file's birthdays (like 03/07/1990) can be read day-first or month-first — pass --date-format DMY (day/month/year) or MDY (month/day/year)\",\n );\n }\n return undefined;\n}\n\n/** An ISO date of birth (1990-03-07) or a slashed one (07/03/1990, in the file's order) as year, month and day. */\nfunction dateOfBirth(value: string, order: DateOrder | undefined): [string, string, string] | undefined {\n const text = value.trim();\n const iso = /^(\\d{4})-(\\d{1,2})-(\\d{1,2})/.exec(text);\n const slashed = SLASHED_DATE.exec(text);\n const parts = iso\n ? [iso[1], iso[2], iso[3]]\n : slashed\n ? order === \"MDY\"\n ? [slashed[3], slashed[1], slashed[2]]\n : [slashed[3], slashed[2], slashed[1]]\n : undefined;\n if (!parts) return undefined;\n const year = datePart(parts[0] ?? \"\", 4, new Date().getUTCFullYear());\n const month = datePart(parts[1] ?? \"\", 2, 12);\n const day = datePart(parts[2] ?? \"\", 2, 31);\n return year && month && day ? [year, month, day] : undefined;\n}\n\n/**\n * The decimal mark one value shows on its own, or undefined when it cannot say:\n * with both marks the last one is decimal (\"1.250,50\"); a mark used twice\n * groups thousands (\"1.250.000\"); a single mark followed by other than three\n * digits is decimal (\"12,5\"). A single mark before three digits (\"1.250\") is\n * either, and only the file's other values can say which.\n */\nexport function decimalMarkShown(value: string): \".\" | \",\" | undefined {\n const cleaned = value.replace(/[^\\d.,]/g, \"\");\n const lastDot = cleaned.lastIndexOf(\".\");\n const lastComma = cleaned.lastIndexOf(\",\");\n if (lastDot >= 0 && lastComma >= 0) return lastDot > lastComma ? \".\" : \",\";\n const mark = lastDot >= 0 ? \".\" : lastComma >= 0 ? \",\" : undefined;\n if (mark === undefined) return undefined;\n if (cleaned.split(mark).length > 2) return mark === \".\" ? \",\" : \".\";\n return /^\\d{3}$/.test(cleaned.slice(cleaned.indexOf(mark) + 1)) ? undefined : mark;\n}\n\n/** The decimal mark the file's values agree on, or undefined when none shows one. */\nfunction decimalMarkOf(values: readonly string[]): \".\" | \",\" | undefined {\n for (const value of values) {\n const mark = decimalMarkShown(value);\n if (mark) return mark;\n }\n return undefined;\n}\n\n/**\n * A value as a plain number: currency signs and thousands separators dropped\n * (\"€1,250.50\" is 1250.5, \"1.250,50\" is 1250.5). A value whose mark the file\n * never settles (\"1.250\" alone) is unreadable rather than guessed — a\n * thousandfold error in a value-based list skews the lookalike Meta builds.\n */\nfunction numericValue(value: string, fileMark: \".\" | \",\" | undefined): string | undefined {\n const cleaned = value.replace(/[^\\d.,-]/g, \"\");\n const mark = decimalMarkShown(cleaned) ?? fileMark;\n if (mark === undefined && /[.,]/.test(cleaned)) return undefined;\n const thousands = mark === \",\" ? \".\" : \",\";\n const plain = cleaned.split(thousands).join(\"\").replace(\",\", \".\");\n const n = Number(plain);\n return plain !== \"\" && Number.isFinite(n) && n >= 0 ? String(n) : undefined;\n}\n\n/** One cell of a column, normalized as Meta asks — undefined when it cannot be read. */\nfunction normalizedCell(\n key: CustomerListKey,\n value: string,\n rowCountry: string | undefined,\n conventions: FileConventions,\n): string | undefined {\n switch (key) {\n case \"EMAIL\":\n return email(value);\n case \"PHONE\":\n return phone(value, rowCountry);\n case \"FN\":\n case \"LN\":\n case \"CT\":\n return lettersOnly(value) || undefined;\n case \"FI\":\n return lettersOnly(value).slice(0, 1) || undefined;\n case \"ST\":\n return state(value, rowCountry);\n case \"ZIP\":\n return zip(value, rowCountry);\n case \"COUNTRY\":\n return country(value)?.toLowerCase();\n case \"DOBY\":\n return datePart(value, 4, new Date().getUTCFullYear());\n case \"DOBM\":\n return datePart(value, 2, 12);\n case \"DOBD\":\n return datePart(value, 2, 31);\n case \"GEN\":\n return gender(value);\n case \"MADID\":\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value.trim().toLowerCase())\n ? value.trim().toLowerCase()\n : undefined;\n case \"EXTERN_ID\":\n return value.trim() || undefined;\n case \"LOOKALIKE_VALUE\":\n return numericValue(value, conventions.decimalMark);\n default:\n return undefined;\n }\n}\n\n/** How each source column becomes Meta keys, in order. */\ninterface ColumnPlan {\n source: number;\n key: HeaderKey;\n}\n\nfunction planColumns(\n firstRow: string[],\n options: CustomerListOptions,\n): { plan: ColumnPlan[]; ignored: string[]; hasHeader: boolean } {\n if (options.columns) {\n const plan = options.columns.map((name, source) => {\n const key = headerKey(name);\n if (!key)\n throw new Error(`--columns: \"${name}\" is not a column Meta matches on (${CUSTOMER_LIST_KEYS.join(\", \")})`);\n return { source, key };\n });\n return { plan, ignored: [], hasHeader: false };\n }\n const valueHeader = options.valueColumn ? headerWords(options.valueColumn) : undefined;\n const plan: ColumnPlan[] = [];\n const ignored: string[] = [];\n firstRow.forEach((cell, source) => {\n const named = valueHeader !== undefined && headerWords(cell) === valueHeader;\n const key = named ? \"LOOKALIKE_VALUE\" : headerKey(cell);\n // A person's value is the column the list named, never a column that merely reads \"value\".\n if (key && (key !== \"LOOKALIKE_VALUE\" || named) && !plan.some((entry) => entry.key === key)) {\n plan.push({ source, key });\n } else if (cell.trim() !== \"\") {\n ignored.push(cell.trim());\n }\n });\n if (valueHeader && !plan.some((entry) => entry.key === \"LOOKALIKE_VALUE\")) {\n throw new Error(`--value-column \"${options.valueColumn}\" is not a column of this file`);\n }\n return { plan, ignored, hasHeader: true };\n}\n\nfunction schemaOf(plan: readonly ColumnPlan[]): CustomerListKey[] {\n return plan.flatMap((entry) => (entry.key === \"DOB\" ? ([\"DOBY\", \"DOBM\", \"DOBD\"] as const) : [entry.key]));\n}\n\nfunction hashed(key: CustomerListKey, normalized: string): string {\n return UNHASHED_CUSTOMER_LIST_KEYS.has(key) ? normalized : sha256(normalized);\n}\n\n/** The row's country, which a phone without its code and a US zip are read against. */\nfunction rowCountryOf(row: readonly string[], plan: readonly ColumnPlan[], defaultCountry: string | undefined) {\n const column = plan.find((entry) => entry.key === \"COUNTRY\");\n return (column ? country(row[column.source] ?? \"\") : undefined) ?? defaultCountry;\n}\n\ntype Cell = [CustomerListKey, string];\n\nfunction countUnreadable(unreadable: Partial<Record<CustomerListKey, number>>, key: CustomerListKey): void {\n unreadable[key] = (unreadable[key] ?? 0) + 1;\n}\n\n/** One source column's cells in a row, normalized — a date of birth becomes three. Empty when unreadable. */\nfunction columnCells(\n entry: ColumnPlan,\n raw: string,\n rowCountry: string | undefined,\n unreadable: Partial<Record<CustomerListKey, number>>,\n conventions: FileConventions,\n): Cell[] {\n const blank = raw.trim() === \"\";\n if (entry.key === \"DOB\") {\n const parts = blank ? undefined : dateOfBirth(raw, conventions.dateOrder);\n if (!blank && !parts) countUnreadable(unreadable, \"DOBY\");\n return [\n [\"DOBY\", parts?.[0] ?? \"\"],\n [\"DOBM\", parts?.[1] ?? \"\"],\n [\"DOBD\", parts?.[2] ?? \"\"],\n ];\n }\n if (blank) return [[entry.key, \"\"]];\n const normalized = normalizedCell(entry.key, raw, rowCountry, conventions);\n if (normalized === undefined) countUnreadable(unreadable, entry.key);\n return [[entry.key, normalized ?? \"\"]];\n}\n\n/**\n * The one character a file's columns are split on, read off its first line.\n * Excel writes `;` where the decimal comma is taken, tabs come from a copied\n * sheet. Only one is used: split on all three, a semicolon file's \"1250,50\"\n * becomes two cells and every column after it shifts.\n */\nfunction delimiterOf(content: string): string {\n const firstLine =\n content\n .replace(/^\\uFEFF/, \"\")\n .split(/\\r?\\n/)\n .find((line) => line.trim() !== \"\") ?? \"\";\n const unquoted = firstLine.replace(/\"[^\"]*\"/g, \"\");\n const count = (mark: string) => unquoted.split(mark).length - 1;\n const most = Math.max(count(\"\\t\"), count(\";\"), count(\",\"));\n // A tie goes to the rarer mark: a comma file seldom holds a semicolon, a semicolon file often a decimal comma.\n return most === 0 ? \",\" : ([\"\\t\", \";\", \",\"].find((mark) => count(mark) === most) ?? \",\");\n}\n\nexport function customerListFromFile(content: string, options: CustomerListOptions): HashedCustomerList {\n const delimiter = delimiterOf(content);\n const table: string[][] = parse(content, {\n bom: true,\n skip_empty_lines: true,\n relax_column_count: true,\n trim: true,\n delimiter,\n });\n const { plan, ignored, hasHeader } = planColumns(table[0] ?? [], options);\n const schema = schemaOf(plan);\n if (!schema.some((key) => IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key))) {\n throw new Error(\n \"this file has no column Meta can match people on — it needs one of email, phone, mobile advertiser id or your own customer id (name the columns with --columns for a file without a header)\",\n );\n }\n const defaultCountry = options.defaultCountry ? country(options.defaultCountry) : undefined;\n const body = table.slice(hasHeader ? 1 : 0);\n const columnValues = (key: HeaderKey) => {\n const column = plan.find((entry) => entry.key === key);\n return column ? body.map((row) => row[column.source] ?? \"\") : [];\n };\n const conventions: FileConventions = {\n dateOrder: dateOrderOf(columnValues(\"DOB\"), options.dateFormat),\n decimalMark: decimalMarkOf(columnValues(\"LOOKALIKE_VALUE\")),\n };\n const valueBased = schema.includes(\"LOOKALIKE_VALUE\");\n const unreadable: Partial<Record<CustomerListKey, number>> = {};\n const rows: string[][] = [];\n const previews: string[][] = [];\n let skippedRows = 0;\n for (const row of body) {\n const rowCountry = rowCountryOf(row, plan, defaultCountry);\n const cells = plan.flatMap((entry) =>\n columnCells(entry, row[entry.source] ?? \"\", rowCountry, unreadable, conventions),\n );\n const identified = cells.some(([key, value]) => value !== \"\" && IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key));\n // A value-based list weighs every person by their value; one without a value is left out, not sent as nothing.\n const valued = !valueBased || cells.some(([key, value]) => key === \"LOOKALIKE_VALUE\" && value !== \"\");\n if (!identified || !valued) {\n skippedRows++;\n continue;\n }\n rows.push(cells.map(([key, value]) => (value === \"\" ? \"\" : hashed(key, value))));\n previews.push(cells.map(([key, value]) => customerListPreviewCell(key, value)));\n }\n return { schema, rows, previews, skippedRows, unreadable, ignoredColumns: ignored };\n}\n\n/** The list in the batches it is uploaded in — Meta's per-request ceiling each, every row with its masked copy. */\nexport function customerListBatches(\n list: Pick<HashedCustomerList, \"schema\" | \"rows\" | \"previews\">,\n): CustomerListBatch[] {\n const out: CustomerListBatch[] = [];\n for (let at = 0; at < list.rows.length; at += CUSTOMER_LIST_BATCH_ROWS) {\n const end = at + CUSTOMER_LIST_BATCH_ROWS;\n out.push({ schema: list.schema, rows: list.rows.slice(at, end), previews: list.previews.slice(at, end) });\n }\n return out;\n}\n\n/**\n * Why this change could not be staged, checked before a single batch is\n * uploaded: an upload the stage then refuses leaves stored people that no\n * change names. Everything the contract says is checked here, with\n * placeholder file ids standing in for the batches not yet stored.\n */\nexport function customerListUploadRefusal(\n audienceId: string,\n action: CustomerListAction,\n list: Pick<HashedCustomerList, \"schema\" | \"rows\" | \"previews\">,\n): string | undefined {\n const batches = customerListBatches(list);\n for (const body of batches) {\n const batch = customerListBatchSchema.safeParse(body);\n if (!batch.success) return batch.error.issues[0]?.message;\n }\n const change = customAudienceMembersSchema.safeParse({\n audience_id: audienceId,\n action,\n schema: list.schema,\n batches: batches.map((batch, index) => ({ fileId: `local-${index}`, rows: batch.rows.length })),\n });\n if (change.success) return undefined;\n const issue = change.error.issues[0];\n return issue?.path[0] === \"audience_id\"\n ? `${audienceId} is not a custom audience id or a meta_temp_* ref from this chat`\n : issue?.message;\n}\n"],"mappings":"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","names":["plan"]}
|