@koda-sl/baker-cli 0.554.0 → 0.556.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 +10 -4
- package/dist/account-H5CL6KUY.js +82 -0
- package/dist/account-assets-QMKT5AT7.js +290 -0
- package/dist/account-level-BELF6JHB.js +611 -0
- package/dist/account-reads-T6GTSAXE.js +219 -0
- package/dist/account-users-ZGJCVGX4.js +64 -0
- package/dist/accounts-EXQNPSYH.js +701 -0
- package/dist/accounts-GNVLFZ3X.js +80 -0
- package/dist/actions-Q2BMP27K.js +55 -0
- package/dist/activecampaign-SJO2YK6M.js +938 -0
- package/dist/add-Q3FGYX5Q.js +305 -0
- package/dist/add-YGQBSEVK.js +107 -0
- package/dist/ads-CWKKIYD6.js +48 -0
- package/dist/ads-H5AEYIY3.js +120 -0
- package/dist/adsets-BUIT7HF2.js +182 -0
- package/dist/advertisers-ZAHXMIAT.js +123 -0
- package/dist/analytics-QW5ZXDJR.js +447 -0
- package/dist/analytics-XPU5SANS.js +2437 -0
- package/dist/animate-Q43SOWB4.js +480 -0
- package/dist/asset-writes-JVFE457M.js +50 -0
- package/dist/assign-HJ2NXW4W.js +80 -0
- package/dist/audience-size-IM3N6W7C.js +76 -0
- package/dist/audience-writes-DWSCHYQF.js +327 -0
- package/dist/audiences-PYBJU2GV.js +106 -0
- package/dist/audit-N3LAQMD4.js +154 -0
- package/dist/autocomplete-FBTPT5MA.js +114 -0
- package/dist/avatars-3OMFIKOJ.js +38 -0
- package/dist/bid-pricing-UUAC4GTQ.js +103 -0
- package/dist/brand-IZYD5SBJ.js +22 -0
- package/dist/brief-TNOKTNFJ.js +543 -0
- package/dist/campaign-groups-3IUOLEK2.js +99 -0
- package/dist/campaign-writes-Y7QNFOE7.js +168 -0
- package/dist/campaigns-2Z6WXIVA.js +130 -0
- package/dist/campaigns-B2AUW4TV.js +111 -0
- package/dist/campaigns-IDEA3LOK.js +113 -0
- package/dist/canvas-PVNQ7YWV.js +46 -0
- package/dist/capabilities-FVMMLKPY.js +147 -0
- package/dist/catalog-URTZYAPU.js +66 -0
- package/dist/catalogs-OEUNVE4N.js +782 -0
- package/dist/chatgpt-6KBW7F5S.js +47 -0
- package/dist/chats-EENMDXWZ.js +449 -0
- package/dist/check-7735BPTR.js +107 -0
- package/dist/chunk-2QGGI7MF.js +831 -0
- package/dist/chunk-3OMFSYQ3.js +344 -0
- package/dist/chunk-4N3Y5QWW.js +29 -0
- package/dist/chunk-4N3Y5QWW.js.map +1 -0
- package/dist/chunk-65CQYRMK.js +98 -0
- package/dist/chunk-6MZFOMLU.js +225 -0
- package/dist/chunk-757ZFIL4.js +910 -0
- package/dist/chunk-75HAGIH6.js +61 -0
- package/dist/chunk-7BVRFQN4.js +430 -0
- package/dist/chunk-7TDJCDKT.js +163 -0
- package/dist/chunk-7WDH6OKW.js +1902 -0
- package/dist/chunk-AL4MRNYI.js +709 -0
- package/dist/chunk-AMM4JMSN.js +91 -0
- package/dist/chunk-AU3IMZZC.js +19 -0
- package/dist/chunk-BMNOMOWP.js +156 -0
- package/dist/chunk-BS2MC62Y.js +203 -0
- package/dist/chunk-C6PWVZQE.js +103 -0
- package/dist/chunk-CDTAKCJR.js +178 -0
- package/dist/chunk-CH44XVPE.js +142 -0
- package/dist/chunk-CJWLDKFO.js +494 -0
- package/dist/chunk-DWPOAU4Z.js +5471 -0
- package/dist/chunk-EENYLJUN.js +225 -0
- package/dist/chunk-EGVWSAWY.js +83 -0
- package/dist/chunk-EGVWSAWY.js.map +1 -0
- package/dist/chunk-EJBLF2LI.js +167 -0
- package/dist/chunk-EJMPKO6V.js +287 -0
- package/dist/chunk-EKXLJRO3.js +197 -0
- package/dist/chunk-EL3TDR5S.js +1744 -0
- package/dist/chunk-GRDZWZKQ.js +249 -0
- package/dist/chunk-GVUBRSD3.js +51 -0
- package/dist/chunk-GYREQDTJ.js +392 -0
- package/dist/chunk-HBRXFQQV.js +3510 -0
- package/dist/chunk-HLHR3EK2.js +23 -0
- package/dist/chunk-IMFIRELA.js +547 -0
- package/dist/chunk-IOKD77L2.js +89 -0
- package/dist/chunk-KDAINT54.js +131 -0
- package/dist/chunk-KKKZRQFY.js +297 -0
- package/dist/chunk-KLO36KTV.js +224 -0
- package/dist/chunk-LC6PVPJX.js +76 -0
- package/dist/chunk-LETR3RQE.js +275 -0
- package/dist/chunk-MAVT2CJ4.js +66 -0
- package/dist/chunk-MJDN7CR7.js +930 -0
- package/dist/chunk-MKLAZD23.js +7857 -0
- package/dist/chunk-MKLAZD23.js.map +1 -0
- package/dist/chunk-N3PASNUA.js +136 -0
- package/dist/chunk-NL77JRKE.js +170 -0
- package/dist/chunk-OTFHIGEO.js +207 -0
- package/dist/chunk-PCUWBZM3.js +169 -0
- package/dist/chunk-PNWXTOQ4.js +455 -0
- package/dist/chunk-PQFTKHDA.js +479 -0
- package/dist/chunk-Q5DFEVLE.js +148 -0
- package/dist/chunk-QAJFMVGU.js +91 -0
- package/dist/chunk-QXCGWAC6.js +399 -0
- package/dist/chunk-RKDMYL4A.js +438 -0
- package/dist/chunk-SCBSAIVV.js +392 -0
- package/dist/chunk-SPBUE7R4.js +685 -0
- package/dist/chunk-TRAMBRVO.js +191 -0
- package/dist/chunk-TWFZIHKK.js +219 -0
- package/dist/chunk-UCJAPB5Y.js +334 -0
- package/dist/chunk-VFDWUIGR.js +57 -0
- package/dist/chunk-VN3WDB4O.js +45 -0
- package/dist/chunk-VN3WDB4O.js.map +1 -0
- package/dist/chunk-WC3YSN7L.js +604 -0
- package/dist/chunk-X3GWGFZP.js +5368 -0
- package/dist/chunk-X6U3B6YK.js +343 -0
- package/dist/chunk-X6U3B6YK.js.map +1 -0
- package/dist/chunk-XZAVBONI.js +64 -0
- package/dist/chunk-Y5PNLB24.js +84 -0
- package/dist/chunk-ZC6FICZ7.js +2209 -0
- package/dist/chunk-ZEGWP4FP.js +8954 -0
- package/dist/claim-PGDIRXIC.js +200 -0
- package/dist/cli.js +36 -36
- package/dist/companies-WTPKGEB3.js +198 -0
- package/dist/company-6H2H73YP.js +308 -0
- package/dist/complete-2QBC3POO.js +84 -0
- package/dist/connect-35YPFAUL.js +45 -0
- package/dist/conversation-YZFNEWDV.js +96 -0
- package/dist/conversion-upload-command-J2FIO74Y.js +439 -0
- package/dist/conversions-UGRVDRWU.js +78 -0
- package/dist/conversions-ZFDBD3OU.js +140 -0
- package/dist/copy-writes-2B36QJUY.js +170 -0
- package/dist/create-3H67EUTO.js +62 -0
- package/dist/create-ALTOBDP4.js +239 -0
- package/dist/create-C3MWUYX2.js +210 -0
- package/dist/create-WHTT6IXY.js +135 -0
- package/dist/creatives-22BYP5VN.js +118 -0
- package/dist/creatives-IFOPXTZK.js +58 -0
- package/dist/creatives-WBBN6G7H.js +229 -0
- package/dist/creatives-WBBN6G7H.js.map +1 -0
- package/dist/credentials-J5DMQJWN.js +290 -0
- package/dist/critique-PQRVFC52.js +232 -0
- package/dist/critique-X6XVPIUG.js +1451 -0
- package/dist/crm-LWRGJYHW.js +227 -0
- package/dist/crm-RUNEJY2R.js +323 -0
- package/dist/crop-4V4P3SKI.js +113 -0
- package/dist/custom-conversions-V7QPZIB4.js +128 -0
- package/dist/customers-IDB6NLQ6.js +65 -0
- package/dist/delete-2QKVUKKB.js +67 -0
- package/dist/delete-B7BKF24X.js +57 -0
- package/dist/delete-HBRYUWAA.js +69 -0
- package/dist/demographics-JHB3NFLU.js +141 -0
- package/dist/dimensions-KI3OENZD.js +101 -0
- package/dist/discard-FEJ6YL22.js +69 -0
- package/dist/domain-JYWNXBKS.js +101 -0
- package/dist/download-H3ZDQTFG.js +337 -0
- package/dist/download-H3ZDQTFG.js.map +1 -0
- package/dist/download-LOBPOIU5.js +172 -0
- package/dist/draft-EB5ZFDVN.js +557 -0
- package/dist/draft-I2FLECEX.js +220 -0
- package/dist/draft-N56HPS36.js +374 -0
- package/dist/draft-ZLZRTPY6.js +332 -0
- package/dist/engine/index.js +5 -5
- package/dist/experiment-O6726OBP.js +1397 -0
- package/dist/experiments-WVTBHD6G.js +236 -0
- package/dist/extract-UELZV3NI.js +142 -0
- package/dist/extract-UELZV3NI.js.map +1 -0
- package/dist/facets-V2ITIUKD.js +117 -0
- package/dist/feedback-MXUZWVOL.js +115 -0
- package/dist/feedback-PXWPR3NZ.js +136 -0
- package/dist/feedback-record-76RUAHZH.js +269 -0
- package/dist/fetch-QVOOC3FA.js +204 -0
- package/dist/fit-REGMM46H.js +65 -0
- package/dist/flows-EZV3KCV6.js +250 -0
- package/dist/fonts-NUX66HEI.js +39 -0
- package/dist/forecast-W6HKYVX5.js +121 -0
- package/dist/forecast-XDRKCR65.js +169 -0
- package/dist/funnel-3YABA3G2.js +397 -0
- package/dist/ga4-XFJO7VK2.js +55 -0
- package/dist/generate-22HT24SA.js +263 -0
- package/dist/get-GQQLBE5C.js +82 -0
- package/dist/get-NL3YZFUJ.js +62 -0
- package/dist/google-BPB5JLJG.js +162 -0
- package/dist/google-BPB5JLJG.js.map +1 -0
- package/dist/google-UJ4YJGTJ.js +3285 -0
- package/dist/google-ads-RRKKSKDD.js +198 -0
- package/dist/gsc-ILEIJYWP.js +30 -0
- package/dist/history-2UANIBRN.js +102 -0
- package/dist/history-YZ727ZRG.js +153 -0
- package/dist/hubspot-KWLXJ6QD.js +782 -0
- package/dist/ideas-ZO533P5Y.js +45 -0
- package/dist/images-Z7YBWRVJ.js +92 -0
- package/dist/ingest-C2HJ5LUY.js +27 -0
- package/dist/ingest-H53JR4GK.js +123 -0
- package/dist/inspect-BM6GJHQV.js +192 -0
- package/dist/inspiration-WGUU7W5Z.js +53 -0
- package/dist/instant-experiences-U6U3FYIH.js +264 -0
- package/dist/keyword-metrics-R2QCEDYW.js +200 -0
- package/dist/keywords-for-site-NBV72C3W.js +131 -0
- package/dist/landing-5RRWTSWK.js +28 -0
- package/dist/leads-6PF7ZWCH.js +115 -0
- package/dist/leads-IG3IIHXG.js +541 -0
- package/dist/learn-V2LIBEEY.js +207 -0
- package/dist/line-item-writes-GMNWL4DI.js +211 -0
- package/dist/line-items-KPIKXLG4.js +107 -0
- package/dist/link-X7IYKR5V.js +67 -0
- package/dist/linkedin-DJ4VDOF4.js +1344 -0
- package/dist/linkedin-DJ4VDOF4.js.map +1 -0
- package/dist/linkedin-person-47XFTBIN.js +139 -0
- package/dist/list-PHNA7QIF.js +154 -0
- package/dist/list-QF3BANBM.js +306 -0
- package/dist/list-SB3SUTH6.js +67 -0
- package/dist/log-JFLSSUJ6.js +95 -0
- package/dist/make-HZ5KAYSB.js +1367 -0
- package/dist/map-NYJT2MGI.js +436 -0
- package/dist/mcp-ABQEICYR.js +729 -0
- package/dist/media-AT3VV3PU.js +18 -0
- package/dist/media-sources-DEEKEJUB.js +35 -0
- package/dist/members-BX37KHKO.js +47 -0
- package/dist/meta-XUHI3E3L.js +122 -0
- package/dist/meta-XUHI3E3L.js.map +1 -0
- package/dist/normalize-M3VMWF4W.js +806 -0
- package/dist/normalize-MA2FBBIV.js +144 -0
- package/dist/options-NMWWF2HN.js +125 -0
- package/dist/organization-GRAA6ZXU.js +949 -0
- package/dist/page-photos-ABK4CJME.js +118 -0
- package/dist/performance-MQLRSH44.js +5565 -0
- package/dist/performance-RUBIGEAQ.js +27 -0
- package/dist/posts-F7NFSUHV.js +36 -0
- package/dist/preview-IBNFQ5RQ.js +101 -0
- package/dist/preview-IBNFQ5RQ.js.map +1 -0
- package/dist/preview-OV2EZ6YF.js +245 -0
- package/dist/preview-OV2EZ6YF.js.map +1 -0
- package/dist/promoted-tweet-writes-3P6QFGLN.js +183 -0
- package/dist/promoted-tweets-TGFPH7UI.js +119 -0
- package/dist/publish-OUVO65Z5.js +344 -0
- package/dist/reddit-HWQCUSEM.js +29 -0
- package/dist/refresh-ENQDQGTK.js +97 -0
- package/dist/release-ZTVXLUQS.js +63 -0
- package/dist/remove-XAFRT7O7.js +53 -0
- package/dist/reopen-SWSZHXJZ.js +66 -0
- package/dist/rerun-X7XVOAL3.js +96 -0
- package/dist/research-JMU4C4JZ.js +75 -0
- package/dist/research-TDH4OBX6.js +265 -0
- package/dist/reset-34HTKUBQ.js +57 -0
- package/dist/reset-KMMGLM7W.js +57 -0
- package/dist/resolve-2CIIKADD.js +124 -0
- package/dist/retry-V7KZIZKR.js +63 -0
- package/dist/retry-YXM23NSB.js +65 -0
- package/dist/revenue-D4L6U2CW.js +91 -0
- package/dist/rule-writes-HUBHHYEO.js +530 -0
- package/dist/rules-47LFGCPW.js +217 -0
- package/dist/rules-F6RNUOXP.js +99 -0
- package/dist/rules-add-SAQRESVK.js +465 -0
- package/dist/run-3GCYZ2HX.js +71 -0
- package/dist/run-FRPO2WNQ.js +69 -0
- package/dist/scaffold-ad-E6DD6U46.js +1513 -0
- package/dist/scaffold-static-ad-6WNS2PXB.js +1011 -0
- package/dist/scaffold-video-QKXFQ5FC.js +885 -0
- package/dist/schedule-S4XAVVEI.js +64 -0
- package/dist/scheduled-agents-ZWAP6QLC.js +55 -0
- package/dist/schema-EJ2XPUN6.js +135 -0
- package/dist/scrape-O4X6VGV2.js +2209 -0
- package/dist/scrape-O4X6VGV2.js.map +1 -0
- package/dist/search-2BAY3KKX.js +177 -0
- package/dist/select-ABRNFFR2.js +110 -0
- package/dist/set-prompt-5LYHDT4E.js +199 -0
- package/dist/setup-links-QT63UZBR.js +144 -0
- package/dist/shopify-L4ZUI6OT.js +4009 -0
- package/dist/site-S6QVMP7W.js +180 -0
- package/dist/sources-6TWWOO7Q.js +30 -0
- package/dist/sources-ORG5KQSW.js +457 -0
- package/dist/stale-MLQPXNLZ.js +90 -0
- package/dist/status-4G2YUCZR.js +65 -0
- package/dist/stock-5SQ2PGEC.js +211 -0
- package/dist/stock-5SQ2PGEC.js.map +1 -0
- package/dist/studies-QLSKON6M.js +250 -0
- package/dist/studio-ZLBBYHNY.js +49 -0
- package/dist/study-writes-GBUUKX4O.js +471 -0
- package/dist/sync-7LJZPHM3.js +57 -0
- package/dist/sync-definition-MXVL2I2H.js +70 -0
- package/dist/tags-2ARVNEYS.js +23 -0
- package/dist/tags-F4IT7RQR.js +23 -0
- package/dist/tags-F7ZO52EM.js +23 -0
- package/dist/tags-NBGGBHXR.js +227 -0
- package/dist/tags-TCSGQYDR.js +26 -0
- package/dist/targeting-DAUTJDUB.js +762 -0
- package/dist/targeting-criteria-H42LRULY.js +113 -0
- package/dist/targets-WB4E5XL2.js +106 -0
- package/dist/testimonials-RIJSQDSB.js +32 -0
- package/dist/themes-BGBDYQQK.js +95 -0
- package/dist/top-companies-C2W5TJ7G.js +111 -0
- package/dist/transcript-S7VR2GJE.js +165 -0
- package/dist/translate-A4GHRHSP.js +603 -0
- package/dist/triggers-EOKMR74O.js +144 -0
- package/dist/unlink-PC3TMWUT.js +70 -0
- package/dist/unstage-SU2ATDSZ.js +88 -0
- package/dist/update-DKX3EEES.js +155 -0
- package/dist/update-JYZ45YJG.js +66 -0
- package/dist/update-TAZSUOAS.js +192 -0
- package/dist/update-WRJUH2NM.js +101 -0
- package/dist/upload-BLXTMK5Q.js +130 -0
- package/dist/url-params-YVOFU6MK.js +101 -0
- package/dist/validate-44PVFQH7.js +125 -0
- package/dist/videos-RWPQVXS5.js +41 -0
- package/dist/viewer-check-KTRRUVZN.js +83 -0
- package/dist/web-6KUM7Q7S.js +173 -0
- package/dist/winning-ads-IT3O4EAN.js +86 -0
- package/dist/write-commands-3U5ZMIHH.js +1524 -0
- package/dist/write-commands-F5XPPLOO.js +1169 -0
- package/dist/x-X7URL52T.js +47 -0
- package/package.json +1 -1
- package/dist/account-XIC5TTV3.js +0 -82
- package/dist/account-assets-V7KSSTVP.js +0 -290
- package/dist/account-level-2KLG6HTG.js +0 -611
- package/dist/account-reads-ZPZUCB3P.js +0 -219
- package/dist/account-users-XTUKRDWK.js +0 -64
- package/dist/accounts-25JL77F7.js +0 -701
- package/dist/accounts-AF72N4NV.js +0 -80
- package/dist/actions-IJO4JW7J.js +0 -55
- package/dist/activecampaign-PBTUMTO5.js +0 -938
- package/dist/add-KHQXXHC5.js +0 -107
- package/dist/add-YQPFRDVM.js +0 -305
- package/dist/ads-5YCCRXEU.js +0 -48
- package/dist/ads-EVQ37EV3.js +0 -120
- package/dist/adsets-4IW5TRAK.js +0 -182
- package/dist/advertisers-JNOWSZZC.js +0 -123
- package/dist/analytics-CZMCM7XC.js +0 -2437
- package/dist/analytics-K5FCQLI5.js +0 -447
- package/dist/animate-C6BRMRRD.js +0 -480
- package/dist/asset-writes-RF6XTWLY.js +0 -50
- package/dist/assign-WXZNXVJH.js +0 -80
- package/dist/audience-size-ZCWH4CFC.js +0 -76
- package/dist/audience-writes-5KT6FHUY.js +0 -327
- package/dist/audiences-ZDOK3OYC.js +0 -106
- package/dist/audit-RBRXPPKK.js +0 -154
- package/dist/autocomplete-P5OU7QVL.js +0 -114
- package/dist/avatars-UHBA2BQ3.js +0 -38
- package/dist/bid-pricing-LHNYSDG4.js +0 -103
- package/dist/brand-7WL3O74X.js +0 -22
- package/dist/brief-HWZU75WP.js +0 -543
- package/dist/campaign-groups-BYS3GNEP.js +0 -99
- package/dist/campaign-writes-N6OHAK6V.js +0 -168
- package/dist/campaigns-2E4AQBFB.js +0 -113
- package/dist/campaigns-3U5IRXSV.js +0 -130
- package/dist/campaigns-QLKGN4FB.js +0 -111
- package/dist/canvas-GGHJ26ZM.js +0 -46
- package/dist/capabilities-TKEEHR7K.js +0 -147
- package/dist/catalog-7KQN43HS.js +0 -66
- package/dist/catalogs-5CHPI4H6.js +0 -782
- package/dist/chatgpt-YBHXCXWZ.js +0 -47
- package/dist/chats-PBXYH2LT.js +0 -449
- package/dist/check-SVYI72DF.js +0 -107
- package/dist/chunk-2RL2T5JO.js +0 -142
- package/dist/chunk-3HLQZTQ3.js +0 -685
- package/dist/chunk-42JTSTQ3.js +0 -207
- package/dist/chunk-4AEAL63J.js +0 -203
- package/dist/chunk-4PM32OS3.js +0 -57
- package/dist/chunk-4ULGRGBG.js +0 -333
- package/dist/chunk-4ULGRGBG.js.map +0 -1
- package/dist/chunk-4XMPL3RU.js +0 -19
- package/dist/chunk-5AOTCCTT.js +0 -831
- package/dist/chunk-5NLUTJCQ.js +0 -5368
- package/dist/chunk-6FWVRXDW.js +0 -64
- package/dist/chunk-6MXM6DA6.js +0 -225
- package/dist/chunk-73MLPGI2.js +0 -66
- package/dist/chunk-7OVPQX4X.js +0 -163
- package/dist/chunk-B5UVOCYA.js +0 -344
- package/dist/chunk-BRNZMKO4.js +0 -604
- package/dist/chunk-CJFCQMUY.js +0 -438
- package/dist/chunk-D6VQPBVM.js +0 -5471
- package/dist/chunk-DK66PUXL.js +0 -275
- package/dist/chunk-DNH2ZPZP.js +0 -287
- package/dist/chunk-DWSSQBLO.js +0 -103
- package/dist/chunk-ESXUIV6V.js +0 -169
- package/dist/chunk-FSEFZZ2T.js +0 -930
- package/dist/chunk-I4BQTVMY.js +0 -225
- package/dist/chunk-IBBGABK2.js +0 -91
- package/dist/chunk-IC4MREQH.js +0 -219
- package/dist/chunk-IJ6NQKAT.js +0 -61
- package/dist/chunk-IZROFBH7.js +0 -167
- package/dist/chunk-J5UTL4HE.js +0 -3510
- package/dist/chunk-JBMZVC5D.js +0 -91
- package/dist/chunk-LFELUKCA.js +0 -249
- package/dist/chunk-LMOZWB4G.js +0 -98
- package/dist/chunk-LVLTWPRR.js +0 -392
- package/dist/chunk-N5AIO23H.js +0 -2209
- package/dist/chunk-NE3OMP7R.js +0 -23
- package/dist/chunk-NO52OH3Y.js +0 -156
- package/dist/chunk-NRIKX35V.js +0 -399
- package/dist/chunk-NZYWKZ3Q.js +0 -76
- package/dist/chunk-OIORUNKH.js +0 -1902
- package/dist/chunk-OKXLOLEV.js +0 -455
- package/dist/chunk-P4MXGSSJ.js +0 -178
- package/dist/chunk-PYAR343F.js +0 -479
- package/dist/chunk-QFVZIQRQ.js +0 -8954
- package/dist/chunk-QI5UKQX3.js +0 -297
- package/dist/chunk-RCNAKWK7.js +0 -7852
- package/dist/chunk-RCNAKWK7.js.map +0 -1
- package/dist/chunk-RHNNFCRY.js +0 -494
- package/dist/chunk-RJQT7QXX.js +0 -547
- package/dist/chunk-RMZLB4AH.js +0 -197
- package/dist/chunk-S4NMWYHW.js +0 -51
- package/dist/chunk-S6XZIBWV.js +0 -392
- package/dist/chunk-SFQFUQDW.js +0 -170
- package/dist/chunk-SP3MHBME.js +0 -89
- package/dist/chunk-TGT4XHLX.js +0 -131
- package/dist/chunk-VX6GTRT3.js +0 -910
- package/dist/chunk-WGJ2QEW4.js +0 -334
- package/dist/chunk-XB4NKZAQ.js +0 -136
- package/dist/chunk-XSBX3LJP.js +0 -430
- package/dist/chunk-XXBP73RV.js +0 -148
- package/dist/chunk-Y3SK6EMU.js +0 -84
- package/dist/chunk-Y4ZBNZBU.js +0 -191
- package/dist/chunk-YCAJCVW4.js +0 -224
- package/dist/chunk-ZANXEMON.js +0 -1744
- package/dist/chunk-ZMTWQDFC.js +0 -709
- package/dist/claim-Q76T3MYA.js +0 -200
- package/dist/companies-MLWRWQ73.js +0 -198
- package/dist/company-X5Z67PMK.js +0 -308
- package/dist/complete-3CFP6XVY.js +0 -84
- package/dist/connect-QXFAB4RJ.js +0 -45
- package/dist/conversation-C6K6IZTH.js +0 -96
- package/dist/conversion-upload-command-D7S5HF22.js +0 -439
- package/dist/conversions-4ILDIG3K.js +0 -140
- package/dist/conversions-CRL327RY.js +0 -78
- package/dist/copy-writes-FYXKHJDB.js +0 -170
- package/dist/create-LDQ3YHET.js +0 -62
- package/dist/create-TKOG7DNJ.js +0 -210
- package/dist/create-WFMJOZLO.js +0 -135
- package/dist/create-WQNT345R.js +0 -239
- package/dist/creatives-45SJAD3G.js +0 -118
- package/dist/creatives-E4CTMZJJ.js +0 -223
- package/dist/creatives-E4CTMZJJ.js.map +0 -1
- package/dist/creatives-Q4OXNCTT.js +0 -58
- package/dist/credentials-E2AIMWKX.js +0 -290
- package/dist/critique-EWV3O3TD.js +0 -1451
- package/dist/critique-JVT6X2T3.js +0 -232
- package/dist/crm-NQH5FTK6.js +0 -227
- package/dist/crm-YGQKK76D.js +0 -323
- package/dist/crop-KV24WHOR.js +0 -113
- package/dist/custom-conversions-EJNX4MCK.js +0 -128
- package/dist/customers-YFEPJF4G.js +0 -65
- package/dist/delete-2UJVTHRE.js +0 -67
- package/dist/delete-7QAJSOCO.js +0 -69
- package/dist/delete-O4RO2HMR.js +0 -57
- package/dist/demographics-YWBHAMZ5.js +0 -141
- package/dist/dimensions-YXOXHOXW.js +0 -101
- package/dist/discard-YX4XUXG3.js +0 -69
- package/dist/domain-5R6CYVFY.js +0 -101
- package/dist/download-D2O4RYJ3.js +0 -172
- package/dist/download-SYWQXF57.js +0 -299
- package/dist/download-SYWQXF57.js.map +0 -1
- package/dist/draft-3MPADYS4.js +0 -220
- package/dist/draft-L56EMJQT.js +0 -374
- package/dist/draft-NLSQDRVQ.js +0 -332
- package/dist/draft-SGNQOUYH.js +0 -557
- package/dist/experiment-3NDXGQK6.js +0 -1397
- package/dist/experiments-DYNNWQRB.js +0 -236
- package/dist/extract-DWDZI35Y.js +0 -121
- package/dist/extract-DWDZI35Y.js.map +0 -1
- package/dist/facets-Y2IEM37E.js +0 -117
- package/dist/feedback-HJRVTU6C.js +0 -115
- package/dist/feedback-IVSLM5PN.js +0 -136
- package/dist/feedback-record-P7CO3IGE.js +0 -269
- package/dist/fetch-V2U5VUQZ.js +0 -204
- package/dist/fit-JDG6E46O.js +0 -65
- package/dist/flows-DP574PEX.js +0 -250
- package/dist/fonts-RMROS3LX.js +0 -39
- package/dist/forecast-AAHHVTBK.js +0 -169
- package/dist/forecast-BRXNGMGD.js +0 -121
- package/dist/funnel-FQX3DOE7.js +0 -397
- package/dist/ga4-IJ2UUICC.js +0 -55
- package/dist/generate-SYOQE3F7.js +0 -263
- package/dist/get-HMTI2IR6.js +0 -82
- package/dist/get-VFDNTZ54.js +0 -62
- package/dist/google-4FP6AHBL.js +0 -3285
- package/dist/google-HWEDJ4YS.js +0 -144
- package/dist/google-HWEDJ4YS.js.map +0 -1
- package/dist/google-ads-4DLYASRC.js +0 -198
- package/dist/gsc-YAU4EA75.js +0 -30
- package/dist/history-6B6RXNV3.js +0 -102
- package/dist/history-NLZSX4BK.js +0 -153
- package/dist/hubspot-LABBRJ44.js +0 -782
- package/dist/ideas-A4ELJN23.js +0 -45
- package/dist/images-JVNT7KYM.js +0 -92
- package/dist/ingest-GQWR3RHR.js +0 -27
- package/dist/ingest-JYN2IDKV.js +0 -123
- package/dist/inspect-72DY33YD.js +0 -192
- package/dist/inspiration-DNWTXEPX.js +0 -53
- package/dist/instant-experiences-6NTBX4SL.js +0 -264
- package/dist/keyword-metrics-GP7L2MQE.js +0 -200
- package/dist/keywords-for-site-6YWAUOKJ.js +0 -131
- package/dist/landing-EKHAZS5P.js +0 -28
- package/dist/leads-RN6RYOMU.js +0 -541
- package/dist/leads-UCXIIA5K.js +0 -115
- package/dist/learn-EJEFERQZ.js +0 -207
- package/dist/line-item-writes-IMCE2FDW.js +0 -211
- package/dist/line-items-ISUC3WDO.js +0 -107
- package/dist/link-6QL4ZVSU.js +0 -67
- package/dist/linkedin-OFL77SUR.js +0 -1330
- package/dist/linkedin-OFL77SUR.js.map +0 -1
- package/dist/linkedin-person-C24CBKCH.js +0 -139
- package/dist/list-2VNI3U7I.js +0 -154
- package/dist/list-PZD2QOZL.js +0 -67
- package/dist/list-SUXUMXPJ.js +0 -306
- package/dist/log-VLI7KQF2.js +0 -95
- package/dist/make-365ZJ25L.js +0 -1367
- package/dist/map-OEFL45WA.js +0 -436
- package/dist/mcp-NCZYQXQL.js +0 -729
- package/dist/media-WASM45QW.js +0 -18
- package/dist/media-sources-CZDK4W5Q.js +0 -35
- package/dist/members-N3PQSVQC.js +0 -47
- package/dist/meta-QFLNABF5.js +0 -122
- package/dist/meta-QFLNABF5.js.map +0 -1
- package/dist/normalize-4OKUF5BJ.js +0 -806
- package/dist/normalize-6DEJPTBF.js +0 -144
- package/dist/options-OJX77MYT.js +0 -125
- package/dist/organization-URQGKFEC.js +0 -949
- package/dist/page-photos-N4S7U7FR.js +0 -118
- package/dist/performance-P5T4LJRG.js +0 -27
- package/dist/performance-SIWBDORI.js +0 -5565
- package/dist/posts-MVCGZV54.js +0 -36
- package/dist/preview-DMTQR6ZW.js +0 -218
- package/dist/preview-DMTQR6ZW.js.map +0 -1
- package/dist/promoted-tweet-writes-S2HP5DEI.js +0 -183
- package/dist/promoted-tweets-WZT4N5IR.js +0 -119
- package/dist/publish-EDYBQHGJ.js +0 -344
- package/dist/reddit-DEGGHR4M.js +0 -29
- package/dist/refresh-HPNJGI2U.js +0 -97
- package/dist/release-H7M37CEO.js +0 -63
- package/dist/remove-MV4YS72N.js +0 -53
- package/dist/reopen-EFW2SKOY.js +0 -66
- package/dist/rerun-OM4N74YK.js +0 -96
- package/dist/research-7YDQOKA6.js +0 -265
- package/dist/research-MHXKAQW4.js +0 -75
- package/dist/reset-HT4AGJPR.js +0 -57
- package/dist/reset-XPZQ5F4D.js +0 -57
- package/dist/resolve-RTTXEN2B.js +0 -124
- package/dist/retry-DVLVWHEK.js +0 -63
- package/dist/retry-SBGWOUQO.js +0 -65
- package/dist/revenue-KJLJ53XY.js +0 -91
- package/dist/rule-writes-DNXELESR.js +0 -530
- package/dist/rules-KCSET46P.js +0 -217
- package/dist/rules-NVKU732Z.js +0 -99
- package/dist/rules-add-KY42EHJE.js +0 -465
- package/dist/run-2LQ7XJEO.js +0 -69
- package/dist/run-M7YU6KCV.js +0 -71
- package/dist/scaffold-ad-6YPZ75YJ.js +0 -1513
- package/dist/scaffold-static-ad-UJEWTDU5.js +0 -1011
- package/dist/scaffold-video-M4VWSVJ6.js +0 -885
- package/dist/schedule-J7HZQ2EL.js +0 -64
- package/dist/scheduled-agents-IVUQUKF4.js +0 -55
- package/dist/schema-LHBKBUV7.js +0 -135
- package/dist/scrape-FQUGOXCG.js +0 -2241
- package/dist/scrape-FQUGOXCG.js.map +0 -1
- package/dist/search-3AW52FO6.js +0 -177
- package/dist/select-STIWQ36I.js +0 -110
- package/dist/set-prompt-TODWV2F4.js +0 -199
- package/dist/setup-links-MNBD3UMH.js +0 -144
- package/dist/shopify-RJWLTNPQ.js +0 -4009
- package/dist/site-ZZUKS6MQ.js +0 -180
- package/dist/sources-36MJ6T4V.js +0 -30
- package/dist/sources-GNLQHTSJ.js +0 -457
- package/dist/stale-GJN7UO3D.js +0 -90
- package/dist/status-6EGB6ORB.js +0 -65
- package/dist/stock-DJ6I3CTO.js +0 -187
- package/dist/stock-DJ6I3CTO.js.map +0 -1
- package/dist/studies-4XXCEAHH.js +0 -250
- package/dist/studio-OARORMDJ.js +0 -49
- package/dist/study-writes-J56UIIE3.js +0 -471
- package/dist/sync-QHM3LMAX.js +0 -57
- package/dist/sync-definition-YXGN6PIQ.js +0 -70
- package/dist/tags-GHV5R7NI.js +0 -26
- package/dist/tags-IDWUV2FY.js +0 -227
- package/dist/tags-MBBRBZJH.js +0 -23
- package/dist/tags-MQYF2JHQ.js +0 -23
- package/dist/tags-ZGXJHATH.js +0 -23
- package/dist/targeting-KJ4DI56R.js +0 -762
- package/dist/targeting-criteria-GDCXOAUD.js +0 -113
- package/dist/targets-MYHOPAYY.js +0 -106
- package/dist/testimonials-R6RFGAKP.js +0 -32
- package/dist/themes-LHVXXVTX.js +0 -95
- package/dist/top-companies-POTV3Y2A.js +0 -111
- package/dist/transcript-4RVYKDVZ.js +0 -165
- package/dist/translate-UCASCVMN.js +0 -603
- package/dist/triggers-XHMMOZJK.js +0 -144
- package/dist/unlink-3IW3EORE.js +0 -70
- package/dist/unstage-APVF6KHB.js +0 -88
- package/dist/update-2VSJH4LQ.js +0 -66
- package/dist/update-42QYBUE3.js +0 -101
- package/dist/update-ESK6PSME.js +0 -192
- package/dist/update-V7SRDGHN.js +0 -155
- package/dist/upload-42IR5RIL.js +0 -130
- package/dist/url-params-GEESXN57.js +0 -101
- package/dist/validate-Z5SSEUES.js +0 -125
- package/dist/videos-PJAPZPOT.js +0 -41
- package/dist/viewer-check-6M34VY7K.js +0 -83
- package/dist/web-PUVVFMV3.js +0 -173
- package/dist/winning-ads-ZCP4MIEQ.js +0 -86
- package/dist/write-commands-5LEEPKA7.js +0 -1169
- package/dist/write-commands-ZS4O4DSV.js +0 -1524
- package/dist/x-ZKCLP23S.js +0 -47
- /package/dist/{account-XIC5TTV3.js.map → account-H5CL6KUY.js.map} +0 -0
- /package/dist/{account-assets-V7KSSTVP.js.map → account-assets-QMKT5AT7.js.map} +0 -0
- /package/dist/{account-level-2KLG6HTG.js.map → account-level-BELF6JHB.js.map} +0 -0
- /package/dist/{account-reads-ZPZUCB3P.js.map → account-reads-T6GTSAXE.js.map} +0 -0
- /package/dist/{account-users-XTUKRDWK.js.map → account-users-ZGJCVGX4.js.map} +0 -0
- /package/dist/{accounts-25JL77F7.js.map → accounts-EXQNPSYH.js.map} +0 -0
- /package/dist/{accounts-AF72N4NV.js.map → accounts-GNVLFZ3X.js.map} +0 -0
- /package/dist/{actions-IJO4JW7J.js.map → actions-Q2BMP27K.js.map} +0 -0
- /package/dist/{activecampaign-PBTUMTO5.js.map → activecampaign-SJO2YK6M.js.map} +0 -0
- /package/dist/{add-YQPFRDVM.js.map → add-Q3FGYX5Q.js.map} +0 -0
- /package/dist/{add-KHQXXHC5.js.map → add-YGQBSEVK.js.map} +0 -0
- /package/dist/{ads-5YCCRXEU.js.map → ads-CWKKIYD6.js.map} +0 -0
- /package/dist/{ads-EVQ37EV3.js.map → ads-H5AEYIY3.js.map} +0 -0
- /package/dist/{adsets-4IW5TRAK.js.map → adsets-BUIT7HF2.js.map} +0 -0
- /package/dist/{advertisers-JNOWSZZC.js.map → advertisers-ZAHXMIAT.js.map} +0 -0
- /package/dist/{analytics-K5FCQLI5.js.map → analytics-QW5ZXDJR.js.map} +0 -0
- /package/dist/{analytics-CZMCM7XC.js.map → analytics-XPU5SANS.js.map} +0 -0
- /package/dist/{animate-C6BRMRRD.js.map → animate-Q43SOWB4.js.map} +0 -0
- /package/dist/{asset-writes-RF6XTWLY.js.map → asset-writes-JVFE457M.js.map} +0 -0
- /package/dist/{assign-WXZNXVJH.js.map → assign-HJ2NXW4W.js.map} +0 -0
- /package/dist/{audience-size-ZCWH4CFC.js.map → audience-size-IM3N6W7C.js.map} +0 -0
- /package/dist/{audience-writes-5KT6FHUY.js.map → audience-writes-DWSCHYQF.js.map} +0 -0
- /package/dist/{audiences-ZDOK3OYC.js.map → audiences-PYBJU2GV.js.map} +0 -0
- /package/dist/{audit-RBRXPPKK.js.map → audit-N3LAQMD4.js.map} +0 -0
- /package/dist/{autocomplete-P5OU7QVL.js.map → autocomplete-FBTPT5MA.js.map} +0 -0
- /package/dist/{avatars-UHBA2BQ3.js.map → avatars-3OMFIKOJ.js.map} +0 -0
- /package/dist/{bid-pricing-LHNYSDG4.js.map → bid-pricing-UUAC4GTQ.js.map} +0 -0
- /package/dist/{brand-7WL3O74X.js.map → brand-IZYD5SBJ.js.map} +0 -0
- /package/dist/{brief-HWZU75WP.js.map → brief-TNOKTNFJ.js.map} +0 -0
- /package/dist/{campaign-groups-BYS3GNEP.js.map → campaign-groups-3IUOLEK2.js.map} +0 -0
- /package/dist/{campaign-writes-N6OHAK6V.js.map → campaign-writes-Y7QNFOE7.js.map} +0 -0
- /package/dist/{campaigns-3U5IRXSV.js.map → campaigns-2Z6WXIVA.js.map} +0 -0
- /package/dist/{campaigns-QLKGN4FB.js.map → campaigns-B2AUW4TV.js.map} +0 -0
- /package/dist/{campaigns-2E4AQBFB.js.map → campaigns-IDEA3LOK.js.map} +0 -0
- /package/dist/{canvas-GGHJ26ZM.js.map → canvas-PVNQ7YWV.js.map} +0 -0
- /package/dist/{capabilities-TKEEHR7K.js.map → capabilities-FVMMLKPY.js.map} +0 -0
- /package/dist/{catalog-7KQN43HS.js.map → catalog-URTZYAPU.js.map} +0 -0
- /package/dist/{catalogs-5CHPI4H6.js.map → catalogs-OEUNVE4N.js.map} +0 -0
- /package/dist/{chatgpt-YBHXCXWZ.js.map → chatgpt-6KBW7F5S.js.map} +0 -0
- /package/dist/{chats-PBXYH2LT.js.map → chats-EENMDXWZ.js.map} +0 -0
- /package/dist/{check-SVYI72DF.js.map → check-7735BPTR.js.map} +0 -0
- /package/dist/{chunk-5AOTCCTT.js.map → chunk-2QGGI7MF.js.map} +0 -0
- /package/dist/{chunk-B5UVOCYA.js.map → chunk-3OMFSYQ3.js.map} +0 -0
- /package/dist/{chunk-LMOZWB4G.js.map → chunk-65CQYRMK.js.map} +0 -0
- /package/dist/{chunk-I4BQTVMY.js.map → chunk-6MZFOMLU.js.map} +0 -0
- /package/dist/{chunk-VX6GTRT3.js.map → chunk-757ZFIL4.js.map} +0 -0
- /package/dist/{chunk-IJ6NQKAT.js.map → chunk-75HAGIH6.js.map} +0 -0
- /package/dist/{chunk-XSBX3LJP.js.map → chunk-7BVRFQN4.js.map} +0 -0
- /package/dist/{chunk-7OVPQX4X.js.map → chunk-7TDJCDKT.js.map} +0 -0
- /package/dist/{chunk-OIORUNKH.js.map → chunk-7WDH6OKW.js.map} +0 -0
- /package/dist/{chunk-ZMTWQDFC.js.map → chunk-AL4MRNYI.js.map} +0 -0
- /package/dist/{chunk-JBMZVC5D.js.map → chunk-AMM4JMSN.js.map} +0 -0
- /package/dist/{chunk-4XMPL3RU.js.map → chunk-AU3IMZZC.js.map} +0 -0
- /package/dist/{chunk-NO52OH3Y.js.map → chunk-BMNOMOWP.js.map} +0 -0
- /package/dist/{chunk-4AEAL63J.js.map → chunk-BS2MC62Y.js.map} +0 -0
- /package/dist/{chunk-DWSSQBLO.js.map → chunk-C6PWVZQE.js.map} +0 -0
- /package/dist/{chunk-P4MXGSSJ.js.map → chunk-CDTAKCJR.js.map} +0 -0
- /package/dist/{chunk-2RL2T5JO.js.map → chunk-CH44XVPE.js.map} +0 -0
- /package/dist/{chunk-RHNNFCRY.js.map → chunk-CJWLDKFO.js.map} +0 -0
- /package/dist/{chunk-D6VQPBVM.js.map → chunk-DWPOAU4Z.js.map} +0 -0
- /package/dist/{chunk-6MXM6DA6.js.map → chunk-EENYLJUN.js.map} +0 -0
- /package/dist/{chunk-IZROFBH7.js.map → chunk-EJBLF2LI.js.map} +0 -0
- /package/dist/{chunk-DNH2ZPZP.js.map → chunk-EJMPKO6V.js.map} +0 -0
- /package/dist/{chunk-RMZLB4AH.js.map → chunk-EKXLJRO3.js.map} +0 -0
- /package/dist/{chunk-ZANXEMON.js.map → chunk-EL3TDR5S.js.map} +0 -0
- /package/dist/{chunk-LFELUKCA.js.map → chunk-GRDZWZKQ.js.map} +0 -0
- /package/dist/{chunk-S4NMWYHW.js.map → chunk-GVUBRSD3.js.map} +0 -0
- /package/dist/{chunk-LVLTWPRR.js.map → chunk-GYREQDTJ.js.map} +0 -0
- /package/dist/{chunk-J5UTL4HE.js.map → chunk-HBRXFQQV.js.map} +0 -0
- /package/dist/{chunk-NE3OMP7R.js.map → chunk-HLHR3EK2.js.map} +0 -0
- /package/dist/{chunk-RJQT7QXX.js.map → chunk-IMFIRELA.js.map} +0 -0
- /package/dist/{chunk-SP3MHBME.js.map → chunk-IOKD77L2.js.map} +0 -0
- /package/dist/{chunk-TGT4XHLX.js.map → chunk-KDAINT54.js.map} +0 -0
- /package/dist/{chunk-QI5UKQX3.js.map → chunk-KKKZRQFY.js.map} +0 -0
- /package/dist/{chunk-YCAJCVW4.js.map → chunk-KLO36KTV.js.map} +0 -0
- /package/dist/{chunk-NZYWKZ3Q.js.map → chunk-LC6PVPJX.js.map} +0 -0
- /package/dist/{chunk-DK66PUXL.js.map → chunk-LETR3RQE.js.map} +0 -0
- /package/dist/{chunk-73MLPGI2.js.map → chunk-MAVT2CJ4.js.map} +0 -0
- /package/dist/{chunk-FSEFZZ2T.js.map → chunk-MJDN7CR7.js.map} +0 -0
- /package/dist/{chunk-XB4NKZAQ.js.map → chunk-N3PASNUA.js.map} +0 -0
- /package/dist/{chunk-SFQFUQDW.js.map → chunk-NL77JRKE.js.map} +0 -0
- /package/dist/{chunk-42JTSTQ3.js.map → chunk-OTFHIGEO.js.map} +0 -0
- /package/dist/{chunk-ESXUIV6V.js.map → chunk-PCUWBZM3.js.map} +0 -0
- /package/dist/{chunk-OKXLOLEV.js.map → chunk-PNWXTOQ4.js.map} +0 -0
- /package/dist/{chunk-PYAR343F.js.map → chunk-PQFTKHDA.js.map} +0 -0
- /package/dist/{chunk-XXBP73RV.js.map → chunk-Q5DFEVLE.js.map} +0 -0
- /package/dist/{chunk-IBBGABK2.js.map → chunk-QAJFMVGU.js.map} +0 -0
- /package/dist/{chunk-NRIKX35V.js.map → chunk-QXCGWAC6.js.map} +0 -0
- /package/dist/{chunk-CJFCQMUY.js.map → chunk-RKDMYL4A.js.map} +0 -0
- /package/dist/{chunk-S6XZIBWV.js.map → chunk-SCBSAIVV.js.map} +0 -0
- /package/dist/{chunk-3HLQZTQ3.js.map → chunk-SPBUE7R4.js.map} +0 -0
- /package/dist/{chunk-Y4ZBNZBU.js.map → chunk-TRAMBRVO.js.map} +0 -0
- /package/dist/{chunk-IC4MREQH.js.map → chunk-TWFZIHKK.js.map} +0 -0
- /package/dist/{chunk-WGJ2QEW4.js.map → chunk-UCJAPB5Y.js.map} +0 -0
- /package/dist/{chunk-4PM32OS3.js.map → chunk-VFDWUIGR.js.map} +0 -0
- /package/dist/{chunk-BRNZMKO4.js.map → chunk-WC3YSN7L.js.map} +0 -0
- /package/dist/{chunk-5NLUTJCQ.js.map → chunk-X3GWGFZP.js.map} +0 -0
- /package/dist/{chunk-6FWVRXDW.js.map → chunk-XZAVBONI.js.map} +0 -0
- /package/dist/{chunk-Y3SK6EMU.js.map → chunk-Y5PNLB24.js.map} +0 -0
- /package/dist/{chunk-N5AIO23H.js.map → chunk-ZC6FICZ7.js.map} +0 -0
- /package/dist/{chunk-QFVZIQRQ.js.map → chunk-ZEGWP4FP.js.map} +0 -0
- /package/dist/{claim-Q76T3MYA.js.map → claim-PGDIRXIC.js.map} +0 -0
- /package/dist/{companies-MLWRWQ73.js.map → companies-WTPKGEB3.js.map} +0 -0
- /package/dist/{company-X5Z67PMK.js.map → company-6H2H73YP.js.map} +0 -0
- /package/dist/{complete-3CFP6XVY.js.map → complete-2QBC3POO.js.map} +0 -0
- /package/dist/{connect-QXFAB4RJ.js.map → connect-35YPFAUL.js.map} +0 -0
- /package/dist/{conversation-C6K6IZTH.js.map → conversation-YZFNEWDV.js.map} +0 -0
- /package/dist/{conversion-upload-command-D7S5HF22.js.map → conversion-upload-command-J2FIO74Y.js.map} +0 -0
- /package/dist/{conversions-CRL327RY.js.map → conversions-UGRVDRWU.js.map} +0 -0
- /package/dist/{conversions-4ILDIG3K.js.map → conversions-ZFDBD3OU.js.map} +0 -0
- /package/dist/{copy-writes-FYXKHJDB.js.map → copy-writes-2B36QJUY.js.map} +0 -0
- /package/dist/{create-LDQ3YHET.js.map → create-3H67EUTO.js.map} +0 -0
- /package/dist/{create-WQNT345R.js.map → create-ALTOBDP4.js.map} +0 -0
- /package/dist/{create-TKOG7DNJ.js.map → create-C3MWUYX2.js.map} +0 -0
- /package/dist/{create-WFMJOZLO.js.map → create-WHTT6IXY.js.map} +0 -0
- /package/dist/{creatives-45SJAD3G.js.map → creatives-22BYP5VN.js.map} +0 -0
- /package/dist/{creatives-Q4OXNCTT.js.map → creatives-IFOPXTZK.js.map} +0 -0
- /package/dist/{credentials-E2AIMWKX.js.map → credentials-J5DMQJWN.js.map} +0 -0
- /package/dist/{critique-JVT6X2T3.js.map → critique-PQRVFC52.js.map} +0 -0
- /package/dist/{critique-EWV3O3TD.js.map → critique-X6XVPIUG.js.map} +0 -0
- /package/dist/{crm-NQH5FTK6.js.map → crm-LWRGJYHW.js.map} +0 -0
- /package/dist/{crm-YGQKK76D.js.map → crm-RUNEJY2R.js.map} +0 -0
- /package/dist/{crop-KV24WHOR.js.map → crop-4V4P3SKI.js.map} +0 -0
- /package/dist/{custom-conversions-EJNX4MCK.js.map → custom-conversions-V7QPZIB4.js.map} +0 -0
- /package/dist/{customers-YFEPJF4G.js.map → customers-IDB6NLQ6.js.map} +0 -0
- /package/dist/{delete-2UJVTHRE.js.map → delete-2QKVUKKB.js.map} +0 -0
- /package/dist/{delete-O4RO2HMR.js.map → delete-B7BKF24X.js.map} +0 -0
- /package/dist/{delete-7QAJSOCO.js.map → delete-HBRYUWAA.js.map} +0 -0
- /package/dist/{demographics-YWBHAMZ5.js.map → demographics-JHB3NFLU.js.map} +0 -0
- /package/dist/{dimensions-YXOXHOXW.js.map → dimensions-KI3OENZD.js.map} +0 -0
- /package/dist/{discard-YX4XUXG3.js.map → discard-FEJ6YL22.js.map} +0 -0
- /package/dist/{domain-5R6CYVFY.js.map → domain-JYWNXBKS.js.map} +0 -0
- /package/dist/{download-D2O4RYJ3.js.map → download-LOBPOIU5.js.map} +0 -0
- /package/dist/{draft-SGNQOUYH.js.map → draft-EB5ZFDVN.js.map} +0 -0
- /package/dist/{draft-3MPADYS4.js.map → draft-I2FLECEX.js.map} +0 -0
- /package/dist/{draft-L56EMJQT.js.map → draft-N56HPS36.js.map} +0 -0
- /package/dist/{draft-NLSQDRVQ.js.map → draft-ZLZRTPY6.js.map} +0 -0
- /package/dist/{experiment-3NDXGQK6.js.map → experiment-O6726OBP.js.map} +0 -0
- /package/dist/{experiments-DYNNWQRB.js.map → experiments-WVTBHD6G.js.map} +0 -0
- /package/dist/{facets-Y2IEM37E.js.map → facets-V2ITIUKD.js.map} +0 -0
- /package/dist/{feedback-HJRVTU6C.js.map → feedback-MXUZWVOL.js.map} +0 -0
- /package/dist/{feedback-IVSLM5PN.js.map → feedback-PXWPR3NZ.js.map} +0 -0
- /package/dist/{feedback-record-P7CO3IGE.js.map → feedback-record-76RUAHZH.js.map} +0 -0
- /package/dist/{fetch-V2U5VUQZ.js.map → fetch-QVOOC3FA.js.map} +0 -0
- /package/dist/{fit-JDG6E46O.js.map → fit-REGMM46H.js.map} +0 -0
- /package/dist/{flows-DP574PEX.js.map → flows-EZV3KCV6.js.map} +0 -0
- /package/dist/{fonts-RMROS3LX.js.map → fonts-NUX66HEI.js.map} +0 -0
- /package/dist/{forecast-BRXNGMGD.js.map → forecast-W6HKYVX5.js.map} +0 -0
- /package/dist/{forecast-AAHHVTBK.js.map → forecast-XDRKCR65.js.map} +0 -0
- /package/dist/{funnel-FQX3DOE7.js.map → funnel-3YABA3G2.js.map} +0 -0
- /package/dist/{ga4-IJ2UUICC.js.map → ga4-XFJO7VK2.js.map} +0 -0
- /package/dist/{generate-SYOQE3F7.js.map → generate-22HT24SA.js.map} +0 -0
- /package/dist/{get-HMTI2IR6.js.map → get-GQQLBE5C.js.map} +0 -0
- /package/dist/{get-VFDNTZ54.js.map → get-NL3YZFUJ.js.map} +0 -0
- /package/dist/{google-4FP6AHBL.js.map → google-UJ4YJGTJ.js.map} +0 -0
- /package/dist/{google-ads-4DLYASRC.js.map → google-ads-RRKKSKDD.js.map} +0 -0
- /package/dist/{gsc-YAU4EA75.js.map → gsc-ILEIJYWP.js.map} +0 -0
- /package/dist/{history-6B6RXNV3.js.map → history-2UANIBRN.js.map} +0 -0
- /package/dist/{history-NLZSX4BK.js.map → history-YZ727ZRG.js.map} +0 -0
- /package/dist/{hubspot-LABBRJ44.js.map → hubspot-KWLXJ6QD.js.map} +0 -0
- /package/dist/{ideas-A4ELJN23.js.map → ideas-ZO533P5Y.js.map} +0 -0
- /package/dist/{images-JVNT7KYM.js.map → images-Z7YBWRVJ.js.map} +0 -0
- /package/dist/{ingest-GQWR3RHR.js.map → ingest-C2HJ5LUY.js.map} +0 -0
- /package/dist/{ingest-JYN2IDKV.js.map → ingest-H53JR4GK.js.map} +0 -0
- /package/dist/{inspect-72DY33YD.js.map → inspect-BM6GJHQV.js.map} +0 -0
- /package/dist/{inspiration-DNWTXEPX.js.map → inspiration-WGUU7W5Z.js.map} +0 -0
- /package/dist/{instant-experiences-6NTBX4SL.js.map → instant-experiences-U6U3FYIH.js.map} +0 -0
- /package/dist/{keyword-metrics-GP7L2MQE.js.map → keyword-metrics-R2QCEDYW.js.map} +0 -0
- /package/dist/{keywords-for-site-6YWAUOKJ.js.map → keywords-for-site-NBV72C3W.js.map} +0 -0
- /package/dist/{landing-EKHAZS5P.js.map → landing-5RRWTSWK.js.map} +0 -0
- /package/dist/{leads-UCXIIA5K.js.map → leads-6PF7ZWCH.js.map} +0 -0
- /package/dist/{leads-RN6RYOMU.js.map → leads-IG3IIHXG.js.map} +0 -0
- /package/dist/{learn-EJEFERQZ.js.map → learn-V2LIBEEY.js.map} +0 -0
- /package/dist/{line-item-writes-IMCE2FDW.js.map → line-item-writes-GMNWL4DI.js.map} +0 -0
- /package/dist/{line-items-ISUC3WDO.js.map → line-items-KPIKXLG4.js.map} +0 -0
- /package/dist/{link-6QL4ZVSU.js.map → link-X7IYKR5V.js.map} +0 -0
- /package/dist/{linkedin-person-C24CBKCH.js.map → linkedin-person-47XFTBIN.js.map} +0 -0
- /package/dist/{list-2VNI3U7I.js.map → list-PHNA7QIF.js.map} +0 -0
- /package/dist/{list-SUXUMXPJ.js.map → list-QF3BANBM.js.map} +0 -0
- /package/dist/{list-PZD2QOZL.js.map → list-SB3SUTH6.js.map} +0 -0
- /package/dist/{log-VLI7KQF2.js.map → log-JFLSSUJ6.js.map} +0 -0
- /package/dist/{make-365ZJ25L.js.map → make-HZ5KAYSB.js.map} +0 -0
- /package/dist/{map-OEFL45WA.js.map → map-NYJT2MGI.js.map} +0 -0
- /package/dist/{mcp-NCZYQXQL.js.map → mcp-ABQEICYR.js.map} +0 -0
- /package/dist/{media-WASM45QW.js.map → media-AT3VV3PU.js.map} +0 -0
- /package/dist/{media-sources-CZDK4W5Q.js.map → media-sources-DEEKEJUB.js.map} +0 -0
- /package/dist/{members-N3PQSVQC.js.map → members-BX37KHKO.js.map} +0 -0
- /package/dist/{normalize-4OKUF5BJ.js.map → normalize-M3VMWF4W.js.map} +0 -0
- /package/dist/{normalize-6DEJPTBF.js.map → normalize-MA2FBBIV.js.map} +0 -0
- /package/dist/{options-OJX77MYT.js.map → options-NMWWF2HN.js.map} +0 -0
- /package/dist/{organization-URQGKFEC.js.map → organization-GRAA6ZXU.js.map} +0 -0
- /package/dist/{page-photos-N4S7U7FR.js.map → page-photos-ABK4CJME.js.map} +0 -0
- /package/dist/{performance-SIWBDORI.js.map → performance-MQLRSH44.js.map} +0 -0
- /package/dist/{performance-P5T4LJRG.js.map → performance-RUBIGEAQ.js.map} +0 -0
- /package/dist/{posts-MVCGZV54.js.map → posts-F7NFSUHV.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-S2HP5DEI.js.map → promoted-tweet-writes-3P6QFGLN.js.map} +0 -0
- /package/dist/{promoted-tweets-WZT4N5IR.js.map → promoted-tweets-TGFPH7UI.js.map} +0 -0
- /package/dist/{publish-EDYBQHGJ.js.map → publish-OUVO65Z5.js.map} +0 -0
- /package/dist/{reddit-DEGGHR4M.js.map → reddit-HWQCUSEM.js.map} +0 -0
- /package/dist/{refresh-HPNJGI2U.js.map → refresh-ENQDQGTK.js.map} +0 -0
- /package/dist/{release-H7M37CEO.js.map → release-ZTVXLUQS.js.map} +0 -0
- /package/dist/{remove-MV4YS72N.js.map → remove-XAFRT7O7.js.map} +0 -0
- /package/dist/{reopen-EFW2SKOY.js.map → reopen-SWSZHXJZ.js.map} +0 -0
- /package/dist/{rerun-OM4N74YK.js.map → rerun-X7XVOAL3.js.map} +0 -0
- /package/dist/{research-MHXKAQW4.js.map → research-JMU4C4JZ.js.map} +0 -0
- /package/dist/{research-7YDQOKA6.js.map → research-TDH4OBX6.js.map} +0 -0
- /package/dist/{reset-HT4AGJPR.js.map → reset-34HTKUBQ.js.map} +0 -0
- /package/dist/{reset-XPZQ5F4D.js.map → reset-KMMGLM7W.js.map} +0 -0
- /package/dist/{resolve-RTTXEN2B.js.map → resolve-2CIIKADD.js.map} +0 -0
- /package/dist/{retry-DVLVWHEK.js.map → retry-V7KZIZKR.js.map} +0 -0
- /package/dist/{retry-SBGWOUQO.js.map → retry-YXM23NSB.js.map} +0 -0
- /package/dist/{revenue-KJLJ53XY.js.map → revenue-D4L6U2CW.js.map} +0 -0
- /package/dist/{rule-writes-DNXELESR.js.map → rule-writes-HUBHHYEO.js.map} +0 -0
- /package/dist/{rules-KCSET46P.js.map → rules-47LFGCPW.js.map} +0 -0
- /package/dist/{rules-NVKU732Z.js.map → rules-F6RNUOXP.js.map} +0 -0
- /package/dist/{rules-add-KY42EHJE.js.map → rules-add-SAQRESVK.js.map} +0 -0
- /package/dist/{run-M7YU6KCV.js.map → run-3GCYZ2HX.js.map} +0 -0
- /package/dist/{run-2LQ7XJEO.js.map → run-FRPO2WNQ.js.map} +0 -0
- /package/dist/{scaffold-ad-6YPZ75YJ.js.map → scaffold-ad-E6DD6U46.js.map} +0 -0
- /package/dist/{scaffold-static-ad-UJEWTDU5.js.map → scaffold-static-ad-6WNS2PXB.js.map} +0 -0
- /package/dist/{scaffold-video-M4VWSVJ6.js.map → scaffold-video-QKXFQ5FC.js.map} +0 -0
- /package/dist/{schedule-J7HZQ2EL.js.map → schedule-S4XAVVEI.js.map} +0 -0
- /package/dist/{scheduled-agents-IVUQUKF4.js.map → scheduled-agents-ZWAP6QLC.js.map} +0 -0
- /package/dist/{schema-LHBKBUV7.js.map → schema-EJ2XPUN6.js.map} +0 -0
- /package/dist/{search-3AW52FO6.js.map → search-2BAY3KKX.js.map} +0 -0
- /package/dist/{select-STIWQ36I.js.map → select-ABRNFFR2.js.map} +0 -0
- /package/dist/{set-prompt-TODWV2F4.js.map → set-prompt-5LYHDT4E.js.map} +0 -0
- /package/dist/{setup-links-MNBD3UMH.js.map → setup-links-QT63UZBR.js.map} +0 -0
- /package/dist/{shopify-RJWLTNPQ.js.map → shopify-L4ZUI6OT.js.map} +0 -0
- /package/dist/{site-ZZUKS6MQ.js.map → site-S6QVMP7W.js.map} +0 -0
- /package/dist/{sources-36MJ6T4V.js.map → sources-6TWWOO7Q.js.map} +0 -0
- /package/dist/{sources-GNLQHTSJ.js.map → sources-ORG5KQSW.js.map} +0 -0
- /package/dist/{stale-GJN7UO3D.js.map → stale-MLQPXNLZ.js.map} +0 -0
- /package/dist/{status-6EGB6ORB.js.map → status-4G2YUCZR.js.map} +0 -0
- /package/dist/{studies-4XXCEAHH.js.map → studies-QLSKON6M.js.map} +0 -0
- /package/dist/{studio-OARORMDJ.js.map → studio-ZLBBYHNY.js.map} +0 -0
- /package/dist/{study-writes-J56UIIE3.js.map → study-writes-GBUUKX4O.js.map} +0 -0
- /package/dist/{sync-QHM3LMAX.js.map → sync-7LJZPHM3.js.map} +0 -0
- /package/dist/{sync-definition-YXGN6PIQ.js.map → sync-definition-MXVL2I2H.js.map} +0 -0
- /package/dist/{tags-MQYF2JHQ.js.map → tags-2ARVNEYS.js.map} +0 -0
- /package/dist/{tags-ZGXJHATH.js.map → tags-F4IT7RQR.js.map} +0 -0
- /package/dist/{tags-MBBRBZJH.js.map → tags-F7ZO52EM.js.map} +0 -0
- /package/dist/{tags-IDWUV2FY.js.map → tags-NBGGBHXR.js.map} +0 -0
- /package/dist/{tags-GHV5R7NI.js.map → tags-TCSGQYDR.js.map} +0 -0
- /package/dist/{targeting-KJ4DI56R.js.map → targeting-DAUTJDUB.js.map} +0 -0
- /package/dist/{targeting-criteria-GDCXOAUD.js.map → targeting-criteria-H42LRULY.js.map} +0 -0
- /package/dist/{targets-MYHOPAYY.js.map → targets-WB4E5XL2.js.map} +0 -0
- /package/dist/{testimonials-R6RFGAKP.js.map → testimonials-RIJSQDSB.js.map} +0 -0
- /package/dist/{themes-LHVXXVTX.js.map → themes-BGBDYQQK.js.map} +0 -0
- /package/dist/{top-companies-POTV3Y2A.js.map → top-companies-C2W5TJ7G.js.map} +0 -0
- /package/dist/{transcript-4RVYKDVZ.js.map → transcript-S7VR2GJE.js.map} +0 -0
- /package/dist/{translate-UCASCVMN.js.map → translate-A4GHRHSP.js.map} +0 -0
- /package/dist/{triggers-XHMMOZJK.js.map → triggers-EOKMR74O.js.map} +0 -0
- /package/dist/{unlink-3IW3EORE.js.map → unlink-PC3TMWUT.js.map} +0 -0
- /package/dist/{unstage-APVF6KHB.js.map → unstage-SU2ATDSZ.js.map} +0 -0
- /package/dist/{update-V7SRDGHN.js.map → update-DKX3EEES.js.map} +0 -0
- /package/dist/{update-2VSJH4LQ.js.map → update-JYZ45YJG.js.map} +0 -0
- /package/dist/{update-ESK6PSME.js.map → update-TAZSUOAS.js.map} +0 -0
- /package/dist/{update-42QYBUE3.js.map → update-WRJUH2NM.js.map} +0 -0
- /package/dist/{upload-42IR5RIL.js.map → upload-BLXTMK5Q.js.map} +0 -0
- /package/dist/{url-params-GEESXN57.js.map → url-params-YVOFU6MK.js.map} +0 -0
- /package/dist/{validate-Z5SSEUES.js.map → validate-44PVFQH7.js.map} +0 -0
- /package/dist/{videos-PJAPZPOT.js.map → videos-RWPQVXS5.js.map} +0 -0
- /package/dist/{viewer-check-6M34VY7K.js.map → viewer-check-KTRRUVZN.js.map} +0 -0
- /package/dist/{web-PUVVFMV3.js.map → web-6KUM7Q7S.js.map} +0 -0
- /package/dist/{winning-ads-ZCP4MIEQ.js.map → winning-ads-IT3O4EAN.js.map} +0 -0
- /package/dist/{write-commands-ZS4O4DSV.js.map → write-commands-3U5ZMIHH.js.map} +0 -0
- /package/dist/{write-commands-5LEEPKA7.js.map → write-commands-F5XPPLOO.js.map} +0 -0
- /package/dist/{x-ZKCLP23S.js.map → x-X7URL52T.js.map} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
definitionInsights,
|
|
3
|
+
parseDays,
|
|
4
|
+
performanceCommand,
|
|
5
|
+
withDefinitions
|
|
6
|
+
} from "./chunk-7TDJCDKT.js";
|
|
7
|
+
import "./chunk-BS2MC62Y.js";
|
|
8
|
+
import "./chunk-MKLAZD23.js";
|
|
9
|
+
import "./chunk-QV6AST5T.js";
|
|
10
|
+
import "./chunk-WCU362Z6.js";
|
|
11
|
+
import "./chunk-GIWHHCD6.js";
|
|
12
|
+
import "./chunk-SOPVIIUW.js";
|
|
13
|
+
import "./chunk-G4FG5EQO.js";
|
|
14
|
+
import "./chunk-R7XDGNZD.js";
|
|
15
|
+
import "./chunk-MSMTG6OC.js";
|
|
16
|
+
import "./chunk-GFWWHCBF.js";
|
|
17
|
+
import "./chunk-JXTNP3B5.js";
|
|
18
|
+
import "./chunk-45D6WRCJ.js";
|
|
19
|
+
import "./chunk-CCYZJMZ7.js";
|
|
20
|
+
import "./chunk-YQSBHWOI.js";
|
|
21
|
+
export {
|
|
22
|
+
definitionInsights,
|
|
23
|
+
parseDays,
|
|
24
|
+
performanceCommand,
|
|
25
|
+
withDefinitions
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=performance-RUBIGEAQ.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "./chunk-YQSBHWOI.js";
|
|
2
|
+
|
|
3
|
+
// src/commands/posts/index.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
var postsCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "posts",
|
|
8
|
+
description: `The posts the company's followed accounts published \u2014 its own pages and its key people (CEO, CTO, head of sales\u2026) on LinkedIn, Instagram, TikTok, YouTube and Facebook \u2014 text-only ones included, with their likes, comments and views, and whether each can run as a paid ad (usable \xB7 needs the author's OK \xB7 can't). Accounts are followed with \`baker media-sources add\`. Subcommands: list, get, search, add, suggest, approved, tag, refresh.
|
|
9
|
+
|
|
10
|
+
Examples:
|
|
11
|
+
baker posts list --role ceo --usable needs_approval # the CEO's posts a Thought Leader ad can boost
|
|
12
|
+
baker posts list --account linkedin:acme --sort engagement --since 2026-09-01
|
|
13
|
+
baker posts list --about-company # people's posts that name the company (ABM)
|
|
14
|
+
baker posts search "series A"
|
|
15
|
+
baker posts get <post-id>
|
|
16
|
+
baker posts add https://www.linkedin.com/posts/jane-doe_activity-7477679889043750912-K2pu
|
|
17
|
+
baker posts suggest <post-id> --verdict usable --note "Best-performing CEO post this month"
|
|
18
|
+
baker posts approved <post-id> --account-id 513852526 # the user says the author already approved it
|
|
19
|
+
baker ads linkedin creatives create --format tla --post <post-id> --campaign <ad set>
|
|
20
|
+
Full guide: __tooling__/docs/tools/baker/posts.md`
|
|
21
|
+
},
|
|
22
|
+
subCommands: {
|
|
23
|
+
list: () => import("./list-2NWMHKTR.js").then((m) => m.listCommand),
|
|
24
|
+
get: () => import("./get-X44ZCIFN.js").then((m) => m.getCommand),
|
|
25
|
+
search: () => import("./search-EKTUTXVN.js").then((m) => m.searchCommand),
|
|
26
|
+
add: () => import("./add-CSRB6GVJ.js").then((m) => m.addCommand),
|
|
27
|
+
suggest: () => import("./suggest-DSMKK4FP.js").then((m) => m.suggestCommand),
|
|
28
|
+
approved: () => import("./approved-RP5ADN7E.js").then((m) => m.approvedCommand),
|
|
29
|
+
tag: () => import("./tag-L2H5TSFJ.js").then((m) => m.tagCommand),
|
|
30
|
+
refresh: () => import("./refresh-BKYZXXRF.js").then((m) => m.refreshCommand)
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
export {
|
|
34
|
+
postsCommand
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=posts-F7NFSUHV.js.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-OTFHIGEO.js";
|
|
5
|
+
import {
|
|
6
|
+
AD_PREVIEW_DIR,
|
|
7
|
+
renderAdPreviews
|
|
8
|
+
} from "./chunk-EGVWSAWY.js";
|
|
9
|
+
import "./chunk-VN3WDB4O.js";
|
|
10
|
+
import {
|
|
11
|
+
writeJsonEnvelope
|
|
12
|
+
} from "./chunk-QYH2UZAK.js";
|
|
13
|
+
import "./chunk-MKLAZD23.js";
|
|
14
|
+
import "./chunk-QV6AST5T.js";
|
|
15
|
+
import "./chunk-WCU362Z6.js";
|
|
16
|
+
import "./chunk-GIWHHCD6.js";
|
|
17
|
+
import "./chunk-SOPVIIUW.js";
|
|
18
|
+
import "./chunk-G4FG5EQO.js";
|
|
19
|
+
import "./chunk-R7XDGNZD.js";
|
|
20
|
+
import "./chunk-MSMTG6OC.js";
|
|
21
|
+
import {
|
|
22
|
+
apiPost
|
|
23
|
+
} from "./chunk-GFWWHCBF.js";
|
|
24
|
+
import "./chunk-JXTNP3B5.js";
|
|
25
|
+
import "./chunk-45D6WRCJ.js";
|
|
26
|
+
import "./chunk-CCYZJMZ7.js";
|
|
27
|
+
import "./chunk-YQSBHWOI.js";
|
|
28
|
+
|
|
29
|
+
// src/commands/ads/linkedin/preview.ts
|
|
30
|
+
import { writeFileSync } from "fs";
|
|
31
|
+
import { defineCommand } from "citty";
|
|
32
|
+
var previewCommand = defineCommand({
|
|
33
|
+
meta: {
|
|
34
|
+
name: "preview",
|
|
35
|
+
description: `See an existing LinkedIn ad exactly as people see it in the feed \u2014 LinkedIn's own renderer,
|
|
36
|
+
for desktop and mobile. Returns shownText (the text displayed, in order) and a picture of each;
|
|
37
|
+
Read the picture only for what text cannot tell (words in the artwork, cropping, how it looks).
|
|
38
|
+
|
|
39
|
+
Start here before saying anything about how an ad LOOKS (which text shows, whether the headline
|
|
40
|
+
appears under the image, what the button says): the API fields say what is stored, the preview
|
|
41
|
+
shows what is displayed. Works for single image, carousel, video, event and job ads that already
|
|
42
|
+
exist on LinkedIn; staged (unpublished) ads have no preview yet.
|
|
43
|
+
|
|
44
|
+
Examples:
|
|
45
|
+
baker ads linkedin preview 1611562694 --account-id 503001492
|
|
46
|
+
baker ads linkedin preview 1611562694 --placement mobile
|
|
47
|
+
baker ads linkedin preview 1611562694 --out-dir /tmp/review`
|
|
48
|
+
},
|
|
49
|
+
args: {
|
|
50
|
+
id: { type: "positional", description: "Creative id or urn:li:sponsoredCreative:N", required: true },
|
|
51
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
52
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
53
|
+
placement: { type: "string", description: "desktop|mobile|both (default: both)", default: "both" },
|
|
54
|
+
"out-dir": { type: "string", description: `Folder for the pictures (default: ${AD_PREVIEW_DIR})` },
|
|
55
|
+
"html-file": { type: "string", description: "Also save LinkedIn's raw preview iframes to this file" }
|
|
56
|
+
},
|
|
57
|
+
run: async ({ args }) => {
|
|
58
|
+
const accountId = resolveAccountIdArg(args);
|
|
59
|
+
const placement = String(args.placement);
|
|
60
|
+
if (!["desktop", "mobile", "both"].includes(placement)) {
|
|
61
|
+
writeJsonEnvelope({
|
|
62
|
+
ok: false,
|
|
63
|
+
error: { code: "VALIDATION_ERROR", message: "--placement must be desktop, mobile or both" }
|
|
64
|
+
});
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const body = { accountId, creativeId: String(args.id) };
|
|
69
|
+
const data = await apiPost("/api/ads/linkedin/preview", body);
|
|
70
|
+
const wanted = data.previews.filter((p) => placement === "both" || p.placement === placement);
|
|
71
|
+
if (wanted.length === 0) {
|
|
72
|
+
writeJsonEnvelope({
|
|
73
|
+
ok: true,
|
|
74
|
+
data: { creativeId: data.creativeId, previews: [] },
|
|
75
|
+
hints: [
|
|
76
|
+
"LinkedIn returned no preview for this ad (its format may not support one). Say its look could not be checked; do not describe it from the API fields."
|
|
77
|
+
]
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (args["html-file"]) {
|
|
82
|
+
writeFileSync(String(args["html-file"]), wanted.map((p) => p.html).join("\n"), "utf-8");
|
|
83
|
+
}
|
|
84
|
+
const rendered = await renderAdPreviews(wanted, {
|
|
85
|
+
dir: args["out-dir"] ? String(args["out-dir"]) : AD_PREVIEW_DIR,
|
|
86
|
+
name: `linkedin-${data.creativeId}`
|
|
87
|
+
});
|
|
88
|
+
writeJsonEnvelope({
|
|
89
|
+
ok: true,
|
|
90
|
+
data: { creativeId: data.creativeId, previews: rendered.previews },
|
|
91
|
+
hints: rendered.hints
|
|
92
|
+
});
|
|
93
|
+
} catch (err) {
|
|
94
|
+
handleLinkedinError(err);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
export {
|
|
99
|
+
previewCommand
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=preview-IBNFQ5RQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/preview.ts"],"sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport type { LinkedinAdPreviewRequest, LinkedinAdPreviewResponse } from \"@baker/api/ads-linkedin/preview\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { AD_PREVIEW_DIR, renderAdPreviews } from \"../ad-preview-images.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\nexport const previewCommand = defineCommand({\n meta: {\n name: \"preview\",\n description: `See an existing LinkedIn ad exactly as people see it in the feed — LinkedIn's own renderer,\nfor desktop and mobile. Returns shownText (the text displayed, in order) and a picture of each;\nRead the picture only for what text cannot tell (words in the artwork, cropping, how it looks).\n\nStart here before saying anything about how an ad LOOKS (which text shows, whether the headline\nappears under the image, what the button says): the API fields say what is stored, the preview\nshows what is displayed. Works for single image, carousel, video, event and job ads that already\nexist on LinkedIn; staged (unpublished) ads have no preview yet.\n\nExamples:\n baker ads linkedin preview 1611562694 --account-id 503001492\n baker ads linkedin preview 1611562694 --placement mobile\n baker ads linkedin preview 1611562694 --out-dir /tmp/review`,\n },\n args: {\n id: { type: \"positional\", description: \"Creative id or urn:li:sponsoredCreative:N\", required: true },\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n placement: { type: \"string\", description: \"desktop|mobile|both (default: both)\", default: \"both\" },\n \"out-dir\": { type: \"string\", description: `Folder for the pictures (default: ${AD_PREVIEW_DIR})` },\n \"html-file\": { type: \"string\", description: \"Also save LinkedIn's raw preview iframes to this file\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const placement = String(args.placement);\n if (![\"desktop\", \"mobile\", \"both\"].includes(placement)) {\n writeJsonEnvelope({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"--placement must be desktop, mobile or both\" },\n });\n process.exit(1);\n }\n try {\n const body: LinkedinAdPreviewRequest = { accountId, creativeId: String(args.id) };\n const data = await apiPost<LinkedinAdPreviewResponse>(\"/api/ads/linkedin/preview\", body);\n const wanted = data.previews.filter((p) => placement === \"both\" || p.placement === placement);\n if (wanted.length === 0) {\n writeJsonEnvelope({\n ok: true,\n data: { creativeId: data.creativeId, previews: [] },\n hints: [\n \"LinkedIn returned no preview for this ad (its format may not support one). Say its look could not be checked; do not describe it from the API fields.\",\n ],\n });\n return;\n }\n if (args[\"html-file\"]) {\n writeFileSync(String(args[\"html-file\"]), wanted.map((p) => p.html).join(\"\\n\"), \"utf-8\");\n }\n const rendered = await renderAdPreviews(wanted, {\n dir: args[\"out-dir\"] ? String(args[\"out-dir\"]) : AD_PREVIEW_DIR,\n name: `linkedin-${data.creativeId}`,\n });\n writeJsonEnvelope({\n ok: true,\n data: { creativeId: data.creativeId, previews: rendered.previews },\n hints: rendered.hints,\n });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAMvB,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaf;AAAA,EACA,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,6CAA6C,UAAU,KAAK;AAAA,IACnG,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW,EAAE,MAAM,UAAU,aAAa,uCAAuC,SAAS,OAAO;AAAA,IACjG,WAAW,EAAE,MAAM,UAAU,aAAa,qCAAqC,cAAc,IAAI;AAAA,IACjG,aAAa,EAAE,MAAM,UAAU,aAAa,wDAAwD;AAAA,EACtG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,YAAY,OAAO,KAAK,SAAS;AACvC,QAAI,CAAC,CAAC,WAAW,UAAU,MAAM,EAAE,SAAS,SAAS,GAAG;AACtD,wBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ,OAAO,EAAE,MAAM,oBAAoB,SAAS,8CAA8C;AAAA,MAC5F,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI;AACF,YAAM,OAAiC,EAAE,WAAW,YAAY,OAAO,KAAK,EAAE,EAAE;AAChF,YAAM,OAAO,MAAM,QAAmC,6BAA6B,IAAI;AACvF,YAAM,SAAS,KAAK,SAAS,OAAO,CAAC,MAAM,cAAc,UAAU,EAAE,cAAc,SAAS;AAC5F,UAAI,OAAO,WAAW,GAAG;AACvB,0BAAkB;AAAA,UAChB,IAAI;AAAA,UACJ,MAAM,EAAE,YAAY,KAAK,YAAY,UAAU,CAAC,EAAE;AAAA,UAClD,OAAO;AAAA,YACL;AAAA,UACF;AAAA,QACF,CAAC;AACD;AAAA,MACF;AACA,UAAI,KAAK,WAAW,GAAG;AACrB,sBAAc,OAAO,KAAK,WAAW,CAAC,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,OAAO;AAAA,MACxF;AACA,YAAM,WAAW,MAAM,iBAAiB,QAAQ;AAAA,QAC9C,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,IAAI;AAAA,QACjD,MAAM,YAAY,KAAK,UAAU;AAAA,MACnC,CAAC;AACD,wBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ,MAAM,EAAE,YAAY,KAAK,YAAY,UAAU,SAAS,SAAS;AAAA,QACjE,OAAO,SAAS;AAAA,MAClB,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AD_PREVIEW_DIR,
|
|
3
|
+
renderAdPreviews
|
|
4
|
+
} from "./chunk-EGVWSAWY.js";
|
|
5
|
+
import "./chunk-VN3WDB4O.js";
|
|
6
|
+
import {
|
|
7
|
+
FACEBOOK_PREVIEW_FORMATS,
|
|
8
|
+
INSTAGRAM_PREVIEW_FORMATS,
|
|
9
|
+
PLATFORM_SCOPED_POSITIONS,
|
|
10
|
+
previewFormatForPosition
|
|
11
|
+
} from "./chunk-GC5P4KWY.js";
|
|
12
|
+
import "./chunk-GDFJOCDO.js";
|
|
13
|
+
import {
|
|
14
|
+
handleMetaError
|
|
15
|
+
} from "./chunk-QY7EK6Q4.js";
|
|
16
|
+
import "./chunk-QALAJNBG.js";
|
|
17
|
+
import {
|
|
18
|
+
writeAdsJson,
|
|
19
|
+
writeJsonEnvelope
|
|
20
|
+
} from "./chunk-QYH2UZAK.js";
|
|
21
|
+
import {
|
|
22
|
+
NO_CACHE_ARG
|
|
23
|
+
} from "./chunk-GO6ISZUZ.js";
|
|
24
|
+
import "./chunk-SOPVIIUW.js";
|
|
25
|
+
import "./chunk-G4FG5EQO.js";
|
|
26
|
+
import {
|
|
27
|
+
apiPost
|
|
28
|
+
} from "./chunk-GFWWHCBF.js";
|
|
29
|
+
import "./chunk-JXTNP3B5.js";
|
|
30
|
+
import "./chunk-45D6WRCJ.js";
|
|
31
|
+
import "./chunk-CCYZJMZ7.js";
|
|
32
|
+
import "./chunk-YQSBHWOI.js";
|
|
33
|
+
|
|
34
|
+
// src/commands/ads/meta/preview.ts
|
|
35
|
+
import { createHash } from "crypto";
|
|
36
|
+
import { writeFileSync } from "fs";
|
|
37
|
+
import { defineCommand } from "citty";
|
|
38
|
+
var VALID_AD_FORMATS = [
|
|
39
|
+
"AUDIENCE_NETWORK_INSTREAM_VIDEO",
|
|
40
|
+
"AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILE",
|
|
41
|
+
"AUDIENCE_NETWORK_OUTSTREAM_VIDEO",
|
|
42
|
+
"AUDIENCE_NETWORK_REWARDED_VIDEO",
|
|
43
|
+
"BIZ_DISCO_FEED_MOBILE",
|
|
44
|
+
"DESKTOP_FEED_STANDARD",
|
|
45
|
+
"FACEBOOK_IFU_REELS_MOBILE",
|
|
46
|
+
"FACEBOOK_PROFILE_FEED_DESKTOP",
|
|
47
|
+
"FACEBOOK_PROFILE_FEED_MOBILE",
|
|
48
|
+
"FACEBOOK_PROFILE_REELS_MOBILE",
|
|
49
|
+
"FACEBOOK_REELS_BANNER",
|
|
50
|
+
"FACEBOOK_REELS_BANNER_DESKTOP",
|
|
51
|
+
"FACEBOOK_REELS_BANNER_FEED_ANDROID",
|
|
52
|
+
"FACEBOOK_REELS_BANNER_FEED_ANDROID_LARGE",
|
|
53
|
+
"FACEBOOK_REELS_BANNER_FULLSCREEN_IOS",
|
|
54
|
+
"FACEBOOK_REELS_BANNER_FULLSCREEN_MOBILE",
|
|
55
|
+
"FACEBOOK_REELS_MOBILE",
|
|
56
|
+
"FACEBOOK_REELS_POSTLOOP",
|
|
57
|
+
"FACEBOOK_REELS_POSTLOOP_FEED",
|
|
58
|
+
"FACEBOOK_REELS_SIMILAR_PRODUCTS_MOBILE",
|
|
59
|
+
"FACEBOOK_REELS_STICKER",
|
|
60
|
+
"FACEBOOK_STORY_MOBILE",
|
|
61
|
+
"FACEBOOK_STORY_STICKER_MOBILE",
|
|
62
|
+
"INSTAGRAM_EXPLORE_CONTEXTUAL",
|
|
63
|
+
"INSTAGRAM_EXPLORE_GRID_HOME",
|
|
64
|
+
"INSTAGRAM_EXPLORE_IMMERSIVE",
|
|
65
|
+
"INSTAGRAM_FEED_WEB",
|
|
66
|
+
"INSTAGRAM_FEED_WEB_M_SITE",
|
|
67
|
+
"INSTAGRAM_LEAD_GEN_MULTI_SUBMIT_ADS",
|
|
68
|
+
"INSTAGRAM_PROFILE_FEED",
|
|
69
|
+
"INSTAGRAM_PROFILE_REELS",
|
|
70
|
+
"INSTAGRAM_REELS",
|
|
71
|
+
"INSTAGRAM_REELS_OVERLAY",
|
|
72
|
+
"INSTAGRAM_REELS_WEB",
|
|
73
|
+
"INSTAGRAM_REELS_WEB_M_SITE",
|
|
74
|
+
"INSTAGRAM_SEARCH_CHAIN",
|
|
75
|
+
"INSTAGRAM_SEARCH_GRID",
|
|
76
|
+
"INSTAGRAM_SHOP",
|
|
77
|
+
"INSTAGRAM_STANDARD",
|
|
78
|
+
"INSTAGRAM_STORY",
|
|
79
|
+
"INSTAGRAM_STORY_EFFECT_TRAY",
|
|
80
|
+
"INSTAGRAM_STORY_WEB",
|
|
81
|
+
"INSTAGRAM_STORY_WEB_M_SITE",
|
|
82
|
+
"INSTANT_ARTICLE_RECIRCULATION_AD",
|
|
83
|
+
"INSTANT_ARTICLE_STANDARD",
|
|
84
|
+
"INSTREAM_BANNER_DESKTOP",
|
|
85
|
+
"INSTREAM_BANNER_FEED_IOS",
|
|
86
|
+
"INSTREAM_BANNER_FULLSCREEN_IOS",
|
|
87
|
+
"INSTREAM_BANNER_FULLSCREEN_MOBILE",
|
|
88
|
+
"INSTREAM_BANNER_IMMERSIVE_MOBILE",
|
|
89
|
+
"INSTREAM_BANNER_MOBILE",
|
|
90
|
+
"INSTREAM_VIDEO_DESKTOP",
|
|
91
|
+
"INSTREAM_VIDEO_FULLSCREEN_IOS",
|
|
92
|
+
"INSTREAM_VIDEO_FULLSCREEN_MOBILE",
|
|
93
|
+
"INSTREAM_VIDEO_IMAGE",
|
|
94
|
+
"INSTREAM_VIDEO_IMMERSIVE_MOBILE",
|
|
95
|
+
"INSTREAM_VIDEO_MOBILE",
|
|
96
|
+
"JOB_BROWSER_DESKTOP",
|
|
97
|
+
"JOB_BROWSER_MOBILE",
|
|
98
|
+
"MARKETPLACE_MOBILE",
|
|
99
|
+
"MESSENGER_MOBILE_INBOX_MEDIA",
|
|
100
|
+
"MESSENGER_MOBILE_STORY_MEDIA",
|
|
101
|
+
"MOBILE_BANNER",
|
|
102
|
+
"MOBILE_FEED_BASIC",
|
|
103
|
+
"MOBILE_FEED_STANDARD",
|
|
104
|
+
"MOBILE_FULLWIDTH",
|
|
105
|
+
"MOBILE_INTERSTITIAL",
|
|
106
|
+
"MOBILE_MEDIUM_RECTANGLE",
|
|
107
|
+
"MOBILE_NATIVE",
|
|
108
|
+
"RIGHT_COLUMN_STANDARD",
|
|
109
|
+
"SUGGESTED_VIDEO_DESKTOP",
|
|
110
|
+
"SUGGESTED_VIDEO_FULLSCREEN_MOBILE",
|
|
111
|
+
"SUGGESTED_VIDEO_IMMERSIVE_MOBILE",
|
|
112
|
+
"SUGGESTED_VIDEO_MOBILE",
|
|
113
|
+
"WATCH_FEED_HOME",
|
|
114
|
+
"WATCH_FEED_MOBILE",
|
|
115
|
+
"WHATSAPP_STATUS_MEDIA"
|
|
116
|
+
];
|
|
117
|
+
function failPreviewValidation(message) {
|
|
118
|
+
writeAdsJson({ ok: false, error: { code: "VALIDATION_ERROR", message } });
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
function resolvePlacement(position, platform) {
|
|
122
|
+
const platformArg = typeof platform === "string" ? platform.toLowerCase() : void 0;
|
|
123
|
+
if (platformArg && platformArg !== "facebook" && platformArg !== "instagram") {
|
|
124
|
+
failPreviewValidation("--platform must be facebook or instagram");
|
|
125
|
+
}
|
|
126
|
+
const format = previewFormatForPosition(position, platformArg);
|
|
127
|
+
if (format) {
|
|
128
|
+
return format;
|
|
129
|
+
}
|
|
130
|
+
if (PLATFORM_SCOPED_POSITIONS.has(position) && !platformArg) {
|
|
131
|
+
failPreviewValidation(
|
|
132
|
+
`--placement ${position} names a different surface on Facebook and on Instagram \u2014 add --platform facebook or --platform instagram (the breakdown row's publisher_platform)`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
failPreviewValidation(
|
|
136
|
+
`No Meta preview format is published for placement "${position}". Meta does not document one for every placement (facebook_notification among them), so this placement cannot be previewed \u2014 report it as unverified rather than inferring what it renders. Pass the platform_position exactly as the insights breakdown spelled it: targeting names a few surfaces differently (story, reels, explore_home) and those names never appear in a breakdown. Previewable placements: ${listPlacements()}`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
function listPlacements() {
|
|
140
|
+
const facebook = Object.keys(FACEBOOK_PREVIEW_FORMATS).join(", ");
|
|
141
|
+
const instagram = Object.keys(INSTAGRAM_PREVIEW_FORMATS).join(", ");
|
|
142
|
+
return `facebook \u2014 ${facebook}; instagram \u2014 ${instagram}`;
|
|
143
|
+
}
|
|
144
|
+
function previewFileName(target) {
|
|
145
|
+
const id = target.adId ?? target.creativeId;
|
|
146
|
+
if (id) return `meta-${id}`;
|
|
147
|
+
return `meta-draft-${createHash("sha256").update(target.creative ?? "").digest("hex").slice(0, 12)}`;
|
|
148
|
+
}
|
|
149
|
+
var previewCommand = defineCommand({
|
|
150
|
+
meta: {
|
|
151
|
+
name: "preview",
|
|
152
|
+
description: `See a creative or ad as Meta renders it in one placement: shownText (the text people see, in order)
|
|
153
|
+
plus a picture to Read for what text cannot tell (words in the artwork, cropping, how it looks).
|
|
154
|
+
--out-file also saves Meta's raw iframe HTML (its URL holds a short-lived access token \u2014 treat as secret).
|
|
155
|
+
|
|
156
|
+
Start here before saying anything about how an ad LOOKS (which text shows, the headline under the
|
|
157
|
+
image, the button). Start here too when you need to know what a creative looks like in one specific placement \u2014 this is
|
|
158
|
+
Meta's own renderer, so it settles "does my video show as a still image there?" without guessing.
|
|
159
|
+
Pass the placement straight from an insights breakdown with --placement (a platform_position value),
|
|
160
|
+
or a Meta ad_format with --ad-format. Run --list-formats to see both sets.
|
|
161
|
+
|
|
162
|
+
Examples:
|
|
163
|
+
baker ads meta preview --creative-id 6123 --ad-format MOBILE_FEED_STANDARD
|
|
164
|
+
baker ads meta preview --creative-id 6123 --placement facebook_reels_overlay --platform facebook
|
|
165
|
+
baker ads meta preview --ad-id 9988 --ad-format INSTAGRAM_REELS --out-dir /tmp/review
|
|
166
|
+
baker ads meta preview --account-id act_123 --creative '{"object_story_spec":{...}}' --ad-format MOBILE_FEED_STANDARD`
|
|
167
|
+
},
|
|
168
|
+
args: {
|
|
169
|
+
"creative-id": { type: "string", description: "Existing creative ID" },
|
|
170
|
+
"ad-id": { type: "string", description: "Existing ad ID" },
|
|
171
|
+
"account-id": { type: "string", description: "Required when previewing an unpublished --creative spec" },
|
|
172
|
+
creative: { type: "string", description: "JSON spec of an unpublished creative (e.g. object_story_spec)" },
|
|
173
|
+
"ad-format": { type: "string", description: "Meta ad_format enum value (--list-formats to see them)" },
|
|
174
|
+
placement: {
|
|
175
|
+
type: "string",
|
|
176
|
+
description: "platform_position from an insights breakdown (e.g. facebook_reels_overlay) \u2014 resolved to an ad_format"
|
|
177
|
+
},
|
|
178
|
+
platform: { type: "string", description: "facebook|instagram \u2014 required for --placement feed, which both report" },
|
|
179
|
+
"list-formats": { type: "boolean", description: "Print the ad_format values and placement mappings, then exit" },
|
|
180
|
+
"out-file": { type: "string", description: "Also save Meta's iframe HTML to this path" },
|
|
181
|
+
"out-dir": { type: "string", description: `Folder for the picture (default: ${AD_PREVIEW_DIR})` },
|
|
182
|
+
"no-cache": NO_CACHE_ARG
|
|
183
|
+
},
|
|
184
|
+
run: async ({ args }) => {
|
|
185
|
+
if (args["list-formats"]) {
|
|
186
|
+
writeAdsJson({
|
|
187
|
+
ok: true,
|
|
188
|
+
data: {
|
|
189
|
+
adFormats: VALID_AD_FORMATS,
|
|
190
|
+
placements: { facebook: FACEBOOK_PREVIEW_FORMATS, instagram: INSTAGRAM_PREVIEW_FORMATS }
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const placement = args.placement;
|
|
196
|
+
const adFormat = placement ? resolvePlacement(placement, args.platform) : args["ad-format"];
|
|
197
|
+
if (!adFormat) {
|
|
198
|
+
failPreviewValidation("pass --ad-format or --placement (see --list-formats)");
|
|
199
|
+
}
|
|
200
|
+
if (!VALID_AD_FORMATS.includes(adFormat)) {
|
|
201
|
+
failPreviewValidation(
|
|
202
|
+
`Invalid --ad-format "${adFormat}". Meta's ad_format values: ${VALID_AD_FORMATS.join(", ")}. To preview a placement you saw in an insights breakdown, pass --placement <platform_position> instead of guessing a format name.`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
const body = { adFormat };
|
|
206
|
+
if (args["creative-id"]) body.creativeId = args["creative-id"];
|
|
207
|
+
if (args["ad-id"]) body.adId = args["ad-id"];
|
|
208
|
+
if (args["account-id"]) body.accountId = args["account-id"];
|
|
209
|
+
if (args.creative) body.creative = args.creative;
|
|
210
|
+
if (args["no-cache"]) body.skipCache = true;
|
|
211
|
+
try {
|
|
212
|
+
const data = await apiPost("/api/ads/meta/preview", body);
|
|
213
|
+
if (args["out-file"]) {
|
|
214
|
+
writeFileSync(args["out-file"], data.map((d) => d.body).join("\n"), "utf-8");
|
|
215
|
+
}
|
|
216
|
+
const rendered = await renderAdPreviews(
|
|
217
|
+
data.map((d, i) => ({ placement: data.length > 1 ? `${adFormat}-${i + 1}` : adFormat, html: d.body })),
|
|
218
|
+
{
|
|
219
|
+
dir: args["out-dir"] ? String(args["out-dir"]) : AD_PREVIEW_DIR,
|
|
220
|
+
name: previewFileName({
|
|
221
|
+
adId: args["ad-id"],
|
|
222
|
+
creativeId: args["creative-id"],
|
|
223
|
+
creative: args.creative
|
|
224
|
+
})
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
const hints = placement ? [
|
|
228
|
+
`Rendered ${placement} as ad_format ${adFormat}. Meta does not document what it renders for a creative a placement cannot take, so the picture is the evidence.`,
|
|
229
|
+
...rendered.hints
|
|
230
|
+
] : rendered.hints;
|
|
231
|
+
writeJsonEnvelope({
|
|
232
|
+
ok: true,
|
|
233
|
+
data: { adFormat, previews: rendered.previews, ...args["out-file"] ? { file: args["out-file"] } : {} },
|
|
234
|
+
hints
|
|
235
|
+
});
|
|
236
|
+
} catch (err) {
|
|
237
|
+
handleMetaError(err);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
export {
|
|
242
|
+
previewCommand,
|
|
243
|
+
previewFileName
|
|
244
|
+
};
|
|
245
|
+
//# sourceMappingURL=preview-OV2EZ6YF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/preview.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { writeFileSync } from \"node:fs\";\nimport {\n FACEBOOK_PREVIEW_FORMATS,\n INSTAGRAM_PREVIEW_FORMATS,\n PLATFORM_SCOPED_POSITIONS,\n previewFormatForPosition,\n} from \"@baker/api/ads-meta\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { AD_PREVIEW_DIR, renderAdPreviews } from \"../ad-preview-images.ts\";\nimport { writeAdsJson, writeJsonEnvelope } from \"../output.ts\";\nimport { handleMetaError } from \"./shared.ts\";\n\n/**\n * The `ad_format` enum of `generatepreviews` as Meta's reference lists it (every value rendered live on v26.0, 2026-10-15)\n * (read 2026-10-14), plus INSTAGRAM_SHOP — dropped from that list yet still\n * rendered live the same day, so a format an older answer named keeps working.\n */\nconst VALID_AD_FORMATS = [\n \"AUDIENCE_NETWORK_INSTREAM_VIDEO\",\n \"AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILE\",\n \"AUDIENCE_NETWORK_OUTSTREAM_VIDEO\",\n \"AUDIENCE_NETWORK_REWARDED_VIDEO\",\n \"BIZ_DISCO_FEED_MOBILE\",\n \"DESKTOP_FEED_STANDARD\",\n \"FACEBOOK_IFU_REELS_MOBILE\",\n \"FACEBOOK_PROFILE_FEED_DESKTOP\",\n \"FACEBOOK_PROFILE_FEED_MOBILE\",\n \"FACEBOOK_PROFILE_REELS_MOBILE\",\n \"FACEBOOK_REELS_BANNER\",\n \"FACEBOOK_REELS_BANNER_DESKTOP\",\n \"FACEBOOK_REELS_BANNER_FEED_ANDROID\",\n \"FACEBOOK_REELS_BANNER_FEED_ANDROID_LARGE\",\n \"FACEBOOK_REELS_BANNER_FULLSCREEN_IOS\",\n \"FACEBOOK_REELS_BANNER_FULLSCREEN_MOBILE\",\n \"FACEBOOK_REELS_MOBILE\",\n \"FACEBOOK_REELS_POSTLOOP\",\n \"FACEBOOK_REELS_POSTLOOP_FEED\",\n \"FACEBOOK_REELS_SIMILAR_PRODUCTS_MOBILE\",\n \"FACEBOOK_REELS_STICKER\",\n \"FACEBOOK_STORY_MOBILE\",\n \"FACEBOOK_STORY_STICKER_MOBILE\",\n \"INSTAGRAM_EXPLORE_CONTEXTUAL\",\n \"INSTAGRAM_EXPLORE_GRID_HOME\",\n \"INSTAGRAM_EXPLORE_IMMERSIVE\",\n \"INSTAGRAM_FEED_WEB\",\n \"INSTAGRAM_FEED_WEB_M_SITE\",\n \"INSTAGRAM_LEAD_GEN_MULTI_SUBMIT_ADS\",\n \"INSTAGRAM_PROFILE_FEED\",\n \"INSTAGRAM_PROFILE_REELS\",\n \"INSTAGRAM_REELS\",\n \"INSTAGRAM_REELS_OVERLAY\",\n \"INSTAGRAM_REELS_WEB\",\n \"INSTAGRAM_REELS_WEB_M_SITE\",\n \"INSTAGRAM_SEARCH_CHAIN\",\n \"INSTAGRAM_SEARCH_GRID\",\n \"INSTAGRAM_SHOP\",\n \"INSTAGRAM_STANDARD\",\n \"INSTAGRAM_STORY\",\n \"INSTAGRAM_STORY_EFFECT_TRAY\",\n \"INSTAGRAM_STORY_WEB\",\n \"INSTAGRAM_STORY_WEB_M_SITE\",\n \"INSTANT_ARTICLE_RECIRCULATION_AD\",\n \"INSTANT_ARTICLE_STANDARD\",\n \"INSTREAM_BANNER_DESKTOP\",\n \"INSTREAM_BANNER_FEED_IOS\",\n \"INSTREAM_BANNER_FULLSCREEN_IOS\",\n \"INSTREAM_BANNER_FULLSCREEN_MOBILE\",\n \"INSTREAM_BANNER_IMMERSIVE_MOBILE\",\n \"INSTREAM_BANNER_MOBILE\",\n \"INSTREAM_VIDEO_DESKTOP\",\n \"INSTREAM_VIDEO_FULLSCREEN_IOS\",\n \"INSTREAM_VIDEO_FULLSCREEN_MOBILE\",\n \"INSTREAM_VIDEO_IMAGE\",\n \"INSTREAM_VIDEO_IMMERSIVE_MOBILE\",\n \"INSTREAM_VIDEO_MOBILE\",\n \"JOB_BROWSER_DESKTOP\",\n \"JOB_BROWSER_MOBILE\",\n \"MARKETPLACE_MOBILE\",\n \"MESSENGER_MOBILE_INBOX_MEDIA\",\n \"MESSENGER_MOBILE_STORY_MEDIA\",\n \"MOBILE_BANNER\",\n \"MOBILE_FEED_BASIC\",\n \"MOBILE_FEED_STANDARD\",\n \"MOBILE_FULLWIDTH\",\n \"MOBILE_INTERSTITIAL\",\n \"MOBILE_MEDIUM_RECTANGLE\",\n \"MOBILE_NATIVE\",\n \"RIGHT_COLUMN_STANDARD\",\n \"SUGGESTED_VIDEO_DESKTOP\",\n \"SUGGESTED_VIDEO_FULLSCREEN_MOBILE\",\n \"SUGGESTED_VIDEO_IMMERSIVE_MOBILE\",\n \"SUGGESTED_VIDEO_MOBILE\",\n \"WATCH_FEED_HOME\",\n \"WATCH_FEED_MOBILE\",\n \"WHATSAPP_STATUS_MEDIA\",\n];\n\n/** A bad flag is not a network failure — mislabelling it invites a retry of the same doomed call. */\nfunction failPreviewValidation(message: string): never {\n writeAdsJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\n/**\n * Preview is the free way to see what Meta actually renders for a creative in a\n * given surface — the check that turns \"this placement must be showing a still\"\n * from a claim into an observation. It was being used by guessing format names,\n * so both doors are open now: the Meta `ad_format` enum via `--ad-format`, and\n * the `platform_position` an insights breakdown reports via `--placement`.\n */\nfunction resolvePlacement(position: string, platform: unknown): string {\n const platformArg = typeof platform === \"string\" ? platform.toLowerCase() : undefined;\n if (platformArg && platformArg !== \"facebook\" && platformArg !== \"instagram\") {\n failPreviewValidation(\"--platform must be facebook or instagram\");\n }\n const format = previewFormatForPosition(position, platformArg);\n if (format) {\n return format;\n }\n if (PLATFORM_SCOPED_POSITIONS.has(position) && !platformArg) {\n failPreviewValidation(\n `--placement ${position} names a different surface on Facebook and on Instagram — add --platform facebook or --platform instagram (the breakdown row's publisher_platform)`,\n );\n }\n failPreviewValidation(\n `No Meta preview format is published for placement \"${position}\". Meta does not document one for every placement (facebook_notification among them), so this placement cannot be previewed — report it as unverified rather than inferring what it renders. Pass the platform_position exactly as the insights breakdown spelled it: targeting names a few surfaces differently (story, reels, explore_home) and those names never appear in a breakdown. Previewable placements: ${listPlacements()}`,\n );\n}\n\nfunction listPlacements(): string {\n const facebook = Object.keys(FACEBOOK_PREVIEW_FORMATS).join(\", \");\n const instagram = Object.keys(INSTAGRAM_PREVIEW_FORMATS).join(\", \");\n return `facebook — ${facebook}; instagram — ${instagram}`;\n}\n\n/** File name for a preview's picture. An unpublished spec has no id, so its content names it. */\nexport function previewFileName(target: { adId?: string; creativeId?: string; creative?: string }): string {\n const id = target.adId ?? target.creativeId;\n if (id) return `meta-${id}`;\n return `meta-draft-${createHash(\"sha256\")\n .update(target.creative ?? \"\")\n .digest(\"hex\")\n .slice(0, 12)}`;\n}\n\nexport const previewCommand = defineCommand({\n meta: {\n name: \"preview\",\n description: `See a creative or ad as Meta renders it in one placement: shownText (the text people see, in order)\nplus a picture to Read for what text cannot tell (words in the artwork, cropping, how it looks).\n--out-file also saves Meta's raw iframe HTML (its URL holds a short-lived access token — treat as secret).\n\nStart here before saying anything about how an ad LOOKS (which text shows, the headline under the\nimage, the button). Start here too when you need to know what a creative looks like in one specific placement — this is\nMeta's own renderer, so it settles \"does my video show as a still image there?\" without guessing.\nPass the placement straight from an insights breakdown with --placement (a platform_position value),\nor a Meta ad_format with --ad-format. Run --list-formats to see both sets.\n\nExamples:\n baker ads meta preview --creative-id 6123 --ad-format MOBILE_FEED_STANDARD\n baker ads meta preview --creative-id 6123 --placement facebook_reels_overlay --platform facebook\n baker ads meta preview --ad-id 9988 --ad-format INSTAGRAM_REELS --out-dir /tmp/review\n baker ads meta preview --account-id act_123 --creative '{\"object_story_spec\":{...}}' --ad-format MOBILE_FEED_STANDARD`,\n },\n args: {\n \"creative-id\": { type: \"string\", description: \"Existing creative ID\" },\n \"ad-id\": { type: \"string\", description: \"Existing ad ID\" },\n \"account-id\": { type: \"string\", description: \"Required when previewing an unpublished --creative spec\" },\n creative: { type: \"string\", description: \"JSON spec of an unpublished creative (e.g. object_story_spec)\" },\n \"ad-format\": { type: \"string\", description: \"Meta ad_format enum value (--list-formats to see them)\" },\n placement: {\n type: \"string\",\n description:\n \"platform_position from an insights breakdown (e.g. facebook_reels_overlay) — resolved to an ad_format\",\n },\n platform: { type: \"string\", description: \"facebook|instagram — required for --placement feed, which both report\" },\n \"list-formats\": { type: \"boolean\", description: \"Print the ad_format values and placement mappings, then exit\" },\n \"out-file\": { type: \"string\", description: \"Also save Meta's iframe HTML to this path\" },\n \"out-dir\": { type: \"string\", description: `Folder for the picture (default: ${AD_PREVIEW_DIR})` },\n \"no-cache\": NO_CACHE_ARG,\n },\n run: async ({ args }) => {\n if (args[\"list-formats\"]) {\n writeAdsJson({\n ok: true,\n data: {\n adFormats: VALID_AD_FORMATS,\n placements: { facebook: FACEBOOK_PREVIEW_FORMATS, instagram: INSTAGRAM_PREVIEW_FORMATS },\n },\n });\n return;\n }\n\n const placement = args.placement as string | undefined;\n const adFormat = placement ? resolvePlacement(placement, args.platform) : (args[\"ad-format\"] as string);\n if (!adFormat) {\n failPreviewValidation(\"pass --ad-format or --placement (see --list-formats)\");\n }\n if (!VALID_AD_FORMATS.includes(adFormat)) {\n failPreviewValidation(\n `Invalid --ad-format \"${adFormat}\". Meta's ad_format values: ${VALID_AD_FORMATS.join(\", \")}. To preview a placement you saw in an insights breakdown, pass --placement <platform_position> instead of guessing a format name.`,\n );\n }\n const body: Record<string, unknown> = { adFormat };\n if (args[\"creative-id\"]) body.creativeId = args[\"creative-id\"];\n if (args[\"ad-id\"]) body.adId = args[\"ad-id\"];\n if (args[\"account-id\"]) body.accountId = args[\"account-id\"];\n if (args.creative) body.creative = args.creative;\n if (args[\"no-cache\"]) body.skipCache = true;\n\n try {\n const data = await apiPost<Array<{ body: string }>>(\"/api/ads/meta/preview\", body);\n if (args[\"out-file\"]) {\n writeFileSync(args[\"out-file\"] as string, data.map((d) => d.body).join(\"\\n\"), \"utf-8\");\n }\n const rendered = await renderAdPreviews(\n data.map((d, i) => ({ placement: data.length > 1 ? `${adFormat}-${i + 1}` : adFormat, html: d.body })),\n {\n dir: args[\"out-dir\"] ? String(args[\"out-dir\"]) : AD_PREVIEW_DIR,\n name: previewFileName({\n adId: args[\"ad-id\"] as string | undefined,\n creativeId: args[\"creative-id\"] as string | undefined,\n creative: args.creative as string | undefined,\n }),\n },\n );\n const hints = placement\n ? [\n `Rendered ${placement} as ad_format ${adFormat}. Meta does not document what it renders for a creative a placement cannot take, so the picture is the evidence.`,\n ...rendered.hints,\n ]\n : rendered.hints;\n writeJsonEnvelope({\n ok: true,\n data: { adFormat, previews: rendered.previews, ...(args[\"out-file\"] ? { file: args[\"out-file\"] } : {}) },\n hints,\n });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvArg,
|
|
3
|
+
requireTargets,
|
|
4
|
+
stageAccountId,
|
|
5
|
+
stageXOp,
|
|
6
|
+
stageXOps
|
|
7
|
+
} from "./chunk-PCUWBZM3.js";
|
|
8
|
+
import "./chunk-FIN4ZXGJ.js";
|
|
9
|
+
import "./chunk-H6GTG665.js";
|
|
10
|
+
import "./chunk-QYH2UZAK.js";
|
|
11
|
+
import {
|
|
12
|
+
TARGETING_OPERATORS,
|
|
13
|
+
TARGETING_TYPES
|
|
14
|
+
} from "./chunk-MKLAZD23.js";
|
|
15
|
+
import "./chunk-QV6AST5T.js";
|
|
16
|
+
import "./chunk-WCU362Z6.js";
|
|
17
|
+
import "./chunk-GIWHHCD6.js";
|
|
18
|
+
import "./chunk-SOPVIIUW.js";
|
|
19
|
+
import "./chunk-G4FG5EQO.js";
|
|
20
|
+
import "./chunk-R7XDGNZD.js";
|
|
21
|
+
import "./chunk-MSMTG6OC.js";
|
|
22
|
+
import "./chunk-GFWWHCBF.js";
|
|
23
|
+
import "./chunk-JXTNP3B5.js";
|
|
24
|
+
import "./chunk-45D6WRCJ.js";
|
|
25
|
+
import {
|
|
26
|
+
registerSchema
|
|
27
|
+
} from "./chunk-CCYZJMZ7.js";
|
|
28
|
+
import "./chunk-YQSBHWOI.js";
|
|
29
|
+
|
|
30
|
+
// src/commands/ads/x/promoted-tweet-writes.ts
|
|
31
|
+
import { defineCommand } from "citty";
|
|
32
|
+
registerSchema({
|
|
33
|
+
command: "ads.x.promotedTweets.create",
|
|
34
|
+
description: "Stage promoting one or more existing posts in an X ad group. Takes post (tweet) ids \u2014 the numeric id from the post's URL, not a base36 ads id.",
|
|
35
|
+
args: {
|
|
36
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
37
|
+
"line-item-id": {
|
|
38
|
+
type: "string",
|
|
39
|
+
description: "Ad group id, or an x_temp_* ref staged in this draft",
|
|
40
|
+
required: true
|
|
41
|
+
},
|
|
42
|
+
"tweet-ids": { type: "string", description: "CSV of post ids", required: true }
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
var promotedTweetsCreateCommand = defineCommand({
|
|
46
|
+
meta: {
|
|
47
|
+
name: "create",
|
|
48
|
+
description: `Stage promoting posts in an ad group (applies when the chat is published).
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
baker ads x promoted-tweets create --line-item-id wiee9 --tweet-ids 2042198488033661285`
|
|
52
|
+
},
|
|
53
|
+
args: {
|
|
54
|
+
"account-id": { type: "string", description: "X Ads account ID" },
|
|
55
|
+
"line-item-id": { type: "string", description: "Ad group id or x_temp_* ref", required: true },
|
|
56
|
+
"tweet-ids": { type: "string", description: "CSV of post ids", required: true }
|
|
57
|
+
},
|
|
58
|
+
run: async ({ args }) => {
|
|
59
|
+
const accountId = await stageAccountId(args);
|
|
60
|
+
await stageXOp({
|
|
61
|
+
kind: "promotedTweet.create",
|
|
62
|
+
accountId,
|
|
63
|
+
payload: { lineItemId: args["line-item-id"], tweetIds: csvArg(args["tweet-ids"]) ?? [] }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
registerSchema({
|
|
68
|
+
command: "ads.x.promotedTweets.remove",
|
|
69
|
+
description: "Stage removing one or more promoted posts. X has no pause for these \u2014 removal is the only way to stop one serving, and it cannot be undone (re-promoting creates a new association).",
|
|
70
|
+
args: {
|
|
71
|
+
ids: { type: "string", description: "Promoted-post ids, comma-separated", required: true },
|
|
72
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false }
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
var promotedTweetsRemoveCommand = defineCommand({
|
|
76
|
+
meta: {
|
|
77
|
+
name: "remove",
|
|
78
|
+
description: `Stage removing promoted posts. Cannot be undone.
|
|
79
|
+
|
|
80
|
+
Example:
|
|
81
|
+
baker ads x promoted-tweets remove ayyorn,ayyoro`
|
|
82
|
+
},
|
|
83
|
+
args: {
|
|
84
|
+
ids: { type: "positional", description: "Promoted-post ids, comma-separated", required: true },
|
|
85
|
+
"account-id": { type: "string", description: "X Ads account ID" }
|
|
86
|
+
},
|
|
87
|
+
run: async ({ args }) => {
|
|
88
|
+
const accountId = await stageAccountId(args);
|
|
89
|
+
await stageXOps(
|
|
90
|
+
requireTargets(args, "ids").map((id) => ({
|
|
91
|
+
kind: "promotedTweet.remove",
|
|
92
|
+
accountId,
|
|
93
|
+
target: id,
|
|
94
|
+
payload: {}
|
|
95
|
+
}))
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
registerSchema({
|
|
100
|
+
command: "ads.x.targetingCriteria.create",
|
|
101
|
+
description: `Stage one targeting criterion on an X ad group. One op per value, because X stores each criterion as its own entity. Look values up first with \`baker ads x targeting-constants\`.
|
|
102
|
+
Types: ${TARGETING_TYPES.join(", ")}. Operators: ${TARGETING_OPERATORS.join(" (include) | ")} (exclude).`,
|
|
103
|
+
args: {
|
|
104
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
105
|
+
"line-item-id": { type: "string", description: "Ad group id, or an x_temp_* ref", required: true },
|
|
106
|
+
type: { type: "string", description: TARGETING_TYPES.join(" | "), required: true },
|
|
107
|
+
value: {
|
|
108
|
+
type: "string",
|
|
109
|
+
description: "Targeting value \u2014 from `targeting-constants` for the lookup types",
|
|
110
|
+
required: true
|
|
111
|
+
},
|
|
112
|
+
operator: { type: "string", description: "EQ to include (default), NE to exclude", required: false }
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var targetingCriteriaCreateCommand = defineCommand({
|
|
116
|
+
meta: {
|
|
117
|
+
name: "create",
|
|
118
|
+
description: `Stage one targeting criterion on an ad group.
|
|
119
|
+
|
|
120
|
+
Examples:
|
|
121
|
+
baker ads x targeting-criteria create --line-item-id wiee9 --type LOCATION --value 96683cc9126741d1
|
|
122
|
+
baker ads x targeting-criteria create --line-item-id wiee9 --type INTEREST --value 25 --operator NE`
|
|
123
|
+
},
|
|
124
|
+
args: {
|
|
125
|
+
"account-id": { type: "string", description: "X Ads account ID" },
|
|
126
|
+
"line-item-id": { type: "string", description: "Ad group id or x_temp_* ref", required: true },
|
|
127
|
+
type: { type: "string", description: TARGETING_TYPES.join(" | "), required: true },
|
|
128
|
+
value: { type: "string", description: "Targeting value", required: true },
|
|
129
|
+
operator: { type: "string", description: "EQ (include) | NE (exclude)" }
|
|
130
|
+
},
|
|
131
|
+
run: async ({ args }) => {
|
|
132
|
+
const accountId = await stageAccountId(args);
|
|
133
|
+
await stageXOp({
|
|
134
|
+
kind: "targetingCriteria.create",
|
|
135
|
+
accountId,
|
|
136
|
+
payload: {
|
|
137
|
+
lineItemId: args["line-item-id"],
|
|
138
|
+
targetingType: args.type,
|
|
139
|
+
targetingValue: args.value,
|
|
140
|
+
...args.operator ? { operatorType: args.operator } : {}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
registerSchema({
|
|
146
|
+
command: "ads.x.targetingCriteria.remove",
|
|
147
|
+
description: "Stage removing one or more targeting criteria from an X ad group.",
|
|
148
|
+
args: {
|
|
149
|
+
ids: { type: "string", description: "Targeting criterion ids, comma-separated", required: true },
|
|
150
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false }
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
var targetingCriteriaRemoveCommand = defineCommand({
|
|
154
|
+
meta: {
|
|
155
|
+
name: "remove",
|
|
156
|
+
description: `Stage removing targeting criteria.
|
|
157
|
+
|
|
158
|
+
Example:
|
|
159
|
+
baker ads x targeting-criteria remove 1dmtken`
|
|
160
|
+
},
|
|
161
|
+
args: {
|
|
162
|
+
ids: { type: "positional", description: "Targeting criterion ids, comma-separated", required: true },
|
|
163
|
+
"account-id": { type: "string", description: "X Ads account ID" }
|
|
164
|
+
},
|
|
165
|
+
run: async ({ args }) => {
|
|
166
|
+
const accountId = await stageAccountId(args);
|
|
167
|
+
await stageXOps(
|
|
168
|
+
requireTargets(args, "ids").map((id) => ({
|
|
169
|
+
kind: "targetingCriteria.remove",
|
|
170
|
+
accountId,
|
|
171
|
+
target: id,
|
|
172
|
+
payload: {}
|
|
173
|
+
}))
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
export {
|
|
178
|
+
promotedTweetsCreateCommand,
|
|
179
|
+
promotedTweetsRemoveCommand,
|
|
180
|
+
targetingCriteriaCreateCommand,
|
|
181
|
+
targetingCriteriaRemoveCommand
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=promoted-tweet-writes-3P6QFGLN.js.map
|