@koda-sl/baker-cli 0.489.0 → 0.491.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.
Files changed (859) hide show
  1. package/README.md +169 -7
  2. package/dist/account-3H6BZO5H.js +80 -0
  3. package/dist/account-IKFDY52P.js +138 -0
  4. package/dist/account-IKFDY52P.js.map +1 -0
  5. package/dist/account-VGSYM7LY.js +79 -0
  6. package/dist/account-assets-LKZVWZAR.js +289 -0
  7. package/dist/account-assets-LKZVWZAR.js.map +1 -0
  8. package/dist/account-level-UJOZDVXY.js +608 -0
  9. package/dist/account-level-UJOZDVXY.js.map +1 -0
  10. package/dist/account-writes-AE5IJGGW.js +66 -0
  11. package/dist/accounts-2ARS6XP2.js +77 -0
  12. package/dist/accounts-AQFW4ZUM.js +611 -0
  13. package/dist/accounts-K4INATCW.js +75 -0
  14. package/dist/actions-QMUHOAXG.js +55 -0
  15. package/dist/activecampaign-J3QN5FMG.js +935 -0
  16. package/dist/activities-T253KK4Q.js +74 -0
  17. package/dist/ad-group-writes-VRSBI2Z2.js +170 -0
  18. package/dist/ad-groups-IEBVEAMS.js +68 -0
  19. package/dist/ad-writes-ALV4KFPZ.js +174 -0
  20. package/dist/add-VDUA6OWM.js +104 -0
  21. package/dist/add-XHOKCSW5.js +302 -0
  22. package/dist/ads-CQZHD7FC.js +77 -0
  23. package/dist/ads-HGDPNIT6.js +40 -0
  24. package/dist/ads-ZEY72UBN.js +114 -0
  25. package/dist/ads-ZEY72UBN.js.map +1 -0
  26. package/dist/adsets-5H3MOT3D.js +177 -0
  27. package/dist/adsets-5H3MOT3D.js.map +1 -0
  28. package/dist/advertisers-UDSEFMP7.js +120 -0
  29. package/dist/analytics-TBETZOPJ.js +433 -0
  30. package/dist/analytics-VH74LMMC.js +1976 -0
  31. package/dist/asset-writes-L5TMKIZC.js +47 -0
  32. package/dist/assign-6IE2ASFC.js +77 -0
  33. package/dist/audience-size-CSBWDFEP.js +73 -0
  34. package/dist/audience-writes-X52VG35Y.js +324 -0
  35. package/dist/audience-writes-X52VG35Y.js.map +1 -0
  36. package/dist/audiences-AAZH56WD.js +268 -0
  37. package/dist/audiences-X3RLGOVM.js +84 -0
  38. package/dist/audiences-X3RLGOVM.js.map +1 -0
  39. package/dist/audit-AEENRVGD.js +151 -0
  40. package/dist/autocomplete-AAGTJHVL.js +111 -0
  41. package/dist/avatars-VEATUUKU.js +38 -0
  42. package/dist/bid-pricing-SZTGCZTV.js +100 -0
  43. package/dist/brand-MXGETE4R.js +22 -0
  44. package/dist/brief-3GHSHOGM.js +538 -0
  45. package/dist/businesses-H3HIDQX6.js +53 -0
  46. package/dist/campaign-groups-WRI56M5X.js +95 -0
  47. package/dist/campaign-writes-PYGKSCPS.js +165 -0
  48. package/dist/campaign-writes-PYGKSCPS.js.map +1 -0
  49. package/dist/campaign-writes-U5PUVSMT.js +170 -0
  50. package/dist/campaigns-4QWC2JE7.js +109 -0
  51. package/dist/campaigns-AV6G3AUU.js +127 -0
  52. package/dist/campaigns-AV6G3AUU.js.map +1 -0
  53. package/dist/campaigns-JEIKY2M4.js +76 -0
  54. package/dist/campaigns-Q4HN7HBY.js +107 -0
  55. package/dist/canvas-VJ3XKCAC.js +46 -0
  56. package/dist/capabilities-SNGGAOV3.js +144 -0
  57. package/dist/catalog-S32MX453.js +65 -0
  58. package/dist/catalogs-OCVXZLIF.js +128 -0
  59. package/dist/catalogs-RXJTZTVX.js +778 -0
  60. package/dist/catalogs-RXJTZTVX.js.map +1 -0
  61. package/dist/chatgpt-QVF2FD3E.js +47 -0
  62. package/dist/chats-2DRTB7GK.js +276 -0
  63. package/dist/chats-2DRTB7GK.js.map +1 -0
  64. package/dist/check-Z6UMIQKD.js +104 -0
  65. package/dist/chunk-2C7AHPM4.js +191 -0
  66. package/dist/chunk-2C7AHPM4.js.map +1 -0
  67. package/dist/chunk-2WZI36D3.js +317 -0
  68. package/dist/chunk-3AMLOCXY.js +392 -0
  69. package/dist/chunk-3CVAEQMZ.js +156 -0
  70. package/dist/chunk-3WAYZQNV.js +61 -0
  71. package/dist/chunk-46GWHUKN.js +225 -0
  72. package/dist/chunk-4O6T76A3.js +191 -0
  73. package/dist/chunk-5C35OW7L.js +205 -0
  74. package/dist/chunk-5C35OW7L.js.map +1 -0
  75. package/dist/chunk-5GQCN2QZ.js +391 -0
  76. package/dist/chunk-5GQCN2QZ.js.map +1 -0
  77. package/dist/chunk-5MCVK4A3.js +903 -0
  78. package/dist/chunk-5ZLN23V5.js +97 -0
  79. package/dist/chunk-65Y3RCWP.js +68 -0
  80. package/dist/chunk-65Y3RCWP.js.map +1 -0
  81. package/dist/chunk-77ULVP62.js +547 -0
  82. package/dist/chunk-A4MVVPJ2.js +4204 -0
  83. package/dist/chunk-A4MVVPJ2.js.map +1 -0
  84. package/dist/chunk-AQM4JH62.js +274 -0
  85. package/dist/chunk-AQM4JH62.js.map +1 -0
  86. package/dist/chunk-AW2GKIGS.js +433 -0
  87. package/dist/chunk-BRLY6XD6.js +249 -0
  88. package/dist/chunk-C7NWUCLQ.js +64 -0
  89. package/dist/chunk-CP4P6YKM.js +287 -0
  90. package/dist/chunk-CP4P6YKM.js.map +1 -0
  91. package/dist/chunk-D4HKJBEW.js +23 -0
  92. package/dist/chunk-DAO63OOP.js +6352 -0
  93. package/dist/chunk-DAO63OOP.js.map +1 -0
  94. package/dist/chunk-DCBZ5CHZ.js +139 -0
  95. package/dist/chunk-G6XKD7QE.js +77 -0
  96. package/dist/chunk-GBFL4TD2.js +172 -0
  97. package/dist/chunk-H5SCKWFT.js +224 -0
  98. package/dist/chunk-HLVRHBKL.js +1078 -0
  99. package/dist/chunk-HLVRHBKL.js.map +1 -0
  100. package/dist/chunk-HXPK6KAL.js +363 -0
  101. package/dist/chunk-I7GOSMWT.js +197 -0
  102. package/dist/chunk-IBY44U2M.js +1079 -0
  103. package/dist/chunk-ITNHIZKK.js +275 -0
  104. package/dist/chunk-J33P2JNS.js +455 -0
  105. package/dist/chunk-JH2L5CQD.js +206 -0
  106. package/dist/chunk-JQH5VG6F.js +5368 -0
  107. package/dist/chunk-JVH5A3XC.js +8914 -0
  108. package/dist/chunk-KTOYQP6D.js +169 -0
  109. package/dist/chunk-LO3IF5PS.js +399 -0
  110. package/dist/chunk-LRRFGOW3.js +604 -0
  111. package/dist/chunk-LTPTJWZC.js +942 -0
  112. package/dist/chunk-MRQHJW5U.js +159 -0
  113. package/dist/chunk-NHYI7ORL.js +346 -0
  114. package/dist/chunk-NLI7C3K2.js +51 -0
  115. package/dist/chunk-NSEMXBUB.js +91 -0
  116. package/dist/chunk-OM2BRYXJ.js +3868 -0
  117. package/dist/chunk-OY4SKCIU.js +103 -0
  118. package/dist/chunk-OYAJNTRO.js +494 -0
  119. package/dist/chunk-PL7J3DPQ.js +831 -0
  120. package/dist/chunk-PUSBUMYM.js +89 -0
  121. package/dist/chunk-QTOZ32SU.js +163 -0
  122. package/dist/chunk-QTOZ32SU.js.map +1 -0
  123. package/dist/chunk-RRADFRPI.js +297 -0
  124. package/dist/chunk-SGEPZB3D.js +344 -0
  125. package/dist/chunk-SVAB6KV5.js +219 -0
  126. package/dist/chunk-SVAB6KV5.js.map +1 -0
  127. package/dist/chunk-TFTZDWCX.js +66 -0
  128. package/dist/chunk-TG4NCHFS.js +142 -0
  129. package/dist/chunk-TTHM66TA.js +207 -0
  130. package/dist/chunk-VL2GNXZY.js +19 -0
  131. package/dist/chunk-VQPZDM6N.js +160 -0
  132. package/dist/chunk-XCKINS7K.js +57 -0
  133. package/dist/chunk-YLYXSJ6O.js +8939 -0
  134. package/dist/chunk-ZAPO6UWS.js +592 -0
  135. package/dist/chunk-ZEPUDYPL.js +122 -0
  136. package/dist/chunk-ZJSGGJ5R.js +167 -0
  137. package/dist/claim-J2LYNHZK.js +197 -0
  138. package/dist/cli.js +34 -34
  139. package/dist/companies-VYY22B6T.js +195 -0
  140. package/dist/complete-5I32XM7P.js +81 -0
  141. package/dist/connect-EUFFQQ7O.js +42 -0
  142. package/dist/conversation-D6KZHGPP.js +93 -0
  143. package/dist/conversion-writes-ECZBVY7D.js +120 -0
  144. package/dist/conversions-5QCSCRLI.js +76 -0
  145. package/dist/conversions-Y3X6ZTTF.js +135 -0
  146. package/dist/copy-writes-D2RTHAL6.js +167 -0
  147. package/dist/copy-writes-D2RTHAL6.js.map +1 -0
  148. package/dist/create-2JCRTQJL.js +59 -0
  149. package/dist/create-LMSQPHPB.js +235 -0
  150. package/dist/create-MBLNB5RY.js +132 -0
  151. package/dist/create-VR7RXKL7.js +207 -0
  152. package/dist/creatives-5C42BDMW.js +182 -0
  153. package/dist/creatives-HYPSTANO.js +58 -0
  154. package/dist/creatives-MZ6ICNSY.js +88 -0
  155. package/dist/creatives-MZ6ICNSY.js.map +1 -0
  156. package/dist/credentials-4H4AUYJN.js +287 -0
  157. package/dist/critique-UOJZWDG2.js +1458 -0
  158. package/dist/critique-WCWMQQVV.js +227 -0
  159. package/dist/crm-B7OTHMBP.js +318 -0
  160. package/dist/crm-DZRWKJ6V.js +224 -0
  161. package/dist/custom-conversions-FIP6ZS34.js +127 -0
  162. package/dist/custom-conversions-FIP6ZS34.js.map +1 -0
  163. package/dist/customers-AOFJJCGD.js +56 -0
  164. package/dist/delete-DEG5KOBY.js +64 -0
  165. package/dist/delete-EFIODCXG.js +54 -0
  166. package/dist/delete-PQIMW2LK.js +66 -0
  167. package/dist/demographics-F26DIOCM.js +138 -0
  168. package/dist/discard-2EJY6UGP.js +66 -0
  169. package/dist/domain-XLJABLWB.js +98 -0
  170. package/dist/draft-2YND6T4U.js +217 -0
  171. package/dist/draft-34CGWUVA.js +281 -0
  172. package/dist/draft-L45PGCYZ.js +237 -0
  173. package/dist/draft-L45PGCYZ.js.map +1 -0
  174. package/dist/draft-TCPK6XYW.js +332 -0
  175. package/dist/draft-TCPK6XYW.js.map +1 -0
  176. package/dist/draft-WRVEANL5.js +306 -0
  177. package/dist/engine/index.js +4 -4
  178. package/dist/experiment-7N4QFRWV.js +1397 -0
  179. package/dist/facets-OPTNDPW2.js +114 -0
  180. package/dist/feedback-43BPXNBI.js +106 -0
  181. package/dist/feedback-record-35ZSDL6Z.js +260 -0
  182. package/dist/fetch-O46XBA7S.js +176 -0
  183. package/dist/find-FSQAEGGF.js +134 -0
  184. package/dist/fit-CWJ5QQ4R.js +62 -0
  185. package/dist/flows-CVORIQ4B.js +247 -0
  186. package/dist/fonts-6TPYR6IW.js +36 -0
  187. package/dist/forecast-2VLA6NJA.js +118 -0
  188. package/dist/funnel-XLKDLXMG.js +394 -0
  189. package/dist/ga4-LPDIBNYP.js +55 -0
  190. package/dist/get-O56GGN3V.js +56 -0
  191. package/dist/get-WFQ4XEAW.js +79 -0
  192. package/dist/google-5ESVO76E.js +136 -0
  193. package/dist/google-ads-DZMOTUY5.js +195 -0
  194. package/dist/gsc-FIZTQX3N.js +30 -0
  195. package/dist/history-43BBQZOB.js +133 -0
  196. package/dist/history-QKDYBSYM.js +67 -0
  197. package/dist/hubspot-S44MPK3G.js +779 -0
  198. package/dist/icon-CSVAZ7NE.js +137 -0
  199. package/dist/ideas-SLP5WXFF.js +40 -0
  200. package/dist/images-TWZOROCT.js +92 -0
  201. package/dist/ingest-5GCZ5ZBV.js +23 -0
  202. package/dist/ingest-P54J4W3V.js +107 -0
  203. package/dist/insights-YWVJMATY.js +424 -0
  204. package/dist/insights-YWVJMATY.js.map +1 -0
  205. package/dist/inspect-S4COGUBC.js +189 -0
  206. package/dist/inspiration-IX5N724J.js +53 -0
  207. package/dist/instant-experiences-NQ2GWIWL.js +257 -0
  208. package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
  209. package/dist/keyword-metrics-26CCKFZK.js +197 -0
  210. package/dist/keywords-for-site-JWWECF63.js +128 -0
  211. package/dist/landing-VFDRADZY.js +28 -0
  212. package/dist/leads-DTKKYSKH.js +90 -0
  213. package/dist/leads-THI37ZMD.js +537 -0
  214. package/dist/leads-THI37ZMD.js.map +1 -0
  215. package/dist/learn-GQ75IPRK.js +204 -0
  216. package/dist/line-item-writes-DVVHVR3Y.js +208 -0
  217. package/dist/line-items-EOZMK7A5.js +103 -0
  218. package/dist/link-R5NGCQ5H.js +64 -0
  219. package/dist/linkedin-DHZO3IJX.js +1057 -0
  220. package/dist/list-57QBEGLM.js +303 -0
  221. package/dist/list-Q44BBHDI.js +64 -0
  222. package/dist/list-W6G2NTG5.js +151 -0
  223. package/dist/locations-HM56X2MK.js +67 -0
  224. package/dist/locations-HM56X2MK.js.map +1 -0
  225. package/dist/log-B6X5EPKA.js +92 -0
  226. package/dist/logo-VHXH4J6A.js +18 -0
  227. package/dist/make-OIFLF3QS.js +1353 -0
  228. package/dist/map-PIOZT2MQ.js +433 -0
  229. package/dist/mcp-GFKHLWDB.js +714 -0
  230. package/dist/media-H6B7VDON.js +18 -0
  231. package/dist/media-H6B7VDON.js.map +1 -0
  232. package/dist/media-sources-VMMMW5UM.js +32 -0
  233. package/dist/members-W2QBMNIW.js +44 -0
  234. package/dist/meta-YHDTGJQ6.js +122 -0
  235. package/dist/meta-YHDTGJQ6.js.map +1 -0
  236. package/dist/normalize-N6XC3SLC.js +141 -0
  237. package/dist/options-XYJY2OEQ.js +122 -0
  238. package/dist/organization-BVTXCZIV.js +942 -0
  239. package/dist/organization-BVTXCZIV.js.map +1 -0
  240. package/dist/page-photos-CXRG4AXV.js +115 -0
  241. package/dist/page-photos-CXRG4AXV.js.map +1 -0
  242. package/dist/pages-PTWRXAZT.js +66 -0
  243. package/dist/performance-7NEZTOJ5.js +24 -0
  244. package/dist/pixels-MYT3TCHZ.js +60 -0
  245. package/dist/pixels-ZZCQUS3J.js +108 -0
  246. package/dist/preview-XOXAAPMQ.js +215 -0
  247. package/dist/preview-XOXAAPMQ.js.map +1 -0
  248. package/dist/promoted-tweet-writes-X2F7R2AE.js +180 -0
  249. package/dist/promoted-tweets-XCSD6VKP.js +119 -0
  250. package/dist/publish-OBY6E43R.js +341 -0
  251. package/dist/reddit-WJ6KHYBC.js +26 -0
  252. package/dist/refresh-G5BQ2LWU.js +94 -0
  253. package/dist/release-PBZO35KY.js +60 -0
  254. package/dist/remove-VJ2MEUPM.js +50 -0
  255. package/dist/reopen-W3LYOHSR.js +63 -0
  256. package/dist/rerun-4GDNBFNM.js +90 -0
  257. package/dist/research-4YTFPGH7.js +262 -0
  258. package/dist/research-LOQRIBO6.js +62 -0
  259. package/dist/reset-55CCQGXB.js +54 -0
  260. package/dist/reset-AVTQEJPZ.js +54 -0
  261. package/dist/resolve-E6FNMFE3.js +121 -0
  262. package/dist/retry-HBJ7MKVI.js +60 -0
  263. package/dist/retry-QBRYM6MG.js +62 -0
  264. package/dist/rule-writes-6ZCAJDYZ.js +522 -0
  265. package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
  266. package/dist/rules-BMYOY2BM.js +216 -0
  267. package/dist/rules-BMYOY2BM.js.map +1 -0
  268. package/dist/rules-XNDBGOIS.js +96 -0
  269. package/dist/rules-add-UM3ZKSVD.js +462 -0
  270. package/dist/run-D4YHZ4Z4.js +66 -0
  271. package/dist/run-ZCJ7NP63.js +65 -0
  272. package/dist/scaffold-ad-VQZAP32M.js +1511 -0
  273. package/dist/scaffold-static-ad-LEU4M44N.js +1005 -0
  274. package/dist/scaffold-video-PSWSYRSC.js +883 -0
  275. package/dist/schedule-AAH7HYFK.js +61 -0
  276. package/dist/scheduled-agents-HDABMHZI.js +50 -0
  277. package/dist/schema-OH5OWMVQ.js +132 -0
  278. package/dist/search-BSDPVSGA.js +174 -0
  279. package/dist/select-EI4QF4YZ.js +101 -0
  280. package/dist/set-prompt-RKDAGUWG.js +193 -0
  281. package/dist/setup-links-CNNJA7AB.js +141 -0
  282. package/dist/shared-3IBNDEFL.js +31 -0
  283. package/dist/site-NV4U7PIF.js +177 -0
  284. package/dist/sources-ATONL7W5.js +454 -0
  285. package/dist/sources-C3TGHKLQ.js +30 -0
  286. package/dist/stale-6QPXL6BZ.js +71 -0
  287. package/dist/stats-ZAGJH4AD.js +34 -0
  288. package/dist/status-BML3F4MZ.js +62 -0
  289. package/dist/stock-6SHHLSKG.js +179 -0
  290. package/dist/studies-4NIV4D5Y.js +249 -0
  291. package/dist/studies-4NIV4D5Y.js.map +1 -0
  292. package/dist/studio-ZLCGXFAN.js +49 -0
  293. package/dist/study-writes-L2AA2PGL.js +467 -0
  294. package/dist/study-writes-L2AA2PGL.js.map +1 -0
  295. package/dist/sync-DZAOUQPE.js +54 -0
  296. package/dist/sync-definition-RFEL65JE.js +64 -0
  297. package/dist/tag-manager-3CJ66GKJ.js +43 -0
  298. package/dist/tags-2KSXCJRZ.js +20 -0
  299. package/dist/tags-662KZJLV.js +26 -0
  300. package/dist/tags-6QBVW25V.js +20 -0
  301. package/dist/tags-LQCEJGIL.js +20 -0
  302. package/dist/tags-RIVD54ZG.js +224 -0
  303. package/dist/targeting-LNDQV4EK.js +759 -0
  304. package/dist/targeting-LNDQV4EK.js.map +1 -0
  305. package/dist/targeting-criteria-XNLYPIL2.js +113 -0
  306. package/dist/targets-OYIVS5KJ.js +103 -0
  307. package/dist/testimonials-WT43CF7V.js +32 -0
  308. package/dist/top-companies-6QQMOS2Y.js +108 -0
  309. package/dist/translate-7QN7JFGU.js +604 -0
  310. package/dist/triggers-LVQY3QJ2.js +142 -0
  311. package/dist/unlink-5ASZTCS2.js +67 -0
  312. package/dist/unstage-LNZTEATR.js +85 -0
  313. package/dist/update-7BIR4GYO.js +152 -0
  314. package/dist/update-BRLM5DB3.js +98 -0
  315. package/dist/update-DRZAAJQ2.js +63 -0
  316. package/dist/update-NOWC3ICD.js +188 -0
  317. package/dist/upload-457Q4ANZ.js +126 -0
  318. package/dist/url-params-KM4NJGYC.js +98 -0
  319. package/dist/validate-COLEPJBA.js +117 -0
  320. package/dist/videos-5IDZTEWC.js +39 -0
  321. package/dist/viewer-check-433AZPBC.js +80 -0
  322. package/dist/viewer-check-433AZPBC.js.map +1 -0
  323. package/dist/web-FZYOCCYN.js +140 -0
  324. package/dist/winning-ads-I4DMP7RU.js +84 -0
  325. package/dist/write-commands-FYB6QG7K.js +1024 -0
  326. package/dist/write-commands-PEJBTME6.js +1165 -0
  327. package/dist/write-commands-PEJBTME6.js.map +1 -0
  328. package/dist/x-OMN5DDLM.js +47 -0
  329. package/package.json +1 -1
  330. package/dist/account-7LUQWY6Q.js +0 -49
  331. package/dist/account-7LUQWY6Q.js.map +0 -1
  332. package/dist/account-KNRDOUJP.js +0 -79
  333. package/dist/account-Z65CPOWE.js +0 -80
  334. package/dist/account-writes-4N2MA2ZR.js +0 -66
  335. package/dist/accounts-RTN5ZGTU.js +0 -611
  336. package/dist/accounts-RW6KXBOQ.js +0 -77
  337. package/dist/accounts-UA2ZWRN4.js +0 -75
  338. package/dist/actions-HNLISA7T.js +0 -55
  339. package/dist/activecampaign-I5CILZPU.js +0 -935
  340. package/dist/activities-IQPJPP4B.js +0 -74
  341. package/dist/ad-group-writes-EUTMPBMK.js +0 -170
  342. package/dist/ad-groups-OVPAI5RM.js +0 -68
  343. package/dist/ad-writes-DACTYFEO.js +0 -174
  344. package/dist/add-6WKPFMLG.js +0 -302
  345. package/dist/add-XF5COUAS.js +0 -104
  346. package/dist/ads-G6AS5L7G.js +0 -40
  347. package/dist/ads-HXX2IAFF.js +0 -113
  348. package/dist/ads-HXX2IAFF.js.map +0 -1
  349. package/dist/ads-L65JIKCD.js +0 -77
  350. package/dist/adsets-LPN6WFGF.js +0 -176
  351. package/dist/adsets-LPN6WFGF.js.map +0 -1
  352. package/dist/advertisers-6NUM2Q3A.js +0 -120
  353. package/dist/analytics-QKP3A5F3.js +0 -1976
  354. package/dist/analytics-VLHE5A2M.js +0 -433
  355. package/dist/assign-6HI6TNLP.js +0 -77
  356. package/dist/audience-size-25LP2OBF.js +0 -73
  357. package/dist/audiences-RPLVMO4H.js +0 -268
  358. package/dist/audiences-XEZHACKH.js +0 -78
  359. package/dist/audiences-XEZHACKH.js.map +0 -1
  360. package/dist/audit-YY6X2MPA.js +0 -151
  361. package/dist/autocomplete-SAWJK4NF.js +0 -111
  362. package/dist/avatars-MXTI74VC.js +0 -38
  363. package/dist/bid-pricing-HZ74SLEB.js +0 -100
  364. package/dist/brand-T3OACVQX.js +0 -22
  365. package/dist/brief-BN4UGUXF.js +0 -538
  366. package/dist/businesses-PRRYPR7H.js +0 -53
  367. package/dist/campaign-groups-YJK767AP.js +0 -95
  368. package/dist/campaign-writes-BAFB5E7A.js +0 -165
  369. package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
  370. package/dist/campaign-writes-U5LTDTYK.js +0 -170
  371. package/dist/campaigns-4SOLY7OR.js +0 -110
  372. package/dist/campaigns-4SOLY7OR.js.map +0 -1
  373. package/dist/campaigns-GALDR5KK.js +0 -109
  374. package/dist/campaigns-NR6TNQFN.js +0 -107
  375. package/dist/campaigns-TFEQTSO3.js +0 -76
  376. package/dist/canvas-GJAQAVS6.js +0 -46
  377. package/dist/capabilities-2KT6TCGZ.js +0 -144
  378. package/dist/catalog-USZL4SGX.js +0 -65
  379. package/dist/catalogs-A7XMEEEP.js +0 -128
  380. package/dist/chatgpt-4PEWDJKP.js +0 -47
  381. package/dist/chats-INN2OHSH.js +0 -262
  382. package/dist/chats-INN2OHSH.js.map +0 -1
  383. package/dist/check-MMJGFFZS.js +0 -104
  384. package/dist/chunk-2LI6746F.js +0 -103
  385. package/dist/chunk-2PWNIEW4.js +0 -197
  386. package/dist/chunk-2XRMPSEV.js +0 -142
  387. package/dist/chunk-3TZVZXM6.js +0 -224
  388. package/dist/chunk-3UXMQ3K2.js +0 -274
  389. package/dist/chunk-3UXMQ3K2.js.map +0 -1
  390. package/dist/chunk-5HJRZFMW.js +0 -207
  391. package/dist/chunk-62JQQUAU.js +0 -5368
  392. package/dist/chunk-66QHX566.js +0 -6306
  393. package/dist/chunk-66QHX566.js.map +0 -1
  394. package/dist/chunk-6JWEGFM5.js +0 -174
  395. package/dist/chunk-6JWEGFM5.js.map +0 -1
  396. package/dist/chunk-6WCAV27H.js +0 -494
  397. package/dist/chunk-6WXV5GTA.js +0 -8914
  398. package/dist/chunk-7RBJ2Z7Z.js +0 -172
  399. package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
  400. package/dist/chunk-AVNSH2JE.js +0 -8939
  401. package/dist/chunk-BITS62MF.js +0 -77
  402. package/dist/chunk-BL2MX6CR.js +0 -249
  403. package/dist/chunk-BOPC3D6I.js +0 -604
  404. package/dist/chunk-C6EYCD5J.js +0 -942
  405. package/dist/chunk-CSZFZKVX.js +0 -97
  406. package/dist/chunk-D5CUAOQX.js +0 -297
  407. package/dist/chunk-D5UXWKLQ.js +0 -903
  408. package/dist/chunk-FA4YZFRV.js +0 -392
  409. package/dist/chunk-FUKDI2UK.js +0 -122
  410. package/dist/chunk-G4STCTY3.js +0 -399
  411. package/dist/chunk-GOJXKIFQ.js +0 -1605
  412. package/dist/chunk-GOJXKIFQ.js.map +0 -1
  413. package/dist/chunk-H5HDZ7IC.js +0 -139
  414. package/dist/chunk-HSPMBLKE.js +0 -363
  415. package/dist/chunk-IJ22WP3G.js +0 -275
  416. package/dist/chunk-ILSKYRDR.js +0 -169
  417. package/dist/chunk-JQU2LUZG.js +0 -57
  418. package/dist/chunk-JWSEPW7F.js +0 -225
  419. package/dist/chunk-KIGGMKAE.js +0 -66
  420. package/dist/chunk-KIGGMKAE.js.map +0 -1
  421. package/dist/chunk-KPYDTIAI.js +0 -317
  422. package/dist/chunk-LBO2YAZY.js +0 -3868
  423. package/dist/chunk-LOMH4TTC.js +0 -1079
  424. package/dist/chunk-LPXSM2DI.js +0 -66
  425. package/dist/chunk-MVB32GPI.js +0 -592
  426. package/dist/chunk-MXH35PJ5.js +0 -51
  427. package/dist/chunk-NEIUVSDK.js +0 -206
  428. package/dist/chunk-NPMAATZG.js +0 -64
  429. package/dist/chunk-NXZCCGES.js +0 -159
  430. package/dist/chunk-OP7DNHD2.js +0 -137
  431. package/dist/chunk-OP7DNHD2.js.map +0 -1
  432. package/dist/chunk-OWA7ZLC4.js +0 -547
  433. package/dist/chunk-P3W6SRSQ.js +0 -455
  434. package/dist/chunk-PA4W7BCQ.js +0 -23
  435. package/dist/chunk-PTGYM4J6.js +0 -89
  436. package/dist/chunk-QE3JEJXF.js +0 -831
  437. package/dist/chunk-QNLJ3GNZ.js +0 -433
  438. package/dist/chunk-R3EKM2P2.js +0 -191
  439. package/dist/chunk-SISA4HQR.js +0 -61
  440. package/dist/chunk-TP7HKSBX.js +0 -172
  441. package/dist/chunk-TPANP5A2.js +0 -91
  442. package/dist/chunk-TRPJJMCS.js +0 -346
  443. package/dist/chunk-TZEVD4Q6.js +0 -160
  444. package/dist/chunk-UWXDNVS5.js +0 -167
  445. package/dist/chunk-VD73V44J.js +0 -344
  446. package/dist/chunk-X7F4Z6UM.js +0 -156
  447. package/dist/chunk-ZL23HA4N.js +0 -19
  448. package/dist/claim-SLGYOOWD.js +0 -197
  449. package/dist/companies-IVMH6YII.js +0 -195
  450. package/dist/complete-45L2FI2X.js +0 -81
  451. package/dist/connect-WBGCBBFJ.js +0 -42
  452. package/dist/conversation-RIOL3OJ7.js +0 -93
  453. package/dist/conversion-writes-JU7Q2MUO.js +0 -120
  454. package/dist/conversions-3ISBR3TS.js +0 -76
  455. package/dist/conversions-TKIXNSYR.js +0 -135
  456. package/dist/create-7JY2PTIZ.js +0 -132
  457. package/dist/create-ACLCRXQP.js +0 -59
  458. package/dist/create-KYBMFD32.js +0 -207
  459. package/dist/create-VAPJ52GJ.js +0 -235
  460. package/dist/creatives-S5QUWUL6.js +0 -58
  461. package/dist/creatives-VQO2TKE3.js +0 -182
  462. package/dist/creatives-YJ3CXZQC.js +0 -87
  463. package/dist/creatives-YJ3CXZQC.js.map +0 -1
  464. package/dist/credentials-YTQ6BHWV.js +0 -287
  465. package/dist/critique-5LCG5TYF.js +0 -227
  466. package/dist/critique-BHYJYZDV.js +0 -1458
  467. package/dist/crm-IKTWHWEB.js +0 -318
  468. package/dist/crm-N7K57LZJ.js +0 -224
  469. package/dist/custom-conversions-YRYE65PU.js +0 -125
  470. package/dist/custom-conversions-YRYE65PU.js.map +0 -1
  471. package/dist/customers-NLU7NYDC.js +0 -56
  472. package/dist/delete-26J3X3ZH.js +0 -64
  473. package/dist/delete-A4F5Z54J.js +0 -66
  474. package/dist/delete-EVXOFT2H.js +0 -54
  475. package/dist/demographics-VZKFMM4X.js +0 -138
  476. package/dist/discard-ULRVUJDV.js +0 -66
  477. package/dist/domain-L4WCCX7R.js +0 -98
  478. package/dist/draft-57OQKHZI.js +0 -306
  479. package/dist/draft-EWDOIXSH.js +0 -233
  480. package/dist/draft-EWDOIXSH.js.map +0 -1
  481. package/dist/draft-GPN3HOAG.js +0 -328
  482. package/dist/draft-GPN3HOAG.js.map +0 -1
  483. package/dist/draft-O4S5RKWK.js +0 -217
  484. package/dist/draft-Y2QJE2NM.js +0 -281
  485. package/dist/experiment-G3FQVAJU.js +0 -1397
  486. package/dist/facets-EHQKGGJ2.js +0 -114
  487. package/dist/feedback-CAOZPGTT.js +0 -106
  488. package/dist/feedback-record-EXV5H6OS.js +0 -260
  489. package/dist/fetch-ETKT2RBC.js +0 -176
  490. package/dist/find-EVY4XEIQ.js +0 -134
  491. package/dist/fit-UJQ47C4A.js +0 -62
  492. package/dist/flows-Z7355RMD.js +0 -247
  493. package/dist/fonts-7VWBQPJF.js +0 -36
  494. package/dist/forecast-OI7YWZ6F.js +0 -118
  495. package/dist/funnel-2B3JXJPX.js +0 -394
  496. package/dist/ga4-2BL5YAYN.js +0 -55
  497. package/dist/get-2RSN4N3J.js +0 -56
  498. package/dist/get-6N7QJMIP.js +0 -79
  499. package/dist/google-7STODZQR.js +0 -136
  500. package/dist/google-ads-G7REKD4A.js +0 -195
  501. package/dist/gsc-UU3T2C6B.js +0 -30
  502. package/dist/history-IQ33J5PB.js +0 -67
  503. package/dist/history-YMK2JNZU.js +0 -133
  504. package/dist/hubspot-BUFS7S33.js +0 -779
  505. package/dist/icon-GB7UH5RF.js +0 -137
  506. package/dist/ideas-F6CIGTVU.js +0 -40
  507. package/dist/images-WCKTD6Z2.js +0 -92
  508. package/dist/ingest-RQUJGS7K.js +0 -107
  509. package/dist/ingest-XLTRLCDV.js +0 -23
  510. package/dist/insights-4HT2NAYP.js +0 -423
  511. package/dist/insights-4HT2NAYP.js.map +0 -1
  512. package/dist/inspect-KFVAMD4N.js +0 -189
  513. package/dist/inspiration-XQYHBJY2.js +0 -53
  514. package/dist/keyword-metrics-WYF3QMCW.js +0 -197
  515. package/dist/keywords-for-site-G5L5EP3T.js +0 -128
  516. package/dist/landing-WUILAWDS.js +0 -28
  517. package/dist/leads-2XOSAYP4.js +0 -293
  518. package/dist/leads-2XOSAYP4.js.map +0 -1
  519. package/dist/leads-4SJ4NJOI.js +0 -90
  520. package/dist/learn-CC6Q5IK2.js +0 -204
  521. package/dist/line-item-writes-YXKYR25W.js +0 -208
  522. package/dist/line-items-CKUD2UU4.js +0 -103
  523. package/dist/link-VBYFI7AM.js +0 -64
  524. package/dist/linkedin-XKVPSCLV.js +0 -1057
  525. package/dist/list-6ZNZGRRK.js +0 -151
  526. package/dist/list-ENYDGT3F.js +0 -64
  527. package/dist/list-VSUF2IWT.js +0 -303
  528. package/dist/locations-YA7NZY44.js +0 -67
  529. package/dist/locations-YA7NZY44.js.map +0 -1
  530. package/dist/log-AACKGBDW.js +0 -92
  531. package/dist/logo-YSNUUT33.js +0 -18
  532. package/dist/make-ED7HBLH3.js +0 -1353
  533. package/dist/map-63CQHWPI.js +0 -433
  534. package/dist/mcp-RKAXC6IP.js +0 -714
  535. package/dist/media-ES2UBGYW.js +0 -15
  536. package/dist/media-ES2UBGYW.js.map +0 -1
  537. package/dist/media-sources-PEHUMH7C.js +0 -32
  538. package/dist/members-SELIA674.js +0 -44
  539. package/dist/meta-AOIPEDV5.js +0 -69
  540. package/dist/meta-AOIPEDV5.js.map +0 -1
  541. package/dist/normalize-VAZPTBDX.js +0 -141
  542. package/dist/options-6FCNFWUF.js +0 -122
  543. package/dist/organization-SHREKDST.js +0 -881
  544. package/dist/organization-SHREKDST.js.map +0 -1
  545. package/dist/pages-FTI44OSH.js +0 -66
  546. package/dist/performance-K7E5KAZW.js +0 -24
  547. package/dist/pixels-6IUB3Y3H.js +0 -60
  548. package/dist/pixels-MBKR4XPX.js +0 -108
  549. package/dist/preview-V4YBD45S.js +0 -169
  550. package/dist/preview-V4YBD45S.js.map +0 -1
  551. package/dist/promoted-tweet-writes-PKEO6WUK.js +0 -180
  552. package/dist/promoted-tweets-7MXVZRBI.js +0 -119
  553. package/dist/publish-MPMGRV72.js +0 -341
  554. package/dist/reddit-XIHRI3CN.js +0 -26
  555. package/dist/refresh-A27N75NH.js +0 -94
  556. package/dist/release-UKRB5IUN.js +0 -60
  557. package/dist/remove-AFNFVPZY.js +0 -50
  558. package/dist/reopen-M5HE6J3G.js +0 -63
  559. package/dist/rerun-A2XHGFZS.js +0 -90
  560. package/dist/research-BLDY5UWH.js +0 -62
  561. package/dist/research-U7RQXMYH.js +0 -262
  562. package/dist/reset-4CCWB2RT.js +0 -54
  563. package/dist/reset-J3KCWFMZ.js +0 -54
  564. package/dist/resolve-HEK27ANI.js +0 -121
  565. package/dist/retry-HPZIUG2S.js +0 -62
  566. package/dist/retry-VVI6N6UR.js +0 -60
  567. package/dist/rules-SK5DFFPY.js +0 -96
  568. package/dist/rules-add-YQNYSME7.js +0 -462
  569. package/dist/run-KBN5K7LE.js +0 -65
  570. package/dist/run-M7ZDE6IA.js +0 -66
  571. package/dist/scaffold-ad-6BN5LWQH.js +0 -1511
  572. package/dist/scaffold-static-ad-VVZRAWBR.js +0 -1005
  573. package/dist/scaffold-video-LFIYI4GP.js +0 -883
  574. package/dist/schedule-QMOKWTJ3.js +0 -61
  575. package/dist/scheduled-agents-FCQHQ6KR.js +0 -50
  576. package/dist/schema-THFLCMBN.js +0 -132
  577. package/dist/search-XIUYSWO6.js +0 -174
  578. package/dist/select-QBU6ED4K.js +0 -101
  579. package/dist/set-prompt-TL64CRBQ.js +0 -193
  580. package/dist/setup-links-QVI6NAOK.js +0 -141
  581. package/dist/shared-NDRFKAH7.js +0 -31
  582. package/dist/site-PZPJY33N.js +0 -177
  583. package/dist/sources-ER7ANNG3.js +0 -454
  584. package/dist/sources-RMNFV4CA.js +0 -30
  585. package/dist/stale-ITFCPOER.js +0 -71
  586. package/dist/stats-RCLQE4HJ.js +0 -34
  587. package/dist/status-ABMJBCPJ.js +0 -62
  588. package/dist/stock-ECRBD7RP.js +0 -179
  589. package/dist/studio-MARZ22J2.js +0 -49
  590. package/dist/sync-QDD3MRJ6.js +0 -54
  591. package/dist/sync-definition-C6ROLKJ4.js +0 -64
  592. package/dist/tag-manager-G3LBQZUL.js +0 -43
  593. package/dist/tags-5JYOEYIT.js +0 -20
  594. package/dist/tags-B473RWAA.js +0 -224
  595. package/dist/tags-EWHPUM2V.js +0 -20
  596. package/dist/tags-KBCX6BDU.js +0 -26
  597. package/dist/tags-PEWN6GNZ.js +0 -20
  598. package/dist/targeting-criteria-EU65WUUF.js +0 -113
  599. package/dist/targets-KVXS5QKM.js +0 -103
  600. package/dist/testimonials-YMMA5YWL.js +0 -32
  601. package/dist/top-companies-OOX3DITI.js +0 -108
  602. package/dist/translate-OXVIMYHE.js +0 -604
  603. package/dist/triggers-OX2GKG4Y.js +0 -142
  604. package/dist/unlink-3USEPJSA.js +0 -67
  605. package/dist/unstage-VSCNPTAC.js +0 -85
  606. package/dist/update-6JKTH65B.js +0 -152
  607. package/dist/update-FG4ELXYJ.js +0 -98
  608. package/dist/update-GZFKHA3A.js +0 -188
  609. package/dist/update-HZHG67N6.js +0 -63
  610. package/dist/upload-BKCQ6FRW.js +0 -126
  611. package/dist/url-params-UN4DRN2H.js +0 -98
  612. package/dist/validate-ZS2M5Q3V.js +0 -117
  613. package/dist/videos-I6YXFBFT.js +0 -39
  614. package/dist/viewer-check-7ZG7KHEN.js +0 -80
  615. package/dist/web-UGU7YMII.js +0 -140
  616. package/dist/winning-ads-ABN5OULS.js +0 -84
  617. package/dist/write-commands-6VR2UD3T.js +0 -1024
  618. package/dist/write-commands-HCQI4Y27.js +0 -737
  619. package/dist/write-commands-HCQI4Y27.js.map +0 -1
  620. package/dist/x-WK2VQDPF.js +0 -47
  621. /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
  622. /package/dist/{account-KNRDOUJP.js.map → account-VGSYM7LY.js.map} +0 -0
  623. /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
  624. /package/dist/{accounts-RW6KXBOQ.js.map → accounts-2ARS6XP2.js.map} +0 -0
  625. /package/dist/{accounts-RTN5ZGTU.js.map → accounts-AQFW4ZUM.js.map} +0 -0
  626. /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
  627. /package/dist/{actions-HNLISA7T.js.map → actions-QMUHOAXG.js.map} +0 -0
  628. /package/dist/{activecampaign-I5CILZPU.js.map → activecampaign-J3QN5FMG.js.map} +0 -0
  629. /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
  630. /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
  631. /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
  632. /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
  633. /package/dist/{add-XF5COUAS.js.map → add-VDUA6OWM.js.map} +0 -0
  634. /package/dist/{add-6WKPFMLG.js.map → add-XHOKCSW5.js.map} +0 -0
  635. /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
  636. /package/dist/{ads-G6AS5L7G.js.map → ads-HGDPNIT6.js.map} +0 -0
  637. /package/dist/{advertisers-6NUM2Q3A.js.map → advertisers-UDSEFMP7.js.map} +0 -0
  638. /package/dist/{analytics-VLHE5A2M.js.map → analytics-TBETZOPJ.js.map} +0 -0
  639. /package/dist/{analytics-QKP3A5F3.js.map → analytics-VH74LMMC.js.map} +0 -0
  640. /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
  641. /package/dist/{assign-6HI6TNLP.js.map → assign-6IE2ASFC.js.map} +0 -0
  642. /package/dist/{audience-size-25LP2OBF.js.map → audience-size-CSBWDFEP.js.map} +0 -0
  643. /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
  644. /package/dist/{audit-YY6X2MPA.js.map → audit-AEENRVGD.js.map} +0 -0
  645. /package/dist/{autocomplete-SAWJK4NF.js.map → autocomplete-AAGTJHVL.js.map} +0 -0
  646. /package/dist/{avatars-MXTI74VC.js.map → avatars-VEATUUKU.js.map} +0 -0
  647. /package/dist/{bid-pricing-HZ74SLEB.js.map → bid-pricing-SZTGCZTV.js.map} +0 -0
  648. /package/dist/{brand-T3OACVQX.js.map → brand-MXGETE4R.js.map} +0 -0
  649. /package/dist/{brief-BN4UGUXF.js.map → brief-3GHSHOGM.js.map} +0 -0
  650. /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
  651. /package/dist/{campaign-groups-YJK767AP.js.map → campaign-groups-WRI56M5X.js.map} +0 -0
  652. /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
  653. /package/dist/{campaigns-GALDR5KK.js.map → campaigns-4QWC2JE7.js.map} +0 -0
  654. /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
  655. /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-Q4HN7HBY.js.map} +0 -0
  656. /package/dist/{canvas-GJAQAVS6.js.map → canvas-VJ3XKCAC.js.map} +0 -0
  657. /package/dist/{capabilities-2KT6TCGZ.js.map → capabilities-SNGGAOV3.js.map} +0 -0
  658. /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
  659. /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
  660. /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
  661. /package/dist/{check-MMJGFFZS.js.map → check-Z6UMIQKD.js.map} +0 -0
  662. /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
  663. /package/dist/{chunk-FA4YZFRV.js.map → chunk-3AMLOCXY.js.map} +0 -0
  664. /package/dist/{chunk-X7F4Z6UM.js.map → chunk-3CVAEQMZ.js.map} +0 -0
  665. /package/dist/{chunk-SISA4HQR.js.map → chunk-3WAYZQNV.js.map} +0 -0
  666. /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
  667. /package/dist/{chunk-R3EKM2P2.js.map → chunk-4O6T76A3.js.map} +0 -0
  668. /package/dist/{chunk-D5UXWKLQ.js.map → chunk-5MCVK4A3.js.map} +0 -0
  669. /package/dist/{chunk-CSZFZKVX.js.map → chunk-5ZLN23V5.js.map} +0 -0
  670. /package/dist/{chunk-OWA7ZLC4.js.map → chunk-77ULVP62.js.map} +0 -0
  671. /package/dist/{chunk-QNLJ3GNZ.js.map → chunk-AW2GKIGS.js.map} +0 -0
  672. /package/dist/{chunk-BL2MX6CR.js.map → chunk-BRLY6XD6.js.map} +0 -0
  673. /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
  674. /package/dist/{chunk-PA4W7BCQ.js.map → chunk-D4HKJBEW.js.map} +0 -0
  675. /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
  676. /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
  677. /package/dist/{chunk-TP7HKSBX.js.map → chunk-GBFL4TD2.js.map} +0 -0
  678. /package/dist/{chunk-3TZVZXM6.js.map → chunk-H5SCKWFT.js.map} +0 -0
  679. /package/dist/{chunk-HSPMBLKE.js.map → chunk-HXPK6KAL.js.map} +0 -0
  680. /package/dist/{chunk-2PWNIEW4.js.map → chunk-I7GOSMWT.js.map} +0 -0
  681. /package/dist/{chunk-LOMH4TTC.js.map → chunk-IBY44U2M.js.map} +0 -0
  682. /package/dist/{chunk-IJ22WP3G.js.map → chunk-ITNHIZKK.js.map} +0 -0
  683. /package/dist/{chunk-P3W6SRSQ.js.map → chunk-J33P2JNS.js.map} +0 -0
  684. /package/dist/{chunk-NEIUVSDK.js.map → chunk-JH2L5CQD.js.map} +0 -0
  685. /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
  686. /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
  687. /package/dist/{chunk-ILSKYRDR.js.map → chunk-KTOYQP6D.js.map} +0 -0
  688. /package/dist/{chunk-G4STCTY3.js.map → chunk-LO3IF5PS.js.map} +0 -0
  689. /package/dist/{chunk-BOPC3D6I.js.map → chunk-LRRFGOW3.js.map} +0 -0
  690. /package/dist/{chunk-C6EYCD5J.js.map → chunk-LTPTJWZC.js.map} +0 -0
  691. /package/dist/{chunk-NXZCCGES.js.map → chunk-MRQHJW5U.js.map} +0 -0
  692. /package/dist/{chunk-TRPJJMCS.js.map → chunk-NHYI7ORL.js.map} +0 -0
  693. /package/dist/{chunk-MXH35PJ5.js.map → chunk-NLI7C3K2.js.map} +0 -0
  694. /package/dist/{chunk-TPANP5A2.js.map → chunk-NSEMXBUB.js.map} +0 -0
  695. /package/dist/{chunk-LBO2YAZY.js.map → chunk-OM2BRYXJ.js.map} +0 -0
  696. /package/dist/{chunk-2LI6746F.js.map → chunk-OY4SKCIU.js.map} +0 -0
  697. /package/dist/{chunk-6WCAV27H.js.map → chunk-OYAJNTRO.js.map} +0 -0
  698. /package/dist/{chunk-QE3JEJXF.js.map → chunk-PL7J3DPQ.js.map} +0 -0
  699. /package/dist/{chunk-PTGYM4J6.js.map → chunk-PUSBUMYM.js.map} +0 -0
  700. /package/dist/{chunk-D5CUAOQX.js.map → chunk-RRADFRPI.js.map} +0 -0
  701. /package/dist/{chunk-VD73V44J.js.map → chunk-SGEPZB3D.js.map} +0 -0
  702. /package/dist/{chunk-LPXSM2DI.js.map → chunk-TFTZDWCX.js.map} +0 -0
  703. /package/dist/{chunk-2XRMPSEV.js.map → chunk-TG4NCHFS.js.map} +0 -0
  704. /package/dist/{chunk-5HJRZFMW.js.map → chunk-TTHM66TA.js.map} +0 -0
  705. /package/dist/{chunk-ZL23HA4N.js.map → chunk-VL2GNXZY.js.map} +0 -0
  706. /package/dist/{chunk-TZEVD4Q6.js.map → chunk-VQPZDM6N.js.map} +0 -0
  707. /package/dist/{chunk-JQU2LUZG.js.map → chunk-XCKINS7K.js.map} +0 -0
  708. /package/dist/{chunk-AVNSH2JE.js.map → chunk-YLYXSJ6O.js.map} +0 -0
  709. /package/dist/{chunk-MVB32GPI.js.map → chunk-ZAPO6UWS.js.map} +0 -0
  710. /package/dist/{chunk-FUKDI2UK.js.map → chunk-ZEPUDYPL.js.map} +0 -0
  711. /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
  712. /package/dist/{claim-SLGYOOWD.js.map → claim-J2LYNHZK.js.map} +0 -0
  713. /package/dist/{companies-IVMH6YII.js.map → companies-VYY22B6T.js.map} +0 -0
  714. /package/dist/{complete-45L2FI2X.js.map → complete-5I32XM7P.js.map} +0 -0
  715. /package/dist/{customers-NLU7NYDC.js.map → connect-EUFFQQ7O.js.map} +0 -0
  716. /package/dist/{conversation-RIOL3OJ7.js.map → conversation-D6KZHGPP.js.map} +0 -0
  717. /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
  718. /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
  719. /package/dist/{conversions-TKIXNSYR.js.map → conversions-Y3X6ZTTF.js.map} +0 -0
  720. /package/dist/{create-ACLCRXQP.js.map → create-2JCRTQJL.js.map} +0 -0
  721. /package/dist/{create-VAPJ52GJ.js.map → create-LMSQPHPB.js.map} +0 -0
  722. /package/dist/{create-7JY2PTIZ.js.map → create-MBLNB5RY.js.map} +0 -0
  723. /package/dist/{create-KYBMFD32.js.map → create-VR7RXKL7.js.map} +0 -0
  724. /package/dist/{creatives-VQO2TKE3.js.map → creatives-5C42BDMW.js.map} +0 -0
  725. /package/dist/{creatives-S5QUWUL6.js.map → creatives-HYPSTANO.js.map} +0 -0
  726. /package/dist/{credentials-YTQ6BHWV.js.map → credentials-4H4AUYJN.js.map} +0 -0
  727. /package/dist/{critique-BHYJYZDV.js.map → critique-UOJZWDG2.js.map} +0 -0
  728. /package/dist/{critique-5LCG5TYF.js.map → critique-WCWMQQVV.js.map} +0 -0
  729. /package/dist/{crm-IKTWHWEB.js.map → crm-B7OTHMBP.js.map} +0 -0
  730. /package/dist/{crm-N7K57LZJ.js.map → crm-DZRWKJ6V.js.map} +0 -0
  731. /package/dist/{fit-UJQ47C4A.js.map → customers-AOFJJCGD.js.map} +0 -0
  732. /package/dist/{delete-26J3X3ZH.js.map → delete-DEG5KOBY.js.map} +0 -0
  733. /package/dist/{delete-EVXOFT2H.js.map → delete-EFIODCXG.js.map} +0 -0
  734. /package/dist/{delete-A4F5Z54J.js.map → delete-PQIMW2LK.js.map} +0 -0
  735. /package/dist/{demographics-VZKFMM4X.js.map → demographics-F26DIOCM.js.map} +0 -0
  736. /package/dist/{discard-ULRVUJDV.js.map → discard-2EJY6UGP.js.map} +0 -0
  737. /package/dist/{domain-L4WCCX7R.js.map → domain-XLJABLWB.js.map} +0 -0
  738. /package/dist/{draft-O4S5RKWK.js.map → draft-2YND6T4U.js.map} +0 -0
  739. /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
  740. /package/dist/{draft-57OQKHZI.js.map → draft-WRVEANL5.js.map} +0 -0
  741. /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
  742. /package/dist/{facets-EHQKGGJ2.js.map → facets-OPTNDPW2.js.map} +0 -0
  743. /package/dist/{feedback-CAOZPGTT.js.map → feedback-43BPXNBI.js.map} +0 -0
  744. /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-35ZSDL6Z.js.map} +0 -0
  745. /package/dist/{fetch-ETKT2RBC.js.map → fetch-O46XBA7S.js.map} +0 -0
  746. /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
  747. /package/dist/{fonts-7VWBQPJF.js.map → fit-CWJ5QQ4R.js.map} +0 -0
  748. /package/dist/{flows-Z7355RMD.js.map → flows-CVORIQ4B.js.map} +0 -0
  749. /package/dist/{ideas-F6CIGTVU.js.map → fonts-6TPYR6IW.js.map} +0 -0
  750. /package/dist/{forecast-OI7YWZ6F.js.map → forecast-2VLA6NJA.js.map} +0 -0
  751. /package/dist/{funnel-2B3JXJPX.js.map → funnel-XLKDLXMG.js.map} +0 -0
  752. /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
  753. /package/dist/{get-2RSN4N3J.js.map → get-O56GGN3V.js.map} +0 -0
  754. /package/dist/{get-6N7QJMIP.js.map → get-WFQ4XEAW.js.map} +0 -0
  755. /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
  756. /package/dist/{google-ads-G7REKD4A.js.map → google-ads-DZMOTUY5.js.map} +0 -0
  757. /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
  758. /package/dist/{history-YMK2JNZU.js.map → history-43BBQZOB.js.map} +0 -0
  759. /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
  760. /package/dist/{hubspot-BUFS7S33.js.map → hubspot-S44MPK3G.js.map} +0 -0
  761. /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
  762. /package/dist/{ingest-XLTRLCDV.js.map → ideas-SLP5WXFF.js.map} +0 -0
  763. /package/dist/{images-WCKTD6Z2.js.map → images-TWZOROCT.js.map} +0 -0
  764. /package/dist/{logo-YSNUUT33.js.map → ingest-5GCZ5ZBV.js.map} +0 -0
  765. /package/dist/{ingest-RQUJGS7K.js.map → ingest-P54J4W3V.js.map} +0 -0
  766. /package/dist/{inspect-KFVAMD4N.js.map → inspect-S4COGUBC.js.map} +0 -0
  767. /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
  768. /package/dist/{keyword-metrics-WYF3QMCW.js.map → keyword-metrics-26CCKFZK.js.map} +0 -0
  769. /package/dist/{keywords-for-site-G5L5EP3T.js.map → keywords-for-site-JWWECF63.js.map} +0 -0
  770. /package/dist/{landing-WUILAWDS.js.map → landing-VFDRADZY.js.map} +0 -0
  771. /package/dist/{leads-4SJ4NJOI.js.map → leads-DTKKYSKH.js.map} +0 -0
  772. /package/dist/{learn-CC6Q5IK2.js.map → learn-GQ75IPRK.js.map} +0 -0
  773. /package/dist/{line-item-writes-YXKYR25W.js.map → line-item-writes-DVVHVR3Y.js.map} +0 -0
  774. /package/dist/{line-items-CKUD2UU4.js.map → line-items-EOZMK7A5.js.map} +0 -0
  775. /package/dist/{link-VBYFI7AM.js.map → link-R5NGCQ5H.js.map} +0 -0
  776. /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-DHZO3IJX.js.map} +0 -0
  777. /package/dist/{list-VSUF2IWT.js.map → list-57QBEGLM.js.map} +0 -0
  778. /package/dist/{list-ENYDGT3F.js.map → list-Q44BBHDI.js.map} +0 -0
  779. /package/dist/{list-6ZNZGRRK.js.map → list-W6G2NTG5.js.map} +0 -0
  780. /package/dist/{log-AACKGBDW.js.map → log-B6X5EPKA.js.map} +0 -0
  781. /package/dist/{performance-K7E5KAZW.js.map → logo-VHXH4J6A.js.map} +0 -0
  782. /package/dist/{make-ED7HBLH3.js.map → make-OIFLF3QS.js.map} +0 -0
  783. /package/dist/{map-63CQHWPI.js.map → map-PIOZT2MQ.js.map} +0 -0
  784. /package/dist/{mcp-RKAXC6IP.js.map → mcp-GFKHLWDB.js.map} +0 -0
  785. /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-VMMMW5UM.js.map} +0 -0
  786. /package/dist/{members-SELIA674.js.map → members-W2QBMNIW.js.map} +0 -0
  787. /package/dist/{normalize-VAZPTBDX.js.map → normalize-N6XC3SLC.js.map} +0 -0
  788. /package/dist/{options-6FCNFWUF.js.map → options-XYJY2OEQ.js.map} +0 -0
  789. /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
  790. /package/dist/{reddit-XIHRI3CN.js.map → performance-7NEZTOJ5.js.map} +0 -0
  791. /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
  792. /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
  793. /package/dist/{promoted-tweet-writes-PKEO6WUK.js.map → promoted-tweet-writes-X2F7R2AE.js.map} +0 -0
  794. /package/dist/{promoted-tweets-7MXVZRBI.js.map → promoted-tweets-XCSD6VKP.js.map} +0 -0
  795. /package/dist/{publish-MPMGRV72.js.map → publish-OBY6E43R.js.map} +0 -0
  796. /package/dist/{run-KBN5K7LE.js.map → reddit-WJ6KHYBC.js.map} +0 -0
  797. /package/dist/{refresh-A27N75NH.js.map → refresh-G5BQ2LWU.js.map} +0 -0
  798. /package/dist/{release-UKRB5IUN.js.map → release-PBZO35KY.js.map} +0 -0
  799. /package/dist/{remove-AFNFVPZY.js.map → remove-VJ2MEUPM.js.map} +0 -0
  800. /package/dist/{reopen-M5HE6J3G.js.map → reopen-W3LYOHSR.js.map} +0 -0
  801. /package/dist/{rerun-A2XHGFZS.js.map → rerun-4GDNBFNM.js.map} +0 -0
  802. /package/dist/{research-U7RQXMYH.js.map → research-4YTFPGH7.js.map} +0 -0
  803. /package/dist/{research-BLDY5UWH.js.map → research-LOQRIBO6.js.map} +0 -0
  804. /package/dist/{reset-4CCWB2RT.js.map → reset-55CCQGXB.js.map} +0 -0
  805. /package/dist/{reset-J3KCWFMZ.js.map → reset-AVTQEJPZ.js.map} +0 -0
  806. /package/dist/{resolve-HEK27ANI.js.map → resolve-E6FNMFE3.js.map} +0 -0
  807. /package/dist/{retry-VVI6N6UR.js.map → retry-HBJ7MKVI.js.map} +0 -0
  808. /package/dist/{retry-HPZIUG2S.js.map → retry-QBRYM6MG.js.map} +0 -0
  809. /package/dist/{rules-SK5DFFPY.js.map → rules-XNDBGOIS.js.map} +0 -0
  810. /package/dist/{rules-add-YQNYSME7.js.map → rules-add-UM3ZKSVD.js.map} +0 -0
  811. /package/dist/{run-M7ZDE6IA.js.map → run-D4YHZ4Z4.js.map} +0 -0
  812. /package/dist/{shared-NDRFKAH7.js.map → run-ZCJ7NP63.js.map} +0 -0
  813. /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-VQZAP32M.js.map} +0 -0
  814. /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-LEU4M44N.js.map} +0 -0
  815. /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-PSWSYRSC.js.map} +0 -0
  816. /package/dist/{schedule-QMOKWTJ3.js.map → schedule-AAH7HYFK.js.map} +0 -0
  817. /package/dist/{scheduled-agents-FCQHQ6KR.js.map → scheduled-agents-HDABMHZI.js.map} +0 -0
  818. /package/dist/{schema-THFLCMBN.js.map → schema-OH5OWMVQ.js.map} +0 -0
  819. /package/dist/{search-XIUYSWO6.js.map → search-BSDPVSGA.js.map} +0 -0
  820. /package/dist/{select-QBU6ED4K.js.map → select-EI4QF4YZ.js.map} +0 -0
  821. /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-RKDAGUWG.js.map} +0 -0
  822. /package/dist/{setup-links-QVI6NAOK.js.map → setup-links-CNNJA7AB.js.map} +0 -0
  823. /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
  824. /package/dist/{site-PZPJY33N.js.map → site-NV4U7PIF.js.map} +0 -0
  825. /package/dist/{sources-ER7ANNG3.js.map → sources-ATONL7W5.js.map} +0 -0
  826. /package/dist/{sources-RMNFV4CA.js.map → sources-C3TGHKLQ.js.map} +0 -0
  827. /package/dist/{stale-ITFCPOER.js.map → stale-6QPXL6BZ.js.map} +0 -0
  828. /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
  829. /package/dist/{status-ABMJBCPJ.js.map → status-BML3F4MZ.js.map} +0 -0
  830. /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
  831. /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
  832. /package/dist/{sync-QDD3MRJ6.js.map → sync-DZAOUQPE.js.map} +0 -0
  833. /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-RFEL65JE.js.map} +0 -0
  834. /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
  835. /package/dist/{tags-EWHPUM2V.js.map → tags-2KSXCJRZ.js.map} +0 -0
  836. /package/dist/{tags-KBCX6BDU.js.map → tags-662KZJLV.js.map} +0 -0
  837. /package/dist/{tags-5JYOEYIT.js.map → tags-6QBVW25V.js.map} +0 -0
  838. /package/dist/{tags-PEWN6GNZ.js.map → tags-LQCEJGIL.js.map} +0 -0
  839. /package/dist/{tags-B473RWAA.js.map → tags-RIVD54ZG.js.map} +0 -0
  840. /package/dist/{targeting-criteria-EU65WUUF.js.map → targeting-criteria-XNLYPIL2.js.map} +0 -0
  841. /package/dist/{targets-KVXS5QKM.js.map → targets-OYIVS5KJ.js.map} +0 -0
  842. /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-WT43CF7V.js.map} +0 -0
  843. /package/dist/{top-companies-OOX3DITI.js.map → top-companies-6QQMOS2Y.js.map} +0 -0
  844. /package/dist/{translate-OXVIMYHE.js.map → translate-7QN7JFGU.js.map} +0 -0
  845. /package/dist/{triggers-OX2GKG4Y.js.map → triggers-LVQY3QJ2.js.map} +0 -0
  846. /package/dist/{unlink-3USEPJSA.js.map → unlink-5ASZTCS2.js.map} +0 -0
  847. /package/dist/{unstage-VSCNPTAC.js.map → unstage-LNZTEATR.js.map} +0 -0
  848. /package/dist/{update-6JKTH65B.js.map → update-7BIR4GYO.js.map} +0 -0
  849. /package/dist/{update-FG4ELXYJ.js.map → update-BRLM5DB3.js.map} +0 -0
  850. /package/dist/{update-HZHG67N6.js.map → update-DRZAAJQ2.js.map} +0 -0
  851. /package/dist/{update-GZFKHA3A.js.map → update-NOWC3ICD.js.map} +0 -0
  852. /package/dist/{upload-BKCQ6FRW.js.map → upload-457Q4ANZ.js.map} +0 -0
  853. /package/dist/{url-params-UN4DRN2H.js.map → url-params-KM4NJGYC.js.map} +0 -0
  854. /package/dist/{validate-ZS2M5Q3V.js.map → validate-COLEPJBA.js.map} +0 -0
  855. /package/dist/{videos-I6YXFBFT.js.map → videos-5IDZTEWC.js.map} +0 -0
  856. /package/dist/{web-UGU7YMII.js.map → web-FZYOCCYN.js.map} +0 -0
  857. /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-I4DMP7RU.js.map} +0 -0
  858. /package/dist/{write-commands-6VR2UD3T.js.map → write-commands-FYB6QG7K.js.map} +0 -0
  859. /package/dist/{x-WK2VQDPF.js.map → x-OMN5DDLM.js.map} +0 -0
