@koda-sl/baker-cli 0.442.0 → 0.443.0-dev.043c1d4ac
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 +38 -23
- package/canvas/tiktok-captions-composition/index.html +5 -6
- package/canvas/tiktok-captions-composition/meta.json +5 -0
- package/dist/account-4H7QVBRK.js +80 -0
- package/dist/account-4H7QVBRK.js.map +1 -0
- package/dist/account-IEVEOFIK.js +49 -0
- package/dist/account-IEVEOFIK.js.map +1 -0
- package/dist/account-RDRK7NOE.js +79 -0
- package/dist/account-RDRK7NOE.js.map +1 -0
- package/dist/account-writes-AK42HGRM.js +66 -0
- package/dist/account-writes-AK42HGRM.js.map +1 -0
- package/dist/accounts-4CDRK4S4.js +75 -0
- package/dist/accounts-4CDRK4S4.js.map +1 -0
- package/dist/accounts-4TYIUVWY.js +77 -0
- package/dist/accounts-4TYIUVWY.js.map +1 -0
- package/dist/accounts-5QDKBZMH.js +115 -0
- package/dist/accounts-5QDKBZMH.js.map +1 -0
- package/dist/accounts-6COLJJHM.js +611 -0
- package/dist/accounts-6COLJJHM.js.map +1 -0
- package/dist/accounts-KYJO3JC6.js +114 -0
- package/dist/accounts-KYJO3JC6.js.map +1 -0
- package/dist/actions-PEI6ZQAG.js +55 -0
- package/dist/active-entities-YUSOUR5M.js +103 -0
- package/dist/active-entities-YUSOUR5M.js.map +1 -0
- package/dist/activities-ZVQOBHZH.js +74 -0
- package/dist/activities-ZVQOBHZH.js.map +1 -0
- package/dist/ad-group-writes-QQS4223F.js +170 -0
- package/dist/ad-group-writes-QQS4223F.js.map +1 -0
- package/dist/ad-groups-WGPDPUI2.js +68 -0
- package/dist/ad-groups-WGPDPUI2.js.map +1 -0
- package/dist/ad-writes-XE2IE4DS.js +174 -0
- package/dist/ad-writes-XE2IE4DS.js.map +1 -0
- package/dist/add-577QWMCF.js +97 -0
- package/dist/add-577QWMCF.js.map +1 -0
- package/dist/add-CUWAW7KG.js +105 -0
- package/dist/add-CUWAW7KG.js.map +1 -0
- package/dist/add-XDOQQCHS.js +104 -0
- package/dist/add-XDOQQCHS.js.map +1 -0
- package/dist/add-XEDSBYLM.js +280 -0
- package/dist/add-XEDSBYLM.js.map +1 -0
- package/dist/ads-BCOSQALY.js +77 -0
- package/dist/ads-BCOSQALY.js.map +1 -0
- package/dist/ads-H7GH7A26.js +113 -0
- package/dist/ads-H7GH7A26.js.map +1 -0
- package/dist/ads-TJ7ACFHG.js +40 -0
- package/dist/adsets-H7QT42U6.js +176 -0
- package/dist/adsets-H7QT42U6.js.map +1 -0
- package/dist/advertisers-WSNHNCBQ.js +116 -0
- package/dist/advertisers-WSNHNCBQ.js.map +1 -0
- package/dist/advertisers-YMHPZYNF.js +111 -0
- package/dist/advertisers-YMHPZYNF.js.map +1 -0
- package/dist/analytics-PT2GKCFU.js +1958 -0
- package/dist/analytics-PT2GKCFU.js.map +1 -0
- package/dist/analytics-ZVWUY66X.js +433 -0
- package/dist/analytics-ZVWUY66X.js.map +1 -0
- package/dist/animate-3Z7HXOLE.js +480 -0
- package/dist/animate-3Z7HXOLE.js.map +1 -0
- package/dist/assign-B26AJLGN.js +77 -0
- package/dist/assign-B26AJLGN.js.map +1 -0
- package/dist/audience-size-ZX565D5P.js +94 -0
- package/dist/audience-size-ZX565D5P.js.map +1 -0
- package/dist/audiences-HFRVIE2X.js +85 -0
- package/dist/audiences-HFRVIE2X.js.map +1 -0
- package/dist/audiences-JACGRBNN.js +78 -0
- package/dist/audiences-JACGRBNN.js.map +1 -0
- package/dist/audiences-TGD5US2M.js +268 -0
- package/dist/audiences-TGD5US2M.js.map +1 -0
- package/dist/audit-AD4ZZNJN.js +88 -0
- package/dist/audit-AD4ZZNJN.js.map +1 -0
- package/dist/audit-SAXVPGWS.js +151 -0
- package/dist/audit-SAXVPGWS.js.map +1 -0
- package/dist/autocomplete-6PYFCOMX.js +107 -0
- package/dist/autocomplete-6PYFCOMX.js.map +1 -0
- package/dist/avatars-2UQJXHPV.js +38 -0
- package/dist/bid-pricing-WSHACGX4.js +99 -0
- package/dist/bid-pricing-WSHACGX4.js.map +1 -0
- package/dist/brand-XBABUT52.js +22 -0
- package/dist/brief-KKNC32TA.js +478 -0
- package/dist/brief-KKNC32TA.js.map +1 -0
- package/dist/businesses-JBDQZZIG.js +53 -0
- package/dist/businesses-JBDQZZIG.js.map +1 -0
- package/dist/campaign-groups-G35366AW.js +95 -0
- package/dist/campaign-groups-G35366AW.js.map +1 -0
- package/dist/campaign-writes-SXLZFYF6.js +170 -0
- package/dist/campaign-writes-SXLZFYF6.js.map +1 -0
- package/dist/campaign-writes-ZQGN7FQ3.js +165 -0
- package/dist/campaign-writes-ZQGN7FQ3.js.map +1 -0
- package/dist/campaigns-GXUCHQ2S.js +109 -0
- package/dist/campaigns-GXUCHQ2S.js.map +1 -0
- package/dist/campaigns-WBEG5QA4.js +110 -0
- package/dist/campaigns-WBEG5QA4.js.map +1 -0
- package/dist/campaigns-WECN54WV.js +107 -0
- package/dist/campaigns-WECN54WV.js.map +1 -0
- package/dist/campaigns-YS3OGQXO.js +76 -0
- package/dist/campaigns-YS3OGQXO.js.map +1 -0
- package/dist/canvas-KEXE5P6S.js +46 -0
- package/dist/capabilities-74I5AQ36.js +144 -0
- package/dist/capabilities-74I5AQ36.js.map +1 -0
- package/dist/cards-4477BFEV.js +85 -0
- package/dist/cards-4477BFEV.js.map +1 -0
- package/dist/catalog-IQEQ5TGQ.js +66 -0
- package/dist/catalog-IQEQ5TGQ.js.map +1 -0
- package/dist/catalogs-BRXEDE56.js +128 -0
- package/dist/catalogs-BRXEDE56.js.map +1 -0
- package/dist/changes-6QBJMGJC.js +135 -0
- package/dist/changes-6QBJMGJC.js.map +1 -0
- package/dist/chatgpt-7W75X3ER.js +47 -0
- package/dist/chats-DWHF64IU.js +262 -0
- package/dist/chats-DWHF64IU.js.map +1 -0
- package/dist/chunk-27NMXSC3.js +486 -0
- package/dist/chunk-27NMXSC3.js.map +1 -0
- package/dist/chunk-2CD5ZP7M.js +6659 -0
- package/dist/chunk-2CD5ZP7M.js.map +1 -0
- package/dist/chunk-2TK4DEOE.js +74 -0
- package/dist/chunk-3RJ3VGJP.js +197 -0
- package/dist/chunk-3RJ3VGJP.js.map +1 -0
- package/dist/chunk-4NDCTLI5.js +191 -0
- package/dist/chunk-4NZ47VXO.js +137 -0
- package/dist/chunk-4NZ47VXO.js.map +1 -0
- package/dist/chunk-4SJDDGPV.js +1411 -0
- package/dist/chunk-4SJDDGPV.js.map +1 -0
- package/dist/chunk-5ARG3CQG.js +141 -0
- package/dist/chunk-5HYSKH77.js +315 -0
- package/dist/chunk-5HYSKH77.js.map +1 -0
- package/dist/chunk-5Z2KSVIV.js +67 -0
- package/dist/chunk-654U6NU6.js +534 -0
- package/dist/chunk-654U6NU6.js.map +1 -0
- package/dist/chunk-6B7VKFS4.js +172 -0
- package/dist/chunk-6G5K6ZC6.js +46 -0
- package/dist/chunk-73QKIIIR.js +23 -0
- package/dist/chunk-75FDTDLH.js +96 -0
- package/dist/chunk-75VNSKS3.js +455 -0
- package/dist/chunk-75VNSKS3.js.map +1 -0
- package/dist/chunk-7GPDUS3P.js +494 -0
- package/dist/chunk-7GPDUS3P.js.map +1 -0
- package/dist/chunk-7J6EHOH6.js +274 -0
- package/dist/chunk-7OFNN4CT.js +58 -0
- package/dist/chunk-7QJVPMVB.js +592 -0
- package/dist/chunk-7QJVPMVB.js.map +1 -0
- package/dist/chunk-AN447DQB.js +159 -0
- package/dist/chunk-AN447DQB.js.map +1 -0
- package/dist/chunk-BYDF22T4.js +346 -0
- package/dist/chunk-BYDF22T4.js.map +1 -0
- package/dist/chunk-C6U6UDHJ.js +106 -0
- package/dist/chunk-CLMM6P6B.js +1751 -0
- package/dist/chunk-CLMM6P6B.js.map +1 -0
- package/dist/chunk-DIY6QR3E.js +96 -0
- package/dist/chunk-EFSYTROP.js +94 -0
- package/dist/chunk-EIP4PYCL.js +496 -0
- package/dist/chunk-EIP4PYCL.js.map +1 -0
- package/dist/chunk-EZUG6WE2.js +60 -0
- package/dist/chunk-EZUG6WE2.js.map +1 -0
- package/dist/chunk-F2S5BLPE.js +97 -0
- package/dist/chunk-F2S5BLPE.js.map +1 -0
- package/dist/chunk-FEXDI4NM.js +103 -0
- package/dist/chunk-FHXIEMCG.js +382 -0
- package/dist/chunk-FTWJFDIN.js +23992 -0
- package/dist/chunk-FTWJFDIN.js.map +1 -0
- package/dist/chunk-FXED3VZK.js +174 -0
- package/dist/chunk-FXED3VZK.js.map +1 -0
- package/dist/chunk-GIJT3A5U.js +166 -0
- package/dist/chunk-GIJT3A5U.js.map +1 -0
- package/dist/chunk-H26L3OQY.js +42 -0
- package/dist/chunk-HIPDMQZ6.js +136 -0
- package/dist/chunk-HMEFD2CG.js +5163 -0
- package/dist/chunk-HMEFD2CG.js.map +1 -0
- package/dist/chunk-HO3IUJ4K.js +70 -0
- package/dist/chunk-HO3IUJ4K.js.map +1 -0
- package/dist/chunk-HXTGYOQC.js +813 -0
- package/dist/chunk-HXTGYOQC.js.map +1 -0
- package/dist/chunk-HYCIBVDW.js +98 -0
- package/dist/chunk-ICM2OXZV.js +304 -0
- package/dist/chunk-ICM2OXZV.js.map +1 -0
- package/dist/chunk-IFWP3ZDO.js +215 -0
- package/dist/chunk-IKGWQBKJ.js +422 -0
- package/dist/chunk-IKGWQBKJ.js.map +1 -0
- package/dist/chunk-IXKEWS7X.js +433 -0
- package/dist/chunk-JERXV5A3.js +26 -0
- package/dist/chunk-JM73NDCM.js +163 -0
- package/dist/chunk-JM73NDCM.js.map +1 -0
- package/dist/chunk-K3PN7TN5.js +84 -0
- package/dist/chunk-K3PN7TN5.js.map +1 -0
- package/dist/chunk-KLNKEVIY.js +136 -0
- package/dist/chunk-KNY76UGC.js +84 -0
- package/dist/chunk-KWAOTV7F.js +830 -0
- package/dist/chunk-L3OLEAJN.js +92 -0
- package/dist/chunk-L3OLEAJN.js.map +1 -0
- package/dist/chunk-LERTEZST.js +28 -0
- package/dist/chunk-LL2CD5WU.js +310 -0
- package/dist/chunk-LO6GEJ4Z.js +51 -0
- package/dist/chunk-LS5MTRFI.js +106 -0
- package/dist/chunk-LZ73CZGP.js +188 -0
- package/dist/chunk-MELOSESI.js +20 -0
- package/dist/chunk-MLU6STIN.js +66 -0
- package/dist/chunk-MLU6STIN.js.map +1 -0
- package/dist/chunk-MZL4H5PY.js +225 -0
- package/dist/chunk-MZL4H5PY.js.map +1 -0
- package/dist/chunk-NAWWC5I3.js +454 -0
- package/dist/chunk-NFSLRRIE.js +77 -0
- package/dist/chunk-NFSLRRIE.js.map +1 -0
- package/dist/chunk-NPE7EWBE.js +297 -0
- package/dist/chunk-NU7JSWVA.js +946 -0
- package/dist/chunk-NU7JSWVA.js.map +1 -0
- package/dist/chunk-OBDAYP2P.js +3155 -0
- package/dist/chunk-OBDAYP2P.js.map +1 -0
- package/dist/chunk-OC5IJSIW.js +420 -0
- package/dist/chunk-OC5IJSIW.js.map +1 -0
- package/dist/chunk-OKG6GX2F.js +169 -0
- package/dist/chunk-OTFHEHIU.js +1706 -0
- package/dist/chunk-OTFHEHIU.js.map +1 -0
- package/dist/chunk-PBA3YCZA.js +76 -0
- package/dist/chunk-PWGWMIIJ.js +25 -0
- package/dist/chunk-QHLB5V7J.js +19 -0
- package/dist/chunk-QJE6ZYGI.js +131 -0
- package/dist/chunk-QSN5MZGS.js +74 -0
- package/dist/chunk-QXZYAIWS.js +390 -0
- package/dist/chunk-QXZYAIWS.js.map +1 -0
- package/dist/chunk-RRUJQVWA.js +4372 -0
- package/dist/chunk-RRUJQVWA.js.map +1 -0
- package/dist/chunk-RSW6QJPH.js +217 -0
- package/dist/chunk-RX6F3GEA.js +610 -0
- package/dist/chunk-RX6F3GEA.js.map +1 -0
- package/dist/chunk-SBMIQDCX.js +175 -0
- package/dist/chunk-SJDPHVGE.js +363 -0
- package/dist/chunk-SJDPHVGE.js.map +1 -0
- package/dist/chunk-STIB5DR5.js +56 -0
- package/dist/chunk-TBEUMOEL.js +95 -0
- package/dist/chunk-TCNNOLVZ.js +207 -0
- package/dist/chunk-TCNNOLVZ.js.map +1 -0
- package/dist/chunk-TD2P4HBP.js +55 -0
- package/dist/chunk-URIYUZIN.js +111 -0
- package/dist/chunk-URIYUZIN.js.map +1 -0
- package/dist/chunk-VAJBWA2U.js +75 -0
- package/dist/chunk-VAJBWA2U.js.map +1 -0
- package/dist/chunk-VBHDZSI5.js +57 -0
- package/dist/chunk-VFIOJD5M.js +309 -0
- package/dist/chunk-VVZBBKRC.js +296 -0
- package/dist/chunk-VWCELTQE.js +1079 -0
- package/dist/chunk-VWCELTQE.js.map +1 -0
- package/dist/chunk-W3B4BHQU.js +31 -0
- package/dist/chunk-W3ZHJJVT.js +139 -0
- package/dist/chunk-W3ZHJJVT.js.map +1 -0
- package/dist/chunk-WS2GMOSG.js +74 -0
- package/dist/chunk-XBOK23HI.js +214 -0
- package/dist/chunk-XG3XCHN6.js +26 -0
- package/dist/chunk-XL3BMSYG.js +125 -0
- package/dist/chunk-XWH7CCBL.js +6065 -0
- package/dist/chunk-XWH7CCBL.js.map +1 -0
- package/dist/chunk-XYMPS526.js +622 -0
- package/dist/chunk-Y5ZGWLWP.js +2882 -0
- package/dist/chunk-Y5ZGWLWP.js.map +1 -0
- package/dist/chunk-YBMVHGY3.js +333 -0
- package/dist/chunk-ZJ47BR6X.js +337 -0
- package/dist/chunk-ZJ47BR6X.js.map +1 -0
- package/dist/chunk-ZNBDKK4Y.js +76 -0
- package/dist/chunk-ZNBDKK4Y.js.map +1 -0
- package/dist/chunk-ZXTW3TXY.js +133 -0
- package/dist/chunk-ZXTW3TXY.js.map +1 -0
- package/dist/claim-EIL4ZBSN.js +197 -0
- package/dist/claim-EIL4ZBSN.js.map +1 -0
- package/dist/cli.js +36 -37
- package/dist/cli.js.map +1 -1
- package/dist/client-VHN32ZRE.js +19 -0
- package/dist/code-YS6ZMGX3.js +76 -0
- package/dist/code-YS6ZMGX3.js.map +1 -0
- package/dist/companies-2UG7RDYN.js +195 -0
- package/dist/companies-2UG7RDYN.js.map +1 -0
- package/dist/complete-I4KRFYMD.js +81 -0
- package/dist/complete-I4KRFYMD.js.map +1 -0
- package/dist/config-CQN5FHMZ.js +88 -0
- package/dist/config-CQN5FHMZ.js.map +1 -0
- package/dist/connect-TA5W6YGW.js +36 -0
- package/dist/content-3ZPP4SW2.js +81 -0
- package/dist/content-3ZPP4SW2.js.map +1 -0
- package/dist/conversation-BJI54MI6.js +93 -0
- package/dist/conversation-BJI54MI6.js.map +1 -0
- package/dist/conversion-report-XQBJ6LG4.js +125 -0
- package/dist/conversion-report-XQBJ6LG4.js.map +1 -0
- package/dist/conversion-upload-command-JULHGVIR.js +438 -0
- package/dist/conversion-upload-command-JULHGVIR.js.map +1 -0
- package/dist/conversion-writes-UBCVXP2E.js +120 -0
- package/dist/conversion-writes-UBCVXP2E.js.map +1 -0
- package/dist/conversions-D236RTUK.js +76 -0
- package/dist/conversions-D236RTUK.js.map +1 -0
- package/dist/conversions-VJOJ5S4U.js +135 -0
- package/dist/conversions-VJOJ5S4U.js.map +1 -0
- package/dist/countries-FYHM3IMJ.js +82 -0
- package/dist/countries-FYHM3IMJ.js.map +1 -0
- package/dist/create-E7BIZNUC.js +130 -0
- package/dist/create-E7BIZNUC.js.map +1 -0
- package/dist/create-HKOO7O5L.js +59 -0
- package/dist/create-HKOO7O5L.js.map +1 -0
- package/dist/create-JLQCXAT2.js +207 -0
- package/dist/create-JLQCXAT2.js.map +1 -0
- package/dist/create-VY3RQXOY.js +235 -0
- package/dist/create-VY3RQXOY.js.map +1 -0
- package/dist/creatives-PSWCNY7U.js +87 -0
- package/dist/creatives-PSWCNY7U.js.map +1 -0
- package/dist/creatives-QXMBEA2V.js +51 -0
- package/dist/creatives-QXMBEA2V.js.map +1 -0
- package/dist/creatives-VXQQUH2F.js +182 -0
- package/dist/creatives-VXQQUH2F.js.map +1 -0
- package/dist/credentials-G5BJK7OR.js +1055 -0
- package/dist/credentials-G5BJK7OR.js.map +1 -0
- package/dist/critique-CMLAPVUB.js +1449 -0
- package/dist/critique-CMLAPVUB.js.map +1 -0
- package/dist/critique-O5VNNBPB.js +214 -0
- package/dist/critique-O5VNNBPB.js.map +1 -0
- package/dist/crm-CL7R67FT.js +224 -0
- package/dist/crm-CL7R67FT.js.map +1 -0
- package/dist/crm-GJCAM3DI.js +318 -0
- package/dist/crm-GJCAM3DI.js.map +1 -0
- package/dist/crop-2J4RKJ6B.js +113 -0
- package/dist/crop-2J4RKJ6B.js.map +1 -0
- package/dist/currency-DJDVIR3C.js +88 -0
- package/dist/currency-DJDVIR3C.js.map +1 -0
- package/dist/custom-conversions-6P555U2K.js +125 -0
- package/dist/custom-conversions-6P555U2K.js.map +1 -0
- package/dist/customers-4RJGRR2Y.js +56 -0
- package/dist/delete-3AV3ARMX.js +71 -0
- package/dist/delete-3AV3ARMX.js.map +1 -0
- package/dist/delete-4QXLTL24.js +63 -0
- package/dist/delete-4QXLTL24.js.map +1 -0
- package/dist/delete-A5XD52K4.js +69 -0
- package/dist/delete-A5XD52K4.js.map +1 -0
- package/dist/delete-IJNJTAGW.js +54 -0
- package/dist/delete-IJNJTAGW.js.map +1 -0
- package/dist/delete-MRM2S4Z5.js +71 -0
- package/dist/delete-MRM2S4Z5.js.map +1 -0
- package/dist/delete-R57JFJ3A.js +66 -0
- package/dist/delete-R57JFJ3A.js.map +1 -0
- package/dist/demographics-VMARSTTE.js +138 -0
- package/dist/demographics-VMARSTTE.js.map +1 -0
- package/dist/describe-6NVOWIBE.js +97 -0
- package/dist/describe-6NVOWIBE.js.map +1 -0
- package/dist/describe-P3PPIQME.js +97 -0
- package/dist/describe-P3PPIQME.js.map +1 -0
- package/dist/dimensions-EYAYO27I.js +101 -0
- package/dist/dimensions-EYAYO27I.js.map +1 -0
- package/dist/discard-Y2BKPW4Z.js +66 -0
- package/dist/discard-Y2BKPW4Z.js.map +1 -0
- package/dist/discover-M3ZKKFEL.js +172 -0
- package/dist/discover-M3ZKKFEL.js.map +1 -0
- package/dist/domain-YTHDTRWN.js +98 -0
- package/dist/domain-YTHDTRWN.js.map +1 -0
- package/dist/download-7T6HIJKD.js +299 -0
- package/dist/download-7T6HIJKD.js.map +1 -0
- package/dist/draft-ABGQYDHP.js +328 -0
- package/dist/draft-ABGQYDHP.js.map +1 -0
- package/dist/draft-BGUJDHXR.js +103 -0
- package/dist/draft-BGUJDHXR.js.map +1 -0
- package/dist/draft-KIBMVKSR.js +100 -0
- package/dist/draft-KIBMVKSR.js.map +1 -0
- package/dist/draft-KOLU5BRR.js +217 -0
- package/dist/draft-KOLU5BRR.js.map +1 -0
- package/dist/draft-MNFJ4G3C.js +281 -0
- package/dist/draft-MNFJ4G3C.js.map +1 -0
- package/dist/draft-U6CT6LCC.js +107 -0
- package/dist/draft-U6CT6LCC.js.map +1 -0
- package/dist/draft-YDY2Q2K6.js +233 -0
- package/dist/draft-YDY2Q2K6.js.map +1 -0
- package/dist/draft-ZVVUAMMQ.js +306 -0
- package/dist/draft-ZVVUAMMQ.js.map +1 -0
- package/dist/engine/index.d.ts +10 -0
- package/dist/engine/index.js +16 -17
- package/dist/env-KIP2J2UB.js +43 -0
- package/dist/experiment-LKK77YAN.js +1377 -0
- package/dist/experiment-LKK77YAN.js.map +1 -0
- package/dist/export-JQRMBJ7D.js +168 -0
- package/dist/export-JQRMBJ7D.js.map +1 -0
- package/dist/extract-7QKLME7Z.js +113 -0
- package/dist/extract-7QKLME7Z.js.map +1 -0
- package/dist/facets-UXN4MYPO.js +114 -0
- package/dist/facets-UXN4MYPO.js.map +1 -0
- package/dist/favorites-NSGF4OV5.js +178 -0
- package/dist/favorites-NSGF4OV5.js.map +1 -0
- package/dist/feed-RV4KPPXM.js +157 -0
- package/dist/feed-RV4KPPXM.js.map +1 -0
- package/dist/feedback-3FQYLADC.js +66 -0
- package/dist/feedback-3FQYLADC.js.map +1 -0
- package/dist/feedback-record-DTRZC73R.js +176 -0
- package/dist/feedback-record-DTRZC73R.js.map +1 -0
- package/dist/fetch-UTTJAOLC.js +171 -0
- package/dist/fetch-UTTJAOLC.js.map +1 -0
- package/dist/fetch-XF76JABV.js +139 -0
- package/dist/fetch-XF76JABV.js.map +1 -0
- package/dist/find-OTDIX6V4.js +134 -0
- package/dist/find-OTDIX6V4.js.map +1 -0
- package/dist/fit-KXHYKIA4.js +43 -0
- package/dist/flows-PB4K66NJ.js +244 -0
- package/dist/flows-PB4K66NJ.js.map +1 -0
- package/dist/follow-DUIEGDVK.js +82 -0
- package/dist/follow-DUIEGDVK.js.map +1 -0
- package/dist/follow-competitors-IT5ZVJPE.js +131 -0
- package/dist/follow-competitors-IT5ZVJPE.js.map +1 -0
- package/dist/following-RKC2FLHI.js +109 -0
- package/dist/following-RKC2FLHI.js.map +1 -0
- package/dist/fonts-NTOQS2KU.js +34 -0
- package/dist/forecast-RWDIDDWP.js +104 -0
- package/dist/forecast-RWDIDDWP.js.map +1 -0
- package/dist/funding-NYO65IMT.js +85 -0
- package/dist/funding-NYO65IMT.js.map +1 -0
- package/dist/funnel-XCKPRYTV.js +837 -0
- package/dist/funnel-XCKPRYTV.js.map +1 -0
- package/dist/ga4-UDQ2HA2J.js +55 -0
- package/dist/generate-DMQUS665.js +262 -0
- package/dist/generate-DMQUS665.js.map +1 -0
- package/dist/get-3L6W3E3T.js +59 -0
- package/dist/get-3L6W3E3T.js.map +1 -0
- package/dist/get-67IG7SZI.js +78 -0
- package/dist/get-67IG7SZI.js.map +1 -0
- package/dist/get-6WEYKOY6.js +63 -0
- package/dist/get-6WEYKOY6.js.map +1 -0
- package/dist/get-P743RPSI.js +63 -0
- package/dist/get-P743RPSI.js.map +1 -0
- package/dist/get-WO22OCMZ.js +54 -0
- package/dist/get-WO22OCMZ.js.map +1 -0
- package/dist/get-XN5ZGDIK.js +61 -0
- package/dist/get-XN5ZGDIK.js.map +1 -0
- package/dist/get-YIHTAMRT.js +92 -0
- package/dist/get-YIHTAMRT.js.map +1 -0
- package/dist/gif-53ULFVLR.js +94 -0
- package/dist/gif-53ULFVLR.js.map +1 -0
- package/dist/google-KIBLORXX.js +1872 -0
- package/dist/google-KIBLORXX.js.map +1 -0
- package/dist/google-KTO3PLEU.js +136 -0
- package/dist/google-KTO3PLEU.js.map +1 -0
- package/dist/group-EFZ3AJIE.js +43 -0
- package/dist/group-EFZ3AJIE.js.map +1 -0
- package/dist/group-GKWCCX66.js +43 -0
- package/dist/group-GKWCCX66.js.map +1 -0
- package/dist/gsc-P3QYGDV2.js +30 -0
- package/dist/history-PBFRKLU6.js +133 -0
- package/dist/history-PBFRKLU6.js.map +1 -0
- package/dist/history-Q3QCT64S.js +67 -0
- package/dist/history-Q3QCT64S.js.map +1 -0
- package/dist/hubspot-PMOZST7W.js +779 -0
- package/dist/hubspot-PMOZST7W.js.map +1 -0
- package/dist/icon-I43F77FV.js +137 -0
- package/dist/icon-I43F77FV.js.map +1 -0
- package/dist/ideas-PU7IAX6F.js +32 -0
- package/dist/images-QI2HTX6B.js +90 -0
- package/dist/improve-BCCU5AS6.js +86 -0
- package/dist/improve-BCCU5AS6.js.map +1 -0
- package/dist/ingest-BYJNFOOT.js +23 -0
- package/dist/ingest-ZQM47NVZ.js +107 -0
- package/dist/ingest-ZQM47NVZ.js.map +1 -0
- package/dist/insights-LNAXV2CG.js +122 -0
- package/dist/insights-LNAXV2CG.js.map +1 -0
- package/dist/insights-NZWSJKU4.js +423 -0
- package/dist/insights-NZWSJKU4.js.map +1 -0
- package/dist/inspect-CQH55Q6G.js +189 -0
- package/dist/inspect-CQH55Q6G.js.map +1 -0
- package/dist/inspiration-I4MMKAWA.js +53 -0
- package/dist/intent-ICKFJRT2.js +95 -0
- package/dist/intent-ICKFJRT2.js.map +1 -0
- package/dist/job-L7RJZMSG.js +202 -0
- package/dist/job-L7RJZMSG.js.map +1 -0
- package/dist/job-create-JUDAN52O.js +109 -0
- package/dist/job-create-JUDAN52O.js.map +1 -0
- package/dist/job-status-U43WE3RJ.js +74 -0
- package/dist/job-status-U43WE3RJ.js.map +1 -0
- package/dist/keep-55CPC7DG.js +78 -0
- package/dist/keep-55CPC7DG.js.map +1 -0
- package/dist/keyword-gap-NGPH32FN.js +130 -0
- package/dist/keyword-gap-NGPH32FN.js.map +1 -0
- package/dist/keyword-metrics-E3NJUSEQ.js +197 -0
- package/dist/keyword-metrics-E3NJUSEQ.js.map +1 -0
- package/dist/keywords-for-site-RH47P4GJ.js +124 -0
- package/dist/keywords-for-site-RH47P4GJ.js.map +1 -0
- package/dist/landing-4PA7GCPM.js +28 -0
- package/dist/landing-4PA7GCPM.js.map +1 -0
- package/dist/languages-JDYL2N5F.js +40 -0
- package/dist/languages-JDYL2N5F.js.map +1 -0
- package/dist/languages-JMVNOHMG.js +55 -0
- package/dist/languages-JMVNOHMG.js.map +1 -0
- package/dist/layerize-RPD6SNP6.js +190 -0
- package/dist/layerize-RPD6SNP6.js.map +1 -0
- package/dist/leads-7EVHMNUF.js +293 -0
- package/dist/leads-7EVHMNUF.js.map +1 -0
- package/dist/leads-I7BO5V7P.js +90 -0
- package/dist/leads-I7BO5V7P.js.map +1 -0
- package/dist/learn-HZU3QWNN.js +204 -0
- package/dist/library-ARKRLCNJ.js +109 -0
- package/dist/library-ARKRLCNJ.js.map +1 -0
- package/dist/lighthouse-NQBUCHTW.js +75 -0
- package/dist/lighthouse-NQBUCHTW.js.map +1 -0
- package/dist/line-item-writes-JSR53MID.js +208 -0
- package/dist/line-item-writes-JSR53MID.js.map +1 -0
- package/dist/line-items-2WFLKOOR.js +103 -0
- package/dist/line-items-2WFLKOOR.js.map +1 -0
- package/dist/link-AYXOJQDV.js +64 -0
- package/dist/link-AYXOJQDV.js.map +1 -0
- package/dist/linkedin-M2PVZYLV.js +1008 -0
- package/dist/linkedin-M2PVZYLV.js.map +1 -0
- package/dist/list-3OKEMUFD.js +151 -0
- package/dist/list-3OKEMUFD.js.map +1 -0
- package/dist/list-4MQC23JH.js +63 -0
- package/dist/list-4MQC23JH.js.map +1 -0
- package/dist/list-7MVBXOJT.js +51 -0
- package/dist/list-7MVBXOJT.js.map +1 -0
- package/dist/list-A5UCIR2J.js +65 -0
- package/dist/list-A5UCIR2J.js.map +1 -0
- package/dist/list-AL7N6X2P.js +50 -0
- package/dist/list-AL7N6X2P.js.map +1 -0
- package/dist/list-LI4OGQFW.js +57 -0
- package/dist/list-LI4OGQFW.js.map +1 -0
- package/dist/list-P7NAFN6J.js +76 -0
- package/dist/list-P7NAFN6J.js.map +1 -0
- package/dist/list-QGLIL7J6.js +303 -0
- package/dist/list-QGLIL7J6.js.map +1 -0
- package/dist/locations-2NKBJKBT.js +67 -0
- package/dist/locations-2NKBJKBT.js.map +1 -0
- package/dist/locations-S4U6IJIS.js +40 -0
- package/dist/locations-S4U6IJIS.js.map +1 -0
- package/dist/log-QHR2JNKW.js +92 -0
- package/dist/log-QHR2JNKW.js.map +1 -0
- package/dist/logo-2IP663QO.js +18 -0
- package/dist/lookup-XK45W2SH.js +22 -0
- package/dist/make-ANPR2D2L.js +516 -0
- package/dist/make-ANPR2D2L.js.map +1 -0
- package/dist/map-3BVFAP33.js +404 -0
- package/dist/map-3BVFAP33.js.map +1 -0
- package/dist/mcp-LH5KR6RO.js +476 -0
- package/dist/mcp-LH5KR6RO.js.map +1 -0
- package/dist/media-6CQYG4UY.js +89 -0
- package/dist/media-6CQYG4UY.js.map +1 -0
- package/dist/media-M7E6V2XU.js +15 -0
- package/dist/media-sources-3D246I3O.js +32 -0
- package/dist/members-4DUQHLZH.js +44 -0
- package/dist/members-4DUQHLZH.js.map +1 -0
- package/dist/meta-EZ4SY25M.js +69 -0
- package/dist/metrics-AY4RP54F.js +152 -0
- package/dist/metrics-AY4RP54F.js.map +1 -0
- package/dist/models-5NTC7A5G.js +155 -0
- package/dist/models-5NTC7A5G.js.map +1 -0
- package/dist/normalize-CD4PQRYY.js +138 -0
- package/dist/normalize-CD4PQRYY.js.map +1 -0
- package/dist/normalize-ICQF2AST.js +806 -0
- package/dist/normalize-ICQF2AST.js.map +1 -0
- package/dist/options-6TE5E34Z.js +121 -0
- package/dist/options-6TE5E34Z.js.map +1 -0
- package/dist/output-RAH3TSIL.js +24 -0
- package/dist/page-GS3WLT2C.js +105 -0
- package/dist/page-GS3WLT2C.js.map +1 -0
- package/dist/pages-FXYQLHSJ.js +66 -0
- package/dist/pages-FXYQLHSJ.js.map +1 -0
- package/dist/performance-7LQQCEAW.js +24 -0
- package/dist/pinterest-AUH7WBA7.js +96 -0
- package/dist/pinterest-AUH7WBA7.js.map +1 -0
- package/dist/pixels-TZPF746S.js +60 -0
- package/dist/pixels-TZPF746S.js.map +1 -0
- package/dist/pixels-ZFF4BGUH.js +108 -0
- package/dist/pixels-ZFF4BGUH.js.map +1 -0
- package/dist/preview-AD4GKYIA.js +169 -0
- package/dist/preview-AD4GKYIA.js.map +1 -0
- package/dist/promoted-tweet-writes-F76YIMB6.js +180 -0
- package/dist/promoted-tweet-writes-F76YIMB6.js.map +1 -0
- package/dist/promoted-tweets-EJL37P7K.js +119 -0
- package/dist/promoted-tweets-EJL37P7K.js.map +1 -0
- package/dist/properties-L2XIYQDS.js +101 -0
- package/dist/properties-L2XIYQDS.js.map +1 -0
- package/dist/publish-H5S2IKZP.js +322 -0
- package/dist/publish-H5S2IKZP.js.map +1 -0
- package/dist/query-CPZZNMDY.js +1341 -0
- package/dist/query-CPZZNMDY.js.map +1 -0
- package/dist/query-SGGBCHTF.js +236 -0
- package/dist/query-SGGBCHTF.js.map +1 -0
- package/dist/query-VTGVZQIO.js +247 -0
- package/dist/query-VTGVZQIO.js.map +1 -0
- package/dist/read-LSF7DYTG.js +140 -0
- package/dist/read-LSF7DYTG.js.map +1 -0
- package/dist/reddit-INGPFGP4.js +26 -0
- package/dist/refresh-MKSKISPX.js +94 -0
- package/dist/refresh-MKSKISPX.js.map +1 -0
- package/dist/release-J5LIAIZT.js +60 -0
- package/dist/release-J5LIAIZT.js.map +1 -0
- package/dist/relevant-pages-MTMFMBPD.js +99 -0
- package/dist/relevant-pages-MTMFMBPD.js.map +1 -0
- package/dist/remove-6LGGKMLJ.js +48 -0
- package/dist/remove-6LGGKMLJ.js.map +1 -0
- package/dist/remove-LYEK7VFV.js +50 -0
- package/dist/remove-LYEK7VFV.js.map +1 -0
- package/dist/reopen-FR4UBOG7.js +63 -0
- package/dist/reopen-FR4UBOG7.js.map +1 -0
- package/dist/rerun-3FEOYNG2.js +86 -0
- package/dist/rerun-3FEOYNG2.js.map +1 -0
- package/dist/research-PA53M335.js +59 -0
- package/dist/research-RPJSOWPT.js +226 -0
- package/dist/research-RPJSOWPT.js.map +1 -0
- package/dist/reset-H3ES4WV5.js +54 -0
- package/dist/reset-H3ES4WV5.js.map +1 -0
- package/dist/reset-RCYRE5WO.js +54 -0
- package/dist/reset-RCYRE5WO.js.map +1 -0
- package/dist/resolve-QIDQJCE6.js +121 -0
- package/dist/resolve-QIDQJCE6.js.map +1 -0
- package/dist/retry-PLLCFOJW.js +60 -0
- package/dist/retry-PLLCFOJW.js.map +1 -0
- package/dist/retry-WLVMR7XP.js +62 -0
- package/dist/retry-WLVMR7XP.js.map +1 -0
- package/dist/retry-failed-6HXPUVXJ.js +45 -0
- package/dist/retry-failed-6HXPUVXJ.js.map +1 -0
- package/dist/run-2IM2QOCI.js +61 -0
- package/dist/run-4D7ZCLMF.js +65 -0
- package/dist/run-4D7ZCLMF.js.map +1 -0
- package/dist/scaffold-ad-YYUVL4IP.js +1550 -0
- package/dist/scaffold-ad-YYUVL4IP.js.map +1 -0
- package/dist/scaffold-static-ad-SUEYXLOR.js +948 -0
- package/dist/scaffold-static-ad-SUEYXLOR.js.map +1 -0
- package/dist/scaffold-video-IBH2YJZD.js +874 -0
- package/dist/scaffold-video-IBH2YJZD.js.map +1 -0
- package/dist/schedule-O2K6M43V.js +66 -0
- package/dist/schedule-O2K6M43V.js.map +1 -0
- package/dist/schedule-RXUUCNNI.js +61 -0
- package/dist/schedule-RXUUCNNI.js.map +1 -0
- package/dist/scheduled-agents-2NCGSD76.js +49 -0
- package/dist/schema-6GR77VJG.js +63 -0
- package/dist/schema-6GR77VJG.js.map +1 -0
- package/dist/schema-SFODURN7.js +129 -0
- package/dist/schema-SFODURN7.js.map +1 -0
- package/dist/scrape-ETAMW43A.js +2241 -0
- package/dist/scrape-ETAMW43A.js.map +1 -0
- package/dist/screenshot-YCQF25ZB.js +102 -0
- package/dist/screenshot-YCQF25ZB.js.map +1 -0
- package/dist/search-742XSULP.js +224 -0
- package/dist/search-742XSULP.js.map +1 -0
- package/dist/search-7QVZOWSI.js +174 -0
- package/dist/search-7QVZOWSI.js.map +1 -0
- package/dist/search-MEEM4D3W.js +92 -0
- package/dist/search-MEEM4D3W.js.map +1 -0
- package/dist/search-OQNGSMUH.js +91 -0
- package/dist/search-OQNGSMUH.js.map +1 -0
- package/dist/search-XUIVHGAY.js +26 -0
- package/dist/seeds-N6FF5S4T.js +101 -0
- package/dist/seeds-N6FF5S4T.js.map +1 -0
- package/dist/select-ZWDEVAH2.js +95 -0
- package/dist/sends-WGJVQUMF.js +309 -0
- package/dist/sends-WGJVQUMF.js.map +1 -0
- package/dist/sequences-OIPVR7JL.js +146 -0
- package/dist/sequences-OIPVR7JL.js.map +1 -0
- package/dist/set-prompt-SBEOQGCF.js +187 -0
- package/dist/set-prompt-SBEOQGCF.js.map +1 -0
- package/dist/setup-links-XW4A6L2I.js +141 -0
- package/dist/setup-links-XW4A6L2I.js.map +1 -0
- package/dist/shared-HJDFNID4.js +31 -0
- package/dist/site-6UTQSYIK.js +177 -0
- package/dist/site-6UTQSYIK.js.map +1 -0
- package/dist/sitemaps-POPZJTAX.js +87 -0
- package/dist/sitemaps-POPZJTAX.js.map +1 -0
- package/dist/sites-262H6LM4.js +101 -0
- package/dist/sites-262H6LM4.js.map +1 -0
- package/dist/skills-6TQZLIMP.js +47 -0
- package/dist/skills-6TQZLIMP.js.map +1 -0
- package/dist/sources-QQNWQLUM.js +421 -0
- package/dist/sources-QQNWQLUM.js.map +1 -0
- package/dist/sources-UGMZFZ2E.js +30 -0
- package/dist/stale-QRO3M5R2.js +64 -0
- package/dist/stale-QRO3M5R2.js.map +1 -0
- package/dist/stats-NNXZMPZR.js +34 -0
- package/dist/status-NXGKJGH7.js +62 -0
- package/dist/status-NXGKJGH7.js.map +1 -0
- package/dist/sticker-4KMBSMP5.js +94 -0
- package/dist/sticker-4KMBSMP5.js.map +1 -0
- package/dist/stock-2YCDN3N6.js +179 -0
- package/dist/stock-2YCDN3N6.js.map +1 -0
- package/dist/studio-HUEBE6DS.js +49 -0
- package/dist/sync-CF7FVUQJ.js +54 -0
- package/dist/sync-CF7FVUQJ.js.map +1 -0
- package/dist/sync-RXS6BPLM.js +54 -0
- package/dist/sync-RXS6BPLM.js.map +1 -0
- package/dist/sync-ZSNUBYPM.js +265 -0
- package/dist/sync-ZSNUBYPM.js.map +1 -0
- package/dist/sync-definition-YBDM7D4M.js +54 -0
- package/dist/tag-manager-HREEYGVM.js +43 -0
- package/dist/tags-C65JB762.js +224 -0
- package/dist/tags-C65JB762.js.map +1 -0
- package/dist/tags-CMBKEXIZ.js +20 -0
- package/dist/tags-CMBKEXIZ.js.map +1 -0
- package/dist/tags-GFFQLLG2.js +20 -0
- package/dist/tags-GFFQLLG2.js.map +1 -0
- package/dist/tags-IJN2SPSM.js +20 -0
- package/dist/tags-IJN2SPSM.js.map +1 -0
- package/dist/tags-R3K35KTL.js +26 -0
- package/dist/targeting-constants-XJ2VOW7K.js +118 -0
- package/dist/targeting-constants-XJ2VOW7K.js.map +1 -0
- package/dist/targeting-criteria-IHBPLHSX.js +113 -0
- package/dist/targeting-criteria-IHBPLHSX.js.map +1 -0
- package/dist/targets-JH37NVJF.js +102 -0
- package/dist/targets-JH37NVJF.js.map +1 -0
- package/dist/templates-HXSHQ23T.js +178 -0
- package/dist/templates-HXSHQ23T.js.map +1 -0
- package/dist/testimonials-5QGCPZ6K.js +32 -0
- package/dist/top-companies-FJEFKVI7.js +108 -0
- package/dist/top-companies-FJEFKVI7.js.map +1 -0
- package/dist/translate-H7O5K3RC.js +457 -0
- package/dist/translate-H7O5K3RC.js.map +1 -0
- package/dist/triggers-SEOAAJSS.js +141 -0
- package/dist/triggers-SEOAAJSS.js.map +1 -0
- package/dist/tweets-ATP3FQAC.js +123 -0
- package/dist/tweets-ATP3FQAC.js.map +1 -0
- package/dist/unfollow-CBVPGPF7.js +46 -0
- package/dist/unfollow-CBVPGPF7.js.map +1 -0
- package/dist/unlink-UZDVSHBO.js +67 -0
- package/dist/unlink-UZDVSHBO.js.map +1 -0
- package/dist/unstage-4ZEULXEQ.js +95 -0
- package/dist/unstage-4ZEULXEQ.js.map +1 -0
- package/dist/unstage-CE5RRGM5.js +84 -0
- package/dist/unstage-CE5RRGM5.js.map +1 -0
- package/dist/update-DGZKEP6T.js +63 -0
- package/dist/update-DGZKEP6T.js.map +1 -0
- package/dist/update-JOS4ITAV.js +142 -0
- package/dist/update-JOS4ITAV.js.map +1 -0
- package/dist/update-JZ4I6WW7.js +98 -0
- package/dist/update-JZ4I6WW7.js.map +1 -0
- package/dist/update-ZXOG2V34.js +155 -0
- package/dist/update-ZXOG2V34.js.map +1 -0
- package/dist/upload-L5SYZB3X.js +150 -0
- package/dist/upload-L5SYZB3X.js.map +1 -0
- package/dist/upload-SSOPA7ZT.js +126 -0
- package/dist/upload-SSOPA7ZT.js.map +1 -0
- package/dist/upscale-YWRLFU22.js +109 -0
- package/dist/upscale-YWRLFU22.js.map +1 -0
- package/dist/url-options-QEWKRKZ3.js +127 -0
- package/dist/url-options-QEWKRKZ3.js.map +1 -0
- package/dist/url-params-OR5N5EWT.js +98 -0
- package/dist/url-params-OR5N5EWT.js.map +1 -0
- package/dist/use-UT2DIZOG.js +95 -0
- package/dist/use-UT2DIZOG.js.map +1 -0
- package/dist/validate-2PLHIP6I.js +90 -0
- package/dist/validate-2PLHIP6I.js.map +1 -0
- package/dist/variant-FLZJYGYL.js +338 -0
- package/dist/variant-FLZJYGYL.js.map +1 -0
- package/dist/videos-GIYDCCKR.js +39 -0
- package/dist/view-NPAG66QK.js +121 -0
- package/dist/view-NPAG66QK.js.map +1 -0
- package/dist/viewer-check-VN2JK2LW.js +70 -0
- package/dist/web-WUGLSULO.js +135 -0
- package/dist/web-WUGLSULO.js.map +1 -0
- package/dist/winners-I5BMATJZ.js +79 -0
- package/dist/winners-I5BMATJZ.js.map +1 -0
- package/dist/winning-ads-7QWEIMRU.js +62 -0
- package/dist/write-commands-ERKVRHTC.js +206 -0
- package/dist/write-commands-ERKVRHTC.js.map +1 -0
- package/dist/write-commands-SVJ43D7G.js +1015 -0
- package/dist/write-commands-SVJ43D7G.js.map +1 -0
- package/dist/write-commands-TAYGTJEZ.js +737 -0
- package/dist/write-commands-TAYGTJEZ.js.map +1 -0
- package/dist/write-commands-WTRSOSO3.js +713 -0
- package/dist/write-commands-WTRSOSO3.js.map +1 -0
- package/dist/x-OEAKQBB7.js +47 -0
- package/package.json +1 -1
- package/dist/account-5GT2BEST.js +0 -80
- package/dist/account-5GT2BEST.js.map +0 -1
- package/dist/account-S2RDGMMM.js +0 -81
- package/dist/account-S2RDGMMM.js.map +0 -1
- package/dist/account-YLZAL6W7.js +0 -50
- package/dist/account-YLZAL6W7.js.map +0 -1
- package/dist/account-writes-VBY7FJ7C.js +0 -67
- package/dist/account-writes-VBY7FJ7C.js.map +0 -1
- package/dist/accounts-4IIHAQGS.js +0 -116
- package/dist/accounts-4IIHAQGS.js.map +0 -1
- package/dist/accounts-E7TRNPFA.js +0 -115
- package/dist/accounts-E7TRNPFA.js.map +0 -1
- package/dist/accounts-GFJOGX7J.js +0 -613
- package/dist/accounts-GFJOGX7J.js.map +0 -1
- package/dist/accounts-INB4Z4LZ.js +0 -76
- package/dist/accounts-INB4Z4LZ.js.map +0 -1
- package/dist/accounts-NLL4QWKY.js +0 -78
- package/dist/accounts-NLL4QWKY.js.map +0 -1
- package/dist/actions-7XF5L4U3.js +0 -55
- package/dist/active-entities-IGQG5EZO.js +0 -104
- package/dist/active-entities-IGQG5EZO.js.map +0 -1
- package/dist/activities-MH4C4IVV.js +0 -75
- package/dist/activities-MH4C4IVV.js.map +0 -1
- package/dist/ad-group-writes-B64OBHQ4.js +0 -171
- package/dist/ad-group-writes-B64OBHQ4.js.map +0 -1
- package/dist/ad-groups-APCFB6SI.js +0 -69
- package/dist/ad-groups-APCFB6SI.js.map +0 -1
- package/dist/ad-writes-A7P772KD.js +0 -175
- package/dist/ad-writes-A7P772KD.js.map +0 -1
- package/dist/add-33WQDKGF.js +0 -106
- package/dist/add-33WQDKGF.js.map +0 -1
- package/dist/add-65OIGMD7.js +0 -99
- package/dist/add-65OIGMD7.js.map +0 -1
- package/dist/add-EW276CKL.js +0 -282
- package/dist/add-EW276CKL.js.map +0 -1
- package/dist/add-EXKVB5KR.js +0 -107
- package/dist/add-EXKVB5KR.js.map +0 -1
- package/dist/ads-A2HP6UVG.js +0 -114
- package/dist/ads-A2HP6UVG.js.map +0 -1
- package/dist/ads-H6NPLMNX.js +0 -78
- package/dist/ads-H6NPLMNX.js.map +0 -1
- package/dist/ads-IRE5RZCS.js +0 -40
- package/dist/adsets-UZJTGQQM.js +0 -153
- package/dist/adsets-UZJTGQQM.js.map +0 -1
- package/dist/advertisers-CFS2JAYJ.js +0 -113
- package/dist/advertisers-CFS2JAYJ.js.map +0 -1
- package/dist/advertisers-WQBPBK4D.js +0 -117
- package/dist/advertisers-WQBPBK4D.js.map +0 -1
- package/dist/analytics-L46XME7Y.js +0 -434
- package/dist/analytics-L46XME7Y.js.map +0 -1
- package/dist/analytics-UT7FQ6XA.js +0 -1959
- package/dist/analytics-UT7FQ6XA.js.map +0 -1
- package/dist/animate-S6ZU3723.js +0 -482
- package/dist/animate-S6ZU3723.js.map +0 -1
- package/dist/assign-XHHVXXOL.js +0 -79
- package/dist/assign-XHHVXXOL.js.map +0 -1
- package/dist/audience-size-6FR7WFVU.js +0 -95
- package/dist/audience-size-6FR7WFVU.js.map +0 -1
- package/dist/audiences-BN2LT7E6.js +0 -86
- package/dist/audiences-BN2LT7E6.js.map +0 -1
- package/dist/audiences-HQS6V7EV.js +0 -269
- package/dist/audiences-HQS6V7EV.js.map +0 -1
- package/dist/audiences-JVEXHN67.js +0 -79
- package/dist/audiences-JVEXHN67.js.map +0 -1
- package/dist/audit-7UDFEGZV.js +0 -152
- package/dist/audit-7UDFEGZV.js.map +0 -1
- package/dist/audit-YTRTNTAK.js +0 -89
- package/dist/audit-YTRTNTAK.js.map +0 -1
- package/dist/autocomplete-LAZ6FFG6.js +0 -108
- package/dist/autocomplete-LAZ6FFG6.js.map +0 -1
- package/dist/avatars-G54K55J3.js +0 -38
- package/dist/bid-pricing-EQKORHAA.js +0 -100
- package/dist/bid-pricing-EQKORHAA.js.map +0 -1
- package/dist/brand-ODTHWWFL.js +0 -22
- package/dist/brief-EA4DWOJW.js +0 -479
- package/dist/brief-EA4DWOJW.js.map +0 -1
- package/dist/businesses-QHNI7MSK.js +0 -54
- package/dist/businesses-QHNI7MSK.js.map +0 -1
- package/dist/campaign-groups-EJEGKHQD.js +0 -96
- package/dist/campaign-groups-EJEGKHQD.js.map +0 -1
- package/dist/campaign-writes-DZE43ZOC.js +0 -166
- package/dist/campaign-writes-DZE43ZOC.js.map +0 -1
- package/dist/campaign-writes-OX62FCEH.js +0 -171
- package/dist/campaign-writes-OX62FCEH.js.map +0 -1
- package/dist/campaigns-APRWHCGF.js +0 -111
- package/dist/campaigns-APRWHCGF.js.map +0 -1
- package/dist/campaigns-D2LYKUO2.js +0 -108
- package/dist/campaigns-D2LYKUO2.js.map +0 -1
- package/dist/campaigns-E3H4POUU.js +0 -77
- package/dist/campaigns-E3H4POUU.js.map +0 -1
- package/dist/campaigns-OPLRDMJW.js +0 -110
- package/dist/campaigns-OPLRDMJW.js.map +0 -1
- package/dist/canvas-M5HAG7VA.js +0 -46
- package/dist/capabilities-4Q4CMVIE.js +0 -146
- package/dist/capabilities-4Q4CMVIE.js.map +0 -1
- package/dist/cards-L37M7Q3L.js +0 -86
- package/dist/cards-L37M7Q3L.js.map +0 -1
- package/dist/catalog-HOWAUW2V.js +0 -67
- package/dist/catalog-HOWAUW2V.js.map +0 -1
- package/dist/catalogs-XBIQ4PNK.js +0 -129
- package/dist/catalogs-XBIQ4PNK.js.map +0 -1
- package/dist/changes-HCOPS4FF.js +0 -136
- package/dist/changes-HCOPS4FF.js.map +0 -1
- package/dist/chatgpt-PLKNBNVL.js +0 -47
- package/dist/chats-HELZHJO4.js +0 -264
- package/dist/chats-HELZHJO4.js.map +0 -1
- package/dist/chunk-3KQ5R3H7.js +0 -45
- package/dist/chunk-3KQ5R3H7.js.map +0 -1
- package/dist/chunk-4MU3U3SO.js +0 -103
- package/dist/chunk-4VKV3DNC.js +0 -23992
- package/dist/chunk-4VKV3DNC.js.map +0 -1
- package/dist/chunk-5HH4RGC4.js +0 -136
- package/dist/chunk-5HH4RGC4.js.map +0 -1
- package/dist/chunk-5NQIFCNX.js +0 -141
- package/dist/chunk-6CCDQO2F.js +0 -225
- package/dist/chunk-6CCDQO2F.js.map +0 -1
- package/dist/chunk-6FBZ5E6L.js +0 -96
- package/dist/chunk-6YWRJMGR.js +0 -309
- package/dist/chunk-73MCYA5Z.js +0 -310
- package/dist/chunk-7DQAVVUA.js +0 -130
- package/dist/chunk-7DQAVVUA.js.map +0 -1
- package/dist/chunk-A3PEJ3V3.js +0 -95
- package/dist/chunk-A57AHUNA.js +0 -28
- package/dist/chunk-ABELDLY3.js +0 -594
- package/dist/chunk-ABELDLY3.js.map +0 -1
- package/dist/chunk-AWICKT2B.js +0 -25
- package/dist/chunk-AYC2WM4P.js +0 -106
- package/dist/chunk-AYC2WM4P.js.map +0 -1
- package/dist/chunk-BDD2ILIT.js +0 -56
- package/dist/chunk-BSFTG66P.js +0 -2743
- package/dist/chunk-BSFTG66P.js.map +0 -1
- package/dist/chunk-BSUN6JMU.js +0 -215
- package/dist/chunk-CBEL3P22.js +0 -57
- package/dist/chunk-CSADPKPC.js +0 -161
- package/dist/chunk-CSADPKPC.js.map +0 -1
- package/dist/chunk-DPEQVHTX.js +0 -26
- package/dist/chunk-DQLBKU7G.js +0 -469
- package/dist/chunk-DQLBKU7G.js.map +0 -1
- package/dist/chunk-ECXNE6RJ.js +0 -622
- package/dist/chunk-EDFVATFW.js +0 -211
- package/dist/chunk-EDFVATFW.js.map +0 -1
- package/dist/chunk-EPK2GYLV.js +0 -214
- package/dist/chunk-EYO62URT.js +0 -172
- package/dist/chunk-F3WFP75M.js +0 -94
- package/dist/chunk-F6NJAHAZ.js +0 -19
- package/dist/chunk-F7HBCFUA.js +0 -188
- package/dist/chunk-FCTWXNRC.js +0 -365
- package/dist/chunk-FCTWXNRC.js.map +0 -1
- package/dist/chunk-FFZBW4CC.js +0 -297
- package/dist/chunk-FR345TDN.js +0 -577
- package/dist/chunk-FR345TDN.js.map +0 -1
- package/dist/chunk-FRVROFI6.js +0 -98
- package/dist/chunk-G32FXVQ6.js +0 -31
- package/dist/chunk-HA5D6US2.js +0 -26
- package/dist/chunk-HWWPDUZM.js +0 -217
- package/dist/chunk-IEULFYA2.js +0 -174
- package/dist/chunk-IEULFYA2.js.map +0 -1
- package/dist/chunk-IMZIECST.js +0 -830
- package/dist/chunk-IPF4P6ZQ.js +0 -392
- package/dist/chunk-IPF4P6ZQ.js.map +0 -1
- package/dist/chunk-IRHNWYDT.js +0 -106
- package/dist/chunk-JH7NHC5W.js +0 -169
- package/dist/chunk-JIHG6K7N.js +0 -30
- package/dist/chunk-JIHG6K7N.js.map +0 -1
- package/dist/chunk-JKDITP62.js +0 -1380
- package/dist/chunk-JKDITP62.js.map +0 -1
- package/dist/chunk-JMXBUIVI.js +0 -84
- package/dist/chunk-KHCN2QXV.js +0 -346
- package/dist/chunk-KHCN2QXV.js.map +0 -1
- package/dist/chunk-KY4MPR6R.js +0 -3155
- package/dist/chunk-KY4MPR6R.js.map +0 -1
- package/dist/chunk-L4DOL7L7.js +0 -125
- package/dist/chunk-L6PDFIND.js +0 -496
- package/dist/chunk-L6PDFIND.js.map +0 -1
- package/dist/chunk-L7HPNEKW.js +0 -304
- package/dist/chunk-L7HPNEKW.js.map +0 -1
- package/dist/chunk-LB3VYIS2.js +0 -141
- package/dist/chunk-LB3VYIS2.js.map +0 -1
- package/dist/chunk-LDVMMLRA.js +0 -106
- package/dist/chunk-LQ4HBQ2B.js +0 -433
- package/dist/chunk-LXUEWTHJ.js +0 -788
- package/dist/chunk-LXUEWTHJ.js.map +0 -1
- package/dist/chunk-LYZVLKRA.js +0 -175
- package/dist/chunk-MBKCUSMR.js +0 -6078
- package/dist/chunk-MBKCUSMR.js.map +0 -1
- package/dist/chunk-MPI3SWIT.js +0 -536
- package/dist/chunk-MPI3SWIT.js.map +0 -1
- package/dist/chunk-MXPFUDFR.js +0 -1024
- package/dist/chunk-MXPFUDFR.js.map +0 -1
- package/dist/chunk-N5SQSMMR.js +0 -229
- package/dist/chunk-N5SQSMMR.js.map +0 -1
- package/dist/chunk-NEONVKMJ.js +0 -455
- package/dist/chunk-NEONVKMJ.js.map +0 -1
- package/dist/chunk-NFSV3CDO.js +0 -6198
- package/dist/chunk-NFSV3CDO.js.map +0 -1
- package/dist/chunk-NGT6MARJ.js +0 -274
- package/dist/chunk-NGYKF4T6.js +0 -20
- package/dist/chunk-NMMKTPGI.js +0 -136
- package/dist/chunk-O4AXPEOE.js +0 -923
- package/dist/chunk-O4AXPEOE.js.map +0 -1
- package/dist/chunk-OPEMWO6C.js +0 -5096
- package/dist/chunk-OPEMWO6C.js.map +0 -1
- package/dist/chunk-OZLBLXTK.js +0 -74
- package/dist/chunk-PB4LQHL2.js +0 -4341
- package/dist/chunk-PB4LQHL2.js.map +0 -1
- package/dist/chunk-PDJZMQ7F.js +0 -316
- package/dist/chunk-PDJZMQ7F.js.map +0 -1
- package/dist/chunk-PNHDM76R.js +0 -74
- package/dist/chunk-PNHDM76R.js.map +0 -1
- package/dist/chunk-Q7UF4ERB.js +0 -74
- package/dist/chunk-QRXTDXMX.js +0 -129
- package/dist/chunk-QRXTDXMX.js.map +0 -1
- package/dist/chunk-QTERC4PG.js +0 -1700
- package/dist/chunk-QTERC4PG.js.map +0 -1
- package/dist/chunk-QYOPQRLI.js +0 -296
- package/dist/chunk-R34LJSPM.js +0 -42
- package/dist/chunk-R4ODZS43.js +0 -492
- package/dist/chunk-R4ODZS43.js.map +0 -1
- package/dist/chunk-RJAQEZVD.js +0 -23
- package/dist/chunk-RPFBZHHE.js +0 -55
- package/dist/chunk-SXRSLUW7.js +0 -454
- package/dist/chunk-T5RKIWPQ.js +0 -352
- package/dist/chunk-T5RKIWPQ.js.map +0 -1
- package/dist/chunk-TCSPJQ2X.js +0 -136
- package/dist/chunk-TD44SXQX.js +0 -58
- package/dist/chunk-TQAXOBKJ.js +0 -364
- package/dist/chunk-TQAXOBKJ.js.map +0 -1
- package/dist/chunk-TTFTS2SO.js +0 -131
- package/dist/chunk-UA5EUJXV.js +0 -51
- package/dist/chunk-W7OFLOZB.js +0 -46
- package/dist/chunk-WAQYXH2U.js +0 -76
- package/dist/chunk-WWD4PITU.js +0 -333
- package/dist/chunk-WZ5YRUQU.js +0 -12
- package/dist/chunk-WZ5YRUQU.js.map +0 -1
- package/dist/chunk-XEVVAGAG.js +0 -422
- package/dist/chunk-XEVVAGAG.js.map +0 -1
- package/dist/chunk-Y4JR4RDM.js +0 -74
- package/dist/chunk-YMOVI3WT.js +0 -382
- package/dist/chunk-YS6PCTPS.js +0 -96
- package/dist/chunk-YUP46PWY.js +0 -199
- package/dist/chunk-YUP46PWY.js.map +0 -1
- package/dist/chunk-Z4NYXXTP.js +0 -42
- package/dist/chunk-Z4NYXXTP.js.map +0 -1
- package/dist/chunk-Z5AUNK6P.js +0 -1709
- package/dist/chunk-Z5AUNK6P.js.map +0 -1
- package/dist/chunk-ZAFR46HG.js +0 -67
- package/dist/chunk-ZHW3O25C.js +0 -191
- package/dist/claim-CG2IMTHK.js +0 -199
- package/dist/claim-CG2IMTHK.js.map +0 -1
- package/dist/client-XKDFFS7O.js +0 -20
- package/dist/code-JWIOO2AJ.js +0 -78
- package/dist/code-JWIOO2AJ.js.map +0 -1
- package/dist/companies-LQN4HUUH.js +0 -196
- package/dist/companies-LQN4HUUH.js.map +0 -1
- package/dist/complete-MKB27QP7.js +0 -82
- package/dist/complete-MKB27QP7.js.map +0 -1
- package/dist/config-LJOEAYFZ.js +0 -89
- package/dist/config-LJOEAYFZ.js.map +0 -1
- package/dist/connect-ATGYJNG4.js +0 -37
- package/dist/content-Y2BJSXG6.js +0 -83
- package/dist/content-Y2BJSXG6.js.map +0 -1
- package/dist/conversation-EFNQM435.js +0 -94
- package/dist/conversation-EFNQM435.js.map +0 -1
- package/dist/conversion-report-EUSTSHPV.js +0 -126
- package/dist/conversion-report-EUSTSHPV.js.map +0 -1
- package/dist/conversion-upload-command-677OT5NZ.js +0 -432
- package/dist/conversion-upload-command-677OT5NZ.js.map +0 -1
- package/dist/conversion-writes-E7M6VHGB.js +0 -121
- package/dist/conversion-writes-E7M6VHGB.js.map +0 -1
- package/dist/conversions-BXZLEXHU.js +0 -136
- package/dist/conversions-BXZLEXHU.js.map +0 -1
- package/dist/conversions-FERAOXWG.js +0 -77
- package/dist/conversions-FERAOXWG.js.map +0 -1
- package/dist/countries-TKPX2GDH.js +0 -83
- package/dist/countries-TKPX2GDH.js.map +0 -1
- package/dist/create-HGMIWFVX.js +0 -132
- package/dist/create-HGMIWFVX.js.map +0 -1
- package/dist/create-LBJV3NPD.js +0 -209
- package/dist/create-LBJV3NPD.js.map +0 -1
- package/dist/create-QTPZ7PP7.js +0 -117
- package/dist/create-QTPZ7PP7.js.map +0 -1
- package/dist/create-SBIHEG25.js +0 -60
- package/dist/create-SBIHEG25.js.map +0 -1
- package/dist/creatives-CIOOFE3T.js +0 -88
- package/dist/creatives-CIOOFE3T.js.map +0 -1
- package/dist/creatives-MIUJAK4E.js +0 -49
- package/dist/creatives-MIUJAK4E.js.map +0 -1
- package/dist/creatives-QXR7QDXM.js +0 -183
- package/dist/creatives-QXR7QDXM.js.map +0 -1
- package/dist/credentials-CMVAKAUL.js +0 -1057
- package/dist/credentials-CMVAKAUL.js.map +0 -1
- package/dist/critique-LUB35ORK.js +0 -213
- package/dist/critique-LUB35ORK.js.map +0 -1
- package/dist/critique-XXCM7YAV.js +0 -1477
- package/dist/critique-XXCM7YAV.js.map +0 -1
- package/dist/crm-EGNVKQHB.js +0 -279
- package/dist/crm-EGNVKQHB.js.map +0 -1
- package/dist/crm-I6IQ5M55.js +0 -226
- package/dist/crm-I6IQ5M55.js.map +0 -1
- package/dist/crop-ES2IDPUL.js +0 -115
- package/dist/crop-ES2IDPUL.js.map +0 -1
- package/dist/currency-VFKYXFBM.js +0 -89
- package/dist/currency-VFKYXFBM.js.map +0 -1
- package/dist/custom-conversions-WPTEXOWR.js +0 -126
- package/dist/custom-conversions-WPTEXOWR.js.map +0 -1
- package/dist/customers-ACRYXALZ.js +0 -58
- package/dist/delete-3AHBFPQJ.js +0 -68
- package/dist/delete-3AHBFPQJ.js.map +0 -1
- package/dist/delete-E7WYQN2L.js +0 -73
- package/dist/delete-E7WYQN2L.js.map +0 -1
- package/dist/delete-EJCB5MHV.js +0 -71
- package/dist/delete-EJCB5MHV.js.map +0 -1
- package/dist/delete-J677F4BG.js +0 -64
- package/dist/delete-J677F4BG.js.map +0 -1
- package/dist/delete-LVQ7R6DI.js +0 -73
- package/dist/delete-LVQ7R6DI.js.map +0 -1
- package/dist/delete-U4K6NIOE.js +0 -55
- package/dist/delete-U4K6NIOE.js.map +0 -1
- package/dist/demographics-RY6R6VWA.js +0 -139
- package/dist/demographics-RY6R6VWA.js.map +0 -1
- package/dist/describe-N36XDO4P.js +0 -99
- package/dist/describe-N36XDO4P.js.map +0 -1
- package/dist/describe-Q5OAJDYH.js +0 -99
- package/dist/describe-Q5OAJDYH.js.map +0 -1
- package/dist/dimensions-YIWQVFTO.js +0 -103
- package/dist/dimensions-YIWQVFTO.js.map +0 -1
- package/dist/discard-UO4DJNP3.js +0 -67
- package/dist/discard-UO4DJNP3.js.map +0 -1
- package/dist/discover-IASOLBUQ.js +0 -173
- package/dist/discover-IASOLBUQ.js.map +0 -1
- package/dist/domain-QBF4TBGL.js +0 -100
- package/dist/domain-QBF4TBGL.js.map +0 -1
- package/dist/download-DKFYGXEH.js +0 -301
- package/dist/download-DKFYGXEH.js.map +0 -1
- package/dist/draft-5ZZOTJZR.js +0 -282
- package/dist/draft-5ZZOTJZR.js.map +0 -1
- package/dist/draft-DKMUTG4F.js +0 -104
- package/dist/draft-DKMUTG4F.js.map +0 -1
- package/dist/draft-FMOQUVPP.js +0 -219
- package/dist/draft-FMOQUVPP.js.map +0 -1
- package/dist/draft-KFXJCKCH.js +0 -234
- package/dist/draft-KFXJCKCH.js.map +0 -1
- package/dist/draft-KJ6SH67P.js +0 -101
- package/dist/draft-KJ6SH67P.js.map +0 -1
- package/dist/draft-QW7EYFFU.js +0 -329
- package/dist/draft-QW7EYFFU.js.map +0 -1
- package/dist/draft-URMXE4U4.js +0 -101
- package/dist/draft-URMXE4U4.js.map +0 -1
- package/dist/draft-ZU7MZLIT.js +0 -300
- package/dist/draft-ZU7MZLIT.js.map +0 -1
- package/dist/env-ODWJOKNV.js +0 -44
- package/dist/experiment-TUKKH6UJ.js +0 -1378
- package/dist/experiment-TUKKH6UJ.js.map +0 -1
- package/dist/export-WXFUVX6F.js +0 -170
- package/dist/export-WXFUVX6F.js.map +0 -1
- package/dist/extract-PY3J3WVF.js +0 -115
- package/dist/extract-PY3J3WVF.js.map +0 -1
- package/dist/facets-NUEIHCKA.js +0 -115
- package/dist/facets-NUEIHCKA.js.map +0 -1
- package/dist/favorites-JDFIYSV2.js +0 -180
- package/dist/favorites-JDFIYSV2.js.map +0 -1
- package/dist/feed-CYFNDBJS.js +0 -159
- package/dist/feed-CYFNDBJS.js.map +0 -1
- package/dist/feedback-E2P3NB7H.js +0 -68
- package/dist/feedback-E2P3NB7H.js.map +0 -1
- package/dist/feedback-record-IMCTEDOX.js +0 -137
- package/dist/feedback-record-IMCTEDOX.js.map +0 -1
- package/dist/fetch-ELSDT3NZ.js +0 -141
- package/dist/fetch-ELSDT3NZ.js.map +0 -1
- package/dist/fetch-NM7MD3CN.js +0 -172
- package/dist/fetch-NM7MD3CN.js.map +0 -1
- package/dist/find-HYMLZCKA.js +0 -136
- package/dist/find-HYMLZCKA.js.map +0 -1
- package/dist/fit-5WZ6NVSF.js +0 -44
- package/dist/flows-ZEUUIXCS.js +0 -246
- package/dist/flows-ZEUUIXCS.js.map +0 -1
- package/dist/follow-RGJ76HHD.js +0 -84
- package/dist/follow-RGJ76HHD.js.map +0 -1
- package/dist/follow-competitors-JMNOP2ZT.js +0 -133
- package/dist/follow-competitors-JMNOP2ZT.js.map +0 -1
- package/dist/following-5GINRDTL.js +0 -111
- package/dist/following-5GINRDTL.js.map +0 -1
- package/dist/fonts-7U7I2TWV.js +0 -27
- package/dist/forecast-PGDYFFKQ.js +0 -105
- package/dist/forecast-PGDYFFKQ.js.map +0 -1
- package/dist/funding-ED6PDKJF.js +0 -86
- package/dist/funding-ED6PDKJF.js.map +0 -1
- package/dist/funnel-IML4F5ZP.js +0 -838
- package/dist/funnel-IML4F5ZP.js.map +0 -1
- package/dist/ga4-QPEXE6YG.js +0 -55
- package/dist/generate-VVTQCJRI.js +0 -264
- package/dist/generate-VVTQCJRI.js.map +0 -1
- package/dist/get-CZSESEHU.js +0 -61
- package/dist/get-CZSESEHU.js.map +0 -1
- package/dist/get-DEGOS3R6.js +0 -63
- package/dist/get-DEGOS3R6.js.map +0 -1
- package/dist/get-L3ZGUJJB.js +0 -65
- package/dist/get-L3ZGUJJB.js.map +0 -1
- package/dist/get-NX5DGSRP.js +0 -65
- package/dist/get-NX5DGSRP.js.map +0 -1
- package/dist/get-TL6UET23.js +0 -56
- package/dist/get-TL6UET23.js.map +0 -1
- package/dist/get-UNZMYRB6.js +0 -80
- package/dist/get-UNZMYRB6.js.map +0 -1
- package/dist/get-ZVRRZDUU.js +0 -94
- package/dist/get-ZVRRZDUU.js.map +0 -1
- package/dist/gif-MNBSPA64.js +0 -96
- package/dist/gif-MNBSPA64.js.map +0 -1
- package/dist/google-C2Z4XWRL.js +0 -1866
- package/dist/google-C2Z4XWRL.js.map +0 -1
- package/dist/google-LJSSLBP3.js +0 -138
- package/dist/google-LJSSLBP3.js.map +0 -1
- package/dist/group-7BGYA6LK.js +0 -44
- package/dist/group-7BGYA6LK.js.map +0 -1
- package/dist/group-MPYAKBH5.js +0 -44
- package/dist/group-MPYAKBH5.js.map +0 -1
- package/dist/gsc-LC5ADBA3.js +0 -30
- package/dist/history-GPQE2ZYR.js +0 -68
- package/dist/history-GPQE2ZYR.js.map +0 -1
- package/dist/history-XTSLGMK6.js +0 -135
- package/dist/history-XTSLGMK6.js.map +0 -1
- package/dist/hubspot-GPTEZD3A.js +0 -781
- package/dist/hubspot-GPTEZD3A.js.map +0 -1
- package/dist/icon-YKMRIU7A.js +0 -139
- package/dist/icon-YKMRIU7A.js.map +0 -1
- package/dist/ideas-NEBJBIBM.js +0 -31
- package/dist/images-ASWWS5TH.js +0 -90
- package/dist/improve-VXDJGXTG.js +0 -88
- package/dist/improve-VXDJGXTG.js.map +0 -1
- package/dist/ingest-AW37RWJN.js +0 -109
- package/dist/ingest-AW37RWJN.js.map +0 -1
- package/dist/ingest-X7UPOCKP.js +0 -24
- package/dist/insights-MHUV75RQ.js +0 -424
- package/dist/insights-MHUV75RQ.js.map +0 -1
- package/dist/insights-NLQXAW3F.js +0 -123
- package/dist/insights-NLQXAW3F.js.map +0 -1
- package/dist/inspect-TXVKPBAR.js +0 -191
- package/dist/inspect-TXVKPBAR.js.map +0 -1
- package/dist/inspiration-64DY3QWN.js +0 -53
- package/dist/intent-3HY6DRHW.js +0 -96
- package/dist/intent-3HY6DRHW.js.map +0 -1
- package/dist/job-L73KC4TC.js +0 -203
- package/dist/job-L73KC4TC.js.map +0 -1
- package/dist/job-create-LR3EHWKO.js +0 -110
- package/dist/job-create-LR3EHWKO.js.map +0 -1
- package/dist/job-status-MSL4EAJT.js +0 -75
- package/dist/job-status-MSL4EAJT.js.map +0 -1
- package/dist/keep-XUATLR5B.js +0 -80
- package/dist/keep-XUATLR5B.js.map +0 -1
- package/dist/keyword-gap-DJAYVD4U.js +0 -131
- package/dist/keyword-gap-DJAYVD4U.js.map +0 -1
- package/dist/keyword-metrics-4FEFFTQO.js +0 -198
- package/dist/keyword-metrics-4FEFFTQO.js.map +0 -1
- package/dist/keywords-for-site-HIMEQY63.js +0 -125
- package/dist/keywords-for-site-HIMEQY63.js.map +0 -1
- package/dist/landing-KU3ILVB3.js +0 -28
- package/dist/landing-KU3ILVB3.js.map +0 -1
- package/dist/languages-4QYK5DMW.js +0 -56
- package/dist/languages-4QYK5DMW.js.map +0 -1
- package/dist/languages-L5E7WS77.js +0 -41
- package/dist/languages-L5E7WS77.js.map +0 -1
- package/dist/layerize-YAVLAXYM.js +0 -192
- package/dist/layerize-YAVLAXYM.js.map +0 -1
- package/dist/leads-DR3EK77T.js +0 -91
- package/dist/leads-DR3EK77T.js.map +0 -1
- package/dist/leads-PFPQOCBR.js +0 -286
- package/dist/leads-PFPQOCBR.js.map +0 -1
- package/dist/learn-D4D75X2Y.js +0 -204
- package/dist/library-E2SJS7PT.js +0 -111
- package/dist/library-E2SJS7PT.js.map +0 -1
- package/dist/lighthouse-QMECKX4R.js +0 -76
- package/dist/lighthouse-QMECKX4R.js.map +0 -1
- package/dist/line-item-writes-XMDA7AZQ.js +0 -209
- package/dist/line-item-writes-XMDA7AZQ.js.map +0 -1
- package/dist/line-items-YGKTYKVE.js +0 -104
- package/dist/line-items-YGKTYKVE.js.map +0 -1
- package/dist/link-AOB3WGGN.js +0 -65
- package/dist/link-AOB3WGGN.js.map +0 -1
- package/dist/linkedin-WRJNY6NY.js +0 -1002
- package/dist/linkedin-WRJNY6NY.js.map +0 -1
- package/dist/list-66VKYGKM.js +0 -52
- package/dist/list-66VKYGKM.js.map +0 -1
- package/dist/list-6DZWRLDN.js +0 -59
- package/dist/list-6DZWRLDN.js.map +0 -1
- package/dist/list-6KJWGPPS.js +0 -67
- package/dist/list-6KJWGPPS.js.map +0 -1
- package/dist/list-GXCKA2AN.js +0 -153
- package/dist/list-GXCKA2AN.js.map +0 -1
- package/dist/list-KNHZPT7L.js +0 -65
- package/dist/list-KNHZPT7L.js.map +0 -1
- package/dist/list-LPETG6A6.js +0 -78
- package/dist/list-LPETG6A6.js.map +0 -1
- package/dist/list-WHJNWHSZ.js +0 -53
- package/dist/list-WHJNWHSZ.js.map +0 -1
- package/dist/list-YV5Z2J6U.js +0 -305
- package/dist/list-YV5Z2J6U.js.map +0 -1
- package/dist/locations-4FZYKG2A.js +0 -68
- package/dist/locations-4FZYKG2A.js.map +0 -1
- package/dist/locations-W32YE2KS.js +0 -41
- package/dist/locations-W32YE2KS.js.map +0 -1
- package/dist/log-YVW46HL7.js +0 -94
- package/dist/log-YVW46HL7.js.map +0 -1
- package/dist/logo-7O7VW5R3.js +0 -19
- package/dist/lookup-Z2X5WAO6.js +0 -23
- package/dist/make-Q6BQ7LNT.js +0 -505
- package/dist/make-Q6BQ7LNT.js.map +0 -1
- package/dist/map-VZM5C6DA.js +0 -406
- package/dist/map-VZM5C6DA.js.map +0 -1
- package/dist/mcp-KSJDALG6.js +0 -478
- package/dist/mcp-KSJDALG6.js.map +0 -1
- package/dist/media-7P66TUIR.js +0 -15
- package/dist/media-JBQKYSRQ.js +0 -90
- package/dist/media-JBQKYSRQ.js.map +0 -1
- package/dist/media-sources-427U333M.js +0 -32
- package/dist/members-ABGEFALK.js +0 -46
- package/dist/members-ABGEFALK.js.map +0 -1
- package/dist/meta-JH4FHVNX.js +0 -69
- package/dist/metrics-ALSPX6EQ.js +0 -153
- package/dist/metrics-ALSPX6EQ.js.map +0 -1
- package/dist/models-7BM5BKXX.js +0 -157
- package/dist/models-7BM5BKXX.js.map +0 -1
- package/dist/normalize-DFK3DGGZ.js +0 -808
- package/dist/normalize-DFK3DGGZ.js.map +0 -1
- package/dist/normalize-NDR7YEQE.js +0 -140
- package/dist/normalize-NDR7YEQE.js.map +0 -1
- package/dist/options-G5VGH22X.js +0 -123
- package/dist/options-G5VGH22X.js.map +0 -1
- package/dist/output-ZLXBAA4O.js +0 -25
- package/dist/page-L7BBMINT.js +0 -107
- package/dist/page-L7BBMINT.js.map +0 -1
- package/dist/pages-NBV35ECG.js +0 -67
- package/dist/pages-NBV35ECG.js.map +0 -1
- package/dist/performance-SOMZNPIG.js +0 -25
- package/dist/pinterest-KXAZTRDP.js +0 -98
- package/dist/pinterest-KXAZTRDP.js.map +0 -1
- package/dist/pixels-DYWHXAJT.js +0 -109
- package/dist/pixels-DYWHXAJT.js.map +0 -1
- package/dist/pixels-UMS2QBUG.js +0 -61
- package/dist/pixels-UMS2QBUG.js.map +0 -1
- package/dist/preview-C5FER5SU.js +0 -170
- package/dist/preview-C5FER5SU.js.map +0 -1
- package/dist/promoted-tweet-writes-3PECZLQA.js +0 -181
- package/dist/promoted-tweet-writes-3PECZLQA.js.map +0 -1
- package/dist/promoted-tweets-GMV6WIWV.js +0 -120
- package/dist/promoted-tweets-GMV6WIWV.js.map +0 -1
- package/dist/properties-YAJQF577.js +0 -102
- package/dist/properties-YAJQF577.js.map +0 -1
- package/dist/publish-5WDUTTG5.js +0 -355
- package/dist/publish-5WDUTTG5.js.map +0 -1
- package/dist/query-TBWL52JI.js +0 -1342
- package/dist/query-TBWL52JI.js.map +0 -1
- package/dist/query-VESQSTQI.js +0 -237
- package/dist/query-VESQSTQI.js.map +0 -1
- package/dist/query-XZQSY62P.js +0 -248
- package/dist/query-XZQSY62P.js.map +0 -1
- package/dist/read-UMAWDVKX.js +0 -141
- package/dist/read-UMAWDVKX.js.map +0 -1
- package/dist/reddit-OPHQFRRC.js +0 -27
- package/dist/refresh-U56RE7DI.js +0 -96
- package/dist/refresh-U56RE7DI.js.map +0 -1
- package/dist/release-P66DYNKQ.js +0 -61
- package/dist/release-P66DYNKQ.js.map +0 -1
- package/dist/relevant-pages-DSQQU6F7.js +0 -100
- package/dist/relevant-pages-DSQQU6F7.js.map +0 -1
- package/dist/remove-GRLXSDZC.js +0 -50
- package/dist/remove-GRLXSDZC.js.map +0 -1
- package/dist/remove-IRIP4OKM.js +0 -52
- package/dist/remove-IRIP4OKM.js.map +0 -1
- package/dist/reopen-PMIO7NJJ.js +0 -65
- package/dist/reopen-PMIO7NJJ.js.map +0 -1
- package/dist/rerun-V4O6TKBY.js +0 -84
- package/dist/rerun-V4O6TKBY.js.map +0 -1
- package/dist/research-MG3MESKH.js +0 -59
- package/dist/research-RFPBKIVP.js +0 -228
- package/dist/research-RFPBKIVP.js.map +0 -1
- package/dist/reset-3HKXFAV7.js +0 -56
- package/dist/reset-3HKXFAV7.js.map +0 -1
- package/dist/reset-LQZA3CIB.js +0 -56
- package/dist/reset-LQZA3CIB.js.map +0 -1
- package/dist/resolve-H33CQAY4.js +0 -122
- package/dist/resolve-H33CQAY4.js.map +0 -1
- package/dist/retry-6F3YAVYQ.js +0 -64
- package/dist/retry-6F3YAVYQ.js.map +0 -1
- package/dist/retry-QWD3HWFP.js +0 -62
- package/dist/retry-QWD3HWFP.js.map +0 -1
- package/dist/retry-failed-7OAJ5TMD.js +0 -47
- package/dist/retry-failed-7OAJ5TMD.js.map +0 -1
- package/dist/run-CGZIVYLV.js +0 -67
- package/dist/run-CGZIVYLV.js.map +0 -1
- package/dist/run-PZF26R6H.js +0 -59
- package/dist/scaffold-ad-AI6R4GDU.js +0 -1458
- package/dist/scaffold-ad-AI6R4GDU.js.map +0 -1
- package/dist/scaffold-static-ad-T7ZDHRB3.js +0 -944
- package/dist/scaffold-static-ad-T7ZDHRB3.js.map +0 -1
- package/dist/scaffold-video-R24U2WC7.js +0 -840
- package/dist/scaffold-video-R24U2WC7.js.map +0 -1
- package/dist/schedule-BK44B77G.js +0 -68
- package/dist/schedule-BK44B77G.js.map +0 -1
- package/dist/schedule-F2EEY4UK.js +0 -63
- package/dist/schedule-F2EEY4UK.js.map +0 -1
- package/dist/scheduled-agents-CIEAOWM6.js +0 -49
- package/dist/schema-3B6FDPBF.js +0 -131
- package/dist/schema-3B6FDPBF.js.map +0 -1
- package/dist/schema-4FOZ5W35.js +0 -65
- package/dist/schema-4FOZ5W35.js.map +0 -1
- package/dist/scrape-P46M2J43.js +0 -2243
- package/dist/scrape-P46M2J43.js.map +0 -1
- package/dist/screenshot-6F7G3LN5.js +0 -104
- package/dist/screenshot-6F7G3LN5.js.map +0 -1
- package/dist/search-23LREBOG.js +0 -94
- package/dist/search-23LREBOG.js.map +0 -1
- package/dist/search-DNYAA6TT.js +0 -176
- package/dist/search-DNYAA6TT.js.map +0 -1
- package/dist/search-FORHMB7P.js +0 -27
- package/dist/search-KQMPPO3X.js +0 -226
- package/dist/search-KQMPPO3X.js.map +0 -1
- package/dist/search-X4AKUB2K.js +0 -93
- package/dist/search-X4AKUB2K.js.map +0 -1
- package/dist/seeds-K4CHZ2HU.js +0 -103
- package/dist/seeds-K4CHZ2HU.js.map +0 -1
- package/dist/select-52K6KZGY.js +0 -95
- package/dist/sends-UH2MZGCD.js +0 -310
- package/dist/sends-UH2MZGCD.js.map +0 -1
- package/dist/sequences-BXGO3NPA.js +0 -148
- package/dist/sequences-BXGO3NPA.js.map +0 -1
- package/dist/set-prompt-3IXP42AK.js +0 -186
- package/dist/set-prompt-3IXP42AK.js.map +0 -1
- package/dist/setup-links-OV6ALAUU.js +0 -143
- package/dist/setup-links-OV6ALAUU.js.map +0 -1
- package/dist/shared-VMV44VPB.js +0 -32
- package/dist/site-MQ5ORTKV.js +0 -179
- package/dist/site-MQ5ORTKV.js.map +0 -1
- package/dist/sitemaps-LKCTG2WM.js +0 -88
- package/dist/sitemaps-LKCTG2WM.js.map +0 -1
- package/dist/sites-YHUF7G4Z.js +0 -102
- package/dist/sites-YHUF7G4Z.js.map +0 -1
- package/dist/skills-CG674XHN.js +0 -49
- package/dist/skills-CG674XHN.js.map +0 -1
- package/dist/sources-44THTN2Y.js +0 -422
- package/dist/sources-44THTN2Y.js.map +0 -1
- package/dist/sources-BQNCLGWT.js +0 -30
- package/dist/stale-JGLP7BAC.js +0 -63
- package/dist/stale-JGLP7BAC.js.map +0 -1
- package/dist/stats-TO3J2FU6.js +0 -34
- package/dist/status-NJ3SMBGS.js +0 -64
- package/dist/status-NJ3SMBGS.js.map +0 -1
- package/dist/sticker-YBOWSWMR.js +0 -96
- package/dist/sticker-YBOWSWMR.js.map +0 -1
- package/dist/stock-E6NMDSVI.js +0 -181
- package/dist/stock-E6NMDSVI.js.map +0 -1
- package/dist/studio-LHH62SZC.js +0 -49
- package/dist/sync-2R5UKTHN.js +0 -56
- package/dist/sync-2R5UKTHN.js.map +0 -1
- package/dist/sync-AZRR5JNS.js +0 -266
- package/dist/sync-AZRR5JNS.js.map +0 -1
- package/dist/sync-ML7E5J22.js +0 -56
- package/dist/sync-ML7E5J22.js.map +0 -1
- package/dist/sync-definition-LBPI7P5F.js +0 -48
- package/dist/tag-manager-D3YNI7JG.js +0 -43
- package/dist/tags-BYGKXDDS.js +0 -21
- package/dist/tags-BYGKXDDS.js.map +0 -1
- package/dist/tags-OOQV4G2Y.js +0 -26
- package/dist/tags-TKYXWGN4.js +0 -21
- package/dist/tags-TKYXWGN4.js.map +0 -1
- package/dist/tags-V732MEES.js +0 -226
- package/dist/tags-V732MEES.js.map +0 -1
- package/dist/tags-YLC46IXM.js +0 -21
- package/dist/tags-YLC46IXM.js.map +0 -1
- package/dist/targeting-constants-XT56MOGP.js +0 -119
- package/dist/targeting-constants-XT56MOGP.js.map +0 -1
- package/dist/targeting-criteria-24X3IIJS.js +0 -114
- package/dist/targeting-criteria-24X3IIJS.js.map +0 -1
- package/dist/targets-AKAN2HFY.js +0 -104
- package/dist/targets-AKAN2HFY.js.map +0 -1
- package/dist/templates-7MRVQTB2.js +0 -180
- package/dist/templates-7MRVQTB2.js.map +0 -1
- package/dist/testimonials-OIZMXEYZ.js +0 -32
- package/dist/top-companies-3IG5FRQ2.js +0 -109
- package/dist/top-companies-3IG5FRQ2.js.map +0 -1
- package/dist/triggers-ZHNWHJG4.js +0 -143
- package/dist/triggers-ZHNWHJG4.js.map +0 -1
- package/dist/tweets-V5R5DUA2.js +0 -124
- package/dist/tweets-V5R5DUA2.js.map +0 -1
- package/dist/unfollow-RYDJDDAV.js +0 -48
- package/dist/unfollow-RYDJDDAV.js.map +0 -1
- package/dist/unlink-CS7QNOU2.js +0 -68
- package/dist/unlink-CS7QNOU2.js.map +0 -1
- package/dist/unstage-DDZ5F2Z6.js +0 -86
- package/dist/unstage-DDZ5F2Z6.js.map +0 -1
- package/dist/unstage-KPLOFKU5.js +0 -96
- package/dist/unstage-KPLOFKU5.js.map +0 -1
- package/dist/update-ASY63WIK.js +0 -157
- package/dist/update-ASY63WIK.js.map +0 -1
- package/dist/update-HA5IQCJ2.js +0 -99
- package/dist/update-HA5IQCJ2.js.map +0 -1
- package/dist/update-R3VD5DC3.js +0 -143
- package/dist/update-R3VD5DC3.js.map +0 -1
- package/dist/update-WMCBSNSD.js +0 -64
- package/dist/update-WMCBSNSD.js.map +0 -1
- package/dist/upload-ADEYBWTV.js +0 -152
- package/dist/upload-ADEYBWTV.js.map +0 -1
- package/dist/upload-WBNPIOVR.js +0 -128
- package/dist/upload-WBNPIOVR.js.map +0 -1
- package/dist/upscale-WYTZPUIA.js +0 -111
- package/dist/upscale-WYTZPUIA.js.map +0 -1
- package/dist/url-options-DOCH5AWX.js +0 -128
- package/dist/url-options-DOCH5AWX.js.map +0 -1
- package/dist/url-params-IYTU3MVV.js +0 -99
- package/dist/url-params-IYTU3MVV.js.map +0 -1
- package/dist/use-RGJMULXG.js +0 -97
- package/dist/use-RGJMULXG.js.map +0 -1
- package/dist/validate-T22BKIFK.js +0 -89
- package/dist/validate-T22BKIFK.js.map +0 -1
- package/dist/variant-3DBL2RDV.js +0 -339
- package/dist/variant-3DBL2RDV.js.map +0 -1
- package/dist/videos-7SB2CLZW.js +0 -39
- package/dist/view-5QDCP7HF.js +0 -123
- package/dist/view-5QDCP7HF.js.map +0 -1
- package/dist/viewer-check-NGIMC2BR.js +0 -66
- package/dist/web-IRWXTGE2.js +0 -136
- package/dist/web-IRWXTGE2.js.map +0 -1
- package/dist/winners-JSI4N26Y.js +0 -81
- package/dist/winners-JSI4N26Y.js.map +0 -1
- package/dist/winning-ads-XQZ6HEX5.js +0 -62
- package/dist/write-commands-3C3TV2YC.js +0 -714
- package/dist/write-commands-3C3TV2YC.js.map +0 -1
- package/dist/write-commands-7WIG5UDU.js +0 -731
- package/dist/write-commands-7WIG5UDU.js.map +0 -1
- package/dist/write-commands-G7HHGAEE.js +0 -1009
- package/dist/write-commands-G7HHGAEE.js.map +0 -1
- package/dist/write-commands-ROQSZFXR.js +0 -207
- package/dist/write-commands-ROQSZFXR.js.map +0 -1
- package/dist/x-BLTCL6L3.js +0 -47
- /package/dist/{actions-7XF5L4U3.js.map → actions-PEI6ZQAG.js.map} +0 -0
- /package/dist/{ads-IRE5RZCS.js.map → ads-TJ7ACFHG.js.map} +0 -0
- /package/dist/{avatars-G54K55J3.js.map → avatars-2UQJXHPV.js.map} +0 -0
- /package/dist/{brand-ODTHWWFL.js.map → brand-XBABUT52.js.map} +0 -0
- /package/dist/{canvas-M5HAG7VA.js.map → canvas-KEXE5P6S.js.map} +0 -0
- /package/dist/{chatgpt-PLKNBNVL.js.map → chatgpt-7W75X3ER.js.map} +0 -0
- /package/dist/{chunk-OZLBLXTK.js.map → chunk-2TK4DEOE.js.map} +0 -0
- /package/dist/{chunk-ZHW3O25C.js.map → chunk-4NDCTLI5.js.map} +0 -0
- /package/dist/{chunk-5NQIFCNX.js.map → chunk-5ARG3CQG.js.map} +0 -0
- /package/dist/{chunk-ZAFR46HG.js.map → chunk-5Z2KSVIV.js.map} +0 -0
- /package/dist/{chunk-EYO62URT.js.map → chunk-6B7VKFS4.js.map} +0 -0
- /package/dist/{chunk-W7OFLOZB.js.map → chunk-6G5K6ZC6.js.map} +0 -0
- /package/dist/{chunk-RJAQEZVD.js.map → chunk-73QKIIIR.js.map} +0 -0
- /package/dist/{chunk-YS6PCTPS.js.map → chunk-75FDTDLH.js.map} +0 -0
- /package/dist/{chunk-NGT6MARJ.js.map → chunk-7J6EHOH6.js.map} +0 -0
- /package/dist/{chunk-TD44SXQX.js.map → chunk-7OFNN4CT.js.map} +0 -0
- /package/dist/{chunk-LDVMMLRA.js.map → chunk-C6U6UDHJ.js.map} +0 -0
- /package/dist/{chunk-6FBZ5E6L.js.map → chunk-DIY6QR3E.js.map} +0 -0
- /package/dist/{chunk-F3WFP75M.js.map → chunk-EFSYTROP.js.map} +0 -0
- /package/dist/{chunk-4MU3U3SO.js.map → chunk-FEXDI4NM.js.map} +0 -0
- /package/dist/{chunk-YMOVI3WT.js.map → chunk-FHXIEMCG.js.map} +0 -0
- /package/dist/{chunk-R34LJSPM.js.map → chunk-H26L3OQY.js.map} +0 -0
- /package/dist/{chunk-NMMKTPGI.js.map → chunk-HIPDMQZ6.js.map} +0 -0
- /package/dist/{chunk-FRVROFI6.js.map → chunk-HYCIBVDW.js.map} +0 -0
- /package/dist/{chunk-BSUN6JMU.js.map → chunk-IFWP3ZDO.js.map} +0 -0
- /package/dist/{chunk-LQ4HBQ2B.js.map → chunk-IXKEWS7X.js.map} +0 -0
- /package/dist/{chunk-DPEQVHTX.js.map → chunk-JERXV5A3.js.map} +0 -0
- /package/dist/{chunk-TCSPJQ2X.js.map → chunk-KLNKEVIY.js.map} +0 -0
- /package/dist/{chunk-JMXBUIVI.js.map → chunk-KNY76UGC.js.map} +0 -0
- /package/dist/{chunk-IMZIECST.js.map → chunk-KWAOTV7F.js.map} +0 -0
- /package/dist/{chunk-A57AHUNA.js.map → chunk-LERTEZST.js.map} +0 -0
- /package/dist/{chunk-73MCYA5Z.js.map → chunk-LL2CD5WU.js.map} +0 -0
- /package/dist/{chunk-UA5EUJXV.js.map → chunk-LO6GEJ4Z.js.map} +0 -0
- /package/dist/{chunk-IRHNWYDT.js.map → chunk-LS5MTRFI.js.map} +0 -0
- /package/dist/{chunk-F7HBCFUA.js.map → chunk-LZ73CZGP.js.map} +0 -0
- /package/dist/{chunk-NGYKF4T6.js.map → chunk-MELOSESI.js.map} +0 -0
- /package/dist/{chunk-SXRSLUW7.js.map → chunk-NAWWC5I3.js.map} +0 -0
- /package/dist/{chunk-FFZBW4CC.js.map → chunk-NPE7EWBE.js.map} +0 -0
- /package/dist/{chunk-JH7NHC5W.js.map → chunk-OKG6GX2F.js.map} +0 -0
- /package/dist/{chunk-WAQYXH2U.js.map → chunk-PBA3YCZA.js.map} +0 -0
- /package/dist/{chunk-AWICKT2B.js.map → chunk-PWGWMIIJ.js.map} +0 -0
- /package/dist/{chunk-F6NJAHAZ.js.map → chunk-QHLB5V7J.js.map} +0 -0
- /package/dist/{chunk-TTFTS2SO.js.map → chunk-QJE6ZYGI.js.map} +0 -0
- /package/dist/{chunk-Y4JR4RDM.js.map → chunk-QSN5MZGS.js.map} +0 -0
- /package/dist/{chunk-HWWPDUZM.js.map → chunk-RSW6QJPH.js.map} +0 -0
- /package/dist/{chunk-LYZVLKRA.js.map → chunk-SBMIQDCX.js.map} +0 -0
- /package/dist/{chunk-BDD2ILIT.js.map → chunk-STIB5DR5.js.map} +0 -0
- /package/dist/{chunk-A3PEJ3V3.js.map → chunk-TBEUMOEL.js.map} +0 -0
- /package/dist/{chunk-RPFBZHHE.js.map → chunk-TD2P4HBP.js.map} +0 -0
- /package/dist/{chunk-CBEL3P22.js.map → chunk-VBHDZSI5.js.map} +0 -0
- /package/dist/{chunk-6YWRJMGR.js.map → chunk-VFIOJD5M.js.map} +0 -0
- /package/dist/{chunk-QYOPQRLI.js.map → chunk-VVZBBKRC.js.map} +0 -0
- /package/dist/{chunk-G32FXVQ6.js.map → chunk-W3B4BHQU.js.map} +0 -0
- /package/dist/{chunk-Q7UF4ERB.js.map → chunk-WS2GMOSG.js.map} +0 -0
- /package/dist/{chunk-EPK2GYLV.js.map → chunk-XBOK23HI.js.map} +0 -0
- /package/dist/{chunk-HA5D6US2.js.map → chunk-XG3XCHN6.js.map} +0 -0
- /package/dist/{chunk-L4DOL7L7.js.map → chunk-XL3BMSYG.js.map} +0 -0
- /package/dist/{chunk-ECXNE6RJ.js.map → chunk-XYMPS526.js.map} +0 -0
- /package/dist/{chunk-WWD4PITU.js.map → chunk-YBMVHGY3.js.map} +0 -0
- /package/dist/{client-XKDFFS7O.js.map → client-VHN32ZRE.js.map} +0 -0
- /package/dist/{connect-ATGYJNG4.js.map → connect-TA5W6YGW.js.map} +0 -0
- /package/dist/{customers-ACRYXALZ.js.map → customers-4RJGRR2Y.js.map} +0 -0
- /package/dist/{env-ODWJOKNV.js.map → env-KIP2J2UB.js.map} +0 -0
- /package/dist/{fit-5WZ6NVSF.js.map → fit-KXHYKIA4.js.map} +0 -0
- /package/dist/{fonts-7U7I2TWV.js.map → fonts-NTOQS2KU.js.map} +0 -0
- /package/dist/{ga4-QPEXE6YG.js.map → ga4-UDQ2HA2J.js.map} +0 -0
- /package/dist/{gsc-LC5ADBA3.js.map → gsc-P3QYGDV2.js.map} +0 -0
- /package/dist/{ideas-NEBJBIBM.js.map → ideas-PU7IAX6F.js.map} +0 -0
- /package/dist/{images-ASWWS5TH.js.map → images-QI2HTX6B.js.map} +0 -0
- /package/dist/{ingest-X7UPOCKP.js.map → ingest-BYJNFOOT.js.map} +0 -0
- /package/dist/{inspiration-64DY3QWN.js.map → inspiration-I4MMKAWA.js.map} +0 -0
- /package/dist/{learn-D4D75X2Y.js.map → learn-HZU3QWNN.js.map} +0 -0
- /package/dist/{logo-7O7VW5R3.js.map → logo-2IP663QO.js.map} +0 -0
- /package/dist/{lookup-Z2X5WAO6.js.map → lookup-XK45W2SH.js.map} +0 -0
- /package/dist/{media-7P66TUIR.js.map → media-M7E6V2XU.js.map} +0 -0
- /package/dist/{media-sources-427U333M.js.map → media-sources-3D246I3O.js.map} +0 -0
- /package/dist/{meta-JH4FHVNX.js.map → meta-EZ4SY25M.js.map} +0 -0
- /package/dist/{output-ZLXBAA4O.js.map → output-RAH3TSIL.js.map} +0 -0
- /package/dist/{performance-SOMZNPIG.js.map → performance-7LQQCEAW.js.map} +0 -0
- /package/dist/{reddit-OPHQFRRC.js.map → reddit-INGPFGP4.js.map} +0 -0
- /package/dist/{research-MG3MESKH.js.map → research-PA53M335.js.map} +0 -0
- /package/dist/{run-PZF26R6H.js.map → run-2IM2QOCI.js.map} +0 -0
- /package/dist/{scheduled-agents-CIEAOWM6.js.map → scheduled-agents-2NCGSD76.js.map} +0 -0
- /package/dist/{search-FORHMB7P.js.map → search-XUIVHGAY.js.map} +0 -0
- /package/dist/{select-52K6KZGY.js.map → select-ZWDEVAH2.js.map} +0 -0
- /package/dist/{shared-VMV44VPB.js.map → shared-HJDFNID4.js.map} +0 -0
- /package/dist/{sources-BQNCLGWT.js.map → sources-UGMZFZ2E.js.map} +0 -0
- /package/dist/{stats-TO3J2FU6.js.map → stats-NNXZMPZR.js.map} +0 -0
- /package/dist/{studio-LHH62SZC.js.map → studio-HUEBE6DS.js.map} +0 -0
- /package/dist/{sync-definition-LBPI7P5F.js.map → sync-definition-YBDM7D4M.js.map} +0 -0
- /package/dist/{tag-manager-D3YNI7JG.js.map → tag-manager-HREEYGVM.js.map} +0 -0
- /package/dist/{tags-OOQV4G2Y.js.map → tags-R3K35KTL.js.map} +0 -0
- /package/dist/{testimonials-OIZMXEYZ.js.map → testimonials-5QGCPZ6K.js.map} +0 -0
- /package/dist/{videos-7SB2CLZW.js.map → videos-GIYDCCKR.js.map} +0 -0
- /package/dist/{viewer-check-NGIMC2BR.js.map → viewer-check-VN2JK2LW.js.map} +0 -0
- /package/dist/{winning-ads-XQZ6HEX5.js.map → winning-ads-7QWEIMRU.js.map} +0 -0
- /package/dist/{x-BLTCL6L3.js.map → x-OEAKQBB7.js.map} +0 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseBrandTokens
|
|
3
|
+
} from "./chunk-ZJ47BR6X.js";
|
|
4
|
+
|
|
5
|
+
// src/engine/brand/fonts.ts
|
|
6
|
+
import { posix } from "path";
|
|
7
|
+
var GOOGLE_CSS2 = "https://fonts.googleapis.com/css2";
|
|
8
|
+
function parseGoogleFontFaces(css) {
|
|
9
|
+
const faces = [];
|
|
10
|
+
const re = /\/\*\s*([\w-]+)\s*\*\/\s*@font-face\s*\{([^}]*)\}/g;
|
|
11
|
+
for (const match of String(css).matchAll(re)) {
|
|
12
|
+
const subset = match[1] ?? "";
|
|
13
|
+
const body = match[2] ?? "";
|
|
14
|
+
const family = body.match(/font-family\s*:\s*['"]?([^'";]+)['"]?\s*;/i)?.[1]?.trim();
|
|
15
|
+
const url = body.match(/src\s*:\s*url\(\s*['"]?([^'")]+)['"]?\s*\)/i)?.[1]?.trim();
|
|
16
|
+
const weight = body.match(/font-weight\s*:\s*(\d{3})\s*;/i)?.[1];
|
|
17
|
+
if (!family || !url || !weight) continue;
|
|
18
|
+
faces.push({
|
|
19
|
+
subset,
|
|
20
|
+
family,
|
|
21
|
+
style: body.match(/font-style\s*:\s*([\w-]+)\s*;/i)?.[1]?.trim() ?? "normal",
|
|
22
|
+
weight: Number(weight),
|
|
23
|
+
url,
|
|
24
|
+
unicodeRange: body.match(/unicode-range\s*:\s*([^;]+);/i)?.[1]?.trim() ?? ""
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return faces;
|
|
28
|
+
}
|
|
29
|
+
function fontFileName(face) {
|
|
30
|
+
const family = face.family.replace(/[^A-Za-z0-9]/g, "");
|
|
31
|
+
const style = face.style === "italic" ? "italic" : "";
|
|
32
|
+
return `${family}-${face.weight}${style}-${face.subset}.woff2`;
|
|
33
|
+
}
|
|
34
|
+
function fontFaceHref(face) {
|
|
35
|
+
return `../brand/fonts/${fontFileName(face)}`;
|
|
36
|
+
}
|
|
37
|
+
function renderFontFaceCss(faces) {
|
|
38
|
+
return faces.map(
|
|
39
|
+
(face) => [
|
|
40
|
+
"@font-face {",
|
|
41
|
+
` font-family: '${face.family}';`,
|
|
42
|
+
` font-style: ${face.style};`,
|
|
43
|
+
` font-weight: ${face.weight};`,
|
|
44
|
+
" font-display: swap;",
|
|
45
|
+
` src: url('${fontFaceHref(face)}') format('woff2');`,
|
|
46
|
+
...face.unicodeRange ? [` unicode-range: ${face.unicodeRange};`] : [],
|
|
47
|
+
"}"
|
|
48
|
+
].join("\n")
|
|
49
|
+
).join("\n");
|
|
50
|
+
}
|
|
51
|
+
var FONT_PROVIDERS = ["google", "fontsource"];
|
|
52
|
+
var FONTSOURCE_API = "https://api.fontsource.org/v1";
|
|
53
|
+
var FONT_STYLES = ["normal", "italic"];
|
|
54
|
+
var ITAL_AXIS = { normal: 0, italic: 1 };
|
|
55
|
+
function fontsourceId(family) {
|
|
56
|
+
return family.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
57
|
+
}
|
|
58
|
+
function fontsourceFaces(meta, weights, subsets, styles = ["normal"]) {
|
|
59
|
+
const faces = [];
|
|
60
|
+
for (const subset of subsets.filter((s) => meta.subsets.includes(s))) {
|
|
61
|
+
for (const weight of weights.filter((w) => meta.weights.includes(w))) {
|
|
62
|
+
for (const style of styles.filter((style2) => meta.styles.includes(style2))) {
|
|
63
|
+
const url = meta.variants[String(weight)]?.[style]?.[subset]?.url?.woff2;
|
|
64
|
+
if (!url) continue;
|
|
65
|
+
faces.push({
|
|
66
|
+
subset,
|
|
67
|
+
family: meta.family,
|
|
68
|
+
style,
|
|
69
|
+
weight,
|
|
70
|
+
url,
|
|
71
|
+
unicodeRange: meta.unicodeRange?.[subset] ?? "",
|
|
72
|
+
provider: "fontsource"
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return faces;
|
|
78
|
+
}
|
|
79
|
+
function undisambiguatedSubsets(faces) {
|
|
80
|
+
if (new Set(faces.map((face) => face.subset)).size < 2) return [];
|
|
81
|
+
return [...new Set(faces.filter((face) => !face.unicodeRange).map((face) => face.subset))];
|
|
82
|
+
}
|
|
83
|
+
function suggestFamilies(wanted, catalogue, limit = 5) {
|
|
84
|
+
const key = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
85
|
+
const target = key(wanted);
|
|
86
|
+
if (!target) return [];
|
|
87
|
+
const words = target.split(" ");
|
|
88
|
+
const scored = catalogue.map((family) => {
|
|
89
|
+
const candidate = key(family);
|
|
90
|
+
if (candidate === target) return { family, score: 0 };
|
|
91
|
+
if (candidate.startsWith(target)) return { family, score: 1 };
|
|
92
|
+
if (candidate.includes(target)) return { family, score: 2 };
|
|
93
|
+
const shared = words.filter((w) => w.length > 2 && candidate.includes(w)).length;
|
|
94
|
+
return { family, score: shared > 0 ? 3 + (words.length - shared) : Number.POSITIVE_INFINITY };
|
|
95
|
+
}).filter((c) => Number.isFinite(c.score)).sort((a, b) => a.score - b.score || a.family.localeCompare(b.family));
|
|
96
|
+
return scored.slice(0, limit).map((c) => c.family);
|
|
97
|
+
}
|
|
98
|
+
function asFontsourceMeta(body) {
|
|
99
|
+
if (typeof body !== "object" || body === null) return null;
|
|
100
|
+
const meta = body;
|
|
101
|
+
const ok = typeof meta.family === "string" && Array.isArray(meta.weights) && Array.isArray(meta.styles) && Array.isArray(meta.subsets) && typeof meta.variants === "object" && meta.variants !== null;
|
|
102
|
+
return ok ? meta : null;
|
|
103
|
+
}
|
|
104
|
+
async function probeGoogleFaces(family, lookup) {
|
|
105
|
+
const got = await lookup(googleFontCssUrl(family, STANDARD_WEIGHTS, FONT_STYLES));
|
|
106
|
+
if (got.status === "unreachable") return null;
|
|
107
|
+
return got.status === "served" ? parseGoogleFontFaces(got.css) : [];
|
|
108
|
+
}
|
|
109
|
+
async function resolveFromGoogle(family, weights, subsets, styles, deps) {
|
|
110
|
+
const google = await deps.lookupGoogleCss(googleFontCssUrl(family, weights, FONT_STYLES));
|
|
111
|
+
if (google.status === "unreachable") return { ok: false, reason: "unreachable", provider: "google" };
|
|
112
|
+
if (google.status === "absent") {
|
|
113
|
+
const served2 = await probeGoogleFaces(family, deps.lookupGoogleCss);
|
|
114
|
+
if (served2 === null) return { ok: false, reason: "unreachable", provider: "google" };
|
|
115
|
+
const available = [...new Set(served2.map((face) => face.weight))].sort((a, b) => a - b);
|
|
116
|
+
return available.length > 0 ? { ok: false, reason: "weight", provider: "google", available } : null;
|
|
117
|
+
}
|
|
118
|
+
const served = parseGoogleFontFaces(google.css);
|
|
119
|
+
if (served.length === 0) return null;
|
|
120
|
+
const availableStyles = [...new Set(served.map((face) => face.style))].sort();
|
|
121
|
+
const inSubset = served.filter((face) => subsets.includes(face.subset));
|
|
122
|
+
const faces = inSubset.filter((face) => styles.includes(face.style)).map((face) => ({ ...face, provider: "google" }));
|
|
123
|
+
if (faces.length > 0) return { ok: true, provider: "google", faces, availableStyles };
|
|
124
|
+
return { ok: false, reason: "subset", provider: "google", available: [...new Set(served.map((f) => f.subset))] };
|
|
125
|
+
}
|
|
126
|
+
async function resolveBrandFaces(family, weights, subsets, deps, styles = ["normal"]) {
|
|
127
|
+
const google = await resolveFromGoogle(family, weights, subsets, styles, deps);
|
|
128
|
+
if (google) return google;
|
|
129
|
+
let body;
|
|
130
|
+
try {
|
|
131
|
+
body = await deps.fetchJson(`${FONTSOURCE_API}/fonts/${fontsourceId(family)}`);
|
|
132
|
+
} catch {
|
|
133
|
+
return { ok: false, reason: "unreachable", provider: "fontsource" };
|
|
134
|
+
}
|
|
135
|
+
const meta = asFontsourceMeta(body);
|
|
136
|
+
if (meta) {
|
|
137
|
+
const faces = fontsourceFaces(meta, weights, subsets, styles);
|
|
138
|
+
const ambiguous = undisambiguatedSubsets(faces);
|
|
139
|
+
if (ambiguous.length > 0) {
|
|
140
|
+
return { ok: false, reason: "ambiguous-subsets", provider: "fontsource", available: meta.subsets };
|
|
141
|
+
}
|
|
142
|
+
if (faces.length > 0) return { ok: true, provider: "fontsource", faces, availableStyles: [...meta.styles].sort() };
|
|
143
|
+
if (!subsets.some((subset) => meta.subsets.includes(subset))) {
|
|
144
|
+
return { ok: false, reason: "subset", provider: "fontsource", available: meta.subsets };
|
|
145
|
+
}
|
|
146
|
+
return { ok: false, reason: "weight", provider: "fontsource", available: meta.weights };
|
|
147
|
+
}
|
|
148
|
+
return { ok: false, reason: "unknown-family" };
|
|
149
|
+
}
|
|
150
|
+
function rebaseFontFaceSrc(block, fromDir, toDir = "src/styles") {
|
|
151
|
+
return block.replace(/url\(\s*(['"]?)([^'")]+)\1\s*\)/gi, (whole, _quote, href) => {
|
|
152
|
+
if (!isRepoFontHref(href)) return whole;
|
|
153
|
+
const target = posix.normalize(posix.join(fromDir, href));
|
|
154
|
+
return `url('${posix.relative(toDir, target)}')`;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function declaredFontFaces(source) {
|
|
158
|
+
const out = [];
|
|
159
|
+
for (const rule of stripCssComments(source).matchAll(/@font-face\s*\{[^}]*\}/gi)) {
|
|
160
|
+
const family = rule[0].match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
161
|
+
if (!family || rule.index === void 0) continue;
|
|
162
|
+
out.push({ family: normalizeFamily(family), block: source.slice(rule.index, rule.index + rule[0].length) });
|
|
163
|
+
}
|
|
164
|
+
return out;
|
|
165
|
+
}
|
|
166
|
+
function isRepoFontHref(href) {
|
|
167
|
+
return !/^(?:data:|https?:|\/)/i.test(href);
|
|
168
|
+
}
|
|
169
|
+
function missingFontFiles(urls, available) {
|
|
170
|
+
return urls.filter(isRepoFontHref).map((url) => posix.basename(url.split("?")[0] ?? "")).filter((file) => !available.has(file));
|
|
171
|
+
}
|
|
172
|
+
function planFontAdoption(sources, families) {
|
|
173
|
+
const wanted = new Map(families.map((family) => [normalizeFamily(family), family]));
|
|
174
|
+
const byFamily = /* @__PURE__ */ new Map();
|
|
175
|
+
for (const { path, source } of sources) {
|
|
176
|
+
const dir = posix.dirname(path);
|
|
177
|
+
for (const face of declaredFontFaces(source)) {
|
|
178
|
+
if (!wanted.has(face.family)) continue;
|
|
179
|
+
const perFile = byFamily.get(face.family) ?? /* @__PURE__ */ new Map();
|
|
180
|
+
perFile.set(path, [...perFile.get(path) ?? [], rebaseFontFaceSrc(face.block, dir)]);
|
|
181
|
+
byFamily.set(face.family, perFile);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const plans = [];
|
|
185
|
+
const conflicts = [];
|
|
186
|
+
for (const [family, perFile] of byFamily) {
|
|
187
|
+
const display = wanted.get(family) ?? family;
|
|
188
|
+
const files = [...perFile.keys()];
|
|
189
|
+
const shapes = new Set([...perFile.values()].map((blocks2) => blocks2.join("\n")));
|
|
190
|
+
if (shapes.size > 1) {
|
|
191
|
+
conflicts.push({ family: display, files });
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const blocks = perFile.get(files[0] ?? "") ?? [];
|
|
195
|
+
const urls = blocks.flatMap(
|
|
196
|
+
(block) => [...block.matchAll(/url\(\s*['"]?([^'")]+)['"]?\s*\)/gi)].map((m) => m[1] ?? "")
|
|
197
|
+
);
|
|
198
|
+
plans.push({ family: display, blocks, files, urls });
|
|
199
|
+
}
|
|
200
|
+
return { plans, conflicts };
|
|
201
|
+
}
|
|
202
|
+
async function fontsourceCatalogue(deps) {
|
|
203
|
+
const body = await deps.fetchJson(`${FONTSOURCE_API}/fonts`).catch(() => null);
|
|
204
|
+
if (!Array.isArray(body)) return [];
|
|
205
|
+
return body.map((entry) => typeof entry === "object" && entry !== null ? entry.family : null).filter((family) => typeof family === "string");
|
|
206
|
+
}
|
|
207
|
+
function parseWeightAxis(spec) {
|
|
208
|
+
const axis = spec.match(/wght@([^&]+)/i)?.[1] ?? "";
|
|
209
|
+
const weights = /* @__PURE__ */ new Set();
|
|
210
|
+
for (const tuple of axis.split(";")) {
|
|
211
|
+
const last = tuple.split(",").pop()?.trim() ?? "";
|
|
212
|
+
const range = last.match(/^(\d{3})\.\.(\d{3})$/);
|
|
213
|
+
if (range) {
|
|
214
|
+
for (let w = Number(range[1]); w <= Number(range[2]); w += 100) weights.add(w);
|
|
215
|
+
} else if (/^\d{3}$/.test(last)) {
|
|
216
|
+
weights.add(Number(last));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return [...weights].sort((a, b) => a - b);
|
|
220
|
+
}
|
|
221
|
+
function googleFontRequests(css) {
|
|
222
|
+
const out = [];
|
|
223
|
+
for (const link of String(css).matchAll(/fonts\.googleapis\.com\/[^\s"')]+/gi)) {
|
|
224
|
+
for (const param of link[0].matchAll(/[?&]family=([^&]+)/gi)) {
|
|
225
|
+
const [namePart, ...specParts] = (param[1] ?? "").split(":");
|
|
226
|
+
const family = decodeURIComponent((namePart ?? "").replaceAll("+", " ")).trim();
|
|
227
|
+
if (!family) continue;
|
|
228
|
+
out.push({ family, weights: parseWeightAxis(specParts.join(":")) });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return out;
|
|
232
|
+
}
|
|
233
|
+
function resolveFetchWeights(flag, declared) {
|
|
234
|
+
if (flag) {
|
|
235
|
+
return String(flag).split(",").map((w) => Number(w.trim())).filter((w) => Number.isInteger(w) && w >= 100 && w <= 900);
|
|
236
|
+
}
|
|
237
|
+
return declared?.length ? declared : [400];
|
|
238
|
+
}
|
|
239
|
+
var DEFAULT_SUBSETS = ["latin"];
|
|
240
|
+
function resolveFetchSubsets(flag, selfHosted) {
|
|
241
|
+
const asked = String(flag ?? "").split(",").map((subset) => subset.trim()).filter(Boolean);
|
|
242
|
+
const named = flag ? [...new Set(asked)] : selfHosted;
|
|
243
|
+
return named.length > 0 ? named : [...DEFAULT_SUBSETS];
|
|
244
|
+
}
|
|
245
|
+
function resolveFetchStyles(italic, selfHosted) {
|
|
246
|
+
return italic || selfHosted.includes("italic") ? ["normal", "italic"] : ["normal"];
|
|
247
|
+
}
|
|
248
|
+
function googleFontCssUrl(family, weights, styles = ["normal"]) {
|
|
249
|
+
const name = family.trim().split(/\s+/).map(encodeURIComponent).join("+");
|
|
250
|
+
const sorted = [...new Set(weights)].sort((a, b) => a - b);
|
|
251
|
+
if (sorted.length === 0) return `${GOOGLE_CSS2}?family=${name}&display=swap`;
|
|
252
|
+
const wanted = FONT_STYLES.filter((style) => styles.includes(style));
|
|
253
|
+
const spec = wanted.length > 1 ? `${name}:ital,wght@${wanted.flatMap((style) => sorted.map((w) => `${ITAL_AXIS[style]},${w}`)).join(";")}` : `${name}:wght@${sorted.join(";")}`;
|
|
254
|
+
return `${GOOGLE_CSS2}?family=${spec}&display=swap`;
|
|
255
|
+
}
|
|
256
|
+
var STANDARD_WEIGHTS = [100, 200, 300, 400, 500, 600, 700, 800, 900];
|
|
257
|
+
async function probeServedWeights(family, fetchCss) {
|
|
258
|
+
const css = await fetchCss(googleFontCssUrl(family, STANDARD_WEIGHTS));
|
|
259
|
+
if (css === null) return [];
|
|
260
|
+
return [...new Set(parseGoogleFontFaces(css).map((face) => face.weight))].sort((a, b) => a - b);
|
|
261
|
+
}
|
|
262
|
+
async function checkFontRequests(requests, fetchCss) {
|
|
263
|
+
const results = [];
|
|
264
|
+
for (const request of requests) {
|
|
265
|
+
const css = await fetchCss(googleFontCssUrl(request.family, request.weights));
|
|
266
|
+
if (css === null) {
|
|
267
|
+
const served2 = await probeServedWeights(request.family, fetchCss);
|
|
268
|
+
results.push({
|
|
269
|
+
family: request.family,
|
|
270
|
+
requested: request.weights,
|
|
271
|
+
served: served2,
|
|
272
|
+
missing: request.weights.filter((w) => !served2.includes(w)),
|
|
273
|
+
subsets: [],
|
|
274
|
+
cause: served2.length === 0 ? "unknown-family" : "unavailable-weight"
|
|
275
|
+
});
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
const faces = parseGoogleFontFaces(css);
|
|
279
|
+
const served = [...new Set(faces.map((f) => f.weight))].sort((a, b) => a - b);
|
|
280
|
+
results.push({
|
|
281
|
+
family: request.family,
|
|
282
|
+
requested: request.weights,
|
|
283
|
+
served,
|
|
284
|
+
missing: request.weights.filter((w) => !served.includes(w)),
|
|
285
|
+
subsets: [...new Set(faces.map((f) => f.subset))]
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
return results;
|
|
289
|
+
}
|
|
290
|
+
var GENERIC_FAMILIES = /* @__PURE__ */ new Set([
|
|
291
|
+
"sans-serif",
|
|
292
|
+
"serif",
|
|
293
|
+
"monospace",
|
|
294
|
+
"cursive",
|
|
295
|
+
"fantasy",
|
|
296
|
+
"system-ui",
|
|
297
|
+
"ui-sans-serif",
|
|
298
|
+
"ui-serif",
|
|
299
|
+
"ui-monospace",
|
|
300
|
+
"ui-rounded",
|
|
301
|
+
"arial",
|
|
302
|
+
"helvetica",
|
|
303
|
+
"georgia",
|
|
304
|
+
"times",
|
|
305
|
+
"courier",
|
|
306
|
+
"inherit",
|
|
307
|
+
"initial",
|
|
308
|
+
"unset"
|
|
309
|
+
]);
|
|
310
|
+
function stripCssComments(css) {
|
|
311
|
+
return css.replace(/\/\*[\s\S]*?\*\//g, (block) => block.replace(/[^\n]/g, " "));
|
|
312
|
+
}
|
|
313
|
+
function normalizeFamily(raw) {
|
|
314
|
+
return raw.trim().replace(/^['"]|['"]$/g, "").trim().toLowerCase();
|
|
315
|
+
}
|
|
316
|
+
function fontFaceFamilies(css) {
|
|
317
|
+
const out = /* @__PURE__ */ new Set();
|
|
318
|
+
for (const rule of stripCssComments(css).matchAll(/@font-face\s*\{([^}]*)\}/gi)) {
|
|
319
|
+
const family = (rule[1] ?? "").match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
320
|
+
if (family) out.add(normalizeFamily(family));
|
|
321
|
+
}
|
|
322
|
+
return out;
|
|
323
|
+
}
|
|
324
|
+
function declaredWeights(body) {
|
|
325
|
+
const spec = (body.match(/font-weight\s*:\s*([^;}]+)/i)?.[1] ?? "").match(/\d{3}/g) ?? [];
|
|
326
|
+
if (spec.length !== 2) return spec.map(Number);
|
|
327
|
+
const range = [];
|
|
328
|
+
for (let w = Number(spec[0]); w <= Number(spec[1]); w += 100) range.push(w);
|
|
329
|
+
return range;
|
|
330
|
+
}
|
|
331
|
+
function selfHostedWeights(css, family) {
|
|
332
|
+
const target = normalizeFamily(family);
|
|
333
|
+
const weights = /* @__PURE__ */ new Set();
|
|
334
|
+
for (const rule of stripCssComments(css).matchAll(/@font-face\s*\{([^}]*)\}/gi)) {
|
|
335
|
+
const body = rule[1] ?? "";
|
|
336
|
+
const declared = body.match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
337
|
+
if (!declared || normalizeFamily(declared) !== target) continue;
|
|
338
|
+
for (const weight of declaredWeights(body)) weights.add(weight);
|
|
339
|
+
}
|
|
340
|
+
return [...weights].sort((a, b) => a - b);
|
|
341
|
+
}
|
|
342
|
+
function fontFileSubset(href) {
|
|
343
|
+
const file = posix.basename((href.split("?")[0] ?? "").split("#")[0] ?? "");
|
|
344
|
+
return /^[A-Za-z0-9]+-[1-9]00(?:italic)?-([\w-]+)\.woff2$/.exec(file)?.[1] ?? null;
|
|
345
|
+
}
|
|
346
|
+
function selfHostedSubsets(css, family) {
|
|
347
|
+
const target = normalizeFamily(family);
|
|
348
|
+
const subsets = /* @__PURE__ */ new Set();
|
|
349
|
+
for (const rule of stripCssComments(css).matchAll(/@font-face\s*\{([^}]*)\}/gi)) {
|
|
350
|
+
const body = rule[1] ?? "";
|
|
351
|
+
const declared = body.match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
352
|
+
if (!declared || normalizeFamily(declared) !== target) continue;
|
|
353
|
+
for (const url of body.matchAll(/url\(\s*['"]?([^'")]+)['"]?\s*\)/gi)) {
|
|
354
|
+
const subset = fontFileSubset(url[1] ?? "");
|
|
355
|
+
if (subset) subsets.add(subset);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return [...subsets].sort();
|
|
359
|
+
}
|
|
360
|
+
function selfHostedStyles(css, family) {
|
|
361
|
+
const target = normalizeFamily(family);
|
|
362
|
+
const styles = /* @__PURE__ */ new Set();
|
|
363
|
+
for (const rule of stripCssComments(css).matchAll(/@font-face\s*\{([^}]*)\}/gi)) {
|
|
364
|
+
const body = rule[1] ?? "";
|
|
365
|
+
const declared = body.match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
366
|
+
if (declared && normalizeFamily(declared) === target) styles.add(faceStyle(body));
|
|
367
|
+
}
|
|
368
|
+
return [...styles].sort();
|
|
369
|
+
}
|
|
370
|
+
function fontsourceFamilies(css) {
|
|
371
|
+
const out = /* @__PURE__ */ new Set();
|
|
372
|
+
for (const imported of stripCssComments(css).matchAll(/@fontsource(-variable)?\/([\w-]+)/gi)) {
|
|
373
|
+
const slug = imported[2];
|
|
374
|
+
if (!slug) continue;
|
|
375
|
+
out.add(`${slug.replaceAll("-", " ")}${imported[1] ? " variable" : ""}`.toLowerCase());
|
|
376
|
+
}
|
|
377
|
+
return out;
|
|
378
|
+
}
|
|
379
|
+
function asAuthored(css, normalized) {
|
|
380
|
+
const escaped = normalized.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
381
|
+
const text = stripCssComments(css);
|
|
382
|
+
return text.match(new RegExp(`["']${escaped}["']`, "i"))?.[0]?.slice(1, -1) ?? text.match(new RegExp(`(?<![\\w-])${escaped}(?![\\w-])`, "i"))?.[0] ?? normalized;
|
|
383
|
+
}
|
|
384
|
+
function unresolvedBrandFamilies(css) {
|
|
385
|
+
const declared = [...parseBrandTokens(css).fonts].filter((family) => !GENERIC_FAMILIES.has(family));
|
|
386
|
+
const loaded = fontFaceFamilies(css);
|
|
387
|
+
return declared.filter((family) => !loaded.has(family)).map((family) => asAuthored(css, family));
|
|
388
|
+
}
|
|
389
|
+
function stripFontFaceBlocks(source, family, styles) {
|
|
390
|
+
const target = normalizeFamily(family);
|
|
391
|
+
const ranges = [];
|
|
392
|
+
for (const rule of stripCssComments(source).matchAll(/@font-face\s*\{([^}]*)\}/gi)) {
|
|
393
|
+
const body = rule[1] ?? "";
|
|
394
|
+
const declared = body.match(/font-family\s*:\s*([^;]+)/i)?.[1];
|
|
395
|
+
if (!declared || normalizeFamily(declared) !== target || rule.index === void 0) continue;
|
|
396
|
+
if (styles && !styles.has(faceStyle(body))) continue;
|
|
397
|
+
ranges.push([rule.index, rule.index + rule[0].length]);
|
|
398
|
+
}
|
|
399
|
+
let out = source;
|
|
400
|
+
for (const [start, end] of ranges.reverse()) out = `${out.slice(0, start)}${out.slice(end)}`;
|
|
401
|
+
return out.replace(/\n{3,}/g, "\n\n");
|
|
402
|
+
}
|
|
403
|
+
function faceStyle(body) {
|
|
404
|
+
return body.match(/font-style\s*:\s*([\w-]+)/i)?.[1]?.trim().toLowerCase() ?? "normal";
|
|
405
|
+
}
|
|
406
|
+
function declaredStyles(block) {
|
|
407
|
+
const styles = /* @__PURE__ */ new Set();
|
|
408
|
+
for (const rule of stripCssComments(block).matchAll(/@font-face\s*\{([^}]*)\}/gi))
|
|
409
|
+
styles.add(faceStyle(rule[1] ?? ""));
|
|
410
|
+
return styles;
|
|
411
|
+
}
|
|
412
|
+
function upsertFontFaceCss(css, family, block) {
|
|
413
|
+
const styles = declaredStyles(block);
|
|
414
|
+
const out = stripFontFaceBlocks(css, family, styles.size > 0 ? styles : void 0);
|
|
415
|
+
const themeAt = stripCssComments(out).search(/@theme\b/);
|
|
416
|
+
if (themeAt < 0) return `${out.trimEnd()}
|
|
417
|
+
|
|
418
|
+
${block}
|
|
419
|
+
`;
|
|
420
|
+
const head = out.slice(0, themeAt).trimEnd();
|
|
421
|
+
const tail = out.slice(themeAt);
|
|
422
|
+
return head ? `${head}
|
|
423
|
+
|
|
424
|
+
${block}
|
|
425
|
+
|
|
426
|
+
${tail}` : `${block}
|
|
427
|
+
|
|
428
|
+
${tail}`;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
export {
|
|
432
|
+
fontFileName,
|
|
433
|
+
renderFontFaceCss,
|
|
434
|
+
FONT_PROVIDERS,
|
|
435
|
+
suggestFamilies,
|
|
436
|
+
resolveBrandFaces,
|
|
437
|
+
missingFontFiles,
|
|
438
|
+
planFontAdoption,
|
|
439
|
+
fontsourceCatalogue,
|
|
440
|
+
googleFontRequests,
|
|
441
|
+
resolveFetchWeights,
|
|
442
|
+
DEFAULT_SUBSETS,
|
|
443
|
+
resolveFetchSubsets,
|
|
444
|
+
resolveFetchStyles,
|
|
445
|
+
checkFontRequests,
|
|
446
|
+
GENERIC_FAMILIES,
|
|
447
|
+
selfHostedWeights,
|
|
448
|
+
selfHostedSubsets,
|
|
449
|
+
selfHostedStyles,
|
|
450
|
+
fontsourceFamilies,
|
|
451
|
+
unresolvedBrandFamilies,
|
|
452
|
+
stripFontFaceBlocks,
|
|
453
|
+
upsertFontFaceCss
|
|
454
|
+
};
|
|
455
|
+
//# sourceMappingURL=chunk-75VNSKS3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/brand/fonts.ts"],"sourcesContent":["/**\n * Brand font resolution against Google Fonts.\n *\n * A font that doesn't load fails silently — the browser substitutes a fallback\n * and the page renders fine, just off-brand. These helpers turn \"we think the\n * brand uses Manrope 500\" into a verifiable fact: the exact CSS Google serves,\n * and the exact files behind it.\n */\n\nimport { posix } from \"node:path\";\nimport { parseBrandTokens } from \"../landing/lib/brand-tokens.ts\";\n\nconst GOOGLE_CSS2 = \"https://fonts.googleapis.com/css2\";\n\nexport type BrandFontFace = {\n /** Which catalogue served it, so a re-fetch cannot silently swap foundries. */\n provider?: FontProviderName;\n /** Unicode subset the face covers — \"latin\", \"cyrillic\", \"greek\", … */\n subset: string;\n family: string;\n style: string;\n weight: number;\n url: string;\n /** Kept verbatim: self-hosting more than one subset needs it, or the browser\n * picks the wrong file for the same family/weight and glyphs fall back. */\n unicodeRange: string;\n};\n\n/**\n * Split a Google Fonts stylesheet into its faces.\n *\n * Google returns one `@font-face` per unicode subset — six or more per weight —\n * and the subset name appears ONLY in the CSS comment above each block. Callers\n * that self-host want the latin subsets, not all of them, so that comment is\n * the only thing that makes the choice possible and it has to be parsed with\n * the block rather than stripped as noise.\n */\nexport function parseGoogleFontFaces(css: string): BrandFontFace[] {\n const faces: BrandFontFace[] = [];\n const re = /\\/\\*\\s*([\\w-]+)\\s*\\*\\/\\s*@font-face\\s*\\{([^}]*)\\}/g;\n for (const match of String(css).matchAll(re)) {\n const subset = match[1] ?? \"\";\n const body = match[2] ?? \"\";\n const family = body.match(/font-family\\s*:\\s*['\"]?([^'\";]+)['\"]?\\s*;/i)?.[1]?.trim();\n const url = body.match(/src\\s*:\\s*url\\(\\s*['\"]?([^'\")]+)['\"]?\\s*\\)/i)?.[1]?.trim();\n const weight = body.match(/font-weight\\s*:\\s*(\\d{3})\\s*;/i)?.[1];\n if (!family || !url || !weight) continue;\n faces.push({\n subset,\n family,\n style: body.match(/font-style\\s*:\\s*([\\w-]+)\\s*;/i)?.[1]?.trim() ?? \"normal\",\n weight: Number(weight),\n url,\n unicodeRange: body.match(/unicode-range\\s*:\\s*([^;]+);/i)?.[1]?.trim() ?? \"\",\n });\n }\n return faces;\n}\n\n/**\n * Filename for a self-hosted face. Family, weight, style and subset all go in:\n * Google ships a separate file per subset for the same family+weight, so\n * anything less specific silently overwrites one subset with another.\n */\nexport function fontFileName(face: BrandFontFace): string {\n const family = face.family.replace(/[^A-Za-z0-9]/g, \"\");\n const style = face.style === \"italic\" ? \"italic\" : \"\";\n return `${family}-${face.weight}${style}-${face.subset}.woff2`;\n}\n\n/**\n * `src: url()` for a self-hosted face, written from the point of view of\n * `src/styles/global.css` — the one stylesheet the block is ever pasted into.\n *\n * Relative on purpose. A root-relative `/src/brand/fonts/…` reads to the bundler\n * as a path something else already serves, so it is passed through untouched:\n * the woff2 never lands in the published build and every page 404s it. Nothing\n * fails loudly when that happens — an unfetchable face falls back to a system\n * font — so the whole site quietly renders off-brand. Kept relative, the\n * bundler follows it on disk, fingerprints it, and emits it with the build.\n */\nfunction fontFaceHref(face: BrandFontFace): string {\n return `../brand/fonts/${fontFileName(face)}`;\n}\n\n/**\n * The `@font-face` block to paste above `@theme` in global.css. `unicode-range`\n * is carried through verbatim so multiple subsets of one family coexist, and\n * `font-display: swap` matches what the export pipeline enforces at publish.\n */\nexport function renderFontFaceCss(faces: BrandFontFace[]): string {\n return faces\n .map((face) =>\n [\n \"@font-face {\",\n ` font-family: '${face.family}';`,\n ` font-style: ${face.style};`,\n ` font-weight: ${face.weight};`,\n \" font-display: swap;\",\n ` src: url('${fontFaceHref(face)}') format('woff2');`,\n ...(face.unicodeRange ? [` unicode-range: ${face.unicodeRange};`] : []),\n \"}\",\n ].join(\"\\n\"),\n )\n .join(\"\\n\");\n}\n\n/**\n * Catalogues a brand face can be self-hosted from, in resolution order.\n *\n * Google first and always: it is the canonical catalogue, and a family both\n * carry must resolve the same way on every run — otherwise a re-fetch silently\n * swaps which foundry's file the brand ships, with nothing failing.\n *\n * Modelled on `unjs/unifont`'s providers rather than importing it. The scaffold\n * carries a mirror of this file for the wiring migration, and that migration\n * runs from the extracted tarball with no node_modules — `run-migrations.mjs`\n * is zero-dependency on purpose. Depending on unifont here and hand-rolling\n * there would let the two resolve differently while the byte-identical CSS\n * contract test still passed, because it only compares emitted CSS.\n */\nexport const FONT_PROVIDERS = [\"google\", \"fontsource\"] as const;\nexport type FontProviderName = (typeof FONT_PROVIDERS)[number];\n\nconst FONTSOURCE_API = \"https://api.fontsource.org/v1\";\n\n/**\n * The two styles a catalogue self-host can cover. `oblique` is not one: no\n * catalogue ships it as an axis, so a face declaring it is one this command\n * cannot replace — `upsertFontFaceCss` leaves it standing rather than deleting\n * a rule nothing here can write back.\n */\nexport const FONT_STYLES = [\"normal\", \"italic\"] as const;\nexport type FontStyle = (typeof FONT_STYLES)[number];\n\n/** Google's `ital` axis value: upright is 0, italic is 1. */\nconst ITAL_AXIS: Record<FontStyle, number> = { normal: 0, italic: 1 };\n\n/** Fontsource's id, which is exactly the slugified family — verified across all 2096 entries. */\nexport function fontsourceId(family: string): string {\n return family\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\ntype FontsourceMeta = {\n family: string;\n weights: number[];\n styles: string[];\n subsets: string[];\n /** Per-subset `unicode-range`, keyed by subset name. Absent on single-subset families. */\n unicodeRange?: Record<string, string>;\n variants: Record<string, Record<string, Record<string, { url: Record<string, string> }>>>;\n};\n\n/**\n * Faces Fontsource serves for a family, or null when it does not carry it.\n *\n * The `unicode-range` comes from the API's own per-subset map and is NOT\n * optional once two subsets are in play: two rules with the same family, style\n * and weight and no range both cover everything, so the later one wins outright\n * and the other file is downloaded, fingerprinted, shipped and never read. On\n * `--subsets latin,latin-ext` that means latin-ext wins and ordinary text falls\n * back — the silent substitution this module exists to prevent.\n *\n * The field really is empty for some families, which is where the old blanket\n * `\"\"` came from: verified live, the ~120 entries Fontsource hosts itself (Open\n * Sauce One among them) are single-subset with no range, while the ~1976 it\n * mirrors from Google are multi-subset and carry the full map. One subset needs\n * no range — there is nothing to disambiguate from — so both stay correct.\n */\nexport function fontsourceFaces(\n meta: FontsourceMeta,\n weights: number[],\n subsets: string[],\n styles: readonly FontStyle[] = [\"normal\"],\n): BrandFontFace[] {\n const faces: BrandFontFace[] = [];\n for (const subset of subsets.filter((s) => meta.subsets.includes(s))) {\n for (const weight of weights.filter((w) => meta.weights.includes(w))) {\n for (const style of styles.filter((style) => meta.styles.includes(style))) {\n const url = meta.variants[String(weight)]?.[style]?.[subset]?.url?.woff2;\n if (!url) continue;\n faces.push({\n subset,\n family: meta.family,\n style,\n weight,\n url,\n unicodeRange: meta.unicodeRange?.[subset] ?? \"\",\n provider: \"fontsource\",\n });\n }\n }\n }\n return faces;\n}\n\n/**\n * Subsets that would ship as an `@font-face` nothing can tell apart.\n *\n * Only a problem in the plural: one subset with no range is a complete\n * self-host, two are a coin flip decided by source order.\n */\nexport function undisambiguatedSubsets(faces: BrandFontFace[]): string[] {\n if (new Set(faces.map((face) => face.subset)).size < 2) return [];\n return [...new Set(faces.filter((face) => !face.unicodeRange).map((face) => face.subset))];\n}\n\n/**\n * Families that look like what was asked for, so a miss is a next step rather\n * than a dead end.\n *\n * The case this exists for is real and not a typo: a client's stylesheet asks\n * for \"Open Sauce\", which no catalogue carries, while Fontsource has \"Open\n * Sauce One\", \"Open Sauce Sans\" and \"Open Sauce Two\". Nothing can pick between\n * those three for the brand, so this never auto-resolves — it just puts the\n * three real names in the error where the agent can act on them.\n */\nexport function suggestFamilies(wanted: string, catalogue: string[], limit = 5): string[] {\n const key = (s: string) =>\n s\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim();\n const target = key(wanted);\n if (!target) return [];\n const words = target.split(\" \");\n const scored = catalogue\n .map((family) => {\n const candidate = key(family);\n if (candidate === target) return { family, score: 0 };\n if (candidate.startsWith(target)) return { family, score: 1 };\n if (candidate.includes(target)) return { family, score: 2 };\n const shared = words.filter((w) => w.length > 2 && candidate.includes(w)).length;\n return { family, score: shared > 0 ? 3 + (words.length - shared) : Number.POSITIVE_INFINITY };\n })\n .filter((c) => Number.isFinite(c.score))\n .sort((a, b) => a.score - b.score || a.family.localeCompare(b.family));\n return scored.slice(0, limit).map((c) => c.family);\n}\n\n/** Narrow an untyped API body, so a shape change fails here and not at a `.url` deep inside. */\nfunction asFontsourceMeta(body: unknown): FontsourceMeta | null {\n if (typeof body !== \"object\" || body === null) return null;\n const meta = body as Partial<FontsourceMeta>;\n const ok =\n typeof meta.family === \"string\" &&\n Array.isArray(meta.weights) &&\n Array.isArray(meta.styles) &&\n Array.isArray(meta.subsets) &&\n typeof meta.variants === \"object\" &&\n meta.variants !== null;\n return ok ? (meta as FontsourceMeta) : null;\n}\n\n/**\n * What a catalogue lookup found. Three failures, kept apart because their fixes\n * are different sentences: an unknown NAME wants a near-match, a missing SUBSET\n * wants a different `--subsets`, a missing WEIGHT wants a different `--weights`.\n * Collapsing them sent a subset miss into the weight branch, which answered\n * `\"Inter\" exists but not at weight 400 — retry with --weights 400`: a\n * contradiction, and a loop for any agent that obeyed it.\n */\nexport type ResolveOutcome =\n | { ok: true; provider: FontProviderName; faces: BrandFontFace[]; availableStyles: string[] }\n | { ok: false; reason: \"unknown-family\" }\n | { ok: false; reason: \"unreachable\"; provider: FontProviderName }\n | { ok: false; reason: \"subset\"; provider: FontProviderName; available: string[] }\n | { ok: false; reason: \"ambiguous-subsets\"; provider: FontProviderName; available: string[] }\n | { ok: false; reason: \"weight\"; provider: FontProviderName; available: number[] };\n\n/**\n * What Google said, as opposed to whether we heard it. `absent` is Google\n * answering that it does not carry the family — it replies 400, not 404, and\n * only to that. Every other status, and every thrown request, is `unreachable`:\n * we never got an answer, which is not the same fact and must not be acted on\n * as though it were.\n */\nexport type GoogleCssLookup = { status: \"served\"; css: string } | { status: \"absent\" } | { status: \"unreachable\" };\n\nexport type ProviderDeps = {\n lookupGoogleCss: (url: string) => Promise<GoogleCssLookup>;\n fetchJson: (url: string) => Promise<unknown>;\n};\n\n/**\n * Everything Google serves for a family, in ONE request: every standard weight\n * against both styles. Measured — a request is refused only when EVERY tuple in\n * it is missing, so asking for all eighteen returns exactly the ones that exist.\n *\n * It used to ask one weight at a time, nine at once, on the belief that Google\n * rejects the whole request over a single missing weight. It does not (`Lato\n * wght@400;500` answers 200 with 400 alone), and the burst was actively\n * harmful: Google answers a rapid series of requests with **400**, which this\n * module reads as `absent` — \"Google does not carry it\" — and acts on by\n * self-hosting another foundry's build, permanently. Nine requests per family\n * is how you provoke that; one is not.\n *\n * `null` means the probe never got an answer, which is not the same fact as\n * \"none of them\" and must not be acted on as though it were.\n */\nasync function probeGoogleFaces(\n family: string,\n lookup: ProviderDeps[\"lookupGoogleCss\"],\n): Promise<BrandFontFace[] | null> {\n const got = await lookup(googleFontCssUrl(family, STANDARD_WEIGHTS, FONT_STYLES));\n if (got.status === \"unreachable\") return null;\n return got.status === \"served\" ? parseGoogleFontFaces(got.css) : [];\n}\n\n/**\n * What Google can answer for this family, or null to mean \"not ours — ask the\n * next catalogue\". Split out so the Fontsource half below stays readable.\n */\nasync function resolveFromGoogle(\n family: string,\n weights: number[],\n subsets: string[],\n styles: readonly FontStyle[],\n deps: ProviderDeps,\n): Promise<ResolveOutcome | null> {\n // Both axes, always — even when only the upright is wanted. It is the same\n // ONE request either way (measured: a family with no italic answers 200 with\n // the italic tuples silently dropped, it is not refused), and it is the only\n // way to know whether the family HAS an italic the brand is not taking. Asked\n // narrowly, that question can only be answered by a second request nobody\n // would spend, so the gap stayed invisible. The wanted styles filter below.\n const google = await deps.lookupGoogleCss(googleFontCssUrl(family, weights, FONT_STYLES));\n // A timeout is not an answer. Falling through to Fontsource here self-hosts\n // its build of a family Google carries — the foundry swap the contract above\n // forbids — and once the files are on disk the swap is permanent, decided by\n // one bad minute. Better to fail and be re-run.\n if (google.status === \"unreachable\") return { ok: false, reason: \"unreachable\", provider: \"google\" };\n\n if (google.status === \"absent\") {\n // A refusal means every tuple asked for is missing — which is true both of\n // a name Google has never heard of and of a family asked for at weights it\n // does not ship. Taken as the former, `fetch \"Lato\" --weights 500` would\n // self-host Fontsource's build of a family Google carries. Ask once more,\n // for everything, and let the answer decide.\n const served = await probeGoogleFaces(family, deps.lookupGoogleCss);\n if (served === null) return { ok: false, reason: \"unreachable\", provider: \"google\" };\n const available = [...new Set(served.map((face) => face.weight))].sort((a, b) => a - b);\n return available.length > 0 ? { ok: false, reason: \"weight\", provider: \"google\", available } : null;\n }\n\n const served = parseGoogleFontFaces(google.css);\n if (served.length === 0) return null;\n const availableStyles = [...new Set(served.map((face) => face.style))].sort();\n // Subset first, style second, and in that order: a face is only ever upright\n // or italic and upright is always among the styles asked for, so a family\n // whose subset matched can never be emptied by the style filter — which is\n // why a style miss needs no branch of its own.\n const inSubset = served.filter((face) => subsets.includes(face.subset));\n const faces = inSubset\n .filter((face) => styles.includes(face.style as FontStyle))\n .map((face) => ({ ...face, provider: \"google\" as const }));\n if (faces.length > 0) return { ok: true, provider: \"google\", faces, availableStyles };\n return { ok: false, reason: \"subset\", provider: \"google\", available: [...new Set(served.map((f) => f.subset))] };\n}\n\n/**\n * The faces some catalogue really serves for a family, and which one served\n * them — or null when none carries it.\n *\n * Google is tried first and wins outright: it is the canonical catalogue, and\n * a family both carry has to resolve the same way every run or a re-fetch\n * silently swaps which foundry's file the brand ships.\n */\nexport async function resolveBrandFaces(\n family: string,\n weights: number[],\n subsets: string[],\n deps: ProviderDeps,\n styles: readonly FontStyle[] = [\"normal\"],\n): Promise<ResolveOutcome> {\n const google = await resolveFromGoogle(family, weights, subsets, styles, deps);\n if (google) return google;\n\n // Same rule as Google's, for the same reason: a catalogue that did not answer\n // has not said the family is missing. `fetchJson` throws for that case and\n // returns null only for Fontsource's own 404, so a 503 cannot end up telling\n // the agent to check its spelling or hand-write an @font-face.\n let body: unknown;\n try {\n body = await deps.fetchJson(`${FONTSOURCE_API}/fonts/${fontsourceId(family)}`);\n } catch {\n return { ok: false, reason: \"unreachable\", provider: \"fontsource\" };\n }\n\n const meta = asFontsourceMeta(body);\n if (meta) {\n const faces = fontsourceFaces(meta, weights, subsets, styles);\n const ambiguous = undisambiguatedSubsets(faces);\n if (ambiguous.length > 0) {\n return { ok: false, reason: \"ambiguous-subsets\", provider: \"fontsource\", available: meta.subsets };\n }\n if (faces.length > 0) return { ok: true, provider: \"fontsource\", faces, availableStyles: [...meta.styles].sort() };\n if (!subsets.some((subset) => meta.subsets.includes(subset))) {\n return { ok: false, reason: \"subset\", provider: \"fontsource\", available: meta.subsets };\n }\n return { ok: false, reason: \"weight\", provider: \"fontsource\", available: meta.weights };\n }\n\n return { ok: false, reason: \"unknown-family\" };\n}\n\n/**\n * Rewrite a face's `url()`s so they resolve from `global.css` rather than from\n * the file that declared them.\n *\n * A page sits at `src/pages/<name>/index.astro` and writes `../../brand/fonts/x`;\n * the stylesheet sits at `src/styles/global.css`, where the same file is\n * `../brand/fonts/x`. Getting this wrong is the silent 404 the whole module\n * warns about, so absolute, data: and http: hrefs are left exactly as found.\n */\nexport function rebaseFontFaceSrc(block: string, fromDir: string, toDir = \"src/styles\"): string {\n return block.replace(/url\\(\\s*(['\"]?)([^'\")]+)\\1\\s*\\)/gi, (whole, _quote, href: string) => {\n if (!isRepoFontHref(href)) return whole;\n const target = posix.normalize(posix.join(fromDir, href));\n return `url('${posix.relative(toDir, target)}')`;\n });\n}\n\n/** The `@font-face` blocks a source file declares, verbatim, comments excluded. */\nfunction declaredFontFaces(source: string): { family: string; block: string }[] {\n const out: { family: string; block: string }[] = [];\n // Ranges come from the comment-blanked copy, which is the same length, so a\n // commented-out face is invisible here and is never moved.\n for (const rule of stripCssComments(source).matchAll(/@font-face\\s*\\{[^}]*\\}/gi)) {\n const family = rule[0].match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (!family || rule.index === undefined) continue;\n out.push({ family: normalizeFamily(family), block: source.slice(rule.index, rule.index + rule[0].length) });\n }\n return out;\n}\n\nexport type AdoptionPlan = { family: string; blocks: string[]; files: string[]; urls: string[] };\n\n/**\n * An href this repo is expected to ship a file for.\n *\n * The same set `rebaseFontFaceSrc` refuses to rewrite: a `data:`, `http(s):` or\n * root-relative href means the same thing from any directory, so it is not\n * ours to resolve against `src/brand/fonts/`.\n */\nfunction isRepoFontHref(href: string): boolean {\n return !/^(?:data:|https?:|\\/)/i.test(href);\n}\n\n/**\n * The files a plan points at that are not in `src/brand/fonts/`.\n *\n * Remote and absolute hrefs are skipped, exactly as `validate-brand-fonts`\n * skips them: they are not files this repo ships, so basenaming them against\n * the fonts directory reported a face that loads perfectly well as a missing\n * file, and `adopt` refused to move it.\n */\nexport function missingFontFiles(urls: string[], available: Set<string>): string[] {\n return urls\n .filter(isRepoFontHref)\n .map((url) => posix.basename(url.split(\"?\")[0] ?? \"\"))\n .filter((file) => !available.has(file));\n}\n\n/**\n * How to move faces a page already ships into `global.css`.\n *\n * The `--font-*` token lives in `@theme` and governs every page; a page's own\n * `<style>` ships only with that page. So one page declaring the brand face\n * leaves the rest on a fallback — measured on a live client, the body font\n * painted on 1 page of 6. Adopting what is on disk beats downloading the same\n * family from a catalogue, which would hand that page a different build of the\n * face and change how it renders.\n *\n * A family two files declare DIFFERENTLY is refused rather than merged: one\n * global scope can hold only one mapping, so picking a winner would silently\n * repaint whichever page lost.\n */\nexport function planFontAdoption(\n sources: { path: string; source: string }[],\n families: string[],\n): { plans: AdoptionPlan[]; conflicts: { family: string; files: string[] }[] } {\n const wanted = new Map(families.map((family) => [normalizeFamily(family), family]));\n const byFamily = new Map<string, Map<string, string[]>>();\n\n for (const { path, source } of sources) {\n const dir = posix.dirname(path);\n for (const face of declaredFontFaces(source)) {\n if (!wanted.has(face.family)) continue;\n const perFile = byFamily.get(face.family) ?? new Map<string, string[]>();\n perFile.set(path, [...(perFile.get(path) ?? []), rebaseFontFaceSrc(face.block, dir)]);\n byFamily.set(face.family, perFile);\n }\n }\n\n const plans: AdoptionPlan[] = [];\n const conflicts: { family: string; files: string[] }[] = [];\n for (const [family, perFile] of byFamily) {\n const display = wanted.get(family) ?? family;\n const files = [...perFile.keys()];\n // Byte-identical declarations in two files are a copy-paste, not a\n // disagreement; differing ones cannot both survive one global scope.\n const shapes = new Set([...perFile.values()].map((blocks) => blocks.join(\"\\n\")));\n if (shapes.size > 1) {\n conflicts.push({ family: display, files });\n continue;\n }\n const blocks = perFile.get(files[0] ?? \"\") ?? [];\n const urls = blocks.flatMap((block) =>\n [...block.matchAll(/url\\(\\s*['\"]?([^'\")]+)['\"]?\\s*\\)/gi)].map((m) => m[1] ?? \"\"),\n );\n plans.push({ family: display, blocks, files, urls });\n }\n return { plans, conflicts };\n}\n\n/**\n * Every family Fontsource lists, for near-match suggestions. Empty if the call\n * fails — this only enriches an error that is already being reported, so an\n * unreachable catalogue costs a \"did you mean\" and must not replace the real\n * failure with its own.\n */\nexport async function fontsourceCatalogue(deps: Pick<ProviderDeps, \"fetchJson\">): Promise<string[]> {\n const body = await deps.fetchJson(`${FONTSOURCE_API}/fonts`).catch(() => null);\n if (!Array.isArray(body)) return [];\n return body\n .map((entry) => (typeof entry === \"object\" && entry !== null ? (entry as { family?: unknown }).family : null))\n .filter((family): family is string => typeof family === \"string\");\n}\n\nexport type GoogleFontRequest = { family: string; weights: number[] };\n\n/**\n * Weights in a `wght` axis spec. Handles the list (`400;700`), the italic tuple\n * (`ital,wght@0,400;1,700` — weight is last in each tuple) and the variable\n * range (`400..700`, which really does ship every step in between).\n */\nfunction parseWeightAxis(spec: string): number[] {\n const axis = spec.match(/wght@([^&]+)/i)?.[1] ?? \"\";\n const weights = new Set<number>();\n for (const tuple of axis.split(\";\")) {\n const last = tuple.split(\",\").pop()?.trim() ?? \"\";\n const range = last.match(/^(\\d{3})\\.\\.(\\d{3})$/);\n if (range) {\n for (let w = Number(range[1]); w <= Number(range[2]); w += 100) weights.add(w);\n } else if (/^\\d{3}$/.test(last)) {\n weights.add(Number(last));\n }\n }\n return [...weights].sort((a, b) => a - b);\n}\n\n/**\n * What a brand stylesheet ASKS Google for. This is only the request — whether\n * Google actually serves that family at that weight is a separate question, and\n * the whole reason `baker brand fonts check` exists.\n */\nexport function googleFontRequests(css: string): GoogleFontRequest[] {\n const out: GoogleFontRequest[] = [];\n // `;` must stay INSIDE the match: it separates weights (`wght@400;600`).\n // Quotes and `)` already terminate the URL in every form CSS allows.\n for (const link of String(css).matchAll(/fonts\\.googleapis\\.com\\/[^\\s\"')]+/gi)) {\n for (const param of link[0].matchAll(/[?&]family=([^&]+)/gi)) {\n const [namePart, ...specParts] = (param[1] ?? \"\").split(\":\");\n const family = decodeURIComponent((namePart ?? \"\").replaceAll(\"+\", \" \")).trim();\n if (!family) continue;\n out.push({ family, weights: parseWeightAxis(specParts.join(\":\")) });\n }\n }\n return out;\n}\n\n/**\n * Weights for `fonts fetch`: an explicit `--weights` flag wins, otherwise the\n * weights `global.css` already provides for that family, otherwise 400.\n *\n * `declared` is EMPTY — not undefined — when the family is imported without a\n * `wght` axis (`?family=Manrope&display=swap`), so the fallback has to test\n * length rather than nullishness or that import resolves to \"no weights at all\".\n *\n * A flag with nothing usable in it returns `[]` on purpose: the caller reports\n * that as a bad flag, which is a different failure from \"nothing declared\".\n */\nexport function resolveFetchWeights(flag: string | undefined, declared: number[] | undefined): number[] {\n if (flag) {\n return String(flag)\n .split(\",\")\n .map((w) => Number(w.trim()))\n .filter((w) => Number.isInteger(w) && w >= 100 && w <= 900);\n }\n return declared?.length ? declared : [400];\n}\n\n/** The subset a brand gets when nothing else says otherwise. */\nexport const DEFAULT_SUBSETS = [\"latin\"] as const;\n\n/**\n * Subsets for `fonts fetch`: an explicit `--subsets` flag wins, otherwise the\n * subsets `global.css` already self-hosts for that family, otherwise `latin`.\n *\n * The same rule as `resolveFetchWeights`, for the same reason. `fetch` replaces\n * the family's rules rather than adding to them, so defaulting a re-run to\n * `latin` deleted the latin-ext face an earlier `--subsets latin,latin-ext`\n * downloaded and orphaned its file — with nothing failing, because the family\n * is still resolved, while every accented character falls back to a system font.\n */\nexport function resolveFetchSubsets(flag: string | undefined, selfHosted: string[]): string[] {\n const asked = String(flag ?? \"\")\n .split(\",\")\n .map((subset) => subset.trim())\n .filter(Boolean);\n const named = flag ? [...new Set(asked)] : selfHosted;\n return named.length > 0 ? named : [...DEFAULT_SUBSETS];\n}\n\n/**\n * Styles for `fonts fetch`: `--italic` asks for both, and so does a stylesheet\n * that already self-hosts an italic for the family.\n *\n * Deliberately NOT symmetric with `--weights` and `--subsets`, which narrow. An\n * upright face is what the `--font-*` token resolves to, so it is never dropped;\n * and there is no `--no-italic`, because narrowing italics away is the silent\n * loss this whole path exists to prevent — deleting the rule is how you do that\n * on purpose.\n */\nexport function resolveFetchStyles(italic: boolean | undefined, selfHosted: readonly string[]): FontStyle[] {\n return italic || selfHosted.includes(\"italic\") ? [\"normal\", \"italic\"] : [\"normal\"];\n}\n\n/**\n * Google's `family=` value: spaces become `+`, weights become one sorted axis.\n *\n * Each whitespace-separated token is percent-encoded before the `+` join, so a\n * mistyped or pasted name carrying `&`, `#` or `=` fails cleanly instead of\n * corrupting the query — a bare `#` would otherwise truncate everything after\n * it, and Google would answer for the default weight as if all were fine.\n *\n * Asking for italic switches the whole spec to the two-axis TUPLE form\n * (`ital,wght@0,400;1,400`), and both orderings are load-bearing: axis names\n * must be alphabetical and tuples ascending. Measured — `wght,ital@400,0` is\n * NOT rejected, it answers 200 with the upright faces only, so getting the\n * order wrong looks exactly like a family with no italic.\n */\nexport function googleFontCssUrl(family: string, weights: number[], styles: readonly FontStyle[] = [\"normal\"]): string {\n const name = family.trim().split(/\\s+/).map(encodeURIComponent).join(\"+\");\n const sorted = [...new Set(weights)].sort((a, b) => a - b);\n if (sorted.length === 0) return `${GOOGLE_CSS2}?family=${name}&display=swap`;\n // The single-axis form stays byte-identical for an upright-only request, so\n // nothing that never asks for italic changes what it puts on the wire.\n const wanted = FONT_STYLES.filter((style) => styles.includes(style));\n const spec =\n wanted.length > 1\n ? `${name}:ital,wght@${wanted.flatMap((style) => sorted.map((w) => `${ITAL_AXIS[style]},${w}`)).join(\";\")}`\n : `${name}:wght@${sorted.join(\";\")}`;\n return `${GOOGLE_CSS2}?family=${spec}&display=swap`;\n}\n\n/** The weights Google Fonts exposes as discrete steps on the `wght` axis. */\nconst STANDARD_WEIGHTS = [100, 200, 300, 400, 500, 600, 700, 800, 900];\n\nexport type FontCheckResult = {\n family: string;\n requested: number[];\n served: number[];\n missing: number[];\n subsets: string[];\n /** Only set when the family/weight combination was rejected outright. */\n cause?: \"unknown-family\" | \"unavailable-weight\";\n};\n\nexport type FetchCss = (url: string) => Promise<string | null>;\n\n/**\n * Which of the standard weights Google really serves for a family, in ONE\n * request. Google refuses a request only when EVERY weight in it is missing, so\n * asking for all nine returns exactly the ones that exist.\n *\n * This used to fan out nine concurrent requests per family, on the belief that\n * the whole set would be rejected over one missing weight. It is not — and the\n * fan-out was what made it dangerous: a rapid series of requests is answered\n * **400**, indistinguishable here from \"Google does not serve this\", so a\n * three-family brand firing 27 requests could report a real family as unknown.\n * Runs only on the failure path, where the alternative is telling the agent to\n * re-run the command that just failed.\n */\nasync function probeServedWeights(family: string, fetchCss: FetchCss): Promise<number[]> {\n const css = await fetchCss(googleFontCssUrl(family, STANDARD_WEIGHTS));\n if (css === null) return [];\n return [...new Set(parseGoogleFontFaces(css).map((face) => face.weight))].sort((a, b) => a - b);\n}\n\n/**\n * Ask Google what it ACTUALLY serves for each family a stylesheet requests.\n *\n * `fetchCss` is injected so the whole decision table is testable without the\n * network. Every result carries `served` — including the failures, because\n * `check` is precisely the command an agent runs to learn which weights it may\n * use, and an error that omits them can only advise running `check` again.\n */\nexport async function checkFontRequests(requests: GoogleFontRequest[], fetchCss: FetchCss): Promise<FontCheckResult[]> {\n const results: FontCheckResult[] = [];\n for (const request of requests) {\n const css = await fetchCss(googleFontCssUrl(request.family, request.weights));\n if (css === null) {\n // A refusal means every weight asked for is missing, which is ambiguous:\n // wrong name, or a real family at other weights? Ask for all nine.\n const served = await probeServedWeights(request.family, fetchCss);\n results.push({\n family: request.family,\n requested: request.weights,\n served,\n missing: request.weights.filter((w) => !served.includes(w)),\n subsets: [],\n cause: served.length === 0 ? \"unknown-family\" : \"unavailable-weight\",\n });\n continue;\n }\n const faces = parseGoogleFontFaces(css);\n const served = [...new Set(faces.map((f) => f.weight))].sort((a, b) => a - b);\n results.push({\n family: request.family,\n requested: request.weights,\n served,\n missing: request.weights.filter((w) => !served.includes(w)),\n subsets: [...new Set(faces.map((f) => f.subset))],\n });\n }\n return results;\n}\n\n/**\n * Families that are a fallback stack, not a commitment — none of them names a\n * face that has to load. Mirrors `GENERIC_FAMILIES` in the scaffold's\n * `__tooling__/checks/sdk/theme-css.mjs`; the scaffold sits outside this pnpm\n * workspace so it cannot be imported, and `__tests__/theme-css-contract.test.ts`\n * is the seam that keeps the two sets identical.\n */\nexport const GENERIC_FAMILIES = new Set([\n \"sans-serif\",\n \"serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-sans-serif\",\n \"ui-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"arial\",\n \"helvetica\",\n \"georgia\",\n \"times\",\n \"courier\",\n \"inherit\",\n \"initial\",\n \"unset\",\n]);\n\n/**\n * Blank out comments while keeping every byte and newline in place, so an index\n * into the stripped copy still addresses the same character of the original.\n * `upsertFontFaceCss` depends on that: it finds ranges in the blanked copy and\n * splices them out of the real file.\n */\nexport function stripCssComments(css: string): string {\n return css.replace(/\\/\\*[\\s\\S]*?\\*\\//g, (block) => block.replace(/[^\\n]/g, \" \"));\n}\n\nfunction normalizeFamily(raw: string): string {\n return raw\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\")\n .trim()\n .toLowerCase();\n}\n\n/** Families a local `@font-face` in this stylesheet actually provides. */\nfunction fontFaceFamilies(css: string): Set<string> {\n const out = new Set<string>();\n for (const rule of stripCssComments(css).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi)) {\n const family = (rule[1] ?? \"\").match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (family) out.add(normalizeFamily(family));\n }\n return out;\n}\n\n/**\n * The weights one `@font-face` body declares.\n *\n * `font-weight: 100 900` on a variable face declares the WHOLE range — it is\n * what Google returns for `wght@100..900`, and what the scaffold's\n * `validate-brand-fonts` has always read it as. Taking the first number alone\n * resolved a re-fetch to `[100]`; since `fetch` replaces the family's rules,\n * that deleted 200-900 and left every heading rendering hairline.\n */\nfunction declaredWeights(body: string): number[] {\n const spec = (body.match(/font-weight\\s*:\\s*([^;}]+)/i)?.[1] ?? \"\").match(/\\d{3}/g) ?? [];\n if (spec.length !== 2) return spec.map(Number);\n const range: number[] = [];\n for (let w = Number(spec[0]); w <= Number(spec[1]); w += 100) range.push(w);\n return range;\n}\n\n/**\n * Weights the stylesheet already self-hosts for `family`.\n *\n * `fetch` puts the downloaded faces IN CHARGE of the family — it drops the\n * existing rules rather than adding to them — so with no `--weights` and no\n * Google import to read, a second run resolved to 400 alone, deleted the 700\n * rule and orphaned its file. Nothing caught it: the family is still resolved,\n * so `check` and the client's verify both stay green while every bold word on\n * the site renders as synthesized faux-bold. The first run is what removes the\n * import, so this is the second run of the documented recipe, not an edge case.\n */\nexport function selfHostedWeights(css: string, family: string): number[] {\n const target = normalizeFamily(family);\n const weights = new Set<number>();\n for (const rule of stripCssComments(css).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi)) {\n const body = rule[1] ?? \"\";\n const declared = body.match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (!declared || normalizeFamily(declared) !== target) continue;\n for (const weight of declaredWeights(body)) weights.add(weight);\n }\n return [...weights].sort((a, b) => a - b);\n}\n\n/**\n * The subset segment of a file `fontFileName` produced, or null for any other\n * name — a hand-written face says nothing about which subset it covers.\n */\nfunction fontFileSubset(href: string): string | null {\n const file = posix.basename((href.split(\"?\")[0] ?? \"\").split(\"#\")[0] ?? \"\");\n return /^[A-Za-z0-9]+-[1-9]00(?:italic)?-([\\w-]+)\\.woff2$/.exec(file)?.[1] ?? null;\n}\n\n/**\n * Subsets the stylesheet already self-hosts for `family`.\n *\n * `selfHostedWeights`' other half, and it exists for the same failure: `fetch`\n * replaces the family's rules, so a re-run with no `--subsets` narrowed a family\n * an earlier `--subsets latin,latin-ext` had widened, dropping the latin-ext\n * rule and orphaning its file while every accented character fell back.\n *\n * Read from the file NAME rather than the rule, because a subset survives in\n * CSS only as its `unicode-range` and nothing maps that back to a name —\n * `fontFileName` puts it in the name, so the rules `fetch` wrote read back.\n * Anything else reports nothing and takes the default, exactly as before.\n */\nexport function selfHostedSubsets(css: string, family: string): string[] {\n const target = normalizeFamily(family);\n const subsets = new Set<string>();\n for (const rule of stripCssComments(css).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi)) {\n const body = rule[1] ?? \"\";\n const declared = body.match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (!declared || normalizeFamily(declared) !== target) continue;\n for (const url of body.matchAll(/url\\(\\s*['\"]?([^'\")]+)['\"]?\\s*\\)/gi)) {\n const subset = fontFileSubset(url[1] ?? \"\");\n if (subset) subsets.add(subset);\n }\n }\n return [...subsets].sort();\n}\n\n/**\n * Styles the stylesheet already self-hosts for `family`.\n *\n * The third axis `fetch` has to read back, after weights and subsets, and the\n * one with the sharpest edge: an italic face is not something `fetch` can\n * rebuild from a flag it was not given, so a re-run that ignored it left the\n * rule pointing at a file nothing had refreshed.\n */\nexport function selfHostedStyles(css: string, family: string): string[] {\n const target = normalizeFamily(family);\n const styles = new Set<string>();\n for (const rule of stripCssComments(css).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi)) {\n const body = rule[1] ?? \"\";\n const declared = body.match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (declared && normalizeFamily(declared) === target) styles.add(faceStyle(body));\n }\n return [...styles].sort();\n}\n\n/**\n * Families a stylesheet tries to load from an `@fontsource*` package.\n *\n * NOT a way to resolve a family. The package ships the `@font-face` rules, but\n * `package.json` and `pnpm-lock.yaml` are force-synced from a scaffold that\n * declares no @fontsource dependency — so the package is erased on the next sync,\n * the import resolves to nothing, and the build fails. Reported, never trusted.\n */\nexport function fontsourceFamilies(css: string): Set<string> {\n const out = new Set<string>();\n for (const imported of stripCssComments(css).matchAll(/@fontsource(-variable)?\\/([\\w-]+)/gi)) {\n const slug = imported[2];\n if (!slug) continue;\n // Verified against the published packages: `@fontsource/ibm-plex-mono`\n // registers \"IBM Plex Mono\", but `@fontsource-variable/inter` registers\n // \"Inter Variable\" — NOT \"Inter\". Dropping that suffix would clear a token\n // saying \"Inter\" that the package does not actually provide.\n out.add(`${slug.replaceAll(\"-\", \" \")}${imported[1] ? \" variable\" : \"\"}`.toLowerCase());\n }\n return out;\n}\n\n/**\n * The family as the stylesheet authored it, for a readable message.\n *\n * Quoted form first: an unquoted scan matches the first case-insensitive hit\n * anywhere, so `@import \"@fontsource-variable/inter\"` beat the `\"Inter\"` token\n * and the error named the family \"inter\".\n */\nfunction asAuthored(css: string, normalized: string): string {\n const escaped = normalized.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const text = stripCssComments(css);\n return (\n text.match(new RegExp(`[\"']${escaped}[\"']`, \"i\"))?.[0]?.slice(1, -1) ??\n text.match(new RegExp(`(?<![\\\\w-])${escaped}(?![\\\\w-])`, \"i\"))?.[0] ??\n normalized\n );\n}\n\n/**\n * Brand faces committed by a `--font-*` token that nothing in the stylesheet\n * loads — no local `@font-face`, no Google Fonts import.\n *\n * This is the failure `baker brand fonts check` used to miss entirely. It only\n * ever looked at Google requests, so a stylesheet with no `@import` at all\n * answered `selfHosted: true` — claiming self-hosted when nothing hosted the\n * font. Measured across the fleet, 56 of 60 client repos have no Google import,\n * so that was the answer almost everyone got, and the only thing that caught it\n * was the scaffold validator at verify time, long after the brand was written.\n *\n * The token side is `parseBrandTokens` rather than another regex on purpose:\n * four independent copies of that pattern once read `--text-h1--font-weight: 700`\n * as a face called \"700\".\n *\n * An `@fontsource` import does not count as loading the family — the dependency\n * cannot survive a sync — so those families are reported here too. Same verdict\n * as the scaffold validator, which names that case specifically.\n */\nexport function unresolvedBrandFamilies(css: string): string[] {\n const declared = [...parseBrandTokens(css).fonts].filter((family) => !GENERIC_FAMILIES.has(family));\n // Local `@font-face` only. A font-CDN `@import` does not put a face on the\n // page here: Astro merges component CSS ahead of global.css into one inlined\n // `<style>`, so the import lands after rules and the browser drops it —\n // measured on an affected client's live site, which makes zero requests to\n // googleapis and renders body text at the generated fallback's exact width.\n const loaded = fontFaceFamilies(css);\n return declared.filter((family) => !loaded.has(family)).map((family) => asAuthored(css, family));\n}\n\n/**\n * Put `block` in charge of `family`: drop the stylesheet's existing faces for\n * it and insert the new ones above `@theme`, where Tailwind still reads the\n * token block. Idempotent, so re-fetching a family never stacks duplicates.\n *\n * `fonts fetch` used to return this block as a hint for the agent to paste by\n * hand. It downloaded the files either way, so a skipped paste left a repo with\n * fonts on disk and nothing loading them — one client had 44 font files and\n * zero `@font-face` rules.\n */\nexport function stripFontFaceBlocks(source: string, family: string, styles?: Set<string>): string {\n const target = normalizeFamily(family);\n const ranges: [number, number][] = [];\n // Ranges come from the comment-blanked copy, which is the same length as the\n // original — so a commented-out face is invisible here and survives untouched.\n for (const rule of stripCssComments(source).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi)) {\n const body = rule[1] ?? \"\";\n const declared = body.match(/font-family\\s*:\\s*([^;]+)/i)?.[1];\n if (!declared || normalizeFamily(declared) !== target || rule.index === undefined) continue;\n if (styles && !styles.has(faceStyle(body))) continue;\n ranges.push([rule.index, rule.index + rule[0].length]);\n }\n let out = source;\n for (const [start, end] of ranges.reverse()) out = `${out.slice(0, start)}${out.slice(end)}`;\n return out.replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\n/** A face's `font-style`, defaulting to what CSS means by its absence. */\nfunction faceStyle(body: string): string {\n return (\n body\n .match(/font-style\\s*:\\s*([\\w-]+)/i)?.[1]\n ?.trim()\n .toLowerCase() ?? \"normal\"\n );\n}\n\n/** The styles a replacement block covers — anything else it cannot stand in for. */\nfunction declaredStyles(block: string): Set<string> {\n const styles = new Set<string>();\n for (const rule of stripCssComments(block).matchAll(/@font-face\\s*\\{([^}]*)\\}/gi))\n styles.add(faceStyle(rule[1] ?? \"\"));\n return styles;\n}\n\nexport function upsertFontFaceCss(css: string, family: string, block: string): string {\n // Only the styles `block` actually covers are dropped. `fetch` emits nothing\n // but `font-style: normal` — Google is asked without an `ital` axis and\n // Fontsource is read at `.normal` — so clearing the family outright deleted\n // an italic rule it could not put back, orphaning its file and leaving every\n // italic word faux-obliqued while the family stayed resolved and verify green.\n const styles = declaredStyles(block);\n const out = stripFontFaceBlocks(css, family, styles.size > 0 ? styles : undefined);\n\n const themeAt = stripCssComments(out).search(/@theme\\b/);\n if (themeAt < 0) return `${out.trimEnd()}\\n\\n${block}\\n`;\n\n const head = out.slice(0, themeAt).trimEnd();\n const tail = out.slice(themeAt);\n return head ? `${head}\\n\\n${block}\\n\\n${tail}` : `${block}\\n\\n${tail}`;\n}\n"],"mappings":"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","names":["style","served","blocks"]}
|