@koda-sl/baker-cli 0.384.0-dev.4699b7308 → 0.384.0-dev.557795bef
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 +1098 -217
- package/canvas/tiktok-captions-composition/index.html +5 -6
- package/canvas/tiktok-captions-composition/meta.json +5 -0
- package/dist/account-4UEZAY5T.js +49 -0
- package/dist/account-4UEZAY5T.js.map +1 -0
- package/dist/account-OINZG6UP.js +80 -0
- package/dist/account-OINZG6UP.js.map +1 -0
- package/dist/account-QMDCUUSG.js +79 -0
- package/dist/account-QMDCUUSG.js.map +1 -0
- package/dist/account-reads-ZKKDYHK5.js +218 -0
- package/dist/account-reads-ZKKDYHK5.js.map +1 -0
- package/dist/account-writes-N4JDIDRB.js +66 -0
- package/dist/account-writes-N4JDIDRB.js.map +1 -0
- package/dist/accounts-AEBQFCNH.js +114 -0
- package/dist/accounts-AEBQFCNH.js.map +1 -0
- package/dist/accounts-EBGJ2YO7.js +611 -0
- package/dist/accounts-EBGJ2YO7.js.map +1 -0
- package/dist/accounts-HP4BLKK5.js +75 -0
- package/dist/accounts-HP4BLKK5.js.map +1 -0
- package/dist/accounts-YE2SQ3UQ.js +77 -0
- package/dist/accounts-YE2SQ3UQ.js.map +1 -0
- package/dist/accounts-Z4CLGQXJ.js +115 -0
- package/dist/accounts-Z4CLGQXJ.js.map +1 -0
- package/dist/actions-ADRIEQZX.js +55 -0
- package/dist/actions-ADRIEQZX.js.map +1 -0
- package/dist/active-entities-YB46ADQN.js +103 -0
- package/dist/active-entities-YB46ADQN.js.map +1 -0
- package/dist/activities-DUAIQJLN.js +74 -0
- package/dist/activities-DUAIQJLN.js.map +1 -0
- package/dist/ad-group-writes-HL3EZ3BT.js +170 -0
- package/dist/ad-group-writes-HL3EZ3BT.js.map +1 -0
- package/dist/ad-groups-FGS5JJGN.js +68 -0
- package/dist/ad-groups-FGS5JJGN.js.map +1 -0
- package/dist/ad-writes-LX4ACUHB.js +174 -0
- package/dist/ad-writes-LX4ACUHB.js.map +1 -0
- package/dist/add-5CUXNOUM.js +97 -0
- package/dist/add-5CUXNOUM.js.map +1 -0
- package/dist/add-6OXOQNET.js +302 -0
- package/dist/add-6OXOQNET.js.map +1 -0
- package/dist/add-E66HBIZV.js +105 -0
- package/dist/add-E66HBIZV.js.map +1 -0
- package/dist/add-ROK3ETQC.js +104 -0
- package/dist/add-ROK3ETQC.js.map +1 -0
- package/dist/add-accounts-YME5SCXD.js +91 -0
- package/dist/add-accounts-YME5SCXD.js.map +1 -0
- package/dist/ads-65R3WMDU.js +128 -0
- package/dist/ads-65R3WMDU.js.map +1 -0
- package/dist/ads-O63J7BDF.js +113 -0
- package/dist/ads-O63J7BDF.js.map +1 -0
- package/dist/ads-TFZ5PXKS.js +77 -0
- package/dist/ads-TFZ5PXKS.js.map +1 -0
- package/dist/ads-XSVRH45E.js +40 -0
- package/dist/ads-XSVRH45E.js.map +1 -0
- package/dist/adsets-Y62JOOTV.js +176 -0
- package/dist/adsets-Y62JOOTV.js.map +1 -0
- package/dist/advertisers-AIC4QPEK.js +120 -0
- package/dist/advertisers-AIC4QPEK.js.map +1 -0
- package/dist/advertisers-LJ2HKJ4W.js +125 -0
- package/dist/advertisers-LJ2HKJ4W.js.map +1 -0
- package/dist/analytics-N4PGXXEQ.js +1976 -0
- package/dist/analytics-N4PGXXEQ.js.map +1 -0
- package/dist/analytics-X3DR3UVG.js +433 -0
- package/dist/analytics-X3DR3UVG.js.map +1 -0
- package/dist/animate-E3SKQ6SI.js +480 -0
- package/dist/animate-E3SKQ6SI.js.map +1 -0
- package/dist/assign-Y7HGSQVJ.js +77 -0
- package/dist/assign-Y7HGSQVJ.js.map +1 -0
- package/dist/audience-size-SWX5YJQF.js +94 -0
- package/dist/audience-size-SWX5YJQF.js.map +1 -0
- package/dist/audiences-5A6BCWSA.js +268 -0
- package/dist/audiences-5A6BCWSA.js.map +1 -0
- package/dist/audiences-6QOCASVV.js +78 -0
- package/dist/audiences-6QOCASVV.js.map +1 -0
- package/dist/audiences-O67NGIP5.js +85 -0
- package/dist/audiences-O67NGIP5.js.map +1 -0
- package/dist/audit-2KVLWSAI.js +151 -0
- package/dist/audit-2KVLWSAI.js.map +1 -0
- package/dist/audit-HWK24VXI.js +88 -0
- package/dist/audit-HWK24VXI.js.map +1 -0
- package/dist/autocomplete-JJSGC5WU.js +111 -0
- package/dist/autocomplete-JJSGC5WU.js.map +1 -0
- package/dist/avatars-XIEKQ77J.js +38 -0
- package/dist/avatars-XIEKQ77J.js.map +1 -0
- package/dist/bid-pricing-D2HGRWZL.js +99 -0
- package/dist/bid-pricing-D2HGRWZL.js.map +1 -0
- package/dist/brand-AYYWRGIE.js +22 -0
- package/dist/brand-AYYWRGIE.js.map +1 -0
- package/dist/brief-3HUIDK5F.js +490 -0
- package/dist/brief-3HUIDK5F.js.map +1 -0
- package/dist/businesses-65EWTK5E.js +53 -0
- package/dist/businesses-65EWTK5E.js.map +1 -0
- package/dist/campaign-groups-6HCYR2JX.js +95 -0
- package/dist/campaign-groups-6HCYR2JX.js.map +1 -0
- package/dist/campaign-writes-M6JLF5AC.js +170 -0
- package/dist/campaign-writes-M6JLF5AC.js.map +1 -0
- package/dist/campaign-writes-Y6QPRQ4E.js +165 -0
- package/dist/campaign-writes-Y6QPRQ4E.js.map +1 -0
- package/dist/campaigns-6SM2ZSIH.js +76 -0
- package/dist/campaigns-6SM2ZSIH.js.map +1 -0
- package/dist/campaigns-7RKJZRY2.js +107 -0
- package/dist/campaigns-7RKJZRY2.js.map +1 -0
- package/dist/campaigns-KRI25JDZ.js +109 -0
- package/dist/campaigns-KRI25JDZ.js.map +1 -0
- package/dist/campaigns-TD7ZB5DG.js +110 -0
- package/dist/campaigns-TD7ZB5DG.js.map +1 -0
- package/dist/canvas-DMYY2DWI.js +46 -0
- package/dist/canvas-DMYY2DWI.js.map +1 -0
- package/dist/capabilities-3WJTXS2O.js +144 -0
- package/dist/capabilities-3WJTXS2O.js.map +1 -0
- package/dist/cards-7HRC4UQQ.js +85 -0
- package/dist/cards-7HRC4UQQ.js.map +1 -0
- package/dist/catalog-N6MDMIVL.js +64 -0
- package/dist/catalog-N6MDMIVL.js.map +1 -0
- package/dist/catalogs-PB46L7FH.js +128 -0
- package/dist/catalogs-PB46L7FH.js.map +1 -0
- package/dist/changes-SASUQK62.js +135 -0
- package/dist/changes-SASUQK62.js.map +1 -0
- package/dist/chatgpt-JKBSAG25.js +47 -0
- package/dist/chatgpt-JKBSAG25.js.map +1 -0
- package/dist/chats-WRVSQQB2.js +262 -0
- package/dist/chats-WRVSQQB2.js.map +1 -0
- package/dist/chunk-2FGKJY63.js +455 -0
- package/dist/chunk-2FGKJY63.js.map +1 -0
- package/dist/chunk-2GVXNKAE.js +42 -0
- package/dist/chunk-2GVXNKAE.js.map +1 -0
- package/dist/chunk-2J3PTIQB.js +479 -0
- package/dist/chunk-2J3PTIQB.js.map +1 -0
- package/dist/chunk-2J7XC2NO.js +346 -0
- package/dist/chunk-2J7XC2NO.js.map +1 -0
- package/dist/{chunk-VLUGGVJL.js → chunk-2UFRHW3T.js} +12 -4
- package/dist/chunk-2UFRHW3T.js.map +1 -0
- package/dist/chunk-2Y5V23PU.js +29 -0
- package/dist/chunk-2Y5V23PU.js.map +1 -0
- package/dist/chunk-3ACMDRSE.js +39 -0
- package/dist/chunk-3ACMDRSE.js.map +1 -0
- package/dist/chunk-3EWF7VII.js +1079 -0
- package/dist/chunk-3EWF7VII.js.map +1 -0
- package/dist/chunk-3LYMIKKN.js +625 -0
- package/dist/chunk-3LYMIKKN.js.map +1 -0
- package/dist/chunk-3M6RNCDD.js +26 -0
- package/dist/chunk-3M6RNCDD.js.map +1 -0
- package/dist/chunk-3MDO4RR2.js +310 -0
- package/dist/chunk-3MDO4RR2.js.map +1 -0
- package/dist/chunk-3NPOIHSX.js +6667 -0
- package/dist/chunk-3NPOIHSX.js.map +1 -0
- package/dist/chunk-3SK7TWGP.js +103 -0
- package/dist/chunk-3SK7TWGP.js.map +1 -0
- package/dist/chunk-3VXQYDJN.js +1743 -0
- package/dist/chunk-3VXQYDJN.js.map +1 -0
- package/dist/chunk-44VXKO65.js +106 -0
- package/dist/chunk-44VXKO65.js.map +1 -0
- package/dist/chunk-4NZ47VXO.js +137 -0
- package/dist/chunk-4NZ47VXO.js.map +1 -0
- package/dist/chunk-4X3UR372.js +225 -0
- package/dist/chunk-4X3UR372.js.map +1 -0
- package/dist/chunk-553XSIFW.js +304 -0
- package/dist/chunk-553XSIFW.js.map +1 -0
- package/dist/chunk-5FEBUCJU.js +25 -0
- package/dist/chunk-5FEBUCJU.js.map +1 -0
- package/dist/chunk-5HYSKH77.js +315 -0
- package/dist/chunk-5HYSKH77.js.map +1 -0
- package/dist/chunk-5MBPIONY.js +29 -0
- package/dist/chunk-5MBPIONY.js.map +1 -0
- package/dist/chunk-5UCP4EEQ.js +111 -0
- package/dist/chunk-5UCP4EEQ.js.map +1 -0
- package/dist/chunk-5VPJNNJL.js +494 -0
- package/dist/chunk-5VPJNNJL.js.map +1 -0
- package/dist/{chunk-VZEDAFAR.js → chunk-6YYSUISH.js} +47 -8
- package/dist/chunk-6YYSUISH.js.map +1 -0
- package/dist/chunk-7OHWEF3I.js +98 -0
- package/dist/chunk-7OHWEF3I.js.map +1 -0
- package/dist/chunk-A636XRD7.js +159 -0
- package/dist/chunk-A636XRD7.js.map +1 -0
- package/dist/chunk-A76FRBSF.js +297 -0
- package/dist/chunk-A76FRBSF.js.map +1 -0
- package/dist/chunk-AADVCEL4.js +817 -0
- package/dist/chunk-AADVCEL4.js.map +1 -0
- package/dist/chunk-AG62YO7C.js +96 -0
- package/dist/chunk-AG62YO7C.js.map +1 -0
- package/dist/chunk-AIRIT4GF.js +75 -0
- package/dist/chunk-AIRIT4GF.js.map +1 -0
- package/dist/chunk-AMCY5YCB.js +206 -0
- package/dist/chunk-AMCY5YCB.js.map +1 -0
- package/dist/chunk-AP3TP6VG.js +139 -0
- package/dist/chunk-AP3TP6VG.js.map +1 -0
- package/dist/chunk-APP475IQ.js +474 -0
- package/dist/chunk-APP475IQ.js.map +1 -0
- package/dist/chunk-AR7PU7BB.js +76 -0
- package/dist/chunk-AR7PU7BB.js.map +1 -0
- package/dist/chunk-B4S72KSS.js +172 -0
- package/dist/chunk-B4S72KSS.js.map +1 -0
- package/dist/chunk-BIPIL4QA.js +486 -0
- package/dist/chunk-BIPIL4QA.js.map +1 -0
- package/dist/chunk-BPUSL5Y2.js +58 -0
- package/dist/chunk-BPUSL5Y2.js.map +1 -0
- package/dist/chunk-BR32GHYD.js +65 -0
- package/dist/chunk-BR32GHYD.js.map +1 -0
- package/dist/chunk-CAMX6OHF.js +3182 -0
- package/dist/chunk-CAMX6OHF.js.map +1 -0
- package/dist/{chunk-MF7YA62W.js → chunk-CUL3VB4L.js} +10 -5
- package/dist/chunk-CUL3VB4L.js.map +1 -0
- package/dist/chunk-CVEY353K.js +66 -0
- package/dist/chunk-CVEY353K.js.map +1 -0
- package/dist/chunk-CWXADUKL.js +1599 -0
- package/dist/chunk-CWXADUKL.js.map +1 -0
- package/dist/chunk-D5FY4FAK.js +24 -0
- package/dist/chunk-D5FY4FAK.js.map +1 -0
- package/dist/chunk-DGCUPJZD.js +39 -0
- package/dist/chunk-DGCUPJZD.js.map +1 -0
- package/dist/chunk-DNCLWSHO.js +41 -0
- package/dist/chunk-DNCLWSHO.js.map +1 -0
- package/dist/chunk-DUPURL26.js +97 -0
- package/dist/chunk-DUPURL26.js.map +1 -0
- package/dist/chunk-E2ZOSNF5.js +96 -0
- package/dist/chunk-E2ZOSNF5.js.map +1 -0
- package/dist/chunk-E3HYHT7C.js +274 -0
- package/dist/chunk-E3HYHT7C.js.map +1 -0
- package/dist/chunk-EDLZGTGN.js +216 -0
- package/dist/chunk-EDLZGTGN.js.map +1 -0
- package/dist/chunk-EI5QN4UO.js +363 -0
- package/dist/chunk-EI5QN4UO.js.map +1 -0
- package/dist/{chunk-XHC4LMK4.js → chunk-EIGXX6KI.js} +16 -8
- package/dist/chunk-EIGXX6KI.js.map +1 -0
- package/dist/chunk-EPDE7ZRU.js +174 -0
- package/dist/chunk-EPDE7ZRU.js.map +1 -0
- package/dist/chunk-ERSX3MKH.js +34 -0
- package/dist/chunk-ERSX3MKH.js.map +1 -0
- package/dist/chunk-EVDRF4CI.js +509 -0
- package/dist/chunk-EVDRF4CI.js.map +1 -0
- package/dist/chunk-F4IEILTR.js +382 -0
- package/dist/chunk-F4IEILTR.js.map +1 -0
- package/dist/chunk-F7HRLPR5.js +67 -0
- package/dist/chunk-F7HRLPR5.js.map +1 -0
- package/dist/chunk-FEG6MN4H.js +84 -0
- package/dist/chunk-FEG6MN4H.js.map +1 -0
- package/dist/chunk-FKOECEVC.js +126 -0
- package/dist/chunk-FKOECEVC.js.map +1 -0
- package/dist/chunk-FMGW2NZI.js +106 -0
- package/dist/chunk-FMGW2NZI.js.map +1 -0
- package/dist/chunk-FPZKKNDK.js +98 -0
- package/dist/chunk-FPZKKNDK.js.map +1 -0
- package/dist/chunk-FUVCY63N.js +169 -0
- package/dist/chunk-FUVCY63N.js.map +1 -0
- package/dist/chunk-GBNJQNDS.js +19 -0
- package/dist/chunk-GBNJQNDS.js.map +1 -0
- package/dist/chunk-GIWHHCD6.js +145 -0
- package/dist/chunk-GIWHHCD6.js.map +1 -0
- package/dist/chunk-GOJXKIFQ.js +1605 -0
- package/dist/chunk-GOJXKIFQ.js.map +1 -0
- package/dist/chunk-GRQ2AXDX.js +9 -0
- package/dist/chunk-GRQ2AXDX.js.map +1 -0
- package/dist/chunk-GXDLWBOY.js +73 -0
- package/dist/chunk-GXDLWBOY.js.map +1 -0
- package/dist/chunk-HAE4WWFQ.js +455 -0
- package/dist/chunk-HAE4WWFQ.js.map +1 -0
- package/dist/chunk-I2DNBEV6.js +4227 -0
- package/dist/chunk-I2DNBEV6.js.map +1 -0
- package/dist/chunk-I4FTS5EE.js +455 -0
- package/dist/chunk-I4FTS5EE.js.map +1 -0
- package/dist/chunk-IELPT4K2.js +74 -0
- package/dist/chunk-IELPT4K2.js.map +1 -0
- package/dist/chunk-IJMWEO4P.js +57 -0
- package/dist/chunk-IJMWEO4P.js.map +1 -0
- package/dist/chunk-IREMSVKW.js +175 -0
- package/dist/chunk-IREMSVKW.js.map +1 -0
- package/dist/chunk-IVIJJXXT.js +62 -0
- package/dist/chunk-IVIJJXXT.js.map +1 -0
- package/dist/chunk-JD3W3ON7.js +188 -0
- package/dist/chunk-JD3W3ON7.js.map +1 -0
- package/dist/chunk-JLWBK3VC.js +5187 -0
- package/dist/chunk-JLWBK3VC.js.map +1 -0
- package/dist/chunk-JPK34QPS.js +134 -0
- package/dist/chunk-JPK34QPS.js.map +1 -0
- package/dist/chunk-JUY47NZ2.js +183 -0
- package/dist/chunk-JUY47NZ2.js.map +1 -0
- package/dist/chunk-JXMZEOHV.js +333 -0
- package/dist/chunk-JXMZEOHV.js.map +1 -0
- package/dist/chunk-K37K447U.js +51 -0
- package/dist/chunk-K37K447U.js.map +1 -0
- package/dist/chunk-K6TDB2KV.js +1442 -0
- package/dist/chunk-K6TDB2KV.js.map +1 -0
- package/dist/chunk-KIGGMKAE.js +66 -0
- package/dist/chunk-KIGGMKAE.js.map +1 -0
- package/dist/chunk-KKJ4KJCW.js +29 -0
- package/dist/chunk-KKJ4KJCW.js.map +1 -0
- package/dist/chunk-KONA5PSR.js +55 -0
- package/dist/chunk-KONA5PSR.js.map +1 -0
- package/dist/chunk-KVHRW7KO.js +60 -0
- package/dist/chunk-KVHRW7KO.js.map +1 -0
- package/dist/chunk-LA6PPSNA.js +65 -0
- package/dist/chunk-LA6PPSNA.js.map +1 -0
- package/dist/chunk-LKPJADL2.js +74 -0
- package/dist/chunk-LKPJADL2.js.map +1 -0
- package/dist/chunk-LWAEHLKV.js +74 -0
- package/dist/chunk-LWAEHLKV.js.map +1 -0
- package/dist/chunk-M6UNISGO.js +66 -0
- package/dist/chunk-M6UNISGO.js.map +1 -0
- package/dist/chunk-MIJAGBEP.js +23992 -0
- package/dist/chunk-MIJAGBEP.js.map +1 -0
- package/dist/chunk-MP4EXZ45.js +3151 -0
- package/dist/chunk-MP4EXZ45.js.map +1 -0
- package/dist/chunk-MYTDK3AL.js +2102 -0
- package/dist/chunk-MYTDK3AL.js.map +1 -0
- package/dist/chunk-MZQ5DX6S.js +125 -0
- package/dist/chunk-MZQ5DX6S.js.map +1 -0
- package/dist/chunk-NFSLRRIE.js +77 -0
- package/dist/chunk-NFSLRRIE.js.map +1 -0
- package/dist/chunk-NOK7MSVJ.js +533 -0
- package/dist/chunk-NOK7MSVJ.js.map +1 -0
- package/dist/chunk-NR5RZDAW.js +592 -0
- package/dist/chunk-NR5RZDAW.js.map +1 -0
- package/dist/chunk-O2EVJALZ.js +133 -0
- package/dist/chunk-O2EVJALZ.js.map +1 -0
- package/dist/chunk-O6UM5WWH.js +275 -0
- package/dist/chunk-O6UM5WWH.js.map +1 -0
- package/dist/chunk-O6XZIQXZ.js +6212 -0
- package/dist/chunk-O6XZIQXZ.js.map +1 -0
- package/dist/chunk-OIL6PU5W.js +35 -0
- package/dist/chunk-OIL6PU5W.js.map +1 -0
- package/dist/chunk-P4NSJS54.js +20 -0
- package/dist/chunk-P4NSJS54.js.map +1 -0
- package/dist/chunk-P5T7OZKV.js +26 -0
- package/dist/chunk-P5T7OZKV.js.map +1 -0
- package/dist/chunk-PFBQERWX.js +10 -0
- package/dist/chunk-PFBQERWX.js.map +1 -0
- package/dist/chunk-PSWVSLJU.js +56 -0
- package/dist/chunk-PSWVSLJU.js.map +1 -0
- package/dist/chunk-PY2NJ6XZ.js +191 -0
- package/dist/chunk-PY2NJ6XZ.js.map +1 -0
- package/dist/chunk-PZ4OM2LK.js +45 -0
- package/dist/chunk-PZ4OM2LK.js.map +1 -0
- package/dist/chunk-PZNOJ76W.js +541 -0
- package/dist/chunk-PZNOJ76W.js.map +1 -0
- package/dist/chunk-Q6ULQMWG.js +41 -0
- package/dist/chunk-Q6ULQMWG.js.map +1 -0
- package/dist/chunk-QKFD6PPX.js +57 -0
- package/dist/chunk-QKFD6PPX.js.map +1 -0
- package/dist/chunk-QMLGJ5OW.js +2891 -0
- package/dist/chunk-QMLGJ5OW.js.map +1 -0
- package/dist/chunk-R4TPDVBD.js +207 -0
- package/dist/chunk-R4TPDVBD.js.map +1 -0
- package/dist/chunk-R7QV5N2S.js +846 -0
- package/dist/chunk-R7QV5N2S.js.map +1 -0
- package/dist/chunk-RR3KT2E7.js +665 -0
- package/dist/chunk-RR3KT2E7.js.map +1 -0
- package/dist/chunk-SEPPFM5S.js +228 -0
- package/dist/chunk-SEPPFM5S.js.map +1 -0
- package/dist/chunk-SQ7DRYCC.js +150 -0
- package/dist/chunk-SQ7DRYCC.js.map +1 -0
- package/dist/chunk-SYULM665.js +610 -0
- package/dist/chunk-SYULM665.js.map +1 -0
- package/dist/chunk-TKT3OHZ6.js +170 -0
- package/dist/chunk-TKT3OHZ6.js.map +1 -0
- package/dist/chunk-TNOSX3PJ.js +136 -0
- package/dist/chunk-TNOSX3PJ.js.map +1 -0
- package/dist/chunk-TTVKI54A.js +160 -0
- package/dist/chunk-TTVKI54A.js.map +1 -0
- package/dist/chunk-U7ZVXFS3.js +23 -0
- package/dist/chunk-U7ZVXFS3.js.map +1 -0
- package/dist/chunk-UI6BKYQD.js +225 -0
- package/dist/chunk-UI6BKYQD.js.map +1 -0
- package/dist/chunk-UKLDW4UW.js +46 -0
- package/dist/chunk-UKLDW4UW.js.map +1 -0
- package/dist/chunk-V6XXXEXZ.js +76 -0
- package/dist/chunk-V6XXXEXZ.js.map +1 -0
- package/dist/chunk-V7BW2CIQ.js +92 -0
- package/dist/chunk-V7BW2CIQ.js.map +1 -0
- package/dist/chunk-VSU5R34H.js +76 -0
- package/dist/chunk-VSU5R34H.js.map +1 -0
- package/dist/chunk-W4SA4CMR.js +296 -0
- package/dist/chunk-W4SA4CMR.js.map +1 -0
- package/dist/chunk-WFUMNDCE.js +111 -0
- package/dist/chunk-WFUMNDCE.js.map +1 -0
- package/dist/chunk-WHWNXLTD.js +166 -0
- package/dist/chunk-WHWNXLTD.js.map +1 -0
- package/dist/chunk-WN4KX7GE.js +25 -0
- package/dist/chunk-WN4KX7GE.js.map +1 -0
- package/dist/chunk-XIY7P54H.js +84 -0
- package/dist/chunk-XIY7P54H.js.map +1 -0
- package/dist/chunk-YFPLNMPZ.js +337 -0
- package/dist/chunk-YFPLNMPZ.js.map +1 -0
- package/dist/chunk-YMBB4JBD.js +1830 -0
- package/dist/chunk-YMBB4JBD.js.map +1 -0
- package/dist/chunk-YQFM2P5W.js +197 -0
- package/dist/chunk-YQFM2P5W.js.map +1 -0
- package/dist/chunk-YQSBHWOI.js +41 -0
- package/dist/chunk-YTF3IVMF.js +149 -0
- package/dist/chunk-YTF3IVMF.js.map +1 -0
- package/dist/chunk-Z3ENMCFE.js +94 -0
- package/dist/chunk-Z3ENMCFE.js.map +1 -0
- package/dist/chunk-Z7MWSXLG.js +94 -0
- package/dist/chunk-Z7MWSXLG.js.map +1 -0
- package/dist/chunk-ZIXHS6AM.js +42 -0
- package/dist/chunk-ZIXHS6AM.js.map +1 -0
- package/dist/chunk-ZJ7TQUCU.js +4410 -0
- package/dist/chunk-ZJ7TQUCU.js.map +1 -0
- package/dist/chunk-ZNQRDLSS.js +52 -0
- package/dist/chunk-ZNQRDLSS.js.map +1 -0
- package/dist/claim-ROWH6JVB.js +197 -0
- package/dist/claim-ROWH6JVB.js.map +1 -0
- package/dist/cli.js +104 -69986
- package/dist/cli.js.map +1 -1
- package/dist/client-EURRWXPW.js +19 -0
- package/dist/code-FKQW7V7N.js +76 -0
- package/dist/code-FKQW7V7N.js.map +1 -0
- package/dist/companies-MD2MZKU6.js +195 -0
- package/dist/companies-MD2MZKU6.js.map +1 -0
- package/dist/complete-FCAJM6Z4.js +81 -0
- package/dist/complete-FCAJM6Z4.js.map +1 -0
- package/dist/config-OZOHIAOJ.js +88 -0
- package/dist/config-OZOHIAOJ.js.map +1 -0
- package/dist/connect-4YXFMXYX.js +42 -0
- package/dist/content-PCGSX2QU.js +85 -0
- package/dist/content-PCGSX2QU.js.map +1 -0
- package/dist/conversation-UX5NZ3IO.js +93 -0
- package/dist/conversation-UX5NZ3IO.js.map +1 -0
- package/dist/conversion-report-7QSWB2FY.js +125 -0
- package/dist/conversion-report-7QSWB2FY.js.map +1 -0
- package/dist/conversion-upload-command-XESIAQPU.js +438 -0
- package/dist/conversion-upload-command-XESIAQPU.js.map +1 -0
- package/dist/conversion-writes-BGOVLBS5.js +120 -0
- package/dist/conversion-writes-BGOVLBS5.js.map +1 -0
- package/dist/conversions-IYIWW4O7.js +76 -0
- package/dist/conversions-IYIWW4O7.js.map +1 -0
- package/dist/conversions-RLIJAE7E.js +135 -0
- package/dist/conversions-RLIJAE7E.js.map +1 -0
- package/dist/countries-5OBUVLLD.js +82 -0
- package/dist/countries-5OBUVLLD.js.map +1 -0
- package/dist/create-CUJLJUAQ.js +138 -0
- package/dist/create-CUJLJUAQ.js.map +1 -0
- package/dist/create-FENOT6DX.js +236 -0
- package/dist/create-FENOT6DX.js.map +1 -0
- package/dist/create-OFZQMOWO.js +59 -0
- package/dist/create-OFZQMOWO.js.map +1 -0
- package/dist/create-Z5SS2AWB.js +207 -0
- package/dist/create-Z5SS2AWB.js.map +1 -0
- package/dist/creatives-UJW2QBLH.js +182 -0
- package/dist/creatives-UJW2QBLH.js.map +1 -0
- package/dist/creatives-XI2DGQUZ.js +87 -0
- package/dist/creatives-XI2DGQUZ.js.map +1 -0
- package/dist/creatives-YLXQSROD.js +51 -0
- package/dist/creatives-YLXQSROD.js.map +1 -0
- package/dist/credentials-CH73QMD2.js +287 -0
- package/dist/credentials-CH73QMD2.js.map +1 -0
- package/dist/critique-C4WRQ4AJ.js +1449 -0
- package/dist/critique-C4WRQ4AJ.js.map +1 -0
- package/dist/critique-ZBNJ6MQ3.js +213 -0
- package/dist/critique-ZBNJ6MQ3.js.map +1 -0
- package/dist/crm-MJTT6GOJ.js +224 -0
- package/dist/crm-MJTT6GOJ.js.map +1 -0
- package/dist/crm-ZXHSEFYI.js +318 -0
- package/dist/crm-ZXHSEFYI.js.map +1 -0
- package/dist/crop-B52KIQ4O.js +113 -0
- package/dist/crop-B52KIQ4O.js.map +1 -0
- package/dist/currency-GGWF5DMU.js +88 -0
- package/dist/currency-GGWF5DMU.js.map +1 -0
- package/dist/custom-conversions-7WDBTC4X.js +125 -0
- package/dist/custom-conversions-7WDBTC4X.js.map +1 -0
- package/dist/customers-7E4HBSEY.js +56 -0
- package/dist/decide-PK7WNSQ2.js +199 -0
- package/dist/decide-PK7WNSQ2.js.map +1 -0
- package/dist/delete-56LKNEGA.js +71 -0
- package/dist/delete-56LKNEGA.js.map +1 -0
- package/dist/delete-DQY4ZSFN.js +54 -0
- package/dist/delete-DQY4ZSFN.js.map +1 -0
- package/dist/delete-EZ7HHOOD.js +69 -0
- package/dist/delete-EZ7HHOOD.js.map +1 -0
- package/dist/delete-JV4KAA6Y.js +66 -0
- package/dist/delete-JV4KAA6Y.js.map +1 -0
- package/dist/delete-YONJW4UZ.js +63 -0
- package/dist/delete-YONJW4UZ.js.map +1 -0
- package/dist/delete-YSYVFL6W.js +71 -0
- package/dist/delete-YSYVFL6W.js.map +1 -0
- package/dist/demographics-6N3TTYWC.js +138 -0
- package/dist/demographics-6N3TTYWC.js.map +1 -0
- package/dist/describe-AAVYIFE3.js +97 -0
- package/dist/describe-AAVYIFE3.js.map +1 -0
- package/dist/describe-UQFLWVFR.js +97 -0
- package/dist/describe-UQFLWVFR.js.map +1 -0
- package/dist/dimensions-QDXBG2XC.js +101 -0
- package/dist/dimensions-QDXBG2XC.js.map +1 -0
- package/dist/discard-S3NGGUSK.js +66 -0
- package/dist/discard-S3NGGUSK.js.map +1 -0
- package/dist/discover-6TEBPVNC.js +93 -0
- package/dist/discover-6TEBPVNC.js.map +1 -0
- package/dist/discover-SBZPB7T2.js +172 -0
- package/dist/discover-SBZPB7T2.js.map +1 -0
- package/dist/domain-AMAR76PB.js +98 -0
- package/dist/domain-AMAR76PB.js.map +1 -0
- package/dist/download-LV3GPOWV.js +299 -0
- package/dist/download-LV3GPOWV.js.map +1 -0
- package/dist/draft-6QZ7WMWM.js +217 -0
- package/dist/draft-6QZ7WMWM.js.map +1 -0
- package/dist/draft-DDFFTZ43.js +233 -0
- package/dist/draft-DDFFTZ43.js.map +1 -0
- package/dist/draft-FIKJXNIQ.js +281 -0
- package/dist/draft-FIKJXNIQ.js.map +1 -0
- package/dist/draft-GYGWTMBU.js +307 -0
- package/dist/draft-GYGWTMBU.js.map +1 -0
- package/dist/draft-KXL62WFS.js +328 -0
- package/dist/draft-KXL62WFS.js.map +1 -0
- package/dist/draft-N4LFPKTA.js +100 -0
- package/dist/draft-N4LFPKTA.js.map +1 -0
- package/dist/draft-POSLJCWG.js +306 -0
- package/dist/draft-POSLJCWG.js.map +1 -0
- package/dist/draft-XPO5RWST.js +103 -0
- package/dist/draft-XPO5RWST.js.map +1 -0
- package/dist/engine/index.d.ts +213 -127
- package/dist/engine/index.js +18 -4
- package/dist/{env-4P5HOGNA.js → env-TQ2XS2KY.js} +12 -2
- package/dist/env-TQ2XS2KY.js.map +1 -0
- package/dist/experiment-FQNKMORZ.js +1397 -0
- package/dist/experiment-FQNKMORZ.js.map +1 -0
- package/dist/export-4IZQZAPF.js +168 -0
- package/dist/export-4IZQZAPF.js.map +1 -0
- package/dist/extract-DZMGVQ7D.js +113 -0
- package/dist/extract-DZMGVQ7D.js.map +1 -0
- package/dist/facets-223V5P47.js +114 -0
- package/dist/facets-223V5P47.js.map +1 -0
- package/dist/favorites-DD2LNSTG.js +178 -0
- package/dist/favorites-DD2LNSTG.js.map +1 -0
- package/dist/feed-TUVFNX2U.js +177 -0
- package/dist/feed-TUVFNX2U.js.map +1 -0
- package/dist/feedback-MIW23MI2.js +66 -0
- package/dist/feedback-MIW23MI2.js.map +1 -0
- package/dist/feedback-record-RGKRKPGZ.js +175 -0
- package/dist/feedback-record-RGKRKPGZ.js.map +1 -0
- package/dist/fetch-O6UHNXWB.js +139 -0
- package/dist/fetch-O6UHNXWB.js.map +1 -0
- package/dist/fetch-TZ4UCMJK.js +176 -0
- package/dist/fetch-TZ4UCMJK.js.map +1 -0
- package/dist/find-4XKIBF4D.js +134 -0
- package/dist/find-4XKIBF4D.js.map +1 -0
- package/dist/fit-ODVVXV2Q.js +45 -0
- package/dist/fit-ODVVXV2Q.js.map +1 -0
- package/dist/flows-HVWBFZ7T.js +247 -0
- package/dist/flows-HVWBFZ7T.js.map +1 -0
- package/dist/follow-RCOXTZGY.js +94 -0
- package/dist/follow-RCOXTZGY.js.map +1 -0
- package/dist/follow-competitors-SQ5XBFTK.js +112 -0
- package/dist/follow-competitors-SQ5XBFTK.js.map +1 -0
- package/dist/following-VDU3BHC4.js +113 -0
- package/dist/following-VDU3BHC4.js.map +1 -0
- package/dist/fonts-NBIQAVQN.js +34 -0
- package/dist/fonts-NBIQAVQN.js.map +1 -0
- package/dist/forecast-2GJKBNBM.js +168 -0
- package/dist/forecast-2GJKBNBM.js.map +1 -0
- package/dist/forecast-76MUJBPO.js +104 -0
- package/dist/forecast-76MUJBPO.js.map +1 -0
- package/dist/funding-HTFVZLLG.js +85 -0
- package/dist/funding-HTFVZLLG.js.map +1 -0
- package/dist/funnel-FE2HIRVQ.js +394 -0
- package/dist/funnel-FE2HIRVQ.js.map +1 -0
- package/dist/ga4-2RC4EH7V.js +55 -0
- package/dist/ga4-2RC4EH7V.js.map +1 -0
- package/dist/generate-TPDOBCKQ.js +262 -0
- package/dist/generate-TPDOBCKQ.js.map +1 -0
- package/dist/get-6JNOVI27.js +56 -0
- package/dist/get-6JNOVI27.js.map +1 -0
- package/dist/get-FH2LIEYL.js +63 -0
- package/dist/get-FH2LIEYL.js.map +1 -0
- package/dist/get-GZLCDXXW.js +61 -0
- package/dist/get-GZLCDXXW.js.map +1 -0
- package/dist/get-KVAOPAQW.js +78 -0
- package/dist/get-KVAOPAQW.js.map +1 -0
- package/dist/get-TSPQYEKC.js +59 -0
- package/dist/get-TSPQYEKC.js.map +1 -0
- package/dist/get-TY3RXYNZ.js +63 -0
- package/dist/get-TY3RXYNZ.js.map +1 -0
- package/dist/get-VPW33XTN.js +92 -0
- package/dist/get-VPW33XTN.js.map +1 -0
- package/dist/gif-JFEYPFFI.js +94 -0
- package/dist/gif-JFEYPFFI.js.map +1 -0
- package/dist/google-R6RD4L6Z.js +136 -0
- package/dist/google-R6RD4L6Z.js.map +1 -0
- package/dist/google-VPQNRVIB.js +3190 -0
- package/dist/google-VPQNRVIB.js.map +1 -0
- package/dist/google-ads-JEQMNNMN.js +195 -0
- package/dist/google-ads-JEQMNNMN.js.map +1 -0
- package/dist/group-7AV6UL26.js +43 -0
- package/dist/group-7AV6UL26.js.map +1 -0
- package/dist/group-BVQZEZIC.js +43 -0
- package/dist/group-BVQZEZIC.js.map +1 -0
- package/dist/gsc-SQ42WAQE.js +30 -0
- package/dist/gsc-SQ42WAQE.js.map +1 -0
- package/dist/history-BNNHFURR.js +67 -0
- package/dist/history-BNNHFURR.js.map +1 -0
- package/dist/history-EHUQG4CE.js +133 -0
- package/dist/history-EHUQG4CE.js.map +1 -0
- package/dist/hubspot-JABE4USC.js +779 -0
- package/dist/hubspot-JABE4USC.js.map +1 -0
- package/dist/icon-OYTTSNSL.js +137 -0
- package/dist/icon-OYTTSNSL.js.map +1 -0
- package/dist/ideas-OD76WOQ3.js +32 -0
- package/dist/ideas-OD76WOQ3.js.map +1 -0
- package/dist/images-LY7AWWBK.js +90 -0
- package/dist/images-LY7AWWBK.js.map +1 -0
- package/dist/improve-W6GZNT2A.js +86 -0
- package/dist/improve-W6GZNT2A.js.map +1 -0
- package/dist/ingest-47WON6HT.js +23 -0
- package/dist/ingest-47WON6HT.js.map +1 -0
- package/dist/ingest-HDGGHBSJ.js +107 -0
- package/dist/ingest-HDGGHBSJ.js.map +1 -0
- package/dist/insights-IW7LGAWU.js +423 -0
- package/dist/insights-IW7LGAWU.js.map +1 -0
- package/dist/insights-QH54F56A.js +122 -0
- package/dist/insights-QH54F56A.js.map +1 -0
- package/dist/inspect-AJLG2HGL.js +189 -0
- package/dist/inspect-AJLG2HGL.js.map +1 -0
- package/dist/inspiration-RDQ3Y3N3.js +53 -0
- package/dist/inspiration-RDQ3Y3N3.js.map +1 -0
- package/dist/intent-5GSSCFZ2.js +95 -0
- package/dist/intent-5GSSCFZ2.js.map +1 -0
- package/dist/job-URVXJP75.js +202 -0
- package/dist/job-URVXJP75.js.map +1 -0
- package/dist/job-create-S4SECUVF.js +109 -0
- package/dist/job-create-S4SECUVF.js.map +1 -0
- package/dist/job-status-253SUCTJ.js +74 -0
- package/dist/job-status-253SUCTJ.js.map +1 -0
- package/dist/keep-GPSYDIGJ.js +78 -0
- package/dist/keep-GPSYDIGJ.js.map +1 -0
- package/dist/keyword-gap-NTFDX43B.js +130 -0
- package/dist/keyword-gap-NTFDX43B.js.map +1 -0
- package/dist/keyword-metrics-XSFLMBZX.js +197 -0
- package/dist/keyword-metrics-XSFLMBZX.js.map +1 -0
- package/dist/keywords-for-site-U4JLYXVE.js +128 -0
- package/dist/keywords-for-site-U4JLYXVE.js.map +1 -0
- package/dist/landing-AO72EGJ6.js +28 -0
- package/dist/landing-AO72EGJ6.js.map +1 -0
- package/dist/landings-NEF4PQL2.js +151 -0
- package/dist/landings-NEF4PQL2.js.map +1 -0
- package/dist/languages-3RDPPPTE.js +55 -0
- package/dist/languages-3RDPPPTE.js.map +1 -0
- package/dist/languages-CQX3YOIT.js +40 -0
- package/dist/languages-CQX3YOIT.js.map +1 -0
- package/dist/launches-GBHLJH5S.js +19 -0
- package/dist/launches-GBHLJH5S.js.map +1 -0
- package/dist/layerize-Q56C6LFG.js +190 -0
- package/dist/layerize-Q56C6LFG.js.map +1 -0
- package/dist/leads-JHUM6FYR.js +293 -0
- package/dist/leads-JHUM6FYR.js.map +1 -0
- package/dist/leads-UYZM2XQX.js +90 -0
- package/dist/leads-UYZM2XQX.js.map +1 -0
- package/dist/learn-D2KBGJHZ.js +203 -0
- package/dist/learn-D2KBGJHZ.js.map +1 -0
- package/dist/library-6VUFHTEK.js +109 -0
- package/dist/library-6VUFHTEK.js.map +1 -0
- package/dist/lighthouse-57U2GMPV.js +75 -0
- package/dist/lighthouse-57U2GMPV.js.map +1 -0
- package/dist/line-item-writes-R5GO6GTL.js +208 -0
- package/dist/line-item-writes-R5GO6GTL.js.map +1 -0
- package/dist/line-items-RBMH6YBZ.js +103 -0
- package/dist/line-items-RBMH6YBZ.js.map +1 -0
- package/dist/link-WS2RMCOP.js +64 -0
- package/dist/link-WS2RMCOP.js.map +1 -0
- package/dist/linkedin-FSIALZTS.js +1008 -0
- package/dist/linkedin-FSIALZTS.js.map +1 -0
- package/dist/list-2AE2Q4ZD.js +151 -0
- package/dist/list-2AE2Q4ZD.js.map +1 -0
- package/dist/list-E635Y6M4.js +303 -0
- package/dist/list-E635Y6M4.js.map +1 -0
- package/dist/list-G57ZO4PG.js +50 -0
- package/dist/list-G57ZO4PG.js.map +1 -0
- package/dist/list-JCSWZWDI.js +57 -0
- package/dist/list-JCSWZWDI.js.map +1 -0
- package/dist/list-KT6NXVLV.js +63 -0
- package/dist/list-KT6NXVLV.js.map +1 -0
- package/dist/list-RINCJOAC.js +76 -0
- package/dist/list-RINCJOAC.js.map +1 -0
- package/dist/list-SRNXHS6L.js +51 -0
- package/dist/list-SRNXHS6L.js.map +1 -0
- package/dist/list-YJSO4M5Q.js +65 -0
- package/dist/list-YJSO4M5Q.js.map +1 -0
- package/dist/locations-HW2Y5OJO.js +67 -0
- package/dist/locations-HW2Y5OJO.js.map +1 -0
- package/dist/locations-XOHI3VWI.js +40 -0
- package/dist/locations-XOHI3VWI.js.map +1 -0
- package/dist/log-3HX5BIO6.js +92 -0
- package/dist/log-3HX5BIO6.js.map +1 -0
- package/dist/logo-KXTGIYBI.js +18 -0
- package/dist/logo-KXTGIYBI.js.map +1 -0
- package/dist/lookup-X6O5UNJH.js +22 -0
- package/dist/lookup-X6O5UNJH.js.map +1 -0
- package/dist/make-QH77XOWM.js +633 -0
- package/dist/make-QH77XOWM.js.map +1 -0
- package/dist/map-QABBPYZM.js +404 -0
- package/dist/map-QABBPYZM.js.map +1 -0
- package/dist/mcp-HSD3W3OB.js +463 -0
- package/dist/mcp-HSD3W3OB.js.map +1 -0
- package/dist/media-MI4EE7L4.js +89 -0
- package/dist/media-MI4EE7L4.js.map +1 -0
- package/dist/media-QUTQOBA7.js +15 -0
- package/dist/media-QUTQOBA7.js.map +1 -0
- package/dist/media-sources-HO4DXRX5.js +32 -0
- package/dist/media-sources-HO4DXRX5.js.map +1 -0
- package/dist/members-YEYYJGY6.js +44 -0
- package/dist/members-YEYYJGY6.js.map +1 -0
- package/dist/meta-E3JOUOSS.js +69 -0
- package/dist/meta-E3JOUOSS.js.map +1 -0
- package/dist/metrics-HQ7XJAYQ.js +152 -0
- package/dist/metrics-HQ7XJAYQ.js.map +1 -0
- package/dist/models-PGX3FBHU.js +155 -0
- package/dist/models-PGX3FBHU.js.map +1 -0
- package/dist/normalize-FPJ6GSOY.js +806 -0
- package/dist/normalize-FPJ6GSOY.js.map +1 -0
- package/dist/normalize-GSQWN77S.js +141 -0
- package/dist/normalize-GSQWN77S.js.map +1 -0
- package/dist/options-F5XZMQLK.js +121 -0
- package/dist/options-F5XZMQLK.js.map +1 -0
- package/dist/output-GQFJ2T5B.js +24 -0
- package/dist/output-GQFJ2T5B.js.map +1 -0
- package/dist/page-VTTSBC6Y.js +105 -0
- package/dist/page-VTTSBC6Y.js.map +1 -0
- package/dist/pages-PMZVNVQM.js +66 -0
- package/dist/pages-PMZVNVQM.js.map +1 -0
- package/dist/performance-G67JQE5J.js +24 -0
- package/dist/performance-G67JQE5J.js.map +1 -0
- package/dist/pinterest-UDNGOWDM.js +96 -0
- package/dist/pinterest-UDNGOWDM.js.map +1 -0
- package/dist/pixels-OYZDGCH3.js +108 -0
- package/dist/pixels-OYZDGCH3.js.map +1 -0
- package/dist/pixels-XKGNTCFX.js +60 -0
- package/dist/pixels-XKGNTCFX.js.map +1 -0
- package/dist/plan-DZS3TVIJ.js +207 -0
- package/dist/plan-DZS3TVIJ.js.map +1 -0
- package/dist/preview-DR6MXOGI.js +169 -0
- package/dist/preview-DR6MXOGI.js.map +1 -0
- package/dist/profile-VOVZG44G.js +159 -0
- package/dist/profile-VOVZG44G.js.map +1 -0
- package/dist/promoted-tweet-writes-VCK2ADVJ.js +180 -0
- package/dist/promoted-tweet-writes-VCK2ADVJ.js.map +1 -0
- package/dist/promoted-tweets-4ACBP2RV.js +119 -0
- package/dist/promoted-tweets-4ACBP2RV.js.map +1 -0
- package/dist/properties-MKVF7MUK.js +101 -0
- package/dist/properties-MKVF7MUK.js.map +1 -0
- package/dist/publish-6XVA35T6.js +322 -0
- package/dist/publish-6XVA35T6.js.map +1 -0
- package/dist/query-CNWQ6STR.js +61 -0
- package/dist/query-CNWQ6STR.js.map +1 -0
- package/dist/query-DBSBZ73C.js +247 -0
- package/dist/query-DBSBZ73C.js.map +1 -0
- package/dist/query-QK4U4TEL.js +236 -0
- package/dist/query-QK4U4TEL.js.map +1 -0
- package/dist/questionnaire-OVJWNUVV.js +93 -0
- package/dist/questionnaire-OVJWNUVV.js.map +1 -0
- package/dist/read-L2QIVJTL.js +141 -0
- package/dist/read-L2QIVJTL.js.map +1 -0
- package/dist/reddit-SCEB2JQL.js +26 -0
- package/dist/reddit-SCEB2JQL.js.map +1 -0
- package/dist/refresh-TIH5Y3NP.js +94 -0
- package/dist/refresh-TIH5Y3NP.js.map +1 -0
- package/dist/release-LKMUKVXM.js +60 -0
- package/dist/release-LKMUKVXM.js.map +1 -0
- package/dist/relevant-pages-CRI2NLWG.js +99 -0
- package/dist/relevant-pages-CRI2NLWG.js.map +1 -0
- package/dist/remove-6ABOB7TZ.js +50 -0
- package/dist/remove-6ABOB7TZ.js.map +1 -0
- package/dist/remove-JKSCGKQG.js +48 -0
- package/dist/remove-JKSCGKQG.js.map +1 -0
- package/dist/reopen-27TDNXFP.js +63 -0
- package/dist/reopen-27TDNXFP.js.map +1 -0
- package/dist/rerun-XHECBJD5.js +84 -0
- package/dist/rerun-XHECBJD5.js.map +1 -0
- package/dist/research-4MOXIMDX.js +62 -0
- package/dist/research-4MOXIMDX.js.map +1 -0
- package/dist/research-XYXP7D4R.js +262 -0
- package/dist/research-XYXP7D4R.js.map +1 -0
- package/dist/reset-NLYEBPLX.js +54 -0
- package/dist/reset-NLYEBPLX.js.map +1 -0
- package/dist/reset-RDQOYBXX.js +54 -0
- package/dist/reset-RDQOYBXX.js.map +1 -0
- package/dist/resolve-VHKWC5KW.js +121 -0
- package/dist/resolve-VHKWC5KW.js.map +1 -0
- package/dist/retry-MTQSHXKH.js +60 -0
- package/dist/retry-MTQSHXKH.js.map +1 -0
- package/dist/retry-ZI5ECSFD.js +62 -0
- package/dist/retry-ZI5ECSFD.js.map +1 -0
- package/dist/retry-failed-2OYMCB55.js +45 -0
- package/dist/retry-failed-2OYMCB55.js.map +1 -0
- package/dist/run-BMJJRJL2.js +65 -0
- package/dist/run-BMJJRJL2.js.map +1 -0
- package/dist/run-IHXS6F5V.js +59 -0
- package/dist/run-IHXS6F5V.js.map +1 -0
- package/dist/scaffold-ad-QEADKYPL.js +1548 -0
- package/dist/scaffold-ad-QEADKYPL.js.map +1 -0
- package/dist/scaffold-static-ad-PTJ73ZNF.js +971 -0
- package/dist/scaffold-static-ad-PTJ73ZNF.js.map +1 -0
- package/dist/scaffold-video-ZQEZRVD6.js +872 -0
- package/dist/scaffold-video-ZQEZRVD6.js.map +1 -0
- package/dist/schedule-JD2EQJCT.js +61 -0
- package/dist/schedule-JD2EQJCT.js.map +1 -0
- package/dist/schedule-TLYT5UXM.js +66 -0
- package/dist/schedule-TLYT5UXM.js.map +1 -0
- package/dist/scheduled-agents-GIVKWTXX.js +49 -0
- package/dist/scheduled-agents-GIVKWTXX.js.map +1 -0
- package/dist/schema-MZTVCNP4.js +63 -0
- package/dist/schema-MZTVCNP4.js.map +1 -0
- package/dist/schema-RYTVKPLZ.js +132 -0
- package/dist/schema-RYTVKPLZ.js.map +1 -0
- package/dist/scrape-T3DA7ER7.js +2241 -0
- package/dist/scrape-T3DA7ER7.js.map +1 -0
- package/dist/screenshot-EIGC6SZB.js +102 -0
- package/dist/screenshot-EIGC6SZB.js.map +1 -0
- package/dist/search-2SVUDZIX.js +224 -0
- package/dist/search-2SVUDZIX.js.map +1 -0
- package/dist/search-34NFJ5F6.js +26 -0
- package/dist/search-34NFJ5F6.js.map +1 -0
- package/dist/search-AOFAN5NB.js +174 -0
- package/dist/search-AOFAN5NB.js.map +1 -0
- package/dist/search-BWE3OPOY.js +91 -0
- package/dist/search-BWE3OPOY.js.map +1 -0
- package/dist/search-EYYAOZND.js +92 -0
- package/dist/search-EYYAOZND.js.map +1 -0
- package/dist/search-copy-VKQ2OOBM.js +168 -0
- package/dist/search-copy-VKQ2OOBM.js.map +1 -0
- package/dist/seeds-HQYSVFIX.js +101 -0
- package/dist/seeds-HQYSVFIX.js.map +1 -0
- package/dist/select-HJMOAWAU.js +94 -0
- package/dist/select-HJMOAWAU.js.map +1 -0
- package/dist/sends-I7VQFE4S.js +309 -0
- package/dist/sends-I7VQFE4S.js.map +1 -0
- package/dist/sequences-JHSEJJGN.js +146 -0
- package/dist/sequences-JHSEJJGN.js.map +1 -0
- package/dist/set-prompt-TSS33JQZ.js +185 -0
- package/dist/set-prompt-TSS33JQZ.js.map +1 -0
- package/dist/setup-links-IW4BUANK.js +141 -0
- package/dist/setup-links-IW4BUANK.js.map +1 -0
- package/dist/{shared-J7DQZ2ED.js → shared-AT3FXPAG.js} +8 -6
- package/dist/shared-AT3FXPAG.js.map +1 -0
- package/dist/shopify-RQKO5TMR.js +3819 -0
- package/dist/shopify-RQKO5TMR.js.map +1 -0
- package/dist/site-3NU2BDAR.js +177 -0
- package/dist/site-3NU2BDAR.js.map +1 -0
- package/dist/sitemaps-FG37N5EB.js +87 -0
- package/dist/sitemaps-FG37N5EB.js.map +1 -0
- package/dist/sites-FIXK4Y3O.js +101 -0
- package/dist/sites-FIXK4Y3O.js.map +1 -0
- package/dist/skills-OKVCVQVD.js +47 -0
- package/dist/skills-OKVCVQVD.js.map +1 -0
- package/dist/sources-SEODRUIC.js +30 -0
- package/dist/sources-SEODRUIC.js.map +1 -0
- package/dist/sources-Z6BGTBGO.js +421 -0
- package/dist/sources-Z6BGTBGO.js.map +1 -0
- package/dist/stale-SWPDWXG7.js +63 -0
- package/dist/stale-SWPDWXG7.js.map +1 -0
- package/dist/stats-ZWZ7BAHV.js +34 -0
- package/dist/stats-ZWZ7BAHV.js.map +1 -0
- package/dist/status-7Y7UNSO6.js +62 -0
- package/dist/status-7Y7UNSO6.js.map +1 -0
- package/dist/sticker-FLRZM3BI.js +94 -0
- package/dist/sticker-FLRZM3BI.js.map +1 -0
- package/dist/stock-2CSMWRWV.js +179 -0
- package/dist/stock-2CSMWRWV.js.map +1 -0
- package/dist/studio-TTTR6N7D.js +49 -0
- package/dist/studio-TTTR6N7D.js.map +1 -0
- package/dist/sync-FH773IFH.js +54 -0
- package/dist/sync-FH773IFH.js.map +1 -0
- package/dist/sync-G5CS2RYV.js +54 -0
- package/dist/sync-G5CS2RYV.js.map +1 -0
- package/dist/sync-UADA6M33.js +265 -0
- package/dist/sync-UADA6M33.js.map +1 -0
- package/dist/sync-definition-77KLGPMA.js +52 -0
- package/dist/sync-definition-77KLGPMA.js.map +1 -0
- package/dist/tag-manager-NK3ZHSJB.js +43 -0
- package/dist/tag-manager-NK3ZHSJB.js.map +1 -0
- package/dist/tags-ANGHHLAC.js +20 -0
- package/dist/tags-ANGHHLAC.js.map +1 -0
- package/dist/tags-DKPUSQTJ.js +20 -0
- package/dist/tags-DKPUSQTJ.js.map +1 -0
- package/dist/tags-HSCV4ZAQ.js +20 -0
- package/dist/tags-HSCV4ZAQ.js.map +1 -0
- package/dist/tags-J3RMQEQM.js +26 -0
- package/dist/tags-J3RMQEQM.js.map +1 -0
- package/dist/tags-VZGTR3VJ.js +224 -0
- package/dist/tags-VZGTR3VJ.js.map +1 -0
- package/dist/targeting-constants-ZGBX3VWU.js +118 -0
- package/dist/targeting-constants-ZGBX3VWU.js.map +1 -0
- package/dist/targeting-criteria-BSG3CLHU.js +113 -0
- package/dist/targeting-criteria-BSG3CLHU.js.map +1 -0
- package/dist/targets-DVOAFYZQ.js +102 -0
- package/dist/targets-DVOAFYZQ.js.map +1 -0
- package/dist/templates-KJ5O44FF.js +178 -0
- package/dist/templates-KJ5O44FF.js.map +1 -0
- package/dist/testimonials-NB7V3DUO.js +32 -0
- package/dist/testimonials-NB7V3DUO.js.map +1 -0
- package/dist/themes-3RV3HNNE.js +94 -0
- package/dist/themes-3RV3HNNE.js.map +1 -0
- package/dist/top-companies-KRB3OZOT.js +108 -0
- package/dist/top-companies-KRB3OZOT.js.map +1 -0
- package/dist/translate-5FP32BIA.js +598 -0
- package/dist/translate-5FP32BIA.js.map +1 -0
- package/dist/triggers-EURHTCYC.js +141 -0
- package/dist/triggers-EURHTCYC.js.map +1 -0
- package/dist/tweets-X64YDEAA.js +123 -0
- package/dist/tweets-X64YDEAA.js.map +1 -0
- package/dist/unfollow-PIONCSBL.js +46 -0
- package/dist/unfollow-PIONCSBL.js.map +1 -0
- package/dist/unlink-HVVTZ3MB.js +67 -0
- package/dist/unlink-HVVTZ3MB.js.map +1 -0
- package/dist/unstage-BJJ5M7MK.js +95 -0
- package/dist/unstage-BJJ5M7MK.js.map +1 -0
- package/dist/unstage-Y7ZE3NUJ.js +84 -0
- package/dist/unstage-Y7ZE3NUJ.js.map +1 -0
- package/dist/update-3IP7FB6Y.js +98 -0
- package/dist/update-3IP7FB6Y.js.map +1 -0
- package/dist/update-CSDSK5NO.js +63 -0
- package/dist/update-CSDSK5NO.js.map +1 -0
- package/dist/update-FGJXVDB7.js +142 -0
- package/dist/update-FGJXVDB7.js.map +1 -0
- package/dist/update-MF7LY2OT.js +155 -0
- package/dist/update-MF7LY2OT.js.map +1 -0
- package/dist/upload-DDPI7KJV.js +126 -0
- package/dist/upload-DDPI7KJV.js.map +1 -0
- package/dist/upload-IWFYKD7A.js +150 -0
- package/dist/upload-IWFYKD7A.js.map +1 -0
- package/dist/upscale-EYCEYRWE.js +109 -0
- package/dist/upscale-EYCEYRWE.js.map +1 -0
- package/dist/url-options-RA3XISLN.js +130 -0
- package/dist/url-options-RA3XISLN.js.map +1 -0
- package/dist/url-params-SN4APXCK.js +98 -0
- package/dist/url-params-SN4APXCK.js.map +1 -0
- package/dist/use-E2TA2K6J.js +95 -0
- package/dist/use-E2TA2K6J.js.map +1 -0
- package/dist/validate-W52JOEXI.js +88 -0
- package/dist/validate-W52JOEXI.js.map +1 -0
- package/dist/variant-ETHB6XUM.js +338 -0
- package/dist/variant-ETHB6XUM.js.map +1 -0
- package/dist/videos-653WAFPG.js +39 -0
- package/dist/videos-653WAFPG.js.map +1 -0
- package/dist/view-BVEZRRV2.js +121 -0
- package/dist/view-BVEZRRV2.js.map +1 -0
- package/dist/viewer-check-W4ICSBHO.js +68 -0
- package/dist/viewer-check-W4ICSBHO.js.map +1 -0
- package/dist/web-JWIGFGIU.js +140 -0
- package/dist/web-JWIGFGIU.js.map +1 -0
- package/dist/winners-MJDKCGEZ.js +113 -0
- package/dist/winners-MJDKCGEZ.js.map +1 -0
- package/dist/winning-ads-O3IMUGGO.js +84 -0
- package/dist/winning-ads-O3IMUGGO.js.map +1 -0
- package/dist/write-commands-DA6FIFAO.js +737 -0
- package/dist/write-commands-DA6FIFAO.js.map +1 -0
- package/dist/write-commands-EMN2WENA.js +1015 -0
- package/dist/write-commands-EMN2WENA.js.map +1 -0
- package/dist/write-commands-KTPISQRE.js +206 -0
- package/dist/write-commands-KTPISQRE.js.map +1 -0
- package/dist/write-commands-QBGIWU27.js +713 -0
- package/dist/write-commands-QBGIWU27.js.map +1 -0
- package/dist/x-BT3SNCTU.js +47 -0
- package/dist/x-BT3SNCTU.js.map +1 -0
- package/package.json +9 -2
- package/dist/chunk-CHJOTJTZ.js +0 -9989
- package/dist/chunk-CHJOTJTZ.js.map +0 -1
- package/dist/chunk-HJEMOSPH.js +0 -1292
- package/dist/chunk-HJEMOSPH.js.map +0 -1
- package/dist/chunk-MF7YA62W.js.map +0 -1
- package/dist/chunk-VLUGGVJL.js.map +0 -1
- package/dist/chunk-VZEDAFAR.js.map +0 -1
- package/dist/chunk-XHC4LMK4.js.map +0 -1
- package/dist/client-GR6YL3YX.js +0 -17
- package/dist/output-NMQXZF3Z.js +0 -18
- /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
- /package/dist/{env-4P5HOGNA.js.map → client-EURRWXPW.js.map} +0 -0
- /package/dist/{output-NMQXZF3Z.js.map → connect-4YXFMXYX.js.map} +0 -0
- /package/dist/{shared-J7DQZ2ED.js.map → customers-7E4HBSEY.js.map} +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PLANNER_FIELD_DESCRIPTIONS,
|
|
3
|
+
PLANNER_SOURCE,
|
|
4
|
+
stampPlannerRows
|
|
5
|
+
} from "./chunk-2Y5V23PU.js";
|
|
6
|
+
import {
|
|
7
|
+
buildAdsQueryContext,
|
|
8
|
+
warnDefaults
|
|
9
|
+
} from "./chunk-SQ7DRYCC.js";
|
|
10
|
+
import "./chunk-SEPPFM5S.js";
|
|
11
|
+
import {
|
|
12
|
+
buildQueryCacheKey,
|
|
13
|
+
cacheGet,
|
|
14
|
+
cacheSet,
|
|
15
|
+
getManagerIdForCustomer,
|
|
16
|
+
handleConnectionError,
|
|
17
|
+
isNotConnectedError,
|
|
18
|
+
resolveCustomerId,
|
|
19
|
+
writeAdsJson,
|
|
20
|
+
writeAdsOutput
|
|
21
|
+
} from "./chunk-EIGXX6KI.js";
|
|
22
|
+
import "./chunk-I2DNBEV6.js";
|
|
23
|
+
import {
|
|
24
|
+
ApiError,
|
|
25
|
+
apiPost
|
|
26
|
+
} from "./chunk-CUL3VB4L.js";
|
|
27
|
+
import "./chunk-6YYSUISH.js";
|
|
28
|
+
import "./chunk-I4FTS5EE.js";
|
|
29
|
+
import {
|
|
30
|
+
registerSchema
|
|
31
|
+
} from "./chunk-MYTDK3AL.js";
|
|
32
|
+
import "./chunk-YQSBHWOI.js";
|
|
33
|
+
|
|
34
|
+
// src/commands/ads/google/keywords/discover.ts
|
|
35
|
+
import { defineCommand } from "citty";
|
|
36
|
+
registerSchema({
|
|
37
|
+
command: "ads.google.keywords.discover",
|
|
38
|
+
description: 'Discover keyword ideas from seed keywords or URLs. Returns { source: "keyword_planner_estimate", keywords, total_results, next_page_token? }. These are Keyword Planner estimates of total market search volume, not this account\'s data: every row carries a source column and every metric is prefixed planner_ (planner_avg_monthly_searches, planner_competition, ...). Never report a planner_ number as impressions, clicks or any account metric \u2014 read those with `baker ads google query` against the account. If --location and --language are omitted, they default to United States (2840) and English (1000); `query_context` shows which were used.',
|
|
39
|
+
args: {
|
|
40
|
+
"customer-id": {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Google Ads customer ID (10 digits, no dashes). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.",
|
|
43
|
+
required: false
|
|
44
|
+
},
|
|
45
|
+
seeds: { type: "string", description: "Comma-separated seed keywords (max 10)", required: false },
|
|
46
|
+
url: { type: "string", description: "URL to extract keyword ideas from", required: false },
|
|
47
|
+
location: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Geo target ID. Defaults to 2840 (United States) if omitted \u2014 always set this for non-US markets",
|
|
50
|
+
required: false
|
|
51
|
+
},
|
|
52
|
+
language: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "Language ID. Defaults to 1000 (English) if omitted \u2014 always set this for non-English markets",
|
|
55
|
+
required: false
|
|
56
|
+
},
|
|
57
|
+
limit: { type: "string", description: "Max keyword ideas (default: 20, max: 100)", required: false, default: 20 },
|
|
58
|
+
cursor: {
|
|
59
|
+
type: "string",
|
|
60
|
+
description: "Pagination cursor from previous response (next_page_token)",
|
|
61
|
+
required: false
|
|
62
|
+
},
|
|
63
|
+
output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
|
|
64
|
+
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
function stampDiscoverResponse(data) {
|
|
68
|
+
return { ...data, source: PLANNER_SOURCE, keywords: stampPlannerRows(data.keywords ?? []) };
|
|
69
|
+
}
|
|
70
|
+
function buildDiscoverBody(customerId, args) {
|
|
71
|
+
const body = {
|
|
72
|
+
customerId,
|
|
73
|
+
pageSize: args.limit ? Number(args.limit) : 20
|
|
74
|
+
};
|
|
75
|
+
const managerId = getManagerIdForCustomer(customerId);
|
|
76
|
+
if (managerId) body.managerId = managerId;
|
|
77
|
+
const seeds = args.seeds ? args.seeds.split(",").map((s) => s.trim()).filter(Boolean) : void 0;
|
|
78
|
+
if (seeds) body.seeds = seeds;
|
|
79
|
+
if (args.url) body.url = args.url;
|
|
80
|
+
if (args.location) body.locationIds = [args.location];
|
|
81
|
+
if (args.language) body.languageId = args.language;
|
|
82
|
+
if (args.cursor) body.pageToken = args.cursor;
|
|
83
|
+
return body;
|
|
84
|
+
}
|
|
85
|
+
function handleKeywordError(err) {
|
|
86
|
+
if (err instanceof ApiError) {
|
|
87
|
+
if (isNotConnectedError(err.code, err.message)) {
|
|
88
|
+
handleConnectionError("google_ads", err.message);
|
|
89
|
+
}
|
|
90
|
+
const envelope = {
|
|
91
|
+
ok: false,
|
|
92
|
+
error: {
|
|
93
|
+
code: err.code,
|
|
94
|
+
message: err.message,
|
|
95
|
+
fix: { action: "reject", explanation: err.message },
|
|
96
|
+
retryable: err.code === "RATE_LIMITED"
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
writeAdsJson(envelope);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
var discoverCommand = defineCommand({
|
|
106
|
+
meta: {
|
|
107
|
+
name: "discover",
|
|
108
|
+
description: `Discover new keyword ideas from seed keywords or competitor URLs.
|
|
109
|
+
|
|
110
|
+
Returns Keyword Planner ESTIMATES of market search volume, not this account's numbers. Every row carries source=keyword_planner_estimate and planner_-prefixed metrics; keep those names when you quote a figure, and never present one as an impression or click count.
|
|
111
|
+
|
|
112
|
+
Examples:
|
|
113
|
+
baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes,athletic footwear"
|
|
114
|
+
baker ads google keywords discover --customer-id 1234567890 --url "https://competitor.com"
|
|
115
|
+
baker ads google keywords discover --customer-id 1234567890 --seeds "seo tools" --location 2826 --limit 50`
|
|
116
|
+
},
|
|
117
|
+
args: {
|
|
118
|
+
"customer-id": { type: "string", description: "Google Ads customer ID", required: false },
|
|
119
|
+
seeds: { type: "string", description: "Comma-separated seed keywords", required: false },
|
|
120
|
+
url: { type: "string", description: "URL to extract ideas from", required: false },
|
|
121
|
+
location: { type: "string", description: "Geo target ID (default 2840)", required: false },
|
|
122
|
+
language: { type: "string", description: "Language ID (default 1000)", required: false },
|
|
123
|
+
limit: { type: "string", description: "Max results (default 20)", required: false },
|
|
124
|
+
cursor: { type: "string", description: "Pagination cursor from previous response", required: false },
|
|
125
|
+
"no-cache": { type: "boolean", description: "Skip cache", required: false },
|
|
126
|
+
output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" }
|
|
127
|
+
},
|
|
128
|
+
run: async ({ args }) => {
|
|
129
|
+
const customerId = await resolveCustomerId(args);
|
|
130
|
+
const queryContext = buildAdsQueryContext(args.location, args.language);
|
|
131
|
+
if (!args.seeds && !args.url) {
|
|
132
|
+
writeAdsJson({
|
|
133
|
+
ok: false,
|
|
134
|
+
error: { code: "VALIDATION_ERROR", message: "Provide --seeds or --url (at least one required)" }
|
|
135
|
+
});
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const body = buildDiscoverBody(customerId, args);
|
|
139
|
+
const useCache = !args["no-cache"] && !args.cursor;
|
|
140
|
+
if (!useCache) body.skipCache = true;
|
|
141
|
+
const cacheKey = buildQueryCacheKey(customerId, JSON.stringify(body));
|
|
142
|
+
if (useCache) {
|
|
143
|
+
const cached = cacheGet("keywords", cacheKey);
|
|
144
|
+
if (cached) {
|
|
145
|
+
warnDefaults(queryContext);
|
|
146
|
+
writeAdsJson({ ok: true, data: stampDiscoverResponse(cached.data), cached: true, query_context: queryContext });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const data = await apiPost("/api/ads/google/keywords/discover", body);
|
|
152
|
+
if (useCache) {
|
|
153
|
+
cacheSet("keywords", cacheKey, data, 24 * 60 * 60 * 1e3);
|
|
154
|
+
}
|
|
155
|
+
warnDefaults(queryContext);
|
|
156
|
+
const stamped = stampDiscoverResponse(data);
|
|
157
|
+
const format = args.output || "json";
|
|
158
|
+
if (format !== "json") {
|
|
159
|
+
writeAdsOutput(stamped.keywords, format);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
writeAdsJson({ ok: true, data: stamped, fields: PLANNER_FIELD_DESCRIPTIONS, query_context: queryContext });
|
|
163
|
+
} catch (err) {
|
|
164
|
+
handleKeywordError(err);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
export {
|
|
169
|
+
discoverCommand,
|
|
170
|
+
stampDiscoverResponse
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=discover-SBZPB7T2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/google/keywords/discover.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../../../client.ts\";\nimport { handleConnectionError, isNotConnectedError } from \"../../../../error-handler.ts\";\nimport { buildAdsQueryContext, warnDefaults } from \"../../../../geo-context.ts\";\nimport { registerSchema } from \"../../../../schemas.ts\";\nimport { buildQueryCacheKey, cacheGet, cacheSet, getManagerIdForCustomer } from \"../../cache.ts\";\nimport { resolveCustomerId, writeAdsJson, writeAdsOutput } from \"../../output.ts\";\nimport type { AdsErrorEnvelope } from \"../../types.ts\";\nimport { PLANNER_FIELD_DESCRIPTIONS, PLANNER_SOURCE, type PlannerRow, stampPlannerRows } from \"./provenance.ts\";\n\nregisterSchema({\n command: \"ads.google.keywords.discover\",\n description:\n 'Discover keyword ideas from seed keywords or URLs. Returns { source: \"keyword_planner_estimate\", keywords, total_results, next_page_token? }. These are Keyword Planner estimates of total market search volume, not this account\\'s data: every row carries a source column and every metric is prefixed planner_ (planner_avg_monthly_searches, planner_competition, ...). Never report a planner_ number as impressions, clicks or any account metric — read those with `baker ads google query` against the account. If --location and --language are omitted, they default to United States (2840) and English (1000); `query_context` shows which were used.',\n args: {\n \"customer-id\": {\n type: \"string\",\n description: \"Google Ads customer ID (10 digits, no dashes). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.\",\n required: false,\n },\n seeds: { type: \"string\", description: \"Comma-separated seed keywords (max 10)\", required: false },\n url: { type: \"string\", description: \"URL to extract keyword ideas from\", required: false },\n location: {\n type: \"string\",\n description: \"Geo target ID. Defaults to 2840 (United States) if omitted — always set this for non-US markets\",\n required: false,\n },\n language: {\n type: \"string\",\n description: \"Language ID. Defaults to 1000 (English) if omitted — always set this for non-English markets\",\n required: false,\n },\n limit: { type: \"string\", description: \"Max keyword ideas (default: 20, max: 100)\", required: false, default: 20 },\n cursor: {\n type: \"string\",\n description: \"Pagination cursor from previous response (next_page_token)\",\n required: false,\n },\n output: { type: \"string\", description: \"Format: json|csv|jsonl|md\", required: false, default: \"json\" },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n },\n});\n\ntype KeywordIdea = {\n keyword: string;\n avg_monthly_searches: string;\n competition: string;\n competition_index: string;\n low_top_of_page_bid_micros: number;\n high_top_of_page_bid_micros: number;\n monthly_search_volumes: Array<{ year: string; month: string; monthly_searches: string }>;\n};\n\ntype DiscoverResponse = {\n keywords: KeywordIdea[];\n total_results: number;\n next_page_token?: string;\n};\n\n/**\n * Every idea leaves this command carrying where it came from: a `source` column on the row and a\n * `planner_` prefix on each estimate. Keyword Planner volumes have been reported as account\n * impressions before; a name is the only label that survives a CSV in /tmp and a `python3` pass.\n */\nexport function stampDiscoverResponse(data: {\n keywords?: readonly PlannerRow[];\n [key: string]: unknown;\n}): Record<string, unknown> & { keywords: PlannerRow[] } {\n return { ...data, source: PLANNER_SOURCE, keywords: stampPlannerRows(data.keywords ?? []) };\n}\n\nfunction buildDiscoverBody(customerId: string, args: Record<string, unknown>): Record<string, unknown> {\n const body: Record<string, unknown> = {\n customerId,\n pageSize: args.limit ? Number(args.limit) : 20,\n };\n const managerId = getManagerIdForCustomer(customerId);\n if (managerId) body.managerId = managerId;\n\n const seeds = args.seeds\n ? (args.seeds as string)\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean)\n : undefined;\n if (seeds) body.seeds = seeds;\n if (args.url) body.url = args.url;\n if (args.location) body.locationIds = [args.location as string];\n if (args.language) body.languageId = args.language;\n if (args.cursor) body.pageToken = args.cursor;\n return body;\n}\n\nfunction handleKeywordError(err: unknown): never {\n if (err instanceof ApiError) {\n if (isNotConnectedError(err.code, err.message)) {\n handleConnectionError(\"google_ads\", err.message);\n }\n const envelope: AdsErrorEnvelope = {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n fix: { action: \"reject\", explanation: err.message },\n retryable: err.code === \"RATE_LIMITED\",\n },\n };\n writeAdsJson(envelope);\n process.exit(1);\n }\n writeAdsJson({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\nexport const discoverCommand = defineCommand({\n meta: {\n name: \"discover\",\n description: `Discover new keyword ideas from seed keywords or competitor URLs.\n\nReturns Keyword Planner ESTIMATES of market search volume, not this account's numbers. Every row carries source=keyword_planner_estimate and planner_-prefixed metrics; keep those names when you quote a figure, and never present one as an impression or click count.\n\nExamples:\n baker ads google keywords discover --customer-id 1234567890 --seeds \"running shoes,athletic footwear\"\n baker ads google keywords discover --customer-id 1234567890 --url \"https://competitor.com\"\n baker ads google keywords discover --customer-id 1234567890 --seeds \"seo tools\" --location 2826 --limit 50`,\n },\n args: {\n \"customer-id\": { type: \"string\", description: \"Google Ads customer ID\", required: false },\n seeds: { type: \"string\", description: \"Comma-separated seed keywords\", required: false },\n url: { type: \"string\", description: \"URL to extract ideas from\", required: false },\n location: { type: \"string\", description: \"Geo target ID (default 2840)\", required: false },\n language: { type: \"string\", description: \"Language ID (default 1000)\", required: false },\n limit: { type: \"string\", description: \"Max results (default 20)\", required: false },\n cursor: { type: \"string\", description: \"Pagination cursor from previous response\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|jsonl|md\", required: false, default: \"json\" },\n },\n run: async ({ args }) => {\n const customerId = await resolveCustomerId(args);\n const queryContext = buildAdsQueryContext(args.location as string | undefined, args.language as string | undefined);\n\n if (!args.seeds && !args.url) {\n writeAdsJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"Provide --seeds or --url (at least one required)\" },\n });\n process.exit(1);\n }\n\n const body = buildDiscoverBody(customerId, args);\n const useCache = !args[\"no-cache\"] && !args.cursor;\n if (!useCache) body.skipCache = true;\n const cacheKey = buildQueryCacheKey(customerId, JSON.stringify(body));\n\n if (useCache) {\n const cached = cacheGet<DiscoverResponse>(\"keywords\", cacheKey);\n if (cached) {\n warnDefaults(queryContext);\n writeAdsJson({ ok: true, data: stampDiscoverResponse(cached.data), cached: true, query_context: queryContext });\n return;\n }\n }\n\n try {\n const data = await apiPost<DiscoverResponse>(\"/api/ads/google/keywords/discover\", body);\n if (useCache) {\n cacheSet(\"keywords\", cacheKey, data, 24 * 60 * 60 * 1000);\n }\n\n warnDefaults(queryContext);\n const stamped = stampDiscoverResponse(data);\n const format = (args.output as string) || \"json\";\n if (format !== \"json\") {\n writeAdsOutput(stamped.keywords, format);\n return;\n }\n\n writeAdsJson({ ok: true, data: stamped, fields: PLANNER_FIELD_DESCRIPTIONS, query_context: queryContext });\n } catch (err) {\n handleKeywordError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAU9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,eAAe;AAAA,MACb,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,KAAK,EAAE,MAAM,UAAU,aAAa,qCAAqC,UAAU,MAAM;AAAA,IACzF,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,6CAA6C,UAAU,OAAO,SAAS,GAAG;AAAA,IAChH,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,QAAQ,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,OAAO,SAAS,OAAO;AAAA,IACrG,YAAY,EAAE,MAAM,WAAW,aAAa,cAAc,UAAU,MAAM;AAAA,EAC5E;AACF,CAAC;AAuBM,SAAS,sBAAsB,MAGmB;AACvD,SAAO,EAAE,GAAG,MAAM,QAAQ,gBAAgB,UAAU,iBAAiB,KAAK,YAAY,CAAC,CAAC,EAAE;AAC5F;AAEA,SAAS,kBAAkB,YAAoB,MAAwD;AACrG,QAAM,OAAgC;AAAA,IACpC;AAAA,IACA,UAAU,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAAA,EAC9C;AACA,QAAM,YAAY,wBAAwB,UAAU;AACpD,MAAI,UAAW,MAAK,YAAY;AAEhC,QAAM,QAAQ,KAAK,QACd,KAAK,MACH,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO,IACjB;AACJ,MAAI,MAAO,MAAK,QAAQ;AACxB,MAAI,KAAK,IAAK,MAAK,MAAM,KAAK;AAC9B,MAAI,KAAK,SAAU,MAAK,cAAc,CAAC,KAAK,QAAkB;AAC9D,MAAI,KAAK,SAAU,MAAK,aAAa,KAAK;AAC1C,MAAI,KAAK,OAAQ,MAAK,YAAY,KAAK;AACvC,SAAO;AACT;AAEA,SAAS,mBAAmB,KAAqB;AAC/C,MAAI,eAAe,UAAU;AAC3B,QAAI,oBAAoB,IAAI,MAAM,IAAI,OAAO,GAAG;AAC9C,4BAAsB,cAAc,IAAI,OAAO;AAAA,IACjD;AACA,UAAM,WAA6B;AAAA,MACjC,IAAI;AAAA,MACJ,OAAO;AAAA,QACL,MAAM,IAAI;AAAA,QACV,SAAS,IAAI;AAAA,QACb,KAAK,EAAE,QAAQ,UAAU,aAAa,IAAI,QAAQ;AAAA,QAClD,WAAW,IAAI,SAAS;AAAA,MAC1B;AAAA,IACF;AACA,iBAAa,QAAQ;AACrB,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,eAAa,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,iBAAiB,SAAS,mBAAmB,EAAE,CAAC;AACzF,UAAQ,KAAK,CAAC;AAChB;AAEO,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf;AAAA,EACA,MAAM;AAAA,IACJ,eAAe,EAAE,MAAM,UAAU,aAAa,0BAA0B,UAAU,MAAM;AAAA,IACxF,OAAO,EAAE,MAAM,UAAU,aAAa,iCAAiC,UAAU,MAAM;AAAA,IACvF,KAAK,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,MAAM;AAAA,IACjF,UAAU,EAAE,MAAM,UAAU,aAAa,gCAAgC,UAAU,MAAM;AAAA,IACzF,UAAU,EAAE,MAAM,UAAU,aAAa,8BAA8B,UAAU,MAAM;AAAA,IACvF,OAAO,EAAE,MAAM,UAAU,aAAa,4BAA4B,UAAU,MAAM;AAAA,IAClF,QAAQ,EAAE,MAAM,UAAU,aAAa,4CAA4C,UAAU,MAAM;AAAA,IACnG,YAAY,EAAE,MAAM,WAAW,aAAa,cAAc,UAAU,MAAM;AAAA,IAC1E,QAAQ,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,OAAO,SAAS,OAAO;AAAA,EACvG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,aAAa,MAAM,kBAAkB,IAAI;AAC/C,UAAM,eAAe,qBAAqB,KAAK,UAAgC,KAAK,QAA8B;AAElH,QAAI,CAAC,KAAK,SAAS,CAAC,KAAK,KAAK;AAC5B,mBAAa;AAAA,QACX,IAAI;AAAA,QACJ,OAAO,EAAE,MAAM,oBAAoB,SAAS,mDAAmD;AAAA,MACjG,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,OAAO,kBAAkB,YAAY,IAAI;AAC/C,UAAM,WAAW,CAAC,KAAK,UAAU,KAAK,CAAC,KAAK;AAC5C,QAAI,CAAC,SAAU,MAAK,YAAY;AAChC,UAAM,WAAW,mBAAmB,YAAY,KAAK,UAAU,IAAI,CAAC;AAEpE,QAAI,UAAU;AACZ,YAAM,SAAS,SAA2B,YAAY,QAAQ;AAC9D,UAAI,QAAQ;AACV,qBAAa,YAAY;AACzB,qBAAa,EAAE,IAAI,MAAM,MAAM,sBAAsB,OAAO,IAAI,GAAG,QAAQ,MAAM,eAAe,aAAa,CAAC;AAC9G;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAO,MAAM,QAA0B,qCAAqC,IAAI;AACtF,UAAI,UAAU;AACZ,iBAAS,YAAY,UAAU,MAAM,KAAK,KAAK,KAAK,GAAI;AAAA,MAC1D;AAEA,mBAAa,YAAY;AACzB,YAAM,UAAU,sBAAsB,IAAI;AAC1C,YAAM,SAAU,KAAK,UAAqB;AAC1C,UAAI,WAAW,QAAQ;AACrB,uBAAe,QAAQ,UAAU,MAAM;AACvC;AAAA,MACF;AAEA,mBAAa,EAAE,IAAI,MAAM,MAAM,SAAS,QAAQ,4BAA4B,eAAe,aAAa,CAAC;AAAA,IAC3G,SAAS,KAAK;AACZ,yBAAmB,GAAG;AAAA,IACxB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import {
|
|
2
|
+
failSite
|
|
3
|
+
} from "./chunk-3SK7TWGP.js";
|
|
4
|
+
import "./chunk-O6XZIQXZ.js";
|
|
5
|
+
import "./chunk-GXDLWBOY.js";
|
|
6
|
+
import "./chunk-GIWHHCD6.js";
|
|
7
|
+
import "./chunk-UI6BKYQD.js";
|
|
8
|
+
import "./chunk-I2DNBEV6.js";
|
|
9
|
+
import {
|
|
10
|
+
apiGet,
|
|
11
|
+
apiPost
|
|
12
|
+
} from "./chunk-CUL3VB4L.js";
|
|
13
|
+
import "./chunk-6YYSUISH.js";
|
|
14
|
+
import {
|
|
15
|
+
optionalChatId,
|
|
16
|
+
requireChatId
|
|
17
|
+
} from "./chunk-I4FTS5EE.js";
|
|
18
|
+
import {
|
|
19
|
+
registerSchema,
|
|
20
|
+
writeJson
|
|
21
|
+
} from "./chunk-MYTDK3AL.js";
|
|
22
|
+
import "./chunk-YQSBHWOI.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/site/domain.ts
|
|
25
|
+
import { defineCommand } from "citty";
|
|
26
|
+
registerSchema({
|
|
27
|
+
command: "site.domain.add",
|
|
28
|
+
description: "Stage connecting a custom domain (a subdomain such as shop.acme.com \u2014 not the bare acme.com) to the company's landings. Applies when the chat is published; then Baker starts verifying it. The client must add a CNAME record pointing the hostname at customers.withbaker.com \u2014 the response's hints give the exact record to ask for. Refused at once when another company already registered it or the company is at its domain limit.",
|
|
29
|
+
args: { hostname: { type: "string", description: "The subdomain to connect, e.g. shop.acme.com", required: true } }
|
|
30
|
+
});
|
|
31
|
+
registerSchema({
|
|
32
|
+
command: "site.domain.list",
|
|
33
|
+
description: "Every custom domain of the company and its status: pending_verification (waiting for the DNS record \u2014 `message` says what is missing), active (live), error, or staged (this chat adds it at publish). Read-only.",
|
|
34
|
+
args: {}
|
|
35
|
+
});
|
|
36
|
+
registerSchema({
|
|
37
|
+
command: "site.domain.verify",
|
|
38
|
+
description: "Re-check a domain that is waiting for verification now instead of waiting for the background check (every few minutes). Use after the client says they added the DNS record. Returns its state and, if it is not live yet, what is still missing. A staged domain cannot be checked until the chat is published.",
|
|
39
|
+
args: { hostname: { type: "string", description: "A domain from `baker site domain list`", required: true } }
|
|
40
|
+
});
|
|
41
|
+
var addCommand = defineCommand({
|
|
42
|
+
meta: {
|
|
43
|
+
name: "add",
|
|
44
|
+
description: "Stage connecting a custom domain; applies at publish. The client adds a CNAME to customers.withbaker.com.\n\nExample: baker site domain add shop.acme.com"
|
|
45
|
+
},
|
|
46
|
+
args: { hostname: { type: "positional", description: "Subdomain, e.g. shop.acme.com", required: true } },
|
|
47
|
+
run: async ({ args }) => {
|
|
48
|
+
try {
|
|
49
|
+
const body = {
|
|
50
|
+
chatId: requireChatId(),
|
|
51
|
+
inputs: [{ setting: "customDomain", hostname: String(args.hostname) }]
|
|
52
|
+
};
|
|
53
|
+
writeJson(await apiPost("/api/site/stage", body));
|
|
54
|
+
} catch (err) {
|
|
55
|
+
failSite(err);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
var listCommand = defineCommand({
|
|
60
|
+
meta: {
|
|
61
|
+
name: "list",
|
|
62
|
+
description: "List the company's custom domains and what each is waiting for.\n\nExample: baker site domain list"
|
|
63
|
+
},
|
|
64
|
+
run: async () => {
|
|
65
|
+
try {
|
|
66
|
+
const chatId = optionalChatId();
|
|
67
|
+
writeJson(await apiGet("/api/site/domains", chatId ? { chatId } : void 0));
|
|
68
|
+
} catch (err) {
|
|
69
|
+
failSite(err);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
var verifyCommand = defineCommand({
|
|
74
|
+
meta: {
|
|
75
|
+
name: "verify",
|
|
76
|
+
description: "Re-check a pending domain now, e.g. right after the client added the DNS record.\n\nExample: baker site domain verify shop.acme.com"
|
|
77
|
+
},
|
|
78
|
+
args: { hostname: { type: "positional", description: "A domain from `baker site domain list`", required: true } },
|
|
79
|
+
run: async ({ args }) => {
|
|
80
|
+
try {
|
|
81
|
+
const body = { hostname: String(args.hostname) };
|
|
82
|
+
writeJson(await apiPost("/api/site/domains/verify", body));
|
|
83
|
+
} catch (err) {
|
|
84
|
+
failSite(err);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
var domainCommand = defineCommand({
|
|
89
|
+
meta: {
|
|
90
|
+
name: "domain",
|
|
91
|
+
description: "Custom domains for the company's landings. Subcommands: add (staged until publish), list, verify.\n\nExamples:\n baker site domain add shop.acme.com\n baker site domain list\n baker site domain verify shop.acme.com"
|
|
92
|
+
},
|
|
93
|
+
subCommands: { add: addCommand, list: listCommand, verify: verifyCommand }
|
|
94
|
+
});
|
|
95
|
+
export {
|
|
96
|
+
domainCommand
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=domain-AMAR76PB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/site/domain.ts"],"sourcesContent":["import type {\n SiteDomainsResponse,\n SiteDomainVerifyRequest,\n SiteDomainVerifyResponse,\n SiteStageRequest,\n SiteStageResponse,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiGet, apiPost } from \"../../client.ts\";\nimport { optionalChatId, requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failSite } from \"./shared.ts\";\n\nregisterSchema({\n command: \"site.domain.add\",\n description:\n \"Stage connecting a custom domain (a subdomain such as shop.acme.com — not the bare acme.com) to the company's landings. Applies when the chat is published; then Baker starts verifying it. The client must add a CNAME record pointing the hostname at customers.withbaker.com — the response's hints give the exact record to ask for. Refused at once when another company already registered it or the company is at its domain limit.\",\n args: { hostname: { type: \"string\", description: \"The subdomain to connect, e.g. shop.acme.com\", required: true } },\n});\n\nregisterSchema({\n command: \"site.domain.list\",\n description:\n \"Every custom domain of the company and its status: pending_verification (waiting for the DNS record — `message` says what is missing), active (live), error, or staged (this chat adds it at publish). Read-only.\",\n args: {},\n});\n\nregisterSchema({\n command: \"site.domain.verify\",\n description:\n \"Re-check a domain that is waiting for verification now instead of waiting for the background check (every few minutes). Use after the client says they added the DNS record. Returns its state and, if it is not live yet, what is still missing. A staged domain cannot be checked until the chat is published.\",\n args: { hostname: { type: \"string\", description: \"A domain from `baker site domain list`\", required: true } },\n});\n\nconst addCommand = defineCommand({\n meta: {\n name: \"add\",\n description:\n \"Stage connecting a custom domain; applies at publish. The client adds a CNAME to customers.withbaker.com.\\n\\nExample: baker site domain add shop.acme.com\",\n },\n args: { hostname: { type: \"positional\", description: \"Subdomain, e.g. shop.acme.com\", required: true } },\n run: async ({ args }) => {\n try {\n const body: SiteStageRequest = {\n chatId: requireChatId(),\n inputs: [{ setting: \"customDomain\", hostname: String(args.hostname) }],\n };\n writeJson(await apiPost<SiteStageResponse>(\"/api/site/stage\", body));\n } catch (err) {\n failSite(err);\n }\n },\n});\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"List the company's custom domains and what each is waiting for.\\n\\nExample: baker site domain list\",\n },\n run: async () => {\n try {\n const chatId = optionalChatId();\n writeJson(await apiGet<SiteDomainsResponse>(\"/api/site/domains\", chatId ? { chatId } : undefined));\n } catch (err) {\n failSite(err);\n }\n },\n});\n\nconst verifyCommand = defineCommand({\n meta: {\n name: \"verify\",\n description:\n \"Re-check a pending domain now, e.g. right after the client added the DNS record.\\n\\nExample: baker site domain verify shop.acme.com\",\n },\n args: { hostname: { type: \"positional\", description: \"A domain from `baker site domain list`\", required: true } },\n run: async ({ args }) => {\n try {\n const body: SiteDomainVerifyRequest = { hostname: String(args.hostname) };\n writeJson(await apiPost<SiteDomainVerifyResponse>(\"/api/site/domains/verify\", body));\n } catch (err) {\n failSite(err);\n }\n },\n});\n\nexport const domainCommand = defineCommand({\n meta: {\n name: \"domain\",\n description:\n \"Custom domains for the company's landings. Subcommands: add (staged until publish), list, verify.\\n\\nExamples:\\n baker site domain add shop.acme.com\\n baker site domain list\\n baker site domain verify shop.acme.com\",\n },\n subCommands: { add: addCommand, list: listCommand, verify: verifyCommand },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAOA,SAAS,qBAAqB;AAO9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,aAAa,gDAAgD,UAAU,KAAK,EAAE;AACpH,CAAC;AAED,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,CAAC;AACT,CAAC;AAED,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,KAAK,EAAE;AAC9G,CAAC;AAED,IAAM,aAAa,cAAc;AAAA,EAC/B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,aAAa,iCAAiC,UAAU,KAAK,EAAE;AAAA,EACvG,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,OAAyB;AAAA,QAC7B,QAAQ,cAAc;AAAA,QACtB,QAAQ,CAAC,EAAE,SAAS,gBAAgB,UAAU,OAAO,KAAK,QAAQ,EAAE,CAAC;AAAA,MACvE;AACA,gBAAU,MAAM,QAA2B,mBAAmB,IAAI,CAAC;AAAA,IACrE,SAAS,KAAK;AACZ,eAAS,GAAG;AAAA,IACd;AAAA,EACF;AACF,CAAC;AAED,IAAM,cAAc,cAAc;AAAA,EAChC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,KAAK,YAAY;AACf,QAAI;AACF,YAAM,SAAS,eAAe;AAC9B,gBAAU,MAAM,OAA4B,qBAAqB,SAAS,EAAE,OAAO,IAAI,MAAS,CAAC;AAAA,IACnG,SAAS,KAAK;AACZ,eAAS,GAAG;AAAA,IACd;AAAA,EACF;AACF,CAAC;AAED,IAAM,gBAAgB,cAAc;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,aAAa,0CAA0C,UAAU,KAAK,EAAE;AAAA,EAChH,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,OAAgC,EAAE,UAAU,OAAO,KAAK,QAAQ,EAAE;AACxE,gBAAU,MAAM,QAAkC,4BAA4B,IAAI,CAAC;AAAA,IACrF,SAAS,KAAK;AACZ,eAAS,GAAG;AAAA,IACd;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,aAAa,EAAE,KAAK,YAAY,MAAM,aAAa,QAAQ,cAAc;AAC3E,CAAC;","names":[]}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import {
|
|
2
|
+
atomicWrite,
|
|
3
|
+
isDirectory,
|
|
4
|
+
isRemoteUrl
|
|
5
|
+
} from "./chunk-VSU5R34H.js";
|
|
6
|
+
import {
|
|
7
|
+
MAX_REMOTE_IMAGE_BYTES,
|
|
8
|
+
fetchExternalBytes
|
|
9
|
+
} from "./chunk-JXMZEOHV.js";
|
|
10
|
+
import {
|
|
11
|
+
ApiError,
|
|
12
|
+
apiGet,
|
|
13
|
+
validateConvexId
|
|
14
|
+
} from "./chunk-CUL3VB4L.js";
|
|
15
|
+
import "./chunk-6YYSUISH.js";
|
|
16
|
+
import "./chunk-I4FTS5EE.js";
|
|
17
|
+
import {
|
|
18
|
+
registerSchema,
|
|
19
|
+
writeJson
|
|
20
|
+
} from "./chunk-MYTDK3AL.js";
|
|
21
|
+
import "./chunk-YQSBHWOI.js";
|
|
22
|
+
|
|
23
|
+
// src/commands/images/download.ts
|
|
24
|
+
import { defineCommand } from "citty";
|
|
25
|
+
|
|
26
|
+
// src/commands/images/downloadPaths.ts
|
|
27
|
+
import { basename, extname, join } from "path";
|
|
28
|
+
var CONTENT_TYPE_EXTENSIONS = {
|
|
29
|
+
"image/webp": ".webp",
|
|
30
|
+
"image/png": ".png",
|
|
31
|
+
"image/jpeg": ".jpg",
|
|
32
|
+
"image/jpg": ".jpg",
|
|
33
|
+
"image/gif": ".gif",
|
|
34
|
+
"image/svg+xml": ".svg",
|
|
35
|
+
"image/avif": ".avif",
|
|
36
|
+
"image/bmp": ".bmp",
|
|
37
|
+
"image/tiff": ".tiff",
|
|
38
|
+
"image/x-icon": ".ico",
|
|
39
|
+
"image/vnd.microsoft.icon": ".ico"
|
|
40
|
+
};
|
|
41
|
+
var KNOWN_EXTENSIONS = /* @__PURE__ */ new Set([".webp", ".png", ".jpg", ".jpeg", ".gif", ".svg", ".avif", ".bmp", ".tiff", ".ico"]);
|
|
42
|
+
function urlPath(sourceUrl) {
|
|
43
|
+
try {
|
|
44
|
+
return new URL(sourceUrl).pathname;
|
|
45
|
+
} catch {
|
|
46
|
+
return sourceUrl.split(/[?#]/)[0] ?? "";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function extensionFromUrl(sourceUrl) {
|
|
50
|
+
const ext = extname(urlPath(sourceUrl)).toLowerCase();
|
|
51
|
+
return KNOWN_EXTENSIONS.has(ext) ? ext : null;
|
|
52
|
+
}
|
|
53
|
+
function deriveExtension(contentType, sourceUrl) {
|
|
54
|
+
const normalized = (contentType ?? "").split(";")[0]?.trim().toLowerCase() ?? "";
|
|
55
|
+
const fromType = CONTENT_TYPE_EXTENSIONS[normalized];
|
|
56
|
+
if (fromType) {
|
|
57
|
+
return fromType;
|
|
58
|
+
}
|
|
59
|
+
return extensionFromUrl(sourceUrl) ?? ".bin";
|
|
60
|
+
}
|
|
61
|
+
function looksLikeCdnHash(stem) {
|
|
62
|
+
return stem.length >= 32 && !/[-_.]/.test(stem);
|
|
63
|
+
}
|
|
64
|
+
function hostLabel(sourceUrl) {
|
|
65
|
+
try {
|
|
66
|
+
const host = new URL(sourceUrl).hostname.replace(/^www\./, "");
|
|
67
|
+
const label = host.split(".").filter((part) => part !== "cdn" && part !== "images")[0];
|
|
68
|
+
return label && /^[a-z0-9-]+$/.test(label) ? label : null;
|
|
69
|
+
} catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function sanitizeBaseName(raw) {
|
|
74
|
+
const stem = raw.trim().toLowerCase().replace(/\.[a-z0-9]{1,5}$/i, "").replace(/[^a-z0-9._-]+/g, "-").replace(/^[-.]+|[-.]+$/g, "").slice(0, 80);
|
|
75
|
+
return stem.length > 0 ? stem : "image";
|
|
76
|
+
}
|
|
77
|
+
function baseNameFromUrl(sourceUrl) {
|
|
78
|
+
const stem = sanitizeBaseName(basename(urlPath(sourceUrl)));
|
|
79
|
+
if (looksLikeCdnHash(stem)) {
|
|
80
|
+
const label = hostLabel(sourceUrl);
|
|
81
|
+
if (label) return `${label}-${stem.slice(0, 8)}`;
|
|
82
|
+
}
|
|
83
|
+
return stem;
|
|
84
|
+
}
|
|
85
|
+
function resolveDownloadPath({ baseName, extension, out, outIsDirectory: outIsDirectory2 }) {
|
|
86
|
+
const filename = `${baseName}${extension}`;
|
|
87
|
+
if (!out) {
|
|
88
|
+
return filename;
|
|
89
|
+
}
|
|
90
|
+
if (outIsDirectory2) {
|
|
91
|
+
return join(out, filename);
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
function disambiguate(paths) {
|
|
96
|
+
const taken = /* @__PURE__ */ new Set();
|
|
97
|
+
return paths.map((path) => {
|
|
98
|
+
if (!taken.has(path)) {
|
|
99
|
+
taken.add(path);
|
|
100
|
+
return path;
|
|
101
|
+
}
|
|
102
|
+
const ext = extname(path);
|
|
103
|
+
const stem = path.slice(0, path.length - ext.length);
|
|
104
|
+
let n = 2;
|
|
105
|
+
while (taken.has(`${stem}-${n}${ext}`)) n += 1;
|
|
106
|
+
const unique = `${stem}-${n}${ext}`;
|
|
107
|
+
taken.add(unique);
|
|
108
|
+
return unique;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/commands/images/download.ts
|
|
113
|
+
registerSchema({
|
|
114
|
+
command: "images.download",
|
|
115
|
+
description: "Download remote images or library images to local files, so the local transforms (normalize, crop, dimensions) can read them.",
|
|
116
|
+
args: {
|
|
117
|
+
targets: {
|
|
118
|
+
type: "string",
|
|
119
|
+
description: "One or more image URLs and/or library image ids, space- or comma-separated (e.g. 'https://\u2026/logo.webp j57abc123').",
|
|
120
|
+
required: true
|
|
121
|
+
},
|
|
122
|
+
out: {
|
|
123
|
+
type: "string",
|
|
124
|
+
description: "Output directory (must exist) or, with a single target, an exact file path. Default: the working directory.",
|
|
125
|
+
required: false
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
var ValidationError = class extends Error {
|
|
130
|
+
};
|
|
131
|
+
var UnusableTargetError = class extends Error {
|
|
132
|
+
constructor(target) {
|
|
133
|
+
super(`"${target}" is neither an image URL nor a library image id.`);
|
|
134
|
+
this.target = target;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
function readTargets(args) {
|
|
138
|
+
const positionals = Array.isArray(args._) ? args._ : [];
|
|
139
|
+
const named = typeof args.targets === "string" ? [args.targets] : [];
|
|
140
|
+
const all = positionals.length > 0 ? positionals : named;
|
|
141
|
+
const seen = /* @__PURE__ */ new Set();
|
|
142
|
+
const out = [];
|
|
143
|
+
for (const value of all) {
|
|
144
|
+
if (typeof value !== "string") continue;
|
|
145
|
+
for (const part of value.split(",").map((p) => p.trim())) {
|
|
146
|
+
if (part.length > 0 && !seen.has(part)) {
|
|
147
|
+
seen.add(part);
|
|
148
|
+
out.push(part);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
function classify(raw) {
|
|
155
|
+
if (isRemoteUrl(raw)) {
|
|
156
|
+
return { raw, kind: "url" };
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
validateConvexId(raw);
|
|
160
|
+
} catch {
|
|
161
|
+
throw new UnusableTargetError(raw);
|
|
162
|
+
}
|
|
163
|
+
return { raw, kind: "imageId" };
|
|
164
|
+
}
|
|
165
|
+
async function resolveTarget(target) {
|
|
166
|
+
if (target.kind === "url") {
|
|
167
|
+
return { input: target.raw, url: target.raw, baseName: baseNameFromUrl(target.raw) };
|
|
168
|
+
}
|
|
169
|
+
const doc = await apiGet("/api/images/get", { id: target.raw });
|
|
170
|
+
const stem = sanitizeBaseName(doc.name.length > 0 ? doc.name : target.raw);
|
|
171
|
+
return { input: target.raw, url: doc.imageUrl, baseName: stem };
|
|
172
|
+
}
|
|
173
|
+
async function fetchBytes(url) {
|
|
174
|
+
return await fetchExternalBytes(url, { maxBytes: MAX_REMOTE_IMAGE_BYTES });
|
|
175
|
+
}
|
|
176
|
+
var NEXT_STEP_HINT = "Downloaded files are local paths \u2014 the local transforms take them directly: `baker images normalize <file> --color '#FFFFFF' --height 40`, `baker images crop <file> --x \u2026 --y \u2026 --width \u2026 --height \u2026`, `baker images dimensions <file>`. For a landing, page-scoped images belong in `src/pages/{landing}/_images/`.";
|
|
177
|
+
var PARTIAL_FAILURE_HINT = "Some targets did not download. Carry on with the ones that did \u2014 a missing asset never blocks the rest of the job. Retry a failed URL only if it was a transient 5xx; a 403 means the host will not serve these bytes to anyone but a browser, so re-source it (`baker images extract <page>`) instead.";
|
|
178
|
+
var ALL_FAILED_FIX = {
|
|
179
|
+
action: "use_different_resource",
|
|
180
|
+
explanation: "None of the targets could be downloaded. A 403/404 means the host will not serve these bytes \u2014 re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`) or, for a library image, check the row is `ready` with `baker images get <id>`. Do not retry the same URLs in a loop, and do not fall back to `curl` \u2014 continue the job with a placeholder if nothing can be fetched."
|
|
181
|
+
};
|
|
182
|
+
async function outIsDirectory(out) {
|
|
183
|
+
if (!out) return false;
|
|
184
|
+
return out.endsWith("/") || await isDirectory(out);
|
|
185
|
+
}
|
|
186
|
+
async function buildPlan(args) {
|
|
187
|
+
const raw = readTargets(args);
|
|
188
|
+
if (raw.length === 0) {
|
|
189
|
+
throw new ValidationError("At least one image URL or library image id is required.");
|
|
190
|
+
}
|
|
191
|
+
const targets = raw.map(classify);
|
|
192
|
+
const out = typeof args.out === "string" && args.out.length > 0 ? args.out : void 0;
|
|
193
|
+
const outIsDir = await outIsDirectory(out);
|
|
194
|
+
if (out && !outIsDir && targets.length > 1) {
|
|
195
|
+
throw new ValidationError(
|
|
196
|
+
`--out must be an existing directory when downloading more than one image (got "${out}").`
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
return { targets, out, outIsDir };
|
|
200
|
+
}
|
|
201
|
+
function failureMessage(err, fallback) {
|
|
202
|
+
return err instanceof Error ? err.message : fallback;
|
|
203
|
+
}
|
|
204
|
+
async function runDownloads(plan) {
|
|
205
|
+
const failed = [];
|
|
206
|
+
const fetched = [];
|
|
207
|
+
for (const target of plan.targets) {
|
|
208
|
+
try {
|
|
209
|
+
const resolved = await resolveTarget(target);
|
|
210
|
+
const { buffer, contentType } = await fetchBytes(resolved.url);
|
|
211
|
+
fetched.push({
|
|
212
|
+
input: resolved.input,
|
|
213
|
+
buffer,
|
|
214
|
+
contentType,
|
|
215
|
+
path: resolveDownloadPath({
|
|
216
|
+
baseName: resolved.baseName,
|
|
217
|
+
extension: deriveExtension(contentType, resolved.url),
|
|
218
|
+
out: plan.out,
|
|
219
|
+
outIsDirectory: plan.outIsDir
|
|
220
|
+
})
|
|
221
|
+
});
|
|
222
|
+
} catch (err) {
|
|
223
|
+
failed.push({ input: target.raw, error: failureMessage(err, "Download failed") });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const paths = disambiguate(fetched.map((item) => item.path));
|
|
227
|
+
const downloaded = [];
|
|
228
|
+
for (const [index, item] of fetched.entries()) {
|
|
229
|
+
const path = paths[index] ?? item.path;
|
|
230
|
+
try {
|
|
231
|
+
await atomicWrite(path, item.buffer);
|
|
232
|
+
downloaded.push({ input: item.input, output: path, bytes: item.buffer.length, contentType: item.contentType });
|
|
233
|
+
} catch (err) {
|
|
234
|
+
failed.push({ input: item.input, error: failureMessage(err, "Write failed") });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return { downloaded, failed };
|
|
238
|
+
}
|
|
239
|
+
function emitError(err) {
|
|
240
|
+
if (err instanceof UnusableTargetError) {
|
|
241
|
+
writeJson({
|
|
242
|
+
ok: false,
|
|
243
|
+
error: {
|
|
244
|
+
code: "VALIDATION_ERROR",
|
|
245
|
+
message: err.message,
|
|
246
|
+
fix: {
|
|
247
|
+
action: "retry_with_changes",
|
|
248
|
+
explanation: "`download` takes remote image URLs (https://\u2026) and library image ids. A path that is already on disk needs no download \u2014 pass it straight to `baker images normalize` / `crop` / `dimensions`. To get a library id, run `baker images library <query>` and read `_id`."
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
process.exit(1);
|
|
253
|
+
}
|
|
254
|
+
if (err instanceof ValidationError) {
|
|
255
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: err.message } });
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
if (err instanceof ApiError) {
|
|
259
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
263
|
+
process.exit(1);
|
|
264
|
+
}
|
|
265
|
+
var downloadCommand = defineCommand({
|
|
266
|
+
meta: {
|
|
267
|
+
name: "download",
|
|
268
|
+
description: "Download image URLs and/or library images to local files \u2014 the missing first half of `source \u2192 download \u2192 normalize \u2192 place`. Never use `curl` for this.\n\nExamples:\n baker images download https://media.withbaker.com/\u2026/logo.webp\n baker images download j57abc123 j57def456 --out src/pages/pricing/_images/\n baker images download https://\u2026/hero.png --out ./hero.png"
|
|
269
|
+
},
|
|
270
|
+
args: {
|
|
271
|
+
targets: { type: "positional", description: "Image URLs and/or library image ids", required: false },
|
|
272
|
+
out: { type: "string", description: "Output directory (must exist), or exact file path for a single target" }
|
|
273
|
+
},
|
|
274
|
+
run: async ({ args }) => {
|
|
275
|
+
try {
|
|
276
|
+
const plan = await buildPlan(args);
|
|
277
|
+
const { downloaded, failed } = await runDownloads(plan);
|
|
278
|
+
if (downloaded.length === 0) {
|
|
279
|
+
writeJson({
|
|
280
|
+
ok: false,
|
|
281
|
+
error: {
|
|
282
|
+
code: "DOWNLOAD_FAILED",
|
|
283
|
+
message: `None of the ${plan.targets.length} target(s) could be downloaded: ${failed.map((f) => `${f.input} (${f.error})`).join("; ")}`,
|
|
284
|
+
fix: ALL_FAILED_FIX
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
const hints = [NEXT_STEP_HINT, ...failed.length > 0 ? [PARTIAL_FAILURE_HINT] : []];
|
|
290
|
+
writeJson({ ok: true, data: { downloaded, failed }, hints });
|
|
291
|
+
} catch (err) {
|
|
292
|
+
emitError(err);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
export {
|
|
297
|
+
downloadCommand
|
|
298
|
+
};
|
|
299
|
+
//# sourceMappingURL=download-LV3GPOWV.js.map
|