@@ -0,0 +1,391 @@
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
+ } from "./chunk-A4MVVPJ2.js";
9
+
10
+ // src/commands/ads/meta/customer-list.ts
11
+ import { createHash } from "crypto";
12
+ import { parse } from "csv-parse/sync";
13
+ import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
14
+ var DATE_ORDERS = ["DMY", "MDY"];
15
+ function sha256(value) {
16
+ return createHash("sha256").update(value, "utf8").digest("hex");
17
+ }
18
+ function headerWords(cell) {
19
+ return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
20
+ }
21
+ var HEADER_PATTERNS = [
22
+ [/^(e ?mail|email address|correo|correo electronico|mail)$/, "EMAIL"],
23
+ [/^(phone|phone number|mobile|mobile phone|telefono|movil|tel|celular|cell)$/, "PHONE"],
24
+ [/^(first name|firstname|fname|fn|given name|nombre)$/, "FN"],
25
+ [/^(last name|lastname|lname|ln|surname|family name|apellido|apellidos)$/, "LN"],
26
+ [/^(first initial|fi)$/, "FI"],
27
+ [/^(city|town|ct|ciudad|localidad)$/, "CT"],
28
+ [/^(state|province|region|st|provincia|estado)$/, "ST"],
29
+ [/^(zip|zip code|zipcode|postcode|post code|postal code|cp|codigo postal)$/, "ZIP"],
30
+ [/^(country|country code|pais)$/, "COUNTRY"],
31
+ [/^(dob|birthday|birth date|birthdate|date of birth|fecha de nacimiento|fecha nacimiento)$/, "DOB"],
32
+ [/^(doby|birth year|year of birth)$/, "DOBY"],
33
+ [/^(dobm|birth month)$/, "DOBM"],
34
+ [/^(dobd|birth day)$/, "DOBD"],
35
+ [/^(gen|gender|sex|genero|sexo)$/, "GEN"],
36
+ [/^(madid|idfa|aaid|gaid|advertising id|mobile advertiser id)$/, "MADID"],
37
+ [/^(extern id|external id|customer id|client id|crm id)$/, "EXTERN_ID"],
38
+ [/^(lookalike value|value)$/, "LOOKALIKE_VALUE"]
39
+ ];
40
+ function headerKey(cell) {
41
+ const words = headerWords(cell);
42
+ const upper = cell.trim().toUpperCase();
43
+ if (CUSTOMER_LIST_KEYS.includes(upper)) {
44
+ return upper;
45
+ }
46
+ return HEADER_PATTERNS.find(([pattern]) => pattern.test(words))?.[1];
47
+ }
48
+ function lettersOnly(value) {
49
+ return value.normalize("NFC").toLowerCase().replace(/[^\p{L}]/gu, "");
50
+ }
51
+ function email(value) {
52
+ const normalized = value.trim().toLowerCase();
53
+ return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(normalized) ? normalized : void 0;
54
+ }
55
+ function country(value) {
56
+ const code = value.trim().toUpperCase();
57
+ return /^[A-Z]{2}$/.test(code) && isSupportedCountry(code) ? code : void 0;
58
+ }
59
+ function phone(value, rowCountry) {
60
+ const region = rowCountry ? rowCountry : void 0;
61
+ const parsed = parsePhoneNumberFromString(value.trim(), region);
62
+ return parsed?.isValid() ? parsed.number.replace(/^\+/, "") : void 0;
63
+ }
64
+ function zip(value, rowCountry) {
65
+ const compact = value.toLowerCase().replace(/\s+/g, "");
66
+ if (compact === "") return void 0;
67
+ const us = rowCountry === "US" || /^\d{5}-\d{4}$/.test(compact);
68
+ return us ? /^\d{5}/.exec(compact)?.[0] ?? void 0 : compact;
69
+ }
70
+ function gender(value) {
71
+ const first = value.trim().toLowerCase();
72
+ if (/^(m|male|man|hombre|masculino|h)$/.test(first)) return "m";
73
+ if (/^(f|female|woman|mujer|femenino)$/.test(first)) return "f";
74
+ return void 0;
75
+ }
76
+ var US_STATE_CODES = {
77
+ alabama: "al",
78
+ alaska: "ak",
79
+ arizona: "az",
80
+ arkansas: "ar",
81
+ california: "ca",
82
+ colorado: "co",
83
+ connecticut: "ct",
84
+ delaware: "de",
85
+ districtofcolumbia: "dc",
86
+ washingtondc: "dc",
87
+ florida: "fl",
88
+ georgia: "ga",
89
+ hawaii: "hi",
90
+ idaho: "id",
91
+ illinois: "il",
92
+ indiana: "in",
93
+ iowa: "ia",
94
+ kansas: "ks",
95
+ kentucky: "ky",
96
+ louisiana: "la",
97
+ maine: "me",
98
+ maryland: "md",
99
+ massachusetts: "ma",
100
+ michigan: "mi",
101
+ minnesota: "mn",
102
+ mississippi: "ms",
103
+ missouri: "mo",
104
+ montana: "mt",
105
+ nebraska: "ne",
106
+ nevada: "nv",
107
+ newhampshire: "nh",
108
+ newjersey: "nj",
109
+ newmexico: "nm",
110
+ newyork: "ny",
111
+ northcarolina: "nc",
112
+ northdakota: "nd",
113
+ ohio: "oh",
114
+ oklahoma: "ok",
115
+ oregon: "or",
116
+ pennsylvania: "pa",
117
+ rhodeisland: "ri",
118
+ southcarolina: "sc",
119
+ southdakota: "sd",
120
+ tennessee: "tn",
121
+ texas: "tx",
122
+ utah: "ut",
123
+ vermont: "vt",
124
+ virginia: "va",
125
+ washington: "wa",
126
+ westvirginia: "wv",
127
+ wisconsin: "wi",
128
+ wyoming: "wy",
129
+ puertorico: "pr",
130
+ guam: "gu",
131
+ americansamoa: "as",
132
+ virginislands: "vi",
133
+ usvirginislands: "vi",
134
+ northernmarianaislands: "mp"
135
+ };
136
+ var US_STATE_ABBREVIATIONS = new Set(Object.values(US_STATE_CODES));
137
+ function state(value, rowCountry) {
138
+ const letters = lettersOnly(value);
139
+ if (letters === "") return void 0;
140
+ if (rowCountry === "US") {
141
+ return US_STATE_CODES[letters] ?? (US_STATE_ABBREVIATIONS.has(letters) ? letters : void 0);
142
+ }
143
+ return (rowCountry === void 0 ? US_STATE_CODES[letters] : void 0) ?? letters;
144
+ }
145
+ function datePart(value, length, max) {
146
+ const digits = value.trim();
147
+ if (!/^\d{1,4}$/.test(digits)) return void 0;
148
+ const n = Number(digits);
149
+ if (length === 4) return digits.length === 4 && n >= 1900 && n <= max ? digits : void 0;
150
+ return n >= 1 && n <= max ? String(n).padStart(2, "0") : void 0;
151
+ }
152
+ var SLASHED_DATE = /^(\d{1,2})[/.-](\d{1,2})[/.-](\d{4})$/;
153
+ function dateOrderOf(values, explicit) {
154
+ if (explicit) return explicit;
155
+ let dayFirst = false;
156
+ let monthFirst = false;
157
+ let ambiguous = false;
158
+ for (const value of values) {
159
+ const match = SLASHED_DATE.exec(value.trim());
160
+ if (!match) continue;
161
+ const [first, second] = [Number(match[1]), Number(match[2])];
162
+ dayFirst ||= first > 12;
163
+ monthFirst ||= second > 12;
164
+ ambiguous ||= first <= 12 && second <= 12 && first !== second;
165
+ }
166
+ if (dayFirst && monthFirst) {
167
+ throw new Error(
168
+ "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"
169
+ );
170
+ }
171
+ if (dayFirst) return "DMY";
172
+ if (monthFirst) return "MDY";
173
+ if (ambiguous) {
174
+ throw new Error(
175
+ "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)"
176
+ );
177
+ }
178
+ return void 0;
179
+ }
180
+ function dateOfBirth(value, order) {
181
+ const text = value.trim();
182
+ const iso = /^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(text);
183
+ const slashed = SLASHED_DATE.exec(text);
184
+ 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;
185
+ if (!parts) return void 0;
186
+ const year = datePart(parts[0] ?? "", 4, (/* @__PURE__ */ new Date()).getUTCFullYear());
187
+ const month = datePart(parts[1] ?? "", 2, 12);
188
+ const day = datePart(parts[2] ?? "", 2, 31);
189
+ return year && month && day ? [year, month, day] : void 0;
190
+ }
191
+ function decimalMarkShown(value) {
192
+ const cleaned = value.replace(/[^\d.,]/g, "");
193
+ const lastDot = cleaned.lastIndexOf(".");
194
+ const lastComma = cleaned.lastIndexOf(",");
195
+ if (lastDot >= 0 && lastComma >= 0) return lastDot > lastComma ? "." : ",";
196
+ const mark = lastDot >= 0 ? "." : lastComma >= 0 ? "," : void 0;
197
+ if (mark === void 0) return void 0;
198
+ if (cleaned.split(mark).length > 2) return mark === "." ? "," : ".";
199
+ return /^\d{3}$/.test(cleaned.slice(cleaned.indexOf(mark) + 1)) ? void 0 : mark;
200
+ }
201
+ function decimalMarkOf(values) {
202
+ for (const value of values) {
203
+ const mark = decimalMarkShown(value);
204
+ if (mark) return mark;
205
+ }
206
+ return void 0;
207
+ }
208
+ function numericValue(value, fileMark) {
209
+ const cleaned = value.replace(/[^\d.,-]/g, "");
210
+ const mark = decimalMarkShown(cleaned) ?? fileMark;
211
+ if (mark === void 0 && /[.,]/.test(cleaned)) return void 0;
212
+ const thousands = mark === "," ? "." : ",";
213
+ const plain = cleaned.split(thousands).join("").replace(",", ".");
214
+ const n = Number(plain);
215
+ return plain !== "" && Number.isFinite(n) && n >= 0 ? String(n) : void 0;
216
+ }
217
+ function normalizedCell(key, value, rowCountry, conventions) {
218
+ switch (key) {
219
+ case "EMAIL":
220
+ return email(value);
221
+ case "PHONE":
222
+ return phone(value, rowCountry);
223
+ case "FN":
224
+ case "LN":
225
+ case "CT":
226
+ return lettersOnly(value) || void 0;
227
+ case "FI":
228
+ return lettersOnly(value).slice(0, 1) || void 0;
229
+ case "ST":
230
+ return state(value, rowCountry);
231
+ case "ZIP":
232
+ return zip(value, rowCountry);
233
+ case "COUNTRY":
234
+ return country(value)?.toLowerCase();
235
+ case "DOBY":
236
+ return datePart(value, 4, (/* @__PURE__ */ new Date()).getUTCFullYear());
237
+ case "DOBM":
238
+ return datePart(value, 2, 12);
239
+ case "DOBD":
240
+ return datePart(value, 2, 31);
241
+ case "GEN":
242
+ return gender(value);
243
+ case "MADID":
244
+ 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;
245
+ case "EXTERN_ID":
246
+ return value.trim() || void 0;
247
+ case "LOOKALIKE_VALUE":
248
+ return numericValue(value, conventions.decimalMark);
249
+ default:
250
+ return void 0;
251
+ }
252
+ }
253
+ function planColumns(firstRow, options) {
254
+ if (options.columns) {
255
+ const plan2 = options.columns.map((name, source) => {
256
+ const key = headerKey(name);
257
+ if (!key)
258
+ throw new Error(`--columns: "${name}" is not a column Meta matches on (${CUSTOMER_LIST_KEYS.join(", ")})`);
259
+ return { source, key };
260
+ });
261
+ return { plan: plan2, ignored: [], hasHeader: false };
262
+ }
263
+ const valueHeader = options.valueColumn ? headerWords(options.valueColumn) : void 0;
264
+ const plan = [];
265
+ const ignored = [];
266
+ firstRow.forEach((cell, source) => {
267
+ const named = valueHeader !== void 0 && headerWords(cell) === valueHeader;
268
+ const key = named ? "LOOKALIKE_VALUE" : headerKey(cell);
269
+ if (key && (key !== "LOOKALIKE_VALUE" || named) && !plan.some((entry) => entry.key === key)) {
270
+ plan.push({ source, key });
271
+ } else if (cell.trim() !== "") {
272
+ ignored.push(cell.trim());
273
+ }
274
+ });
275
+ if (valueHeader && !plan.some((entry) => entry.key === "LOOKALIKE_VALUE")) {
276
+ throw new Error(`--value-column "${options.valueColumn}" is not a column of this file`);
277
+ }
278
+ return { plan, ignored, hasHeader: true };
279
+ }
280
+ function schemaOf(plan) {
281
+ return plan.flatMap((entry) => entry.key === "DOB" ? ["DOBY", "DOBM", "DOBD"] : [entry.key]);
282
+ }
283
+ function hashed(key, normalized) {
284
+ return UNHASHED_CUSTOMER_LIST_KEYS.has(key) ? normalized : sha256(normalized);
285
+ }
286
+ function rowCountryOf(row, plan, defaultCountry) {
287
+ const column = plan.find((entry) => entry.key === "COUNTRY");
288
+ return (column ? country(row[column.source] ?? "") : void 0) ?? defaultCountry;
289
+ }
290
+ function countUnreadable(unreadable, key) {
291
+ unreadable[key] = (unreadable[key] ?? 0) + 1;
292
+ }
293
+ function columnCells(entry, raw, rowCountry, unreadable, conventions) {
294
+ const blank = raw.trim() === "";
295
+ if (entry.key === "DOB") {
296
+ const parts = blank ? void 0 : dateOfBirth(raw, conventions.dateOrder);
297
+ if (!blank && !parts) countUnreadable(unreadable, "DOBY");
298
+ return [
299
+ ["DOBY", parts?.[0] ?? ""],
300
+ ["DOBM", parts?.[1] ?? ""],
301
+ ["DOBD", parts?.[2] ?? ""]
302
+ ];
303
+ }
304
+ if (blank) return [[entry.key, ""]];
305
+ const normalized = normalizedCell(entry.key, raw, rowCountry, conventions);
306
+ if (normalized === void 0) countUnreadable(unreadable, entry.key);
307
+ return [[entry.key, normalized ?? ""]];
308
+ }
309
+ function delimiterOf(content) {
310
+ const firstLine = content.replace(/^\uFEFF/, "").split(/\r?\n/).find((line) => line.trim() !== "") ?? "";
311
+ const unquoted = firstLine.replace(/"[^"]*"/g, "");
312
+ const count = (mark) => unquoted.split(mark).length - 1;
313
+ const most = Math.max(count(" "), count(";"), count(","));
314
+ return most === 0 ? "," : [" ", ";", ","].find((mark) => count(mark) === most) ?? ",";
315
+ }
316
+ function customerListFromFile(content, options) {
317
+ const delimiter = delimiterOf(content);
318
+ const table = parse(content, {
319
+ bom: true,
320
+ skip_empty_lines: true,
321
+ relax_column_count: true,
322
+ trim: true,
323
+ delimiter
324
+ });
325
+ const { plan, ignored, hasHeader } = planColumns(table[0] ?? [], options);
326
+ const schema = schemaOf(plan);
327
+ if (!schema.some((key) => IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key))) {
328
+ throw new Error(
329
+ "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)"
330
+ );
331
+ }
332
+ const defaultCountry = options.defaultCountry ? country(options.defaultCountry) : void 0;
333
+ const body = table.slice(hasHeader ? 1 : 0);
334
+ const columnValues = (key) => {
335
+ const column = plan.find((entry) => entry.key === key);
336
+ return column ? body.map((row) => row[column.source] ?? "") : [];
337
+ };
338
+ const conventions = {
339
+ dateOrder: dateOrderOf(columnValues("DOB"), options.dateFormat),
340
+ decimalMark: decimalMarkOf(columnValues("LOOKALIKE_VALUE"))
341
+ };
342
+ const valueBased = schema.includes("LOOKALIKE_VALUE");
343
+ const unreadable = {};
344
+ const rows = [];
345
+ let skippedRows = 0;
346
+ for (const row of body) {
347
+ const rowCountry = rowCountryOf(row, plan, defaultCountry);
348
+ const cells = plan.flatMap(
349
+ (entry) => columnCells(entry, row[entry.source] ?? "", rowCountry, unreadable, conventions)
350
+ );
351
+ const identified = cells.some(([key, value]) => value !== "" && IDENTIFYING_CUSTOMER_LIST_KEYS.includes(key));
352
+ const valued = !valueBased || cells.some(([key, value]) => key === "LOOKALIKE_VALUE" && value !== "");
353
+ if (!identified || !valued) {
354
+ skippedRows++;
355
+ continue;
356
+ }
357
+ rows.push(cells.map(([key, value]) => value === "" ? "" : hashed(key, value)));
358
+ }
359
+ return { schema, rows, skippedRows, unreadable, ignoredColumns: ignored };
360
+ }
361
+ function customerListBatches(rows) {
362
+ const out = [];
363
+ for (let at = 0; at < rows.length; at += CUSTOMER_LIST_BATCH_ROWS)
364
+ out.push(rows.slice(at, at + CUSTOMER_LIST_BATCH_ROWS));
365
+ return out;
366
+ }
367
+ function customerListUploadRefusal(audienceId, action, list) {
368
+ const batches = customerListBatches(list.rows);
369
+ for (const rows of batches) {
370
+ const batch = customerListBatchSchema.safeParse({ schema: list.schema, rows });
371
+ if (!batch.success) return batch.error.issues[0]?.message;
372
+ }
373
+ const change = customAudienceMembersSchema.safeParse({
374
+ audience_id: audienceId,
375
+ action,
376
+ schema: list.schema,
377
+ batches: batches.map((rows, index) => ({ fileId: `local-${index}`, rows: rows.length }))
378
+ });
379
+ if (change.success) return void 0;
380
+ const issue = change.error.issues[0];
381
+ return issue?.path[0] === "audience_id" ? `${audienceId} is not a custom audience id or a meta_temp_* ref from this chat` : issue?.message;
382
+ }
383
+
384
+ export {
385
+ DATE_ORDERS,
386
+ decimalMarkShown,
387
+ customerListFromFile,
388
+ customerListBatches,
389
+ customerListUploadRefusal
390
+ };
391
+ //# sourceMappingURL=chunk-5GQCN2QZ.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 CustomerListKey,\n customAudienceMembersSchema,\n customerListBatchSchema,\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 /** 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 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 }\n return { schema, rows, skippedRows, unreadable, ignoredColumns: ignored };\n}\n\n/** The list's rows in the batches they are uploaded in — Meta's per-request ceiling each. */\nexport function customerListBatches(rows: readonly string[][]): string[][][] {\n const out: string[][][] = [];\n for (let at = 0; at < rows.length; at += CUSTOMER_LIST_BATCH_ROWS)\n out.push(rows.slice(at, at + CUSTOMER_LIST_BATCH_ROWS));\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\">,\n): string | undefined {\n const batches = customerListBatches(list.rows);\n for (const rows of batches) {\n const batch = customerListBatchSchema.safeParse({ schema: list.schema, rows });\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((rows, index) => ({ fileId: `local-${index}`, rows: 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"]}