shopify 4.9.2 → 4.9.3
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/dist/analytics-CLYTLX2B.js +1 -0
- package/dist/analytics-K6IFFIPX.js +1 -0
- package/dist/bootstrap.js +1 -1
- package/dist/{chunk-ELJ34WWD.js → chunk-2E2NYRQH.js} +1 -1
- package/dist/{chunk-JUCOIXG5.js → chunk-2GYIQINP.js} +1 -1
- package/dist/{chunk-FNKTF2OF.js → chunk-2NRFFAV4.js} +1 -1
- package/dist/{chunk-4565O5TG.js → chunk-2S7WRX2J.js} +1 -1
- package/dist/{chunk-HKZ75UKL.js → chunk-2WQGEYBB.js} +1 -1
- package/dist/{chunk-N4AR2B6D.js → chunk-32HWTEOM.js} +1 -1
- package/dist/chunk-3B3CJS5I.js +1 -0
- package/dist/chunk-3FCN4NS6.js +6 -0
- package/dist/{chunk-CDIKRQ6M.js → chunk-3FPVTPQO.js} +1 -1
- package/dist/{chunk-JCKA3O5A.js → chunk-3JN6OWIO.js} +1 -1
- package/dist/{chunk-CNAMKKAK.js → chunk-3U2OMG7L.js} +1 -1
- package/dist/{chunk-3ZL4TDTH.js → chunk-3YAD263J.js} +1 -1
- package/dist/{chunk-OXN2DID2.js → chunk-43DSLBSX.js} +1 -1
- package/dist/{chunk-I55L6FOM.js → chunk-46I3BQZH.js} +1 -1
- package/dist/{chunk-5BO5HCN6.js → chunk-4J7HQGWI.js} +1 -1
- package/dist/{chunk-46U6C6C6.js → chunk-4LTQEQ4O.js} +1 -1
- package/dist/{chunk-TWS34WUT.js → chunk-4MUH4E2U.js} +1 -1
- package/dist/{chunk-EZ5F4ZFY.js → chunk-4Q5TSWQL.js} +3 -3
- package/dist/{chunk-IQIUFTR6.js → chunk-4Q7NZI5A.js} +1 -1
- package/dist/{chunk-BVVYKX4D.js → chunk-4RFKEFWW.js} +1 -1
- package/dist/{chunk-X6HLGOIV.js → chunk-52ZHZWF7.js} +1 -1
- package/dist/{chunk-SHBB5GST.js → chunk-543SYIY6.js} +1 -1
- package/dist/chunk-5BGUKF7L.js +1 -0
- package/dist/{chunk-3NRGGEGU.js → chunk-5LONOHNN.js} +1 -1
- package/dist/{chunk-R6IJRVVM.js → chunk-5LZ5L2FF.js} +1 -1
- package/dist/{chunk-AVOSD4NV.js → chunk-5RJ6KQHZ.js} +1 -1
- package/dist/{chunk-WZEKBD7B.js → chunk-66JMKA7C.js} +1 -1
- package/dist/{chunk-J7ZG6SO3.js → chunk-6BVQSX7D.js} +1 -1
- package/dist/{chunk-G627WGIC.js → chunk-6HWDGTSX.js} +2 -2
- package/dist/{chunk-RBPMV3KB.js → chunk-6JOZHD34.js} +1 -1
- package/dist/{chunk-WINVPFT5.js → chunk-6ZSI3C4G.js} +1 -1
- package/dist/{chunk-TEASB2WU.js → chunk-73LX4DOM.js} +1 -1
- package/dist/{chunk-KY36HSIB.js → chunk-7AP5E5CF.js} +1 -1
- package/dist/{chunk-OERMQ2FP.js → chunk-7IYSJGFF.js} +2 -2
- package/dist/{chunk-3ATOVFLZ.js → chunk-7KCHSZ6H.js} +1 -1
- package/dist/{chunk-NDMISEDF.js → chunk-7KVTQDRW.js} +1 -1
- package/dist/{chunk-YKYJOUV7.js → chunk-7NHCYOKI.js} +1 -1
- package/dist/{chunk-Z5SFLTH6.js → chunk-7SIY6GZD.js} +1 -1
- package/dist/{chunk-BLBJT7BM.js → chunk-A36J5FWZ.js} +1 -1
- package/dist/{chunk-UB2LAIXS.js → chunk-A6KNDSNT.js} +1 -1
- package/dist/{chunk-JJHJYBPQ.js → chunk-A6NAQ2Y3.js} +1 -1
- package/dist/{chunk-EMRUM6AA.js → chunk-A75SA57D.js} +1 -1
- package/dist/{chunk-65I35VBS.js → chunk-A76YYGZT.js} +1 -1
- package/dist/{chunk-UOKX3AME.js → chunk-ACGPDJ6Q.js} +1 -1
- package/dist/{chunk-PV5C6Q2P.js → chunk-ADGPOQ5M.js} +1 -1
- package/dist/{chunk-PQMKPXFV.js → chunk-ADL6JSX7.js} +1 -1
- package/dist/{chunk-J66WAKXN.js → chunk-ADVNRGOU.js} +1 -1
- package/dist/{chunk-D2S566HF.js → chunk-AF36J7R7.js} +1 -1
- package/dist/{chunk-ZJ4H3XEL.js → chunk-B32O5KET.js} +1 -1
- package/dist/{chunk-5TQOMAJS.js → chunk-BHOZAIHS.js} +1 -1
- package/dist/{chunk-KPNUSDCW.js → chunk-BWCPDFEY.js} +1 -1
- package/dist/{chunk-SDHDDNKM.js → chunk-BZSCRXYR.js} +3 -3
- package/dist/{chunk-LIQSNIB3.js → chunk-C4G7OKJD.js} +1 -1
- package/dist/{chunk-6H3HVSO5.js → chunk-CB6QT5K5.js} +1 -1
- package/dist/{chunk-7EDXMGBQ.js → chunk-CGCM5DB7.js} +1 -1
- package/dist/{chunk-XE5QH4D7.js → chunk-CNA5YGXA.js} +1 -1
- package/dist/{chunk-UYRXUGLY.js → chunk-CNHO3T4F.js} +1 -1
- package/dist/{chunk-4S2WKMLJ.js → chunk-CPT2VBMR.js} +1 -1
- package/dist/{chunk-GPJJA3FX.js → chunk-CQKZSB7Z.js} +1 -1
- package/dist/{chunk-7ZNR4YL4.js → chunk-CTDETNGR.js} +1 -1
- package/dist/{chunk-MP5NZL7C.js → chunk-CTVOXVXG.js} +1 -1
- package/dist/{chunk-2X3HYG4B.js → chunk-DE5BUQL5.js} +1 -1
- package/dist/{chunk-BVR3GF2L.js → chunk-DHWY73OS.js} +1 -1
- package/dist/chunk-DPGUL2TW.js +1 -0
- package/dist/{chunk-PYILLIGT.js → chunk-DWDR7XMI.js} +1 -1
- package/dist/{chunk-RY6TZDVV.js → chunk-E7PW5SVD.js} +1 -1
- package/dist/{chunk-Q4TZD2M6.js → chunk-EA5LKCRF.js} +1 -1
- package/dist/{chunk-HYC3JXR4.js → chunk-EJ46P6A3.js} +1 -1
- package/dist/{chunk-QN6SITWN.js → chunk-EM6KPZCM.js} +1 -1
- package/dist/{chunk-TUE67I2F.js → chunk-FHOBQUQT.js} +1 -1
- package/dist/{chunk-2R2PKQQV.js → chunk-FKGN6F3F.js} +1 -1
- package/dist/{chunk-KYBZ2MBA.js → chunk-FLPWT4AK.js} +1 -1
- package/dist/{chunk-55QTRPZ2.js → chunk-FMBC7LZB.js} +1 -1
- package/dist/{chunk-OMEWUFUL.js → chunk-GB4WR6DY.js} +1 -1
- package/dist/{chunk-EXKTQF26.js → chunk-GBG6SUK4.js} +1 -1
- package/dist/{chunk-JCO2SDDR.js → chunk-GIGA7EU3.js} +1 -1
- package/dist/{chunk-WXT5AKZV.js → chunk-GOBTF2ZH.js} +1 -1
- package/dist/{chunk-OIQVPTNQ.js → chunk-GPJAWTR7.js} +1 -1
- package/dist/{chunk-7ARGLS6W.js → chunk-GQZ3KCWJ.js} +1 -1
- package/dist/{chunk-C4GEP3CX.js → chunk-H3N5LKJD.js} +1 -1
- package/dist/{chunk-525BMYNR.js → chunk-H4PXFC7T.js} +1 -1
- package/dist/{chunk-ELQ5NPPB.js → chunk-H5ZPH2EC.js} +1 -1
- package/dist/{chunk-RAQP66LR.js → chunk-HHNMV6GX.js} +1 -1
- package/dist/{chunk-PQH4U2XV.js → chunk-HJPAHR2V.js} +1 -1
- package/dist/{chunk-XTKXBQVA.js → chunk-HQ4JWC5M.js} +1 -1
- package/dist/{chunk-UMSO6MOI.js → chunk-IH2CB73H.js} +1 -1
- package/dist/{chunk-IESHPQLC.js → chunk-IJM576XA.js} +1 -1
- package/dist/{chunk-3NUQGW57.js → chunk-IKN6ICJR.js} +1 -1
- package/dist/{chunk-RCYQPOJW.js → chunk-IN634BRF.js} +3 -3
- package/dist/{chunk-Q26ES5T3.js → chunk-IR6OW5R2.js} +1 -1
- package/dist/{chunk-JKWB7WTO.js → chunk-ISU7Q2EB.js} +1 -1
- package/dist/{chunk-EMKLN75K.js → chunk-J6BK6SNB.js} +1 -1
- package/dist/{chunk-NLKO2J7T.js → chunk-JQ3DMPI6.js} +1 -1
- package/dist/{chunk-6NLGZGYE.js → chunk-JTXQPPKQ.js} +1 -1
- package/dist/{chunk-7IRPE3M5.js → chunk-JYWFR6VL.js} +1 -1
- package/dist/chunk-KD5AYVA2.js +1 -0
- package/dist/{chunk-PG6XEOYF.js → chunk-KEI3OJVP.js} +1 -1
- package/dist/{chunk-EP5HIGAL.js → chunk-KFOU4WLJ.js} +1 -1
- package/dist/{chunk-BPVXYM6G.js → chunk-KI3VRWBP.js} +1 -1
- package/dist/{chunk-DTGIMRBX.js → chunk-KRL7FE6M.js} +1 -1
- package/dist/{chunk-BLCR7BXU.js → chunk-KWKRJYTY.js} +1 -1
- package/dist/{chunk-2NMICU24.js → chunk-KXZQKOKF.js} +1 -1
- package/dist/{chunk-LWF4EV22.js → chunk-KY4WH4ZK.js} +1 -1
- package/dist/{chunk-T3JUBPBU.js → chunk-KZ54OSBH.js} +1 -1
- package/dist/{chunk-YXKMPCFH.js → chunk-KZE6JT42.js} +1 -1
- package/dist/{chunk-OCQZ2ULI.js → chunk-KZWYFH7M.js} +1 -1
- package/dist/chunk-L4DFMMOI.js +1 -0
- package/dist/{chunk-5JW2EYSE.js → chunk-LGRZQTQL.js} +1 -1
- package/dist/{chunk-AKP4QAGL.js → chunk-LIE6QSQ2.js} +1 -1
- package/dist/{chunk-VXGXK66W.js → chunk-LOTMFUSV.js} +1 -1
- package/dist/{chunk-CHRFYG6W.js → chunk-MAQ3SRQF.js} +1 -1
- package/dist/{chunk-2P5DUPT7.js → chunk-MBE23GGW.js} +1 -1
- package/dist/{chunk-SZ2JOXTG.js → chunk-MDGF3K45.js} +1 -1
- package/dist/{chunk-MIP2Y34N.js → chunk-ME4EYPKZ.js} +1 -1
- package/dist/{chunk-7MMPQMU7.js → chunk-MMCDBR23.js} +1 -1
- package/dist/{chunk-R43LXE66.js → chunk-MNHZWEXI.js} +1 -1
- package/dist/{chunk-YIV3CWED.js → chunk-MROQ2FRU.js} +1 -1
- package/dist/{chunk-SWNY3RUM.js → chunk-MVFBLQ4J.js} +1 -1
- package/dist/{chunk-FICC6IFE.js → chunk-MWVT5HYW.js} +1 -1
- package/dist/{chunk-NS4FUSSK.js → chunk-MYIN4HYW.js} +1 -1
- package/dist/{chunk-SQIESCOJ.js → chunk-MYP6QEJW.js} +1 -1
- package/dist/{chunk-UVC3IXM3.js → chunk-NC64STMQ.js} +1 -1
- package/dist/{chunk-WNE2MZAZ.js → chunk-NL6DJQJG.js} +1 -1
- package/dist/{chunk-E64OFJHF.js → chunk-NO3QDX7R.js} +1 -1
- package/dist/{chunk-2VDCTMLY.js → chunk-NYVG34OW.js} +1 -1
- package/dist/{chunk-U5L2P36D.js → chunk-O36EB75H.js} +1 -1
- package/dist/{chunk-IJLD5UYC.js → chunk-O7YHDFOO.js} +1 -1
- package/dist/{chunk-3E3MCY5O.js → chunk-OSGXBBUJ.js} +3 -3
- package/dist/{chunk-JWDR66AS.js → chunk-OUO2T3CC.js} +1 -1
- package/dist/{chunk-JAX56OYG.js → chunk-OVTWO3W7.js} +1 -1
- package/dist/{chunk-QA2NOPXG.js → chunk-P4MNJULR.js} +1 -1
- package/dist/{chunk-HZJHGHLN.js → chunk-P7YDAQ53.js} +1 -1
- package/dist/{chunk-7GJYJ6DU.js → chunk-PE6H7U6N.js} +1 -1
- package/dist/{chunk-Q7PF4VKI.js → chunk-PFBESNYV.js} +62 -51
- package/dist/{chunk-SRDKLZ4O.js → chunk-PFPVFPHV.js} +1 -1
- package/dist/{chunk-RW2MONAS.js → chunk-PQEFZTEJ.js} +1 -1
- package/dist/chunk-Q54LU5W4.js +1 -0
- package/dist/{chunk-I2LILWDI.js → chunk-QKJ542VO.js} +1 -1
- package/dist/{chunk-DH5E6NM3.js → chunk-QKSN6ZYW.js} +1 -1
- package/dist/{chunk-IOS4IDZ2.js → chunk-QZGVZMB5.js} +1 -1
- package/dist/{chunk-ER7ZTF26.js → chunk-RJGFFGEN.js} +1 -1
- package/dist/{chunk-BK4VCXDD.js → chunk-S34ZYEZS.js} +1 -1
- package/dist/{chunk-3EEH3A27.js → chunk-SZLNUMWO.js} +1 -1
- package/dist/{chunk-JLGXJHPX.js → chunk-T3LZJIZN.js} +1 -1
- package/dist/{chunk-EGJQEKAO.js → chunk-TFB4JJFQ.js} +1 -1
- package/dist/{chunk-THW6UDZH.js → chunk-TWT5LVEM.js} +1 -1
- package/dist/{chunk-MQZPASSP.js → chunk-UGJN5Q6Y.js} +1 -1
- package/dist/{chunk-TPPBEVNQ.js → chunk-UKINO57E.js} +1 -1
- package/dist/{chunk-3F42A3XV.js → chunk-UYWRJHAJ.js} +3 -3
- package/dist/{chunk-QMJZFKKU.js → chunk-UZL4B7LA.js} +1 -1
- package/dist/{chunk-EJY4LA2S.js → chunk-V4F4LQBQ.js} +1 -1
- package/dist/{chunk-HVU3D3ZU.js → chunk-VCAYMY7D.js} +2 -2
- package/dist/{chunk-ZZ7SOJHH.js → chunk-VDE7IIYQ.js} +1 -1
- package/dist/{chunk-B477XHLZ.js → chunk-VOOYVTYA.js} +1 -1
- package/dist/{chunk-MW3HFOPD.js → chunk-VWDVWHV7.js} +1 -1
- package/dist/{chunk-W56I6HOT.js → chunk-WEB63XPH.js} +1 -1
- package/dist/{chunk-DGOBYP74.js → chunk-WS54VCDC.js} +1 -1
- package/dist/{chunk-FU4UVINZ.js → chunk-WUGFTI5M.js} +1 -1
- package/dist/{chunk-PQCALXSD.js → chunk-X5VBX2QA.js} +1 -1
- package/dist/{chunk-JAY7AGAG.js → chunk-XBCFYD3T.js} +1 -1
- package/dist/{chunk-Z57YWHOE.js → chunk-XGFY6FV4.js} +1 -1
- package/dist/{chunk-PFIQR7XS.js → chunk-XMPLZWXP.js} +1 -1
- package/dist/{chunk-XRJ2GQ24.js → chunk-XSGYQXWO.js} +1 -1
- package/dist/{chunk-Q555FV2X.js → chunk-XVOUKPGD.js} +1 -1
- package/dist/{chunk-PI6FLLDD.js → chunk-XZHUUA6U.js} +1 -1
- package/dist/{chunk-VZLEYZLX.js → chunk-XZOSPVMV.js} +1 -1
- package/dist/{chunk-3U2MYUWG.js → chunk-Y45QFHVA.js} +1 -1
- package/dist/{chunk-SYNCIFJ6.js → chunk-YKK4PGCQ.js} +1 -1
- package/dist/{chunk-6SO5GA6P.js → chunk-YMAVVMN5.js} +1 -1
- package/dist/{chunk-M7QFZQ23.js → chunk-YN3NT2RC.js} +1 -1
- package/dist/{chunk-PGE4HGLA.js → chunk-YPGZANN3.js} +1 -1
- package/dist/{chunk-P6TOIMMF.js → chunk-YS447QGN.js} +1 -1
- package/dist/{chunk-RDO5IWB5.js → chunk-YUM5XGSV.js} +1 -1
- package/dist/{chunk-CGH5Y6XE.js → chunk-YVX2OJ7N.js} +1 -1
- package/dist/{chunk-ANHSOQTZ.js → chunk-YWS2OTSC.js} +1 -1
- package/dist/{chunk-MHZSSRHP.js → chunk-YZXNXWDR.js} +1 -1
- package/dist/{chunk-P2MVR6CG.js → chunk-Z5M2VWQZ.js} +1 -1
- package/dist/{chunk-GS52MX5F.js → chunk-ZBMEU2CE.js} +1 -1
- package/dist/{chunk-4QEALPWD.js → chunk-ZIL2P7FL.js} +1 -1
- package/dist/{chunk-RGZCV56L.js → chunk-ZRW47MJT.js} +1 -1
- package/dist/{chunk-T6TYF72N.js → chunk-ZZWGNETX.js} +1 -1
- package/dist/cli/commands/app/app-logs/sources.js +1 -1
- package/dist/cli/commands/app/build.js +1 -1
- package/dist/cli/commands/app/bulk/cancel.js +1 -1
- package/dist/cli/commands/app/bulk/execute.js +1 -1
- package/dist/cli/commands/app/bulk/status.js +1 -1
- package/dist/cli/commands/app/config/link.js +1 -1
- package/dist/cli/commands/app/config/pull.js +1 -1
- package/dist/cli/commands/app/config/use.js +1 -1
- package/dist/cli/commands/app/config/validate.js +1 -1
- package/dist/cli/commands/app/demo/watcher.js +1 -1
- package/dist/cli/commands/app/deploy.js +1 -1
- package/dist/cli/commands/app/dev/clean.js +1 -1
- package/dist/cli/commands/app/dev.js +1 -1
- package/dist/cli/commands/app/env/pull.js +1 -1
- package/dist/cli/commands/app/env/show.js +1 -1
- package/dist/cli/commands/app/execute.js +1 -1
- package/dist/cli/commands/app/function/build.js +1 -1
- package/dist/cli/commands/app/function/info.js +1 -1
- package/dist/cli/commands/app/function/replay.js +1 -1
- package/dist/cli/commands/app/function/run.js +1 -1
- package/dist/cli/commands/app/function/schema.js +1 -1
- package/dist/cli/commands/app/function/typegen.js +1 -1
- package/dist/cli/commands/app/generate/extension.js +1 -1
- package/dist/cli/commands/app/graphiql.js +1 -1
- package/dist/cli/commands/app/import/channel-config.js +1 -1
- package/dist/cli/commands/app/import/custom-data-definitions.js +1 -1
- package/dist/cli/commands/app/import/dashboard-extensions.js +1 -1
- package/dist/cli/commands/app/import-custom-data-definitions.js +1 -1
- package/dist/cli/commands/app/import-extensions.js +1 -1
- package/dist/cli/commands/app/info.js +1 -1
- package/dist/cli/commands/app/init.js +1 -1
- package/dist/cli/commands/app/logs.js +1 -1
- package/dist/cli/commands/app/release.js +1 -1
- package/dist/cli/commands/app/security/check.js +1 -1
- package/dist/cli/commands/app/security/clean.js +1 -1
- package/dist/cli/commands/app/security/instructions.js +1 -1
- package/dist/cli/commands/app/security/record.js +1 -1
- package/dist/cli/commands/app/security/review.js +1 -1
- package/dist/cli/commands/app/subscription-migrations/cancel.js +1 -1
- package/dist/cli/commands/app/subscription-migrations/list.js +1 -1
- package/dist/cli/commands/app/subscription-migrations/schedule.js +1 -1
- package/dist/cli/commands/app/subscription-migrations/status.js +1 -1
- package/dist/cli/commands/app/subscription-migrations/unschedule.js +1 -1
- package/dist/cli/commands/app/versions/list.js +1 -1
- package/dist/cli/commands/app/webhook/trigger.js +1 -1
- package/dist/cli/commands/auth/login.js +1 -1
- package/dist/cli/commands/auth/logout.js +1 -1
- package/dist/cli/commands/cache/clear.js +1 -1
- package/dist/cli/commands/config/autoupgrade/off.js +1 -1
- package/dist/cli/commands/config/autoupgrade/on.js +1 -1
- package/dist/cli/commands/config/autoupgrade/status.js +1 -1
- package/dist/cli/commands/debug/command-flags.js +1 -1
- package/dist/cli/commands/doc/fetch.js +1 -1
- package/dist/cli/commands/doc/search.js +1 -1
- package/dist/cli/commands/docs/generate.js +1 -1
- package/dist/cli/commands/doctor-release/doctor-release.js +1 -1
- package/dist/cli/commands/doctor-release/theme/index.js +1 -1
- package/dist/cli/commands/help.js +1 -1
- package/dist/cli/commands/kitchen-sink/async.js +1 -1
- package/dist/cli/commands/kitchen-sink/index.js +1 -1
- package/dist/cli/commands/kitchen-sink/prompts.js +1 -1
- package/dist/cli/commands/kitchen-sink/static.js +1 -1
- package/dist/cli/commands/notifications/generate.js +1 -1
- package/dist/cli/commands/notifications/list.js +1 -1
- package/dist/cli/commands/organization/list.js +1 -1
- package/dist/cli/commands/search.js +1 -1
- package/dist/cli/commands/send-analytics.js +1 -1
- package/dist/cli/commands/theme/check.js +1 -1
- package/dist/cli/commands/theme/console.js +1 -1
- package/dist/cli/commands/theme/delete.js +1 -1
- package/dist/cli/commands/theme/dev.js +1 -1
- package/dist/cli/commands/theme/duplicate.js +1 -1
- package/dist/cli/commands/theme/info.js +1 -1
- package/dist/cli/commands/theme/init.js +1 -1
- package/dist/cli/commands/theme/language-server.js +1 -1
- package/dist/cli/commands/theme/list.js +1 -1
- package/dist/cli/commands/theme/metafields/pull.js +1 -1
- package/dist/cli/commands/theme/open.js +1 -1
- package/dist/cli/commands/theme/package.js +1 -1
- package/dist/cli/commands/theme/preview.js +1 -1
- package/dist/cli/commands/theme/profile.js +1 -1
- package/dist/cli/commands/theme/publish.js +1 -1
- package/dist/cli/commands/theme/pull.js +1 -1
- package/dist/cli/commands/theme/push.js +1 -1
- package/dist/cli/commands/theme/rename.js +1 -1
- package/dist/cli/commands/theme/share.js +1 -1
- package/dist/cli/commands/upgrade.js +1 -1
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/{command-json-schema-HYYJSZAH.js → command-json-schema-AWZEAYEU.js} +1 -1
- package/dist/command-registry.js +1 -1
- package/dist/{conf-store-CDZ5YSQM.js → conf-store-TBERV4YJ.js} +1 -1
- package/dist/{custom-oclif-loader-NVOK22CJ.js → custom-oclif-loader-RHFO4GO3.js} +1 -1
- package/dist/{deprecations-33DG6ZUL.js → deprecations-FNYLBULK.js} +1 -1
- package/dist/dist-HV5W7PYL.js +1 -0
- package/dist/dist-VKKGDJQ2.js +1 -0
- package/dist/environments-XC6OMZY2.js +1 -0
- package/dist/{error-V77H2UYX.js → error-SI2QH7DT.js} +1 -1
- package/dist/error-handler-XOEXJ4TY.js +1 -0
- package/dist/{fs-SKH3XZU7.js → fs-J67RRM6W.js} +1 -1
- package/dist/hooks/did-you-mean.js +1 -1
- package/dist/hooks/hydrogen-init.js +1 -1
- package/dist/hooks/postrun.js +1 -1
- package/dist/hooks/prerun.js +1 -1
- package/dist/hooks/public-metadata.js +1 -1
- package/dist/hooks/sensitive-metadata.js +1 -1
- package/dist/hooks/tunnel-provider.js +1 -1
- package/dist/hooks/tunnel-start.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{is-global-2G4BLF7H.js → is-global-BSY2VR5F.js} +1 -1
- package/dist/{json-error-WSMAL66C.js → json-error-BVX244JK.js} +1 -1
- package/dist/{local-G2Z24BHM.js → local-VCJXKA4Z.js} +1 -1
- package/dist/{metadata-Y3RKC4P2.js → metadata-G7M7BSIE.js} +1 -1
- package/dist/{node-package-manager-A7HTBJKY.js → node-package-manager-PMTBCYAX.js} +1 -1
- package/dist/notifications-system-O2R4VN7A.js +1 -0
- package/dist/{os-7VQXVZWF.js → os-MMNGCSNT.js} +1 -1
- package/dist/{output-ZFFHJGNK.js → output-2Q6CSC33.js} +1 -1
- package/dist/{system-ZLITSFDC.js → system-DQ2SKK6C.js} +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/{ui-YSFALYSL.js → ui-QOSX5V7Z.js} +1 -1
- package/dist/upgrade-7HYLPUVK.js +1 -0
- package/dist/version-BPEZT4N3.js +1 -0
- package/dist/version-VNCEYJRH.js +1 -0
- package/dist/{workerd-RNDPF36Q.js → workerd-2RFRLQVH.js} +1 -1
- package/oclif.manifest.json +4 -4
- package/package.json +7 -7
- package/dist/analytics-H2ANKZ2S.js +0 -1
- package/dist/analytics-Q6HJRPRX.js +0 -1
- package/dist/chunk-246AZCDT.js +0 -1
- package/dist/chunk-DV77BSKW.js +0 -1
- package/dist/chunk-FQKURDZR.js +0 -6
- package/dist/chunk-JUVJNIEA.js +0 -1
- package/dist/chunk-KOYBR5MV.js +0 -1
- package/dist/chunk-QLHPTMIH.js +0 -1
- package/dist/chunk-TQ7MHGY4.js +0 -1
- package/dist/dist-DODCXJ2A.js +0 -1
- package/dist/dist-YXMAKIFS.js +0 -1
- package/dist/environments-KBRQNE4R.js +0 -1
- package/dist/error-handler-JY3ZKE2G.js +0 -1
- package/dist/notifications-system-E64OSVXF.js +0 -1
- package/dist/upgrade-I4JTR4LA.js +0 -1
- package/dist/version-AOVO47AW.js +0 -1
- package/dist/version-LQV54JBC.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as R}from"./chunk-
|
|
1
|
+
import{o as R}from"./chunk-IN634BRF.js";import{i as E}from"./chunk-VDE7IIYQ.js";import{Nb as p,Ob as m,aa as b,ga as N}from"./chunk-UYWRJHAJ.js";import{g as i}from"./chunk-VKWPEFWQ.js";i();i();var l=class{export;input;inputBytes;output;outputBytes;logs;functionId;fuelConsumed;target;errorMessage;errorType;inputQueryVariablesMetafieldValue;inputQueryVariablesMetafieldNamespace;inputQueryVariablesMetafieldKey;constructor({export:e,input:r,inputBytes:o,output:n,outputBytes:s,logs:a,functionId:f,fuelConsumed:c,target:A,errorMessage:S,errorType:g,inputQueryVariablesMetafieldValue:w,inputQueryVariablesMetafieldNamespace:I,inputQueryVariablesMetafieldKey:M}){this.export=e,this.input=r,this.inputBytes=o,this.output=n,this.outputBytes=s,this.logs=a,this.functionId=f,this.fuelConsumed=c,this.target=A,this.errorMessage=S,this.errorType=g,this.inputQueryVariablesMetafieldValue=w,this.inputQueryVariablesMetafieldNamespace=I,this.inputQueryVariablesMetafieldKey=M}},h=class{cacheEntryEpochMs;cacheTtlMs;httpRequest;httpResponse;constructor({cacheEntryEpochMs:e,cacheTtlMs:r,httpRequest:o,httpResponse:n}){this.cacheEntryEpochMs=e,this.cacheTtlMs=r,this.httpRequest=o,this.httpResponse=n}},_;(function(t){t[t.NoCachedResponse=0]="NoCachedResponse",t[t.CacheAboutToExpire=1]="CacheAboutToExpire",t[t.Unknown=2]="Unknown"})(_||(_={}));var d=class{reason;httpRequest;constructor({reason:e,httpRequest:r}){this.reason=e,this.httpRequest=r}},y=class{attempt;connectTimeMs;writeReadTimeMs;httpRequest;httpResponse;error;constructor({attempt:e,connectTimeMs:r,writeReadTimeMs:o,httpRequest:n,httpResponse:s,error:a}){this.attempt=e,this.connectTimeMs=r,this.writeReadTimeMs=o,this.httpRequest=n,this.httpResponse=s,this.error=a}};i();function O(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)&&Object.getPrototypeOf(t)===Object.prototype}function C(t,e){return e?.deep&&O(t)||e?.deep&&Array.isArray(t)?u(t,e):t}function u(t,e){if(Array.isArray(t))return t.map(r=>e?.deep?u(r,e):r);if(O(t)){let r={};for(let[o,n]of Object.entries(t))r[b(o)]=C(n,e);return r}return t}var L=450,P=5*1e3,T=60*1e3,H=5,W=1e6,V="function_run",z="function_network_access",U="function_network_access.response_from_cache",q="function_network_access.request_execution_in_background",J="function_network_access.request_execution",Z="no_cached_response",ee="cached_response_about_to_expire";function te(t){let e=JSON.parse(t),r=e.input_query_variables_metafield_value&&x(e.input_query_variables_metafield_value);return new l({export:e.export,input:e.input,inputBytes:e.input_bytes,output:e.output,outputBytes:e.output_bytes,logs:e.logs,functionId:e.function_id,fuelConsumed:e.fuel_consumed,target:e.target,errorMessage:e.error_message,errorType:e.error_type,inputQueryVariablesMetafieldValue:r,inputQueryVariablesMetafieldNamespace:e.input_query_variables_metafield_namespace,inputQueryVariablesMetafieldKey:e.input_query_variables_metafield_key})}function re(t){let e=JSON.parse(t);return new h({cacheEntryEpochMs:e.cache_entry_epoch_ms,cacheTtlMs:e.cache_ttl_ms,httpRequest:e.http_request,httpResponse:e.http_response})}var Q={no_cached_response:_.NoCachedResponse,cached_response_about_to_expire:_.CacheAboutToExpire};function se(t){let e=JSON.parse(t);return new d({reason:Q[e.reason]??_.Unknown,httpRequest:e.http_request})}function oe(t){let e=JSON.parse(t);return new y({attempt:e.attempt,connectTimeMs:e.connect_time_ms??null,writeReadTimeMs:e.write_read_time_ms??null,httpRequest:e.http_request,httpResponse:e.http_response??null,error:e.error??null})}var ne=async t=>{let{errors:e}=t.response,r=L,o=null,n="not_attempted";if(e.length>0)if(p(`Errors: ${e.map(s=>s.message).join(", ")}`),e.some(s=>s.status===401))try{o=await t.onResubscribe(),n="succeeded"}catch(s){p(`Failed to resubscribe to app logs: ${s}`),r=T,n="failed",t.onThrottle(r)}else e.some(s=>s.status===429)?(r=T,t.onThrottle(r)):(r=P,t.onUnknownError(r));return{retryIntervalMs:r,nextJwtToken:o,resubscribeResult:n}};function ae(t){return t.allExtensions.flatMap(e=>e.isFunctionExtension?[`extensions.${e.configuration.handle}`]:[])}var ie=({appLog:t,appLogPayload:e,storeName:r,prettyPrint:o=!0})=>{let{cursor:n,...s}=t,a=u({...s,payload:e,localTime:N(t.log_timestamp),storeName:r});return e instanceof l&&(a.payload.logs=e.logs.split(`
|
|
2
2
|
`).filter(Boolean),a.payload.inputQueryVariablesMetafieldValue&&(a.payload.inputQueryVariablesMetafieldValue=x(a.payload.inputQueryVariablesMetafieldValue))),o?JSON.stringify(a,null,2):JSON.stringify(a)},pe=(t,e)=>{let r=u(JSON.parse(t));return e===V?new l(r):e===U?new h(r):e===q?new d(r):e===J?new y(r):r},ue=async(t,e,r,o)=>{let n=await t.subscribeToAppLogs(e,r);if(!n.appLogsSubscribe)throw new E("Failed to subscribe to app logs: No response received");let{jwtToken:s,success:a,errors:f}=n.appLogsSubscribe;if(p(`Token: ${s}
|
|
3
3
|
`),p(`API Key: ${e.apiKey}
|
|
4
4
|
`),f&&f.length>0){let c=f.join(", ");throw await R({stripAnsi:!1},()=>{m(`Errors subscribing to app logs: ${c}`,o),m("App log streaming is not available in this session.",o)}),new E(c)}else{if(!s)throw new E("Failed to subscribe to app logs: No response received");let c=Array.isArray(e.shopIds)?e.shopIds:[e.shopIds];p(`Subscribed to App Events for shop ID(s) ${c.join(", ")}`),a!==void 0&&p(`Success: ${a}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as x,c as D,f as M}from"./chunk-
|
|
1
|
+
import{b as x,c as D,f as M}from"./chunk-7AP5E5CF.js";import{a as o}from"./chunk-DPGUL2TW.js";import{D as s,G as h,J as e,z as y}from"./chunk-IN634BRF.js";import{d as w}from"./chunk-YTJ3EPD3.js";import{Kb as _,ya as u}from"./chunk-UYWRJHAJ.js";import{g as p}from"./chunk-VKWPEFWQ.js";p();async function $(){let a=new Date,n=`${a.getFullYear()}-${(a.getMonth()+1).toString().padStart(2,"0")}-${a.getDate().toString().padStart(2,"0")}`,i=w(),t=await s({message:"Type of message?",choices:[{label:"Info",value:"info"},{label:"Warning",value:"warning"},{label:"Error",value:"error"}]}),b=await e({message:"Title"}),E=await e({message:"Message"}),S=await s({message:"Frequency",choices:[{label:"Only once",value:"once"},{label:"Once a week",value:"once_a_week"},{label:"Once a day",value:"once_a_day"},{label:"Always",value:"always"}]}),r=await e({message:"Minimum CLI version (optional)",initialAnswer:o,allowEmpty:!0}),l=await e({message:"Maximum CLI version (optional)",initialAnswer:o,allowEmpty:!0}),m=await e({message:"Minimum date in YYYY-MM-DD format (optional)",initialAnswer:n,allowEmpty:!0}),c=await e({message:"Maximum date in YYYY-MM-DD format (optional)",initialAnswer:n,allowEmpty:!0}),f=await e({message:"Surface. E.g.: app, theme, hydrogen, theme_app_extension... (optional)",allowEmpty:!0}),g=await e({message:"Comma separated list of commands. E.g.: app:generate:extension (optional)",allowEmpty:!0}),T=await e({message:"Slack channel of the team who will own this notification"}),d=await x(),v={id:i,type:t,title:b,frequency:S,message:E,minVersion:r.length===0?void 0:r,maxVersion:l.length===0?void 0:l,minDate:m.length===0?void 0:m,maxDate:c.length===0?void 0:c,surface:f.length===0?void 0:f,commands:g.length===0?void 0:g.split(",").map(N=>N.trim()),ownerChannel:T};d.notifications.push(v),await u("./notifications.json",JSON.stringify(d)),y({headline:"notifications.json file updated successfully."})}async function j(){let a=await D(),n={type:{header:"Type",color:"dim"},title:{header:"Title",color:"dim"},message:{header:"Message",color:"dim"},filters:{header:"Filters",color:"dim"}},i=a.notifications.map(t=>({type:t.type,title:t.title??"",message:t.message,filters:M(t)}));h({rows:i,columns:n}),_(`
|
|
2
2
|
`)}export{$ as a,j as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
1
|
+
import{a as p}from"./chunk-DE5BUQL5.js";import{a as f}from"./chunk-2E2NYRQH.js";import{f as c,o as v}from"./chunk-XBCFYD3T.js";import{p as l,v as d}from"./chunk-4MUH4E2U.js";import{b as s,f as h}from"./chunk-EA5LKCRF.js";import{z as a}from"./chunk-IN634BRF.js";import{b as T}from"./chunk-I3J63RFV.js";import{e as F,g as r}from"./chunk-VKWPEFWQ.js";r();r();async function u(e,n){let m=e.name??await c("New name for the theme"),i=await f(n,{header:"Select a theme to rename",filter:{theme:e.theme,development:e.development,live:e.live}});await v(i.id,{name:m},n),a({body:[...e.environment?[{subdued:`Environment: ${e.environment}
|
|
2
2
|
|
|
3
3
|
`}]:[],"The theme",...p(i),"was renamed to",`'${m}'`]})}var t=F(T(),1);var o=class extends d{static summary="Renames an existing theme.";static descriptionWithMarkdown=`Renames a theme in your store.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as S}from"./chunk-
|
|
1
|
+
import{b as S}from"./chunk-4Q7NZI5A.js";import{a as A,b as B,c as L,f as I,j as x,k as $,m as N,t as q}from"./chunk-MWVT5HYW.js";import{a as P}from"./chunk-3B3CJS5I.js";import{a as z}from"./chunk-LOTMFUSV.js";import{b as C}from"./chunk-EA5LKCRF.js";import{N as g,u as E}from"./chunk-OSGXBBUJ.js";import{B as w,G as T,y as u,z as v}from"./chunk-IN634BRF.js";import{l as D}from"./chunk-VDE7IIYQ.js";import{Cb as l,Eb as d,Pb as b,fa as k,ka as y}from"./chunk-UYWRJHAJ.js";import{i as m}from"./chunk-B4OMIONW.js";import{b as M}from"./chunk-I3J63RFV.js";import{e as K,g as c}from"./chunk-VKWPEFWQ.js";c();c();async function R(e){let{organization:o,storeFqdn:t,operationId:r,remoteApp:a}=e;u({headline:"Checking bulk operation status.",body:[{list:{items:S({organization:o,remoteApp:a,storeFqdn:t})}}]});let s=a.apiSecretKeys[0]?.secret;if(!s)throw new D("No API secret keys found for app");let p=await g(t,a.apiKey,s),i=await x({adminSession:p,operationId:r,version:await I({adminSession:p,minimumDefaultVersion:A})});i?U(i):w({headline:"Bulk operation not found.",body:d`ID: ${l.yellow(r)}`.value})}async function _(e){let{organization:o,storeFqdn:t,remoteApp:r}=e;u({headline:"Listing bulk operations.",body:[{list:{items:S({organization:o,remoteApp:r,storeFqdn:t})}}]});let a=r.apiSecretKeys[0]?.secret;if(!a)throw new D("No API secret keys found for app");let s=await g(t,r.apiKey,a),i=(await $({adminSession:s,version:await I({adminSession:s,minimumDefaultVersion:A})})).map(n=>({id:L(n.id),status:V(n.status),count:G(n.objectCount),dateCreated:k(new Date(String(n.createdAt))),dateFinished:n.completedAt?k(new Date(String(n.completedAt))):"",results:Y(n.url??n.partialDataUrl)}));b(),i.length===0?u({body:"No bulk operations found in the last 7 days."}):T({rows:i,columns:{id:{header:"ID",color:"yellow"},status:{header:"STATUS"},count:{header:"COUNT"},dateCreated:{header:"DATE CREATED",color:"cyan"},dateFinished:{header:"DATE FINISHED",color:"cyan"},results:{header:"RESULTS"}}}),b()}function U(e){let{id:o,status:t,createdAt:r,completedAt:a,url:s,partialDataUrl:p}=e,i=N(e).value,n=H(r,a),f=d`ID: ${l.yellow(o)}\n${n}`.value;if(t==="COMPLETED"){let h=s?l.link("Download results",s):"";v({headline:i,body:d`${f}\n${h}`.value})}else if(t==="FAILED"){let h=p?l.link("Download partial results",p):"";w({headline:i,body:d`${f}\n${h}`.value})}else u({headline:i,body:f})}function H(e,o){let t=new Date;return o?`Finished ${y(new Date(String(o)),t)}`:`Started ${y(new Date(String(e)),t)}`}function V(e){return e==="COMPLETED"?m.green(e):e==="FAILED"?m.red(e):m.dim(e)}function G(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function Y(e){return e?d`${l.link("download",e)}`.value:""}var F=K(M(),1);var O=class e extends P{static summary="Check the status of bulk operations.";static descriptionWithMarkdown=`Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.
|
|
2
2
|
|
|
3
3
|
Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ia as r}from"./chunk-
|
|
1
|
+
import{Ia as r}from"./chunk-KEI3OJVP.js";import{a}from"./chunk-H4PXFC7T.js";import{q as i}from"./chunk-3VYOLEQE.js";import{g as e}from"./chunk-VKWPEFWQ.js";e();var c=3e3;async function n(o){let t;try{if(a.getAllPublicMetadata().api_key!==void 0)return;await Promise.race([r({directory:o,skipPrompts:!0}),new Promise(l=>{t=setTimeout(l,c)})])}catch{}finally{t&&clearTimeout(t)}}var m=async()=>(await n(i()),a.getAllPublicMetadata()),f=m;export{f as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as n}from"./chunk-
|
|
1
|
+
import{o as n}from"./chunk-3FCN4NS6.js";import{H as s}from"./chunk-IN634BRF.js";import{g as a}from"./chunk-VKWPEFWQ.js";a();async function c(e){await s([{title:"Installing dependencies",task:async()=>{await n({packageManager:e.packageManager,directory:e.directory,deep:3})}}])}export{c as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b}from"./chunk-
|
|
1
|
+
import{b}from"./chunk-PFPVFPHV.js";import{j as c,l as f,o as T}from"./chunk-XZHUUA6U.js";import{a as F}from"./chunk-2E2NYRQH.js";import{p as y,v as O}from"./chunk-4MUH4E2U.js";import{b as I}from"./chunk-EA5LKCRF.js";import{k as v,oa as w}from"./chunk-OSGXBBUJ.js";import{z as S}from"./chunk-IN634BRF.js";import{i as a}from"./chunk-VDE7IIYQ.js";import{Kb as _,Ya as l,qa as u}from"./chunk-UYWRJHAJ.js";import{b as A}from"./chunk-I3J63RFV.js";import{e as x,g as d}from"./chunk-VKWPEFWQ.js";d();d();d();async function P({session:e,overridesContent:r,themeId:t}){w("theme-preview:create");let m=`${f(e)}/theme_preview.json?preview_theme_id=${t}`,o=await c(e,{headers:{"Content-Type":"application/json"}}),i=await v(m,{method:"POST",body:r,headers:o});if(!i.ok)throw new a(`Theme preview request failed with status ${i.status}: ${i.statusText}`);let n=await J(i);return w("theme-preview:create"),n}async function g({session:e,overridesContent:r,themeId:t,previewIdentifier:s}){w("theme-preview:update");let o=`${f(e)}/theme_preview.json?preview_theme_id=${t}&preview_identifier=${encodeURIComponent(s)}`,i=await c(e,{headers:{"Content-Type":"application/json"}}),n=await v(o,{method:"POST",body:r,headers:i});if(!n.ok)throw new a(`Theme preview request failed with status ${n.status}: ${n.statusText}`);let E=await J(n);return w("theme-preview:update"),E}async function J(e){let r=await e.json();if(r.error)throw new a(`Theme preview failed: ${r.error}`);if(!r.url||!r.preview_identifier)throw new a("Theme preview returned an unexpected response");return{url:r.url,preview_identifier:r.preview_identifier}}async function $(e){if(!l(e.overrideJson))throw new a(`Override file not found: ${e.overrideJson}`);let r=await u(e.overrideJson),t;try{t=JSON.parse(r)}catch(i){let n=i instanceof Error?i.message:String(i);throw new a(`Failed to parse override file: ${e.overrideJson}`,n)}let s=await T(e.themeId,e.adminSession,e.password),m=JSON.stringify(t),o=e.previewIdentifier?await g({session:s,overridesContent:m,themeId:e.themeId,previewIdentifier:e.previewIdentifier}):await P({session:s,overridesContent:m,themeId:e.themeId});e.json?_(JSON.stringify({url:o.url,preview_identifier:o.preview_identifier})):S({body:[{list:{title:e.previewIdentifier?"Preview updated":"Preview is ready",items:[{link:{url:o.url}},`Preview ID: ${o.preview_identifier}`]}}]}),e.open&&b(o.url,"theme preview")}var p=x(A(),1);var h=class extends O{static summary="Applies JSON overrides to a theme and returns a preview URL.";static descriptionWithMarkdown="Applies a JSON overrides file to a theme and creates or updates a preview. This lets you quickly preview changes.\n\n The command returns a preview URL and a preview identifier. You can reuse the preview identifier with `--preview-id` to update an existing preview instead of creating a new one.";static description=this.descriptionForHelp();static flags={...I,...y,theme:p.Flags.string({char:"t",description:"Theme ID or name of the remote theme.",env:"SHOPIFY_FLAG_THEME_ID",required:!0}),overrides:p.Flags.string({description:"Path to a JSON overrides file.",env:"SHOPIFY_FLAG_OVERRIDES",required:!0}),"preview-id":p.Flags.string({description:"An existing preview identifier to update instead of creating a new preview.",env:"SHOPIFY_FLAG_PREVIEW_ID"}),open:p.Flags.boolean({description:"Automatically launch the theme preview in your default web browser.",env:"SHOPIFY_FLAG_OPEN",default:!1}),json:p.Flags.boolean({description:"Output the preview URL and identifier as JSON.",env:"SHOPIFY_FLAG_JSON",default:!1})};static multiEnvironmentsFlags=null;async command(r,t){let s=await F(t,{filter:{theme:r.theme}});await $({adminSession:t,overrideJson:r.overrides,themeId:s.id.toString(),previewIdentifier:r["preview-id"],open:r.open,password:r.password,json:r.json})}};export{h as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as d}from"./chunk-
|
|
1
|
+
import{a as d}from"./chunk-3B3CJS5I.js";import{a as f}from"./chunk-LOTMFUSV.js";import{Da as c,Ha as s}from"./chunk-KEI3OJVP.js";import{b as r,f as a}from"./chunk-EA5LKCRF.js";import{i as n}from"./chunk-VDE7IIYQ.js";import{b as u}from"./chunk-I3J63RFV.js";import{e as h,g as t}from"./chunk-VKWPEFWQ.js";t();var i=h(u(),1);var o=class l extends d{static summary="Fetch your app configuration from the Developer Dashboard.";static descriptionWithMarkdown=`Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.
|
|
2
2
|
|
|
3
3
|
For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.
|
|
4
4
|
`;static description=this.descriptionForHelp();static flags={...r,...f,config:i.Flags.string({hidden:!1,char:"c",description:"The name of the local app configuration to read and overwrite. Use --file-name instead when specifying --client-id.",env:"SHOPIFY_FLAG_APP_CONFIG"}),"organization-id":i.Flags.string({hidden:!0,env:"SHOPIFY_FLAG_ORGANIZATION_ID",exclusive:["client-id"]}),"client-id":a(i.Flags.string({hidden:!1,description:"The Client ID of the remote app to link. Use --file-name to specify the destination configuration file.",env:"SHOPIFY_FLAG_CLIENT_ID"})),"file-name":i.Flags.string({hidden:!1,description:"The name of the app configuration file to create or overwrite. Requires --force to overwrite an existing file.",env:"SHOPIFY_FLAG_APP_CONFIG_FILE_NAME",exclusive:["config"]}),force:i.Flags.boolean({hidden:!1,description:"Overwrite an existing configuration file without prompting.",env:"SHOPIFY_FLAG_FORCE",dependsOn:["file-name"]})};async run(){let{flags:e}=await this.parse(l);if(e.config!==void 0&&e["client-id"]!==void 0)throw new n("The --config and --client-id flags can't be used together.","Use --file-name instead of --config to choose the configuration file to create or overwrite.");let p={directory:e.path,apiKey:e["client-id"],organizationId:e["organization-id"],configName:e.config,fileName:e["file-name"],force:e.force??!1},g=await c(p),{app:m}=await s({directory:e.path,clientId:void 0,forceRelink:!1,userProvidedConfigName:g.configFileName});return{app:m}}};export{o as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as P,v as x}from"./chunk-
|
|
1
|
+
import{p as P,v as x}from"./chunk-4MUH4E2U.js";import{a as O}from"./chunk-CPT2VBMR.js";import{c as k,l as G}from"./chunk-QZGVZMB5.js";import{b as _}from"./chunk-EA5LKCRF.js";import{A as N,D as d,H as S,J as R,V as f}from"./chunk-IN634BRF.js";import{i as g}from"./chunk-VDE7IIYQ.js";import{Ea as E,Ga as v,Xa as L,Za as F,oa as C,qa as w,ya as b}from"./chunk-UYWRJHAJ.js";import{b as W}from"./chunk-I3J63RFV.js";import{d as s}from"./chunk-3VYOLEQE.js";import{e as q,g as h}from"./chunk-VKWPEFWQ.js";h();h();var l="https://github.com/Shopify/skeleton-theme.git",V="https://github.com/Shopify/theme-liquid-docs.git",I={all:"All",github:"VS Code (GitHub Copilot)",cursor:"Cursor",claude:"Claude"};async function $(t,e){await T(t,e)}async function H(t,e){await T(t,e,!0)}async function M(t){let e=await O("Shopify","skeleton-theme",{filter:o=>!o.draft&&!o.prerelease});if(!e)throw new g("Couldn't find a stable Skeleton theme release");await T(`${l}#${e.tag_name}`,t)}async function T(t,e,o){await S([{title:`Cloning ${t} into ${e}`,task:async()=>{await k({repoUrl:t,destination:e,latestTag:o,shallow:!o}),await G(e),t.split("#")[0]===l&&(await Promise.all(Object.keys(I).map(async i=>U(s(e,`.${i}`)))),await U(s(e,".git")))}}])}async function U(t){await L(t)&&await v(t)}async function j(){return await d({message:"Which LLM instruction file would you like to include in your theme?",choices:[...Object.entries(I).map(([e,o])=>({label:o,value:e})),{label:"Skip",value:null}]})}async function D(t,e){let o=[];await S([{title:`Adding AI instructions into ${t}`,task:async()=>{await C(async i=>{await k({repoUrl:V,destination:i,shallow:!0});let c=e==="all"?Object.keys(I).filter(a=>a!=="all"):[e];try{let a=s(i,"ai","github","copilot-instructions.md"),n=await w(a),r=s(t,"AGENTS.md"),m=`# AGENTS.md
|
|
2
2
|
|
|
3
3
|
${n}`;await b(r,m),(await Promise.all(c.map(p=>K(t,r,p)))).forEach(p=>{p.copiedFile&&o.push(p.copiedFile)})}catch{throw new g("Failed to create AI instructions")}})}}]),o.length>0&&N({headline:"Files created instead of symlinks.",body:`Shopify CLI attempted to create symbolic links between AGENTS.md and ${o.join(", ")}, but your system doesn't have Developer Mode enabled or symlinks are disabled. Separate files were created instead.`})}async function K(t,e,o){if(o==="cursor")return{};let c={github:"copilot-instructions.md",claude:"CLAUDE.md"}[o],a=s(t,c);try{return await E(e,a),{}}catch(n){if(n instanceof Error){let r=await w(e);return await b(a,r),{copiedFile:c}}else throw n}}var u=q(W(),1);var A=class extends x{static summary="Clones a Git repository to use as a starting point for building a new theme.";static descriptionWithMarkdown=`Clones a Git repository to your local machine to use as the starting point for building a theme.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as E}from"./chunk-FKIVKNOV.js";import{a as P}from"./chunk-
|
|
1
|
+
import{a as E}from"./chunk-FKIVKNOV.js";import{a as P}from"./chunk-3B3CJS5I.js";import{a as w}from"./chunk-LOTMFUSV.js";import{Ha as y,L as F,i as C,ja as x}from"./chunk-KEI3OJVP.js";import{b as f}from"./chunk-JYWFR6VL.js";import{b as v}from"./chunk-EA5LKCRF.js";import{Cb as o,Eb as p,Ib as h,Xa as g,qa as u,ya as l}from"./chunk-UYWRJHAJ.js";import{b as $}from"./chunk-I3J63RFV.js";import{f as c}from"./chunk-3VYOLEQE.js";import{e as _,g as s}from"./chunk-VKWPEFWQ.js";s();s();async function S({app:d,remoteApp:t,organization:a,envFile:e}){await x(t,a.source);let n={SHOPIFY_API_KEY:t.apiKey,SHOPIFY_API_SECRET:t.apiSecretKeys[0]?.secret,SCOPES:C(d.configuration)};if(await g(e)){let i=await u(e),r=f(i,n);if(r===i)return p`No changes to ${o.path(e)}`;{await l(e,r);let I=E(i??"",r);return p`Updated ${o.path(e)} to be:
|
|
2
2
|
|
|
3
3
|
${r}
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as u}from"./chunk-
|
|
1
|
+
import{c as u}from"./chunk-WUGFTI5M.js";import{e as l,j as m}from"./chunk-IH2CB73H.js";import{a as d}from"./chunk-3B3CJS5I.js";import{Ha as c}from"./chunk-KEI3OJVP.js";import{g as r}from"./chunk-VKWPEFWQ.js";r();r();var a=class extends Error{operationId;constructor(t){super(`Migration cancellation for ${t} returned neither an operation nor user errors`),this.name="MigrationCancellationProtocolError",this.operationId=t}};async function f({clientId:i,operationIds:t,cancelOperation:n=m}){return{outcomes:await Promise.all(t.map(async o=>{let e=await n({clientId:i,operationId:o});if(e.userErrors.length>0)return{status:"failed",operationId:o,operation:e.operation,userErrors:e.userErrors};if(!e.operation)throw new a(o);return{status:"success",operationId:o,operation:e.operation}}))}}var s=class i extends d{static summary="Cancels app subscription migration operations.";static descriptionWithMarkdown="Cancels app subscription migration operations.\n\nCanceling stops additional unprocessed shops, but does not undo shops that have already been scheduled or migrated. Use `unschedule` for reversible schedules.\n\nRepeat `--id` to cancel every operation GID returned by a multi-batch submission. Use `--json` to output the resulting operation states and per-shop results as structured JSON.\n\nRun the command from an app project. By default, it uses the Client ID from the active app configuration. Use `--path` to select an app directory or `--config` to select a configuration. Pass `--client-id` to select a different app within the project. Use `--reset` to relink the app.";static description=this.descriptionWithoutMarkdown();static examples=["<%= config.bin %> <%= command.id %> --id <operation-id>","<%= config.bin %> <%= command.id %> --path ../my-app --config staging --id <operation-id-1> --id <operation-id-2>","<%= config.bin %> <%= command.id %> --client-id <client-id> --id <operation-id> --json"];static flags={...l};async run(){let{flags:t}=await this.parse(i),{app:n,remoteApp:p}=await c({directory:t.path,clientId:t["client-id"],forceRelink:t.reset,userProvidedConfigName:t.config}),o=await f({clientId:p.apiKey,operationIds:t.id}),e=u(o,{json:t.json});return e!==0&&(process.exitCode=e),{app:n}}};export{s as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as gI,e as nA,f as mI,h as oA,l as y7,n as Bu,s as $5,u as iA,v as lA,w as cA}from"./chunk-Q7BOSHWX.js";import{a as fI}from"./chunk-
|
|
1
|
+
import{c as gI,e as nA,f as mI,h as oA,l as y7,n as Bu,s as $5,u as iA,v as lA,w as cA}from"./chunk-Q7BOSHWX.js";import{a as fI}from"./chunk-6HWDGTSX.js";import{a as aA}from"./chunk-KEI3OJVP.js";import{c as tA,e as rA}from"./chunk-QKSN6ZYW.js";import{O as pCe,b as mCe,j as R4,u as tf,v as vI}from"./chunk-OSGXBBUJ.js";import{a as jF}from"./chunk-DPGUL2TW.js";import{d as b}from"./chunk-IN634BRF.js";import{d as $F}from"./chunk-GOBTF2ZH.js";import{i as eA}from"./chunk-VDE7IIYQ.js";import{Nb as b7}from"./chunk-UYWRJHAJ.js";import{a as j5,c as m,e as ps,g as o}from"./chunk-VKWPEFWQ.js";var uA=m(Vi=>{"use strict";o();var bCe=b();function sA(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function e1(){}var Gi={d:{f:e1,r:function(){throw Error(sA(522))},D:e1,C:e1,L:e1,m:e1,X:e1,S:e1,M:e1},p:0,findDOMNode:null},yCe=Symbol.for("react.portal");function ICe(e,t,r){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:yCe,key:a==null?null:""+a,children:e,containerInfo:t,implementation:r}}var rf=bCe.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function k4(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}Vi.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Gi;Vi.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(sA(299));return ICe(e,t,null,r)};Vi.flushSync=function(e){var t=rf.T,r=Gi.p;try{if(rf.T=null,Gi.p=2,e)return e()}finally{rf.T=t,Gi.p=r,Gi.d.f()}};Vi.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,Gi.d.C(e,t))};Vi.prefetchDNS=function(e){typeof e=="string"&&Gi.d.D(e)};Vi.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var r=t.as,a=k4(r,t.crossOrigin),n=typeof t.integrity=="string"?t.integrity:void 0,i=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;r==="style"?Gi.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:n,fetchPriority:i}):r==="script"&&Gi.d.X(e,{crossOrigin:a,integrity:n,fetchPriority:i,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};Vi.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var r=k4(t.as,t.crossOrigin);Gi.d.M(e,{crossOrigin:r,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&Gi.d.M(e)};Vi.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var r=t.as,a=k4(r,t.crossOrigin);Gi.d.L(e,r,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};Vi.preloadModule=function(e,t){if(typeof e=="string")if(t){var r=k4(t.as,t.crossOrigin);Gi.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:r,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else Gi.d.m(e)};Vi.requestFormReset=function(e){Gi.d.r(e)};Vi.unstable_batchedUpdates=function(e,t){return e(t)};Vi.useFormState=function(e,t,r){return rf.H.useFormState(e,t,r)};Vi.useFormStatus=function(){return rf.H.useHostTransitionStatus()};Vi.version="19.2.4"});var dA=m(Yi=>{"use strict";o();process.env.NODE_ENV!=="production"&&(function(){function e(){}function t(y){return""+y}function r(y,S,E){var w=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;try{t(w);var M=!1}catch{M=!0}return M&&(console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",typeof Symbol=="function"&&Symbol.toStringTag&&w[Symbol.toStringTag]||w.constructor.name||"Object"),t(w)),{$$typeof:f,key:w==null?null:""+w,children:y,containerInfo:S,implementation:E}}function a(y,S){if(y==="font")return"";if(typeof S=="string")return S==="use-credentials"?S:""}function n(y){return y===null?"`null`":y===void 0?"`undefined`":y===""?"an empty string":'something with type "'+typeof y+'"'}function i(y){return y===null?"`null`":y===void 0?"`undefined`":y===""?"an empty string":typeof y=="string"?JSON.stringify(y):typeof y=="number"?"`"+y+"`":'something with type "'+typeof y+'"'}function u(){var y=I.H;return y===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
|
|
2
2
|
1. You might have mismatching versions of React and the renderer (such as React DOM)
|
|
3
3
|
2. You might be breaking the Rules of Hooks
|
|
4
4
|
3. You might have more than one copy of React in the same app
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as _}from"./chunk-
|
|
1
|
+
import{a as _}from"./chunk-O36EB75H.js";import{c as O,i as A,n as k}from"./chunk-XZHUUA6U.js";import{a as P}from"./chunk-Y45QFHVA.js";import{b as S,m as I}from"./chunk-XBCFYD3T.js";import{j as T,k as q,l as L,p as R,v as b}from"./chunk-4MUH4E2U.js";import{b as g}from"./chunk-EA5LKCRF.js";import{ra as E}from"./chunk-OSGXBBUJ.js";import{a as v}from"./chunk-DPGUL2TW.js";import{i}from"./chunk-VDE7IIYQ.js";import{Cb as l,Eb as m,Kb as o,Nb as c}from"./chunk-UYWRJHAJ.js";import{b as x}from"./chunk-L4DFMMOI.js";import{b as G}from"./chunk-I3J63RFV.js";import{e as W,g as r}from"./chunk-VKWPEFWQ.js";r();r();r();var d=class extends P{context="REPL";constructor(t){super(t),this.themeId=T()}async create(t,n){let s=await super.create(t,n);return await this.uploadThemeAssets(s),s}async findOrCreate(){let t=await this.fetch();if(!t){let n=`Liquid Console (${v})`;t=await this.create(S,n)}return t}setTheme(t){q(t)}removeTheme(){L()}async uploadThemeAssets(t){let n=[{key:"config/settings_data.json",value:"{}"},{key:"config/settings_schema.json",value:"[]"},{key:"snippets/eval.liquid",value:""},{key:"layout/password.liquid",value:"{{ content_for_header }}{{ content_for_layout }}"},{key:"layout/theme.liquid",value:"{{ content_for_header }}{{ content_for_layout }}"},{key:"sections/announcement-bar.liquid",value:""},{key:"templates/index.json",value:JSON.stringify({sections:{announcement:{type:"announcement-bar",settings:{}}},order:["announcement"]})}];await I(t.id,n,this.adminSession)}};r();r();async function $(e){return await H(e)??await j(e)??await Y(e)??await z(e)??void 0}async function H(e){c(`Evaluating snippet - ${e.snippet}`);let t=`{ "type": "display", "value": {{ ${e.snippet} | json }} }`,n=await f({...e,snippet:t}),s=await n.text();return F(n.status,s)?Q(s):void 0}async function j(e){c(`Evaluating context - ${e.snippet}`);let t=`{ "type": "context", "value": "{% ${e.snippet.replace(/"/g,'\\"')} %}" }`,n=await f({...e,snippet:t}),s=await n.text();F(n.status,s)&&e.replSession.push(JSON.parse(t))}async function Y(e){if(c(`Evaluating assignment context - ${e.snippet}`),oe(e.snippet))return e.snippet=`assign ${e.snippet}`,o(m`${l.gray(`> ${e.snippet}`)}`),j(e)}async function z(e){c(`Evaluating syntax error - ${e.snippet}`);let t="";if(X(e.snippet)||(t=await(await f({...e,snippet:`{{ ${e.snippet} }}`})).text()),h(t)||(t=await(await f({...e,snippet:`{% ${e.snippet} %}`})).text()),h(t)){let n=t.replace(/ \(snippets\/eval line \d+\)/,"");B(e.snippet,n)}}function B(e,t){if(t.includes("Unknown tag")){o(m`${l.errorText(`Unknown object, property, tag, or filter: '${e}'`)}`);return}let n=C(t);n&&o(m`${l.errorText(n)}`)}async function f(e){let t=K(e);e.url.startsWith("/")||(e.url=`/${e.url}`);let n=await A(e.themeSession,{method:"GET",path:e.url,query:[],themeId:e.themeId,sectionId:"announcement-bar",headers:{},replaceTemplates:{"sections/announcement-bar.liquid":"{% render 'eval' %}","snippets/eval.liquid":`
|
|
2
2
|
${t}
|
|
3
3
|
`}});return Z(n)&&ne(),ee(n)&&se(),te(n)&&re(),n}function K(e){return`[${[...e.replSession.map(n=>JSON.stringify(n)),e.snippet].join(",").replace(/\\"/g,'"')}]`}function Q(e){let t=C(e);if(t)return JSON.parse(t)?.find(s=>s.type==="display")?.value}function C(e){let t=e.split(`
|
|
4
4
|
`).slice(1,-1);if(t.length!==0)return t.join("")}function h(e){return e.includes("Liquid syntax error")}function X(e){return/^\s*assign\s*((?:\(?[\w\-.[\]]\)?)+)\s*=\s*(.*)\s*/m.test(e)}function Z(e){return e.status===401||e.status===403}function ee(e){return e.status===430||e.status===429}function te(e){return e.headers.get("server-timing")?.includes('pageType;desc="404"')??!1}function ne(){throw new i("Session expired. Please initiate a new one.")}function se(){throw new i("Evaluations limit reached. Try again later.")}function re(){throw new i("Page not found. Please provide a valid --url value!")}function oe(e){return/^\s*((?:\(?[\w\-.[\]]\)?)+)\s*=\s*(.*)\s*/m.test(e)}function F(e,t){return e===200&&!h(t)}r();function N(e){if(D(e)){o("Object can't be printed, but you can access its fields. Read more at https://shopify.dev/docs/api/liquid.");return}if(e==null){M("null");return}let t=JSON.stringify(e,null,2);M(t)}function D(e){if(Array.isArray(e))return e.length>0?D(e[0]):!1;if(e&&typeof e=="object"){let n=e.error;return typeof n=="string"&&n.includes("json not allowed for this object")}return!1}function M(e){return o(m`${l.cyan(e)}`)}import{createInterface as ie}from"readline";var ae=`Liquid Console doesn't support Liquid delimiters such as '{{ ... }}' or '{% ... %}'.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as L}from"./chunk-
|
|
1
|
+
import{a as L}from"./chunk-5BGUKF7L.js";import{a as J}from"./chunk-FMBC7LZB.js";import{a as X}from"./chunk-YKK4PGCQ.js";import{B,C as m,D as y,F as H,G as K,H as V,I as q,J as Q,K as z,L as h,a as U,c as O,d as b,g as j,i as M,p as W,u as Y}from"./chunk-PFBESNYV.js";import{b as N}from"./chunk-EA5LKCRF.js";import{b as T}from"./chunk-4Q5TSWQL.js";import{A as g,B as _,D as G,V as E,y as D,z as F}from"./chunk-IN634BRF.js";import{Ib as R,sa as $}from"./chunk-UYWRJHAJ.js";import{b as de}from"./chunk-I3J63RFV.js";import{g as d,q as A}from"./chunk-3VYOLEQE.js";import{e as ue,g as a}from"./chunk-VKWPEFWQ.js";a();a();a();function Z(e,t){return t==="none"?0:e.scan.issues.some(s=>b[s.severity]>=b[t])?1:0}async function ee({includeDirs:e,excludePatterns:t,noGitIgnore:i,...s}){let n=Date.now();return{...await M(s,{includeDirs:e,excludePatterns:t,noGitIgnore:i}),elapsedMilliseconds:Date.now()-n}}function te({includeDirs:e,excludePatterns:t,noGitIgnore:i,...s}){return j(s,{includeDirs:e,excludePatterns:t,noGitIgnore:i})}a();var pe={high:"High",medium:"Medium",low:"Low"},w=3,v=8;function he(e){let t=fe(e),i=W(e.scan.issues);return{type:t,options:{headline:ge(e,i),body:me(e),reference:[{subdued:`Engine: ${e.engine.name} ${e.engine.version}`},{subdued:`Ruleset: ${e.engine.ruleset}`},...i.some(s=>s.issues.length>1)&&!e.verbose?[{subdued:"Use --verbose for every occurrence and fix. deterministic-findings.json retains all file and line details."}]:[]],customSections:we(e,i)}}}function ie(e){let{type:t,options:i}=he(e);if(t==="success"){F(i);return}if(t==="warning"){g(i);return}_(i)}function ne(e){return e.scan.scan.coverage_gaps.length>0}function fe(e){return e.scan.issues.some(t=>t.severity==="high")?"error":e.scan.issues.length>0||ne(e)?"warning":"success"}function ge(e,t){let i=e.scan.issues.length;return t.length<i?`${t.length} security issue ${t.length===1?"group":"groups"} found (${i} occurrences).`:i>0?`${i} security ${i===1?"issue":"issues"} found.`:ne(e)?"Scan completed with coverage gaps.":"No security issues found."}function me(e){let t=e.scan,i=[{userInput:t.app.name},{char:"."},`${t.scan.files_scanned} files scanned in ${Ie(e.elapsedMilliseconds)}.`],s=t.scan.checks_executed.filter(n=>n.status==="not_applicable").length;return s>0&&i.push({info:`
|
|
2
2
|
${s} check${s===1?"":"s"} not applicable.`}),i.push({info:`
|
|
3
|
-
${e.agentCheckCount} check${e.agentCheckCount===1?"":"s"} ready for your coding agent.`}),i}function ye(e){return[["Have your coding agent run the agent checks"],["Record the agent results with",{command:h(e.commands.record)}],["Review the results with",{command:h(e.commands.review)}]]}function ke(e){let t=m(e)??"not linked";return e.kind==="config"&&e.clientIdOverride?`${t} (from --client-id)`:t}function be(e){let{selection:t}=e;return{title:"Selection",body:{tabularData:[["App directory",t.appDirectory],["Config file",B(t)??"none"],["Client ID",ke(t)],["Scan directories",e.scanDirectories.map(({directory:i})=>d(t.appDirectory,i)||".").join(", ")]],firstColumnSubdued:!0}}}function
|
|
4
|
-
`)),f}let l=await t.execute(I);await oe(l,t),await t.recordMetadata({num_security_findings:l.scan.issues.length});let ae=await t.writeArtifacts(o,y(n),{deterministicFindings:l.deterministicFindings,agentChecks:l.agentChecks});t.renderReport($e(l,ae,e.verbose,p,n,k));let x=await Ae(e,t,s,l.agentChecks.checks.length);x!=="nothing"&&await t.deliverInstructions({appDirectory:o,resultsKey:y(n),copy:x==="copy",scanScope:r,commands:p});let P=Z(l,e.blocking);return P!==0&&t.setExitCode(P),f}var u=ue(de(),1);var C=class e extends T{static summary="Check an app for Shopify-specific security issues and write deterministic-findings.json and agent-checks.json.";static descriptionWithMarkdown="Runs an app security check locally and writes `deterministic-findings.json` and `agent-checks.json` to the results directory, `.shopify/app-security/<results key>/`. The results key is `--client-id` when you pass it, and otherwise the name of the app configuration file without `.toml`; the other `app security` commands take the same selection flags and find the same directory. Every run replaces both files, so it's always safe to run the check again.\n\n`deterministic-findings.json` holds the deterministic scan results. `agent-checks.json` holds the checks for your coding agent to investigate; the agent's results are recorded with `shopify app security record`. Use `--config` to select a specific app configuration when the project has multiple `shopify.app*.toml` files; the check inspects only that configuration. Use `--client-id` to replace the configuration's client ID for this run. `--client-id` is checked against your Shopify account before anything is scanned, so it needs you to be logged in. When no app configuration exists, use `--without-app-config --client-id <client-id>` to scan `--path` anyway with config checks skipped; in an interactive terminal the command offers to do this.\n\nThe check scans the app directory and each `--include-dir`. Git ignore rules apply by default: a file or directory that Git ignores is skipped, using the rules of the repository that contains it, while files that Git tracks are always scanned. Use `--no-git-ignore` to turn Git ignore rules off for every scanned directory.\n\nUse `--exclude` to skip more paths. Each value is a glob that is matched against the path relative to the working directory, so a path above it starts with `../`, and a name at any depth needs `**/`, for example `--exclude '**/generated'`. Repeat the flag to add globs. An exclusion can't remove the selected app configuration file. Quote each value so your shell doesn't expand `*`. The coding-agent instructions this check offers repeat the globs. Other `app security` commands don't take `--exclude` or `--no-git-ignore`, so pass the same flags each time you run the check.\n\nUse `--list-files` to check the scope before scanning: it prints the files the check would gather, one path per line and relative to the app directory, and then stops. It writes no results and never prompts. `--client-id` is still checked, but doesn't change the list.\n\nIn interactive terminals, the command offers to copy the coding-agent instructions, print them, or choose nothing; copying is the default. In CI and other non-interactive environments, instructions aren't offered unless you pass `--yes`, which prints them. You can also run `shopify app security instructions` to print, copy, or write them later.";static description=this.descriptionWithoutMarkdown();static flags={...N,...
|
|
3
|
+
${e.agentCheckCount} check${e.agentCheckCount===1?"":"s"} ready for your coding agent.`}),i}function ye(e){return[["Have your coding agent run the agent checks"],["Record the agent results with",{command:h(e.commands.record)}],["Review the results with",{command:h(e.commands.review)}]]}function ke(e){let t=m(e)??"not linked";return e.kind==="config"&&e.clientIdOverride?`${t} (from --client-id)`:t}function be(e){let{selection:t}=e;return{title:"Selection",body:{tabularData:[["App directory",t.appDirectory],["Config file",B(t)??"none"],["Client ID",ke(t)],["Scan directories",e.scanDirectories.map(({directory:i})=>d(t.appDirectory,i)||".").join(", ")]],firstColumnSubdued:!0}}}function we(e,t){let i=[be(e)];for(let n of["high","medium","low"]){let o=t.filter(r=>r.severity===n);o.length!==0&&i.push({title:pe[n],body:{list:{items:o.flatMap(r=>[Se(r),...e.verbose?r.issues.map(ve):[]])}}})}if(e.scan.scan.coverage_gaps.length>0){let n=e.scan.scan.coverage_gaps,o=n.slice(0,v).map(r=>r.message);n.length>v&&o.push({info:`${n.length-v} more coverage gaps`}),i.push({title:"Coverage gaps",body:{list:{items:o}}})}let{appDirectory:s}=e.selection;return i.push({title:"Artifacts",body:{list:{items:[["Deterministic findings:",{filePath:d(s,e.deterministicFindingsPath)}],["Agent security check instructions:",{filePath:d(s,e.agentChecksPath)}]]}}}),i.push({title:"Next steps",body:{list:{items:ye(e),ordered:!0}}}),e.verbose&&i.push({title:"Scan details",body:{tabularData:[["Framework",e.scan.detection.framework],["Surface",e.scan.detection.surface],["Languages",e.scan.detection.languages.map(n=>`${n.name} (${n.support})`).join(", ")||"none"],["Capabilities",Ce(e.scan.capabilities)],["Rules run",String(e.scan.scan.rules_run)],["Not run",String(e.scan.scan.rules_skipped)]],firstColumnSubdued:!0}}),i}function ve(e){let t=e.location.line?`${e.location.file}:${e.location.line}`:e.location.file,i=[{bold:e.title},se(e.id),{filePath:t}];return i.push({subdued:e.message},{subdued:`Fix: ${e.fix.description}`}),e.fix.guide&&(e.fix.guide.startsWith("https://")||e.fix.guide.startsWith("http://")?i.push({link:{label:"Guide",url:e.fix.guide}}):i.push({subdued:`Guide: ${e.fix.guide}`})),e.snippet&&i.push({subdued:`Code: ${e.snippet}`}),i}function Se(e){let t=e.issues[0],i=e.issues.length,s=e.files.length,n=e.files.slice(0,w).map(o=>{let r=e.issues.find(f=>f.location.file===o);return{filePath:r.location.line?`${o}:${r.location.line}`:o}});return[{bold:t.title},se(t.id),`${i} ${i===1?"occurrence":"occurrences"} across ${s} ${s===1?"file":"files"}`,...n,...s>w?[{subdued:`+${s-w} more files`}]:[]]}function se(e){let t=O(e);return t?{link:{label:e,url:t}}:{subdued:e}}function Ce(e){let t=Object.entries(e).filter(([,i])=>i).map(([i])=>i);return t.length>0?t.join(", "):"none detected"}function Ie(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function xe(e){return{message:`${e} recommended agent ${e===1?"check":"checks"} available to complete your scan. How do you want to pass that prompt to your agent?`,choices:[{label:"Copy instructions to the clipboard",value:"copy"},{label:"Print instructions to the terminal",value:"print"},{label:"Nothing",value:"nothing"}],defaultValue:"copy"}}var Pe={resolveSelection:H,execute:ee,listFiles:te,writeArtifacts:Y,canPrompt:E,selectInstructionsDestination:e=>G(xe(e)),deliverInstructions:J,output:R,renderInfo:D,renderWarning:g,renderReport:ie,setExitCode:e=>{process.exitCode=e},recordMetadata:X};async function Ae(e,t,i,s){return e.skipInstructions?"nothing":e.yes?"print":i?t.selectInstructionsDestination(s):"nothing"}function $e(e,t,i,s,n,o){return{scan:e.scan,selection:n,scanDirectories:o,engine:e.engine,verbose:i,elapsedMilliseconds:e.elapsedMilliseconds,commands:s,deterministicFindingsPath:t.deterministicFindingsPath,agentChecksPath:t.agentChecksPath,agentCheckCount:e.agentChecks.checks.length}}function De(e){return e.replace(/[?*()[\]{}!#\\]/g,"\\$&")}async function oe(e,t){if(e.ignoredScanDirectories.length===0&&e.otherAppDirectories.length===0)return;let i=await $(A()),s=n=>d(i,n)||".";for(let n of e.ignoredScanDirectories)t.renderWarning({headline:`${s(n)} is ignored by Git, so only the files Git tracks in it are scanned.`,body:["Use",{command:"--no-git-ignore"},"to scan everything in it."]});for(let n of e.otherAppDirectories){let o=s(n);t.renderWarning({headline:`${o} holds another app's configuration, so its files are scanned as part of this app.`,body:["Use",{command:`--exclude ${z(De(o),Q())}`},"to leave it out."]})}}async function S(e,t=Pe){let i=await K(e.includeDirs),s=!e.listFiles&&t.canPrompt(),n=await t.resolveSelection({path:e.directory,config:e.configName,clientId:e.clientId,withoutAppConfig:e.withoutAppConfig,allowPrompts:s,validateClientIdFlag:!0}),{appDirectory:o}=n,r={include_dirs:[...e.includeDirs],excludes:[...e.excludePatterns],no_git_ignore:e.noGitIgnore},p=q(n,e.directory,r),f={selection:n,resultsKey:y(n),commands:p};(n.kind==="no-config"?!e.withoutAppConfig:n.appConfigFilePicked===!0)&&t.renderInfo({headline:"To skip these prompts next time, run:",body:[{command:h(p.scan)}]});let re=n.kind==="config"?n.appConfigDirectories??[]:[],{scanDirectories:k,requestedScanDirectories:ce}=V(o,i,re),I={appDirectory:o,scanDirectories:k.map(({directory:c})=>c),requestedScanDirectories:ce,appConfigDirectories:k.filter(({origin:c})=>c==="app_config_directory").map(({directory:c})=>c),appConfigFilePath:n.kind==="config"?n.appConfigFilePath:void 0,clientId:m(n),includeDirs:e.includeDirs,excludePatterns:e.excludePatterns,noGitIgnore:e.noGitIgnore};if(e.listFiles){let{paths:c,...le}=await t.listFiles(I);return await oe(le,t),c.length>0&&t.output(c.join(`
|
|
4
|
+
`)),f}let l=await t.execute(I);await oe(l,t),await t.recordMetadata({num_security_findings:l.scan.issues.length});let ae=await t.writeArtifacts(o,y(n),{deterministicFindings:l.deterministicFindings,agentChecks:l.agentChecks});t.renderReport($e(l,ae,e.verbose,p,n,k));let x=await Ae(e,t,s,l.agentChecks.checks.length);x!=="nothing"&&await t.deliverInstructions({appDirectory:o,resultsKey:y(n),copy:x==="copy",scanScope:r,commands:p});let P=Z(l,e.blocking);return P!==0&&t.setExitCode(P),f}var u=ue(de(),1);var C=class e extends T{static summary="Check an app for Shopify-specific security issues and write deterministic-findings.json and agent-checks.json.";static descriptionWithMarkdown="Runs an app security check locally and writes `deterministic-findings.json` and `agent-checks.json` to the results directory, `.shopify/app-security/<results key>/`. The results key is `--client-id` when you pass it, and otherwise the name of the app configuration file without `.toml`; the other `app security` commands take the same selection flags and find the same directory. Every run replaces both files, so it's always safe to run the check again.\n\n`deterministic-findings.json` holds the deterministic scan results. `agent-checks.json` holds the checks for your coding agent to investigate; the agent's results are recorded with `shopify app security record`. Use `--config` to select a specific app configuration when the project has multiple `shopify.app*.toml` files; the check inspects only that configuration. Use `--client-id` to replace the configuration's client ID for this run. `--client-id` is checked against your Shopify account before anything is scanned, so it needs you to be logged in. When no app configuration exists, use `--without-app-config --client-id <client-id>` to scan `--path` anyway with config checks skipped; in an interactive terminal the command offers to do this.\n\nThe check scans the app directory and each `--include-dir`. Git ignore rules apply by default: a file or directory that Git ignores is skipped, using the rules of the repository that contains it, while files that Git tracks are always scanned. Use `--no-git-ignore` to turn Git ignore rules off for every scanned directory.\n\nUse `--exclude` to skip more paths. Each value is a glob that is matched against the path relative to the working directory, so a path above it starts with `../`, and a name at any depth needs `**/`, for example `--exclude '**/generated'`. Repeat the flag to add globs. An exclusion can't remove the selected app configuration file. Quote each value so your shell doesn't expand `*`. The coding-agent instructions this check offers repeat the globs. Other `app security` commands don't take `--exclude` or `--no-git-ignore`, so pass the same flags each time you run the check.\n\nUse `--list-files` to check the scope before scanning: it prints the files the check would gather, one path per line and relative to the app directory, and then stops. It writes no results and never prompts. `--client-id` is still checked, but doesn't change the list.\n\nIn interactive terminals, the command offers to copy the coding-agent instructions, print them, or choose nothing; copying is the default. In CI and other non-interactive environments, instructions aren't offered unless you pass `--yes`, which prints them. You can also run `shopify app security instructions` to print, copy, or write them later.";static description=this.descriptionWithoutMarkdown();static flags={...N,...U,"include-dir":u.Flags.string({description:"Also scan this directory, relative to the working directory. Repeat the flag to add directories. Use it for code that lives outside the app directory, such as a backend or a shared library.",multiple:!0}),exclude:u.Flags.string({description:"Skip paths that match this glob, relative to the working directory. Repeat the flag to add globs. The selected app configuration file can't be excluded.",multiple:!0}),"no-git-ignore":u.Flags.boolean({description:"Turn off Git ignore rules for every scanned directory, so files that Git ignores are scanned too. Files that Git tracks are always scanned.",env:"SHOPIFY_FLAG_NO_GIT_IGNORE"}),"list-files":u.Flags.boolean({description:"Print the files the check would gather, one path per line, and stop. Nothing is scanned, no results are written, and nothing is prompted for.",env:"SHOPIFY_FLAG_LIST_FILES",exclusive:["yes","skip-instructions","blocking"]}),...L,yes:u.Flags.boolean({description:"Print coding-agent instructions without prompting.",default:!1,exclusive:["skip-instructions"],env:"SHOPIFY_FLAG_YES"}),"skip-instructions":u.Flags.boolean({description:"Don't offer the coding-agent instructions after the scan. Use it when you want only the deterministic scan results.",default:!1,exclusive:["yes"],env:"SHOPIFY_FLAG_APP_SECURITY_SKIP_INSTRUCTIONS"})};async run(){let{flags:t}=await this.parse(e);await S({directory:t.path,configName:t.config,clientId:t["client-id"],withoutAppConfig:!!t["without-app-config"],verbose:!!t.verbose,blocking:t.blocking,yes:t.yes,skipInstructions:t["skip-instructions"],includeDirs:t["include-dir"]??[],excludePatterns:t.exclude??[],noGitIgnore:!!t["no-git-ignore"],listFiles:!!t["list-files"]})}};export{C as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as i,i as t}from"./chunk-
|
|
1
|
+
import{h as i,i as t}from"./chunk-VDE7IIYQ.js";import{g as n}from"./chunk-VKWPEFWQ.js";n();var o=e=>new a(e),s=e=>new u(e),a=class{value;constructor(r){this.value=r}isErr(){return!1}doOnOk(r){return r(this.value),o(this.value)}valueOrBug(){return this.value}valueOrAbort(){return this.value}map(r){return o(r(this.value))}mapError(r){return o(this.value)}},u=class{error;constructor(r){this.error=r}isErr(){return!0}doOnOk(r){return s(this.error)}valueOrBug(){throw this.error}valueOrAbort(){if(this.error instanceof i)throw this.error;if(this.error instanceof Error){let r=new t(this.error.message);throw r.stack=this.error.stack,r}else throw new t(`${this.error}`)}map(r){return s(this.error)}mapError(r){return s(r(this.error))}};export{o as a,s as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as u,c as m}from"./chunk-
|
|
1
|
+
import{b as u,c as m}from"./chunk-EA5LKCRF.js";import{b as h}from"./chunk-4Q5TSWQL.js";import{N as i}from"./chunk-IN634BRF.js";import{a as n}from"./chunk-UGJN5Q6Y.js";import{Ib as p,b as s}from"./chunk-UYWRJHAJ.js";import{b as g}from"./chunk-I3J63RFV.js";import{e as S,g as e}from"./chunk-VKWPEFWQ.js";e();e();async function f(t){let r=new URLSearchParams;return r.append("search",t??""),{url:`https://shopify.dev/docs?${r.toString()}`}}e();e();var o=n({name:"SearchResult",schema:s.object({url:s.string().url()})});async function l(t,r){r==="json"?p(o.encode(t)):await i(t.url)}var d=S(g(),1),a=class t extends h{static descriptionWithMarkdown="Search shopify.dev for the most relevant content matching a query. Best for discovery \u2014 surfacing the relevant pieces of documentation for a topic, rather than retrieving a whole document. To download a full document verbatim, use `doc fetch`.";static description=this.descriptionForHelp();static usage="search [query]";static examples=[`# open the search modal on Shopify.dev
|
|
2
2
|
shopify search
|
|
3
3
|
|
|
4
4
|
# search for a term on Shopify.dev
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as n}from"./chunk-
|
|
1
|
+
import{a as n}from"./chunk-A6KNDSNT.js";import{b as i}from"./chunk-4Q5TSWQL.js";import{g as e}from"./chunk-VKWPEFWQ.js";e();var t=class extends i{static description="Generate a notifications.json file for the the CLI, appending a new notification to the current file.";static hidden=!0;async run(){await n()}};export{t as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as O,c as b,f as F}from"./chunk-
|
|
1
|
+
import{b as O,c as b,f as F}from"./chunk-EA5LKCRF.js";import{b as L}from"./chunk-4Q5TSWQL.js";import{F as g,t as f,w as p,x as d,y as h,z as S}from"./chunk-OSGXBBUJ.js";import{j as r}from"./chunk-XVOUKPGD.js";import{D as w,J as y}from"./chunk-IN634BRF.js";import{a as m}from"./chunk-UGJN5Q6Y.js";import{Ib as A,Mb as I,b as n}from"./chunk-UYWRJHAJ.js";import{b as j}from"./chunk-I3J63RFV.js";import{e as C,g as i}from"./chunk-VKWPEFWQ.js";i();i();var a=m({name:"AuthLoginResult",schema:n.object({status:n.literal("success"),alias:n.string()}).strict()});i();var c="NEW_LOGIN";function _(s,e){let t=[],o=s[e];if(o)for(let[l,x]of Object.entries(o))t.push({label:x.identity.alias??l,value:l});return t}async function q(){let s=await g({},{forceNewSession:!0}),e=await d(s.userId);if(!e){let t=await y({message:"Enter an alias for this account (e.g. your email or a nickname)"});return await h(s.userId,t),t}return e}async function E(){let s=await p(),e=await f(),t=[];return s&&t.push(..._(s,e)),t.length>0&&t.push({label:"Log in with a different account",value:c}),t}async function N(s){if(s){let o=await S(s);if(o)return r(o),s}let e=await E(),t=c;return e.length>0&&(t=await w({message:"Which account would you like to use?",choices:e})),t===c?q():(r(t),e.find(o=>o.value===t)?.label??t)}var v=C(j(),1);var u=class s extends L{static descriptionWithMarkdown="Logs you in to your Shopify account.";static description=this.descriptionForHelp();static flags={...O,...b,alias:F(v.Flags.string({description:"Alias of an existing session you want to use.",env:"SHOPIFY_FLAG_AUTH_ALIAS"}))};static get jsonOutputSchema(){return a}async run(){let{flags:e}=await this.parse(s),t=await N(e.alias);e.json?A(a.encode({status:"success",alias:t})):I(`Current account: ${t}.`)}};export{u as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as C}from"./chunk-
|
|
1
|
+
import{a as C}from"./chunk-3B3CJS5I.js";import{a as y}from"./chunk-LOTMFUSV.js";import{Ca as k,Fa as w,Ga as A,Ha as P}from"./chunk-KEI3OJVP.js";import{b as h}from"./chunk-EA5LKCRF.js";import{z as g}from"./chunk-IN634BRF.js";import{i as u}from"./chunk-VDE7IIYQ.js";import{j as r}from"./chunk-3VYOLEQE.js";import{g as n}from"./chunk-VKWPEFWQ.js";n();n();async function s(p){let{directory:t,configName:o,configPath:e,configuration:a,remoteApp:i}=p;if(!a.client_id)throw new u("The selected configuration is not linked to a remote app.","Run `shopify app config link` first to link this configuration to a Shopify app.");let c=i.developerPlatformClient,l=await k({developerPlatformClient:c,app:i}),m=i.flags,b={directory:t,configName:o,developerPlatformClient:c,apiKey:a.client_id},d=await w(b,l,m,i.apiKey),v=r(e),x=await A({remoteApp:i,developerPlatformClient:c,specifications:l,flags:m,configFileName:v,appDirectory:d.appDirectory??t,localAppOptions:d});return{configPath:e,configuration:x,remoteApp:i}}var f=class p extends C{static summary="Refresh an already-linked app configuration without prompts.";static descriptionWithMarkdown="Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.";static description=this.descriptionForHelp();static flags={...h,...y};async run(){let{flags:t}=await this.parse(p),{app:o,remoteApp:e}=await P({directory:t.path,clientId:t["client-id"],forceRelink:t.reset,userProvidedConfigName:t.config}),{configuration:a,configPath:i}=await s({directory:t.path,configName:t.config,configPath:o.configPath,configuration:o.configuration,remoteApp:e});return g({headline:`Pulled latest configuration for "${a.name}"`,body:`Updated ${r(i)} with the remote data.`}),{app:o}}};export{f as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as m}from"./chunk-
|
|
1
|
+
import{j as m}from"./chunk-OSGXBBUJ.js";import{a as k,b as G}from"./chunk-C4G7OKJD.js";import{f as H}from"./chunk-HJPAHR2V.js";import{i as u}from"./chunk-VDE7IIYQ.js";import{Aa as x,Cb as p,Eb as l,Nb as h,Sa as R,Ta as T,oa as g,ya as y}from"./chunk-UYWRJHAJ.js";import{d as $,i as b}from"./chunk-3VYOLEQE.js";import{g as w}from"./chunk-VKWPEFWQ.js";w();var d=class extends Error{constructor(t,e,o){super(`The request to GitHub API URL ${t} failed with status code ${e} and the following error message: ${o.message}`)}};async function A(i,t,e={filter:()=>!0}){h(l`Getting the latest release of GitHub repository ${i}/${t}...`);let o=`https://api.github.com/repos/${i}/${t}/releases`,r=await m(o);try{let s=await r.text(),n=JSON.parse(s);if(r.status!==200)throw new d(o,r.status,n);return n.find(e.filter)}catch(s){throw s instanceof SyntaxError?new u(`Received invalid response from GitHub API (HTTP ${r.status}).`,"The response could not be parsed as JSON. The service may be temporarily unavailable. Please try again."):s}}function B(i){let t=/^(?:(?:https:\/\/)?([^:/]+\.[^:/]+)\/|git@([^:/]+)[:/]|([^/]+):)?([^/\s]+)\/([^/\s#]+)(?:((?:\/[^/\s#]+)+))?(?:\/)?(?:#(.+))?/.exec(i);if(!t){let S=["github:user/repo","user/repo/subdirectory","git@github.com:user/repo","user/repo#dev","https://github.com/user/repo"];return G(new Error(`Parsing the url ${i} failed. Supported formats are ${S.join(", ")}.`))}let e=t[1]??t[2]??t[3]??"github.com",o=e==="github"?"github.com":e,r=t[4],s=t[5].replace(/\.git$/,""),n=t[6]?.slice(1),a=t[7],f=a?`#${a}`:"",c=`git@${o}:${r}/${s}`,P=`https://${o}/${r}/${s}`,v=["https:/",o,r,s,n].join("/").concat(f);return k({full:v,site:o,user:r,name:s,ref:a,subDirectory:n,ssh:c,http:P})}function I(i){let t=new URL(i),e=t.hash?t.hash.slice(1):void 0,[o,r,s,...n]=t.pathname.split("/"),a=n.length>0?n.join("/"):void 0;return{baseURL:`${t.origin}/${r}/${s}`,branch:e,filePath:a}}async function q(i,t,e,o){let r=`https://github.com/${i}/releases/download/${t}/${e}`;return H("cmd_all_timing_network_ms")(async()=>{h(l`Downloading ${p.link(e,r)}`),await g(async s=>{let n=$(s,e),a;try{if(a=await m(r,void 0,"slow-request"),!a.ok)throw new u(`Failed to download ${e}: ${a.statusText}`)}catch(c){throw new u(`Failed to download ${e}: ${c instanceof Error?c.message:"unknown error"}`)}let f=await a.arrayBuffer();await y(n,Buffer.from(f)),await T(n,493),await x(b(o)),await R(n,o)}),h(l`${p.successIcon()} Successfully downloaded ${p.path(o)}`)})}export{A as a,B as b,I as c,q as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as u,b as l}from"./chunk-
|
|
1
|
+
import{a as u,b as l}from"./chunk-TFB4JJFQ.js";import{f as d,i as m}from"./chunk-IH2CB73H.js";import{a as c}from"./chunk-3B3CJS5I.js";import{Ha as p}from"./chunk-KEI3OJVP.js";import{i as s}from"./chunk-VDE7IIYQ.js";import{g as e}from"./chunk-VKWPEFWQ.js";e();e();async function f({clientId:a,operationIds:t,getOperation:n=m}){return Promise.all(t.map(async i=>{let o=await n({clientId:a,operationId:i});if(!o)throw new s(`Migration operation not found: ${i}`);return o}))}var r=class a extends c{static summary="Checks the status of app subscription migration operations.";static descriptionWithMarkdown="Checks app subscription migration operation status.\n\nRepeat `--id` for every operation GID returned by a multi-batch submission. With `--watch`, the command displays the current state while polling and outputs the final state after all requested operations reach a terminal status.\n\n`RUNNING` means an operation is still processing. `COMPLETED` means processing finished, but you must inspect the per-shop results to confirm each outcome. `FAILED` means the operation failed, and `CANCELED` means cancellation stopped further processing.\n\nUse `--json` to output every operation and its per-shop results as structured JSON.\n\nRun the command from an app project. By default, it uses the Client ID from the active app configuration. Use `--path` to select an app directory or `--config` to select a configuration. Pass `--client-id` to select a different app within the project. Use `--reset` to relink the app.";static description=this.descriptionWithoutMarkdown();static examples=["<%= config.bin %> <%= command.id %> --id <operation-id>","<%= config.bin %> <%= command.id %> --path ../my-app --config staging --id <operation-id-1> --id <operation-id-2> --watch","<%= config.bin %> <%= command.id %> --client-id <client-id> --id <operation-id> --json"];static flags={...d};async run(){let{flags:t}=await this.parse(a),{app:n,remoteApp:i}=await p({directory:t.path,clientId:t["client-id"],forceRelink:t.reset,userProvidedConfigName:t.config}),o=t.watch?await l({clientId:i.apiKey,operationIds:t.id}):await f({clientId:i.apiKey,operationIds:t.id});return u(o,t.json),{app:n}}};export{r as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as t}from"./chunk-
|
|
1
|
+
import{b as t}from"./chunk-CTVOXVXG.js";import{b as a}from"./chunk-4Q5TSWQL.js";import{g as r}from"./chunk-VKWPEFWQ.js";r();var i=class extends a{static summary="Upgrades Shopify CLI.";static descriptionWithMarkdown="Upgrades Shopify CLI using your package manager.";static description=this.descriptionForHelp();async run(){await t()}};export{i as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as U,c as w}from"./chunk-
|
|
1
|
+
import{b as U,c as w}from"./chunk-KY4WH4ZK.js";import{c as O,e as T}from"./chunk-7AP5E5CF.js";import{B as y,m as E,t as N,u as R,v as g,z as _}from"./chunk-3FCN4NS6.js";import{q as S,s as h}from"./chunk-XVOUKPGD.js";import{a as s}from"./chunk-DPGUL2TW.js";import{S as F,W as C,z as x}from"./chunk-IN634BRF.js";import{i as v}from"./chunk-VDE7IIYQ.js";import{Cb as c,Eb as p,Kb as d,Nb as u,Ob as M,tb as D,wb as V,xb as P}from"./chunk-UYWRJHAJ.js";import{d as J}from"./chunk-FKGN6F3F.js";import{p as $,q as A,r as L}from"./chunk-3VYOLEQE.js";import{a as H}from"./chunk-CX5CC6P5.js";import{e as B,g as I}from"./chunk-VKWPEFWQ.js";I();var Y=B(H());function j(){let e=V();if(!(!e||e==="unknown"))return e==="homebrew"?"brew upgrade shopify-cli":e==="yarn"?`${e} global add @shopify/cli@latest`:`${e} ${e==="pnpm"?"add":"install"} -g @shopify/cli@latest`}async function fe(e={}){let n=L()??A(),o=P(n),t=D();if(J()){d("Skipping upgrade in development mode.");return}if(!(e.autoupgrade&&!t))if(t){let r=j();if(!r)throw new Error("Could not determine the package manager");let[a,...i]=r.split(" ");if(!a)throw new Error("Could not determine the command to run");let l=g("@shopify/cli",s),q=l?`\u2728 New version of Shopify CLI available! (${s} \u2192 ${l})`:"\u2728 New version of Shopify CLI available!";d(p`${q}
|
|
2
2
|
Now upgrading by running: ${c.genericShellCommand(r)}...`),await F(a,i,{stdio:"inherit"});let f=await U();if(!f)throw new v("Couldn't verify the Shopify CLI version after upgrading.",p`Check the installed version by running ${c.genericShellCommand("shopify version")}.`);let k=l??s;if((0,Y.lt)(f,k))throw new v(`Failed to upgrade Shopify CLI. Expected to be on version ${k}, but version ${f} is now installed.`,"Your package manager may be resolving @shopify/cli from a registry with outdated versions. Check your npm registry configuration and try again.");x({headline:"Shopify CLI upgraded.",body:`You're now on version ${f}.`})}else if(o)await z(o,s);else throw new Error("Could not determine the local project directory")}function ge(){let e=s,n=g("@shopify/cli",e);if(!n){u("Auto-upgrade: No newer version available.");return}if(process.env.SHOPIFY_CLI_FORCE_AUTO_UPGRADE==="1")return u("Auto-upgrade: Forcing auto-upgrade because of SHOPIFY_CLI_FORCE_AUTO_UPGRADE."),n;if(!h()){u("Auto-upgrade: Skipping because auto-upgrade is not enabled.");return}if(C()){u("Auto-upgrade: Skipping auto-upgrade in CI.");return}if(w(e)){u("Auto-upgrade: Skipping auto-upgrade for pre-release version.");return}return n}async function me(){try{let{notifications:e}=await O();return T(e,"",["autoupgrade"]).some(o=>o.type==="error")}catch{return!1}}async function he(){if(C()||w(s)||h())return;let e=g("@shopify/cli",s);e&&await S("warn-on-available-upgrade",{days:1},async()=>{M(K(e))})}function K(e,n=!1){let o=j(),t=o?p`💡 Version ${e} available! Run ${c.genericShellCommand(o)}`.value:p`💡 Version ${e} available!`.value;if(n){let r=`https://github.com/Shopify/cli/releases/tag/${e}`,a=p`⚠️ This is a major version — review breaking changes before upgrading:\n ${c.link(r,r)}`.value;return`${t}
|
|
3
3
|
|
|
4
4
|
${a}`}return t}async function z(e,n){let o=(await y(e)).content,t=o.dependencies??{},r=o.devDependencies??{},i={...t,...r}[await b()];if(!i){u("Auto-upgrade: CLI dependency not found in project dependencies, skipping local upgrade.");return}i.slice(0,1).match(/[\^~]/)&&(i=n);let l=await R(await b(),i);l?Z(i,l):X(i),await G("prod",t,e),await G("dev",r,e)}async function G(e,n,o){let t=[await b(),...await Q()].filter(a=>!!n[a]).map(a=>({name:a,version:"latest"})),r=await N(o);t.length>0&&await _(t,{packageManager:await E(o),type:e,directory:o,stdout:process.stdout,stderr:process.stderr,addToRootDirectory:r})}async function b(){return(await W()).name}async function Q(){return(await W())?.oclif?.plugins??[]}var m;async function W(){if(!m){let e=await y($(import.meta.url));m=m??e.content}return m}function X(e){d(p`You're on the latest version, ${c.yellow(e)}, no need to upgrade!`)}function Z(e,n){d(p`Upgrading CLI from ${c.yellow(e)} to ${c.yellow(n)}...`)}export{j as a,fe as b,ge as c,me as d,he as e,K as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as p}from"./chunk-
|
|
1
|
+
import{c as p}from"./chunk-XBCFYD3T.js";import{ra as i}from"./chunk-OSGXBBUJ.js";import{A as f,B as d,E as m,H as l,V as a}from"./chunk-IN634BRF.js";import{i as s}from"./chunk-VDE7IIYQ.js";import{b as c}from"./chunk-L4DFMMOI.js";import{g as u}from"./chunk-VKWPEFWQ.js";u();function h(e){return[`'${e.name}'`,{subdued:`(#${e.id})`}]}function $(e){return{list:{items:e.map(h)}}}async function T(e,r="It doesn't seem like you're running this command in a theme directory.",o,n){if(e)return!0;if(n)return d({headline:o?`Environment: ${o}`:"",body:r}),!1;if(f({body:r}),c())throw new s("This command must run from a theme directory when user input is unavailable.","Run the command from a theme directory, or use `--force` to continue.");if(!a())return!0;let t=await m({message:"Do you want to proceed?"});return i(`theme-service:confirm-directory:${t}`),t}async function C(e,r,o){if(e.role!==p||o)return!0;if(!a())throw new s(`Can't ${r} on the live theme when user input is unavailable.`,"Use `--allow-live` to confirm that you want to continue.");let n=`You're about to ${r} on your live theme "${e.name}". This will make changes visible to customers. Are you sure you want to proceed?`,t=await m({message:n,confirmationMessage:"Yes, proceed with live theme",cancellationMessage:"No, cancel"});return i(`theme-service:confirm-live-theme:${t}`),t}async function x(e,r,o=!1){e.length>0&&await l(e,{renderOptions:{stdout:r??process.stderr},noProgressBar:o})}export{h as a,$ as b,T as c,C as d,x as e};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as E}from"./chunk-
|
|
1
|
+
import{a as E}from"./chunk-7NHCYOKI.js";import{a as I,b as w}from"./chunk-YY6TFARF.js";import{a as _}from"./chunk-2E2NYRQH.js";import{f as a,g as l,p as S,v as b}from"./chunk-4MUH4E2U.js";import{b as T,c as g}from"./chunk-EA5LKCRF.js";import{oa as s,ra as p}from"./chunk-OSGXBBUJ.js";import{y as f}from"./chunk-IN634BRF.js";import{d as m}from"./chunk-GOBTF2ZH.js";import{i as v}from"./chunk-VDE7IIYQ.js";import{Ib as c}from"./chunk-UYWRJHAJ.js";import{b as x}from"./chunk-I3J63RFV.js";import{e as L,g as i}from"./chunk-VKWPEFWQ.js";i();i();function A(t,e){return{theme:{id:t.id,name:t.name,role:t.role,shop:e.storeFqdn,preview_url:I(t,e),editor_url:w(t,e)}}}function D(t){let{platform:e,arch:n}=m(),o=a(),r=null;return o&&(r=Number(l())||null),{store:o??"Not configured",development_theme_id:r,cli_version:t.cliVersion,os:`${e}-${n}`,shell:process.env.SHELL??"unknown",node_version:process.version}}async function O(t,e){let n;if(e.development)n=await new E(t).findOrCreate();else{let o={filter:{theme:e.theme}};n=await _(t,o)}return n?A(n,t):void 0}async function y(t){return[M(),await j(t)]}function M(){let t=a()??"Not configured",e=l();return p(`theme-command:info:dev-theme-loaded:${e}`),N("Theme Configuration",[["Store",t],["Development Theme ID",e?`#${e}`:{subdued:"Not set"}]])}async function j(t){let{platform:e,arch:n}=m();return N("Tooling and System",[["Shopify CLI",t.cliVersion],["OS",`${e}-${n}`],["Shell",process.env.SHELL??"unknown"],["Node version",process.version]])}function N(t,e){return{title:t,body:{tabularData:e,firstColumnSubdued:!0}}}async function F(t,e){let n=Object.entries(t.theme).map(([o,r])=>{if(o==="editor_url"||o==="preview_url"){let C=String(r),$=o==="editor_url"?"Open in Theme Editor":"Preview Theme";return[u(o),{link:{url:C,label:$}}]}else return o==="id"?[u(o),`#${r}`]:[u(o),`${r}`]});return{customSections:[...e.environment?[{title:"Theme information",body:[{subdued:`Environment name: ${e.environment}`}]}]:[],{title:"Theme Details",body:{tabularData:n,firstColumnSubdued:!0}}]}}function u(t){return t.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}var d=L(x(),1);var h=class extends b{static description="Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.";static flags={...T,...g,...S,development:d.Flags.boolean({char:"d",description:"Retrieve info from your development theme.",env:"SHOPIFY_FLAG_DEVELOPMENT"}),theme:d.Flags.string({char:"t",description:"Theme ID or name of the remote theme.",env:"SHOPIFY_FLAG_THEME_ID"})};static multiEnvironmentsFlags=["store","password"];async command(e,n){if(s("theme-command:info"),e.theme||e.development){let o=await O(n,e);if(!o)throw new v("Theme not found!");if(e.json)return c(JSON.stringify(o,null,2));let r=await F(o,e);f(r)}else{if(e.json)return c(JSON.stringify(D({cliVersion:this.config.version}),null,2));let o=await y({cliVersion:this.config.version});f({customSections:o})}s("theme-command:info")}};export{h as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as I}from"./chunk-VKWPEFWQ.js";I();var o="4.9.3";export{o as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as i,c as n}from"./chunk-
|
|
1
|
+
import{b as i,c as n}from"./chunk-EA5LKCRF.js";import{b as u}from"./chunk-4Q5TSWQL.js";import{M as a}from"./chunk-OSGXBBUJ.js";import{a as e}from"./chunk-UGJN5Q6Y.js";import{Ib as c,Lb as r,b as t}from"./chunk-UYWRJHAJ.js";import{g as s}from"./chunk-VKWPEFWQ.js";s();var m=e({name:"AuthLogoutResult",schema:t.object({status:t.literal("success")}).strict()}),o=class p extends u{static descriptionWithMarkdown="Logs you out of the Shopify account or Partner account and store.";static description=this.descriptionForHelp();static flags={...i,...n};static get jsonOutputSchema(){return m}async run(){let{flags:l}=await this.parse(p);await a(),l.json?c(m.encode({status:"success"})):r("Logged out from all the accounts")}};export{o as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as d,b as f,c as g,d as x,g as C}from"./chunk-
|
|
1
|
+
import{a as d,b as f,c as g,d as x,g as C}from"./chunk-WS54VCDC.js";import{a as c}from"./chunk-3B3CJS5I.js";import{a as l}from"./chunk-LOTMFUSV.js";import{Ha as m}from"./chunk-KEI3OJVP.js";import{b as p}from"./chunk-EA5LKCRF.js";import{z as s}from"./chunk-IN634BRF.js";import{b as I}from"./chunk-I3J63RFV.js";import{e as y,g as a}from"./chunk-VKWPEFWQ.js";a();var h=y(I(),1);var o=class u extends c{static description="Import dashboard-managed extensions into your app.";static flags={...p,...l,"client-id":h.Flags.string({hidden:!1,description:"The Client ID of your app.",env:"SHOPIFY_FLAG_CLIENT_ID",exclusive:["config"]})};async run(){let{flags:i}=await this.parse(u),e=await m({directory:i.path,clientId:i["client-id"],forceRelink:i.reset,userProvidedConfigName:i.config}),t=await C({developerPlatformClient:e.developerPlatformClient,apiKey:e.remoteApp.apiKey,organizationId:e.remoteApp.organizationId,extensionTypes:g}),n=d(t);if(n.length===0)s({headline:["No extensions to migrate."]});else{let r=await f(n);await x({...e,extensions:t,extensionTypes:r.extensionTypes,buildExtensionConfig:r.buildExtensionConfig})}return{app:e.app}}};export{o as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-L4DFMMOI.js";import{b as p}from"./chunk-WNO2V53C.js";import{b as C}from"./chunk-I3J63RFV.js";import{a as c}from"./chunk-JD5P5RAJ.js";import{e as L,g as u}from"./chunk-VKWPEFWQ.js";u();u();import{fileURLToPath as y}from"node:url";async function g(e){let{isDevelopment:o}=await import("./local-VCJXKA4Z.js"),{ShopifyConfig:n}=await import("./custom-oclif-loader-RHFO4GO3.js"),r=await import("./lib-55QUD4AJ.js"),{run:s,flush:m,Errors:l,settings:f}=r.default??r;o()&&(f.debug=!0);try{let t=new n({root:y(e.moduleURL)});await t.load(),e.lazyCommandLoader&&t.setLazyCommandLoader(e.lazyCommandLoader);let a=e.argv??process.argv.slice(2),i=a.indexOf("--");if((i===-1?a:a.slice(0,i)).includes("--json-schema")||c(process.env.SHOPIFY_FLAG_JSON_SCHEMA)){let{printCommandJsonSchema:I}=await import("./command-json-schema-AWZEAYEU.js");await I(t,a,e.lazyCommandLoader);return}await s(a,t),await m()}catch(t){let{errorHandler:a}=await import("./error-handler-XOEXJ4TY.js");await a(t);let i=t;return l.handle({...i,name:i?.name??"Error",message:i?.message??String(t),stack:i?.stack,skipOclifErrorHandling:!0})}}var d=L(C());async function O(e=process.versions){let o=e.node,n=Number(o.split(".")[0]);if(n<22){let{renderError:s}=await import("./ui-QOSX5V7Z.js");s({headline:"Upgrade to a supported Node version now.",body:[`Node ${n} has reached end-of-life and poses security risks. When you upgrade to a`,{link:{url:"https://nodejs.dev/en/about/previous-releases",label:"supported version"}},{char:","},"you'll be able to use Shopify CLI without interruption."]}),process.exit(1)}}function v(e,o=process.argv,n=process.env){o.includes("--verbose")&&(n.DEBUG=n.DEBUG??"*"),e.development&&(n.SHOPIFY_CLI_ENV=n.SHOPIFY_CLI_ENV??"development")}function b(e=process.argv,o=process.env){(e.includes("--no-color")||e.includes("--json")||e.includes("-j")||c(o.NO_COLOR)||c(o.SHOPIFY_FLAG_NO_COLOR)||c(o[p.json])||o.TERM==="dumb")&&(o.FORCE_COLOR="0")}async function H(e,o=g,n=process.argv,r=process.env,s=process.versions){return v(e,n,r),e.runInCreateMode&&await w(e,n),b(n,r),await O(s),o({moduleURL:e.moduleURL,lazyCommandLoader:e.lazyCommandLoader})}async function w(e,o=process.argv){let{findUpAndReadPackageJson:n}=await import("./node-package-manager-PMTBCYAX.js"),{moduleDirectory:r}=await import("./path-6YMSTSWG.js"),l=(await n(r(e.moduleURL))).content.name.replace("@shopify/create-","");if(o.findIndex(t=>t.includes("init"))===-1){let t=o.findIndex(a=>a.match(new RegExp(`bin(\\/|\\\\)+(create-${l}|dev|run)`)))+1;o.splice(t,0,"init")}}var k={...h,"no-color":d.Flags.boolean({hidden:!1,description:"Disable color output.",env:"SHOPIFY_FLAG_NO_COLOR"}),verbose:d.Flags.boolean({hidden:!1,description:"Increase the verbosity of the output. May include sensitive data.",env:"SHOPIFY_FLAG_VERBOSE"})},U={json:d.Flags.boolean({char:"j",description:"Output the result as JSON. Automatically disables color output.",hidden:!1,default:!1,env:p.json})},V={"auth-alias":d.Flags.string({description:"Alias of the Shopify account to use for authentication.",env:"SHOPIFY_FLAG_AUTH_ALIAS"})},P=(e={})=>{let o=[e.description,"Must be between 1 and 65535."].filter(Boolean).join(" ");return d.Flags.integer({min:1,max:65535,...e,description:o})};function D(e){let o=e.description?.trimEnd(),r=[o&&!o.endsWith(".")?`${o}.`:o,"Required if non interactive."].filter(Boolean).join(" ");return{...e,description:r,requiredIfNonInteractive:!0}}async function M(){let{cacheClear:e}=await import("./conf-store-TBERV4YJ.js");e()}export{H as a,k as b,U as c,V as d,P as e,D as f,M as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as n}from"./chunk-
|
|
1
|
+
import{c as n}from"./chunk-EA5LKCRF.js";import{a as r,b as c,c as l}from"./chunk-KRL7FE6M.js";import{b as i}from"./chunk-4Q5TSWQL.js";import{b as h}from"./chunk-I3J63RFV.js";import{e as f,g as o}from"./chunk-VKWPEFWQ.js";o();var t=f(h(),1);var e=class p extends i{static args={command:t.Args.string({description:"Command to show help for.",required:!1})};static descriptionWithMarkdown="Display help for Shopify CLI";static description=this.descriptionForHelp();static usage="help [command] [flags]";static flags={...n,"nested-commands":t.Flags.boolean({char:"n",description:"Include all nested commands in the output.",env:"SHOPIFY_FLAG_CLI_NESTED_COMMANDS",default:!1})};static strict=!1;static get jsonOutputSchema(){return r}async run(){let{argv:a,flags:s}=await this.parse(p);if(s.json){let d=await c(this.config,a,s["nested-commands"]);l(d);return}let m=await(0,t.loadHelpClass)(this.config);await new m(this.config,{all:s["nested-commands"]}).showHelp(a)}};export{e as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
1
|
+
import{a as o}from"./chunk-ISU7Q2EB.js";import{b as e}from"./chunk-4Q5TSWQL.js";import{g as i}from"./chunk-VKWPEFWQ.js";i();var t=class extends e{static description="View the UI kit components that display static output";static hidden=!0;async run(){await o()}};export{t as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p,v as d}from"./chunk-
|
|
1
|
+
import{p,v as d}from"./chunk-4MUH4E2U.js";import{a as u}from"./chunk-5LZ5L2FF.js";import{da as w}from"./chunk-Z5M2VWQZ.js";import{b as l}from"./chunk-EA5LKCRF.js";import{z as f}from"./chunk-IN634BRF.js";import{i}from"./chunk-VDE7IIYQ.js";import{Xa as c,qa as h}from"./chunk-UYWRJHAJ.js";import{f as r,n as m}from"./chunk-3VYOLEQE.js";import{e as _,g as o}from"./chunk-VKWPEFWQ.js";o();o();var g=_(w(),1),P=["AGENTS.md","DESIGN.md","assets/**","blocks/**","config/**","layout/**","listings/**/*","locales/**","sections/**","snippets/**","templates/**","templates/customers/**","release-notes.md","update_extension.json"].join("|");async function y(e){let t=await k(e),s=`${e}/${t}`,n=`${e}/(${P})`;await u({inputDirectory:e,outputZipPath:s,matchFilePattern:n}),f({body:["Your local theme was packaged in",{filePath:m(s)}]})}async function k(e){let t=r(e,"config/settings_schema.json");if(!await c(t))throw new i("Provide a config/settings_schema.json to package your theme.");let s=await v(t);if(s===void 0||s.theme_name===void 0)throw new i("Provide a theme_info.theme_name configuration in config/settings_schema.json.");return`${[s.theme_name,s.theme_version].filter(Boolean).join("-")}.zip`}async function v(e){let t=(0,g.parseJSON)(await h(e),null,!0);if(!t)throw new i("The file config/settings_schema.json contains an error. Please check if the file is valid JSON and includes the theme_info.theme_name configuration.");return t.find(s=>s.name==="theme_info")}var a=class extends d{static summary="Package your theme into a .zip file, ready to upload to the Online Store.";static descriptionWithMarkdown=`Packages your local theme files into a ZIP file that can be uploaded to Shopify.
|
|
2
2
|
|
|
3
3
|
Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as u}from"./chunk-
|
|
1
|
+
import{b as u}from"./chunk-L4DFMMOI.js";import{b as r,c as I,e as p}from"./chunk-WNO2V53C.js";import{a as o}from"./chunk-JD5P5RAJ.js";import{g as c}from"./chunk-VKWPEFWQ.js";c();c();function i(t){return!(t===void 0||t.trim()==="")}function s(t,e){switch(t){case"bitbucket":return{branch:e.BITBUCKET_BRANCH,build:e.BITBUCKET_BUILD_NUMBER,commitSha:e.BITBUCKET_COMMIT,run:e.BITBUCKET_BUILD_NUMBER,url:`https://bitbucket.org/${e.BITBUCKET_WORKSPACE}/${e.BITBUCKET_REPO_SLUG}/pipelines/results/${e.BITBUCKET_BUILD_NUMBER}`};case"circleci":return{actor:e.CIRCLE_USERNAME,branch:e.CIRCLE_BRANCH,build:e.CIRCLE_BUILD_NUM,commitSha:e.CIRCLE_SHA1,run:e.CIRCLE_WORKFLOW_ID,url:e.CIRCLE_BUILD_URL};case"github":return{actor:e.GITHUB_ACTOR,attempt:e.GITHUB_RUN_ATTEMPT,branch:e.GITHUB_REF_NAME,build:e.GITHUB_RUN_ID,commitSha:e.GITHUB_SHA,run:e.GITHUB_RUN_ID,runNumber:e.GITHUB_RUN_NUMBER,url:`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}/actions/runs/${e.GITHUB_RUN_ID}`};case"gitlab":return{actor:e.GITLAB_USER_LOGIN,branch:e.CI_COMMIT_REF_NAME,build:e.CI_PIPELINE_ID,commitSha:e.CI_COMMIT_SHA,commitMessage:e.CI_COMMIT_MESSAGE,run:e.CI_RUNNER_ID,url:e.CI_PIPELINE_URL};case"buildkite":return{branch:e.BUILDKITE_BRANCH,build:e.BUILDKITE_BUILD_NUMBER,commitSha:e.BUILDKITE_COMMIT,commitMessage:e.BUILDKITE_MESSAGE,run:e.BUILDKITE_BUILD_NUMBER,url:e.BUILDKITE_BUILD_URL};default:return{}}}import{randomUUID as m}from"crypto";import{homedir as f,networkInterfaces as U}from"os";async function _(t){let{fileExists:e}=await import("./fs-J67RRM6W.js");return e(t)}async function T(t,e){let{exec:a}=await import("./system-DQ2SKK6C.js");await a(t,e)}function N(){return!!(!u()&&process.stdout.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}function A(){return f()}var d,l;function y(){l=void 0}function B(t=process.env){return t[r.env]==="development"}function g(t=process.env){return t===process.env?d??=o(t[r.verbose])||process.argv.includes("--verbose"):o(t[r.verbose])||process.argv.includes("--verbose")}async function S(t=process.env){return Object.prototype.hasOwnProperty.call(t,r.runAsUser)?!o(t[r.runAsUser]):await _(p.executables.dev)}function K(t=process.env){return t===process.env?l??=o(t[r.unitTest]):o(t[r.unitTest])}function G(t=process.env){return o(t[r.noAnalytics])||o(t[r.optOutInstrumentation])||B(t)}function O(t=process.env){return o(t[r.alwaysLogAnalytics])}function H(t=process.env){return o(t[r.alwaysLogMetrics])}function w(t=process.env){return o(t[r.doctor])}function P(t=process.env){return t[r.gitpod]}function k(t=process.env){return t[r.codespaceName]}function z(t=process.env){return t[r.codespacePortForwardingDomain]}function F(t=process.env){return E(t).platform!=="localhost"}function $(t=process.env){return t[r.themeToken]}function E(t=process.env){return i(t[r.codespaces])?{platform:"codespaces",editor:!0}:i(t[r.gitpod])?{platform:"gitpod",editor:!0}:i(t[r.cloudShell])?{platform:"cloudShell",editor:!0}:{platform:"localhost",editor:!1}}async function V(){try{return await T("git",["--version"]),!0}catch{return!1}}function W(t=process.env){if(o(t.CI)){let e="unknown";return i(t.BITBUCKET_BUILD_NUMBER)?e="bitbucket":o(t.CIRCLECI)?e="circleci":i(t.GITHUB_ACTION)?e="github":o(t.GITLAB_CI)?e="gitlab":i(t.BUILDKITE)&&(e="buildkite"),{isCI:!0,name:e,metadata:s(e,t)}}else if(o(t.TF_BUILD))return{isCI:!0,name:"azure",metadata:s("azure",t)};return{isCI:!1}}async function j(){let t="00:00:00:00:00:00",e=Object.values(U()).flat().filter(n=>!!(n&&n.mac!==t));return(e.find(n=>!n.internal)??e[0])?.mac??m()}function Y(t=process.env){let e=t[r.themeKitAccessDomain];return i(e)?e:I}function q(t=process.env){let e=t[r.otelURL];return i(e)?e:"https://otlp-http-production-cli.shopifysvc.com"}export{N as a,A as b,y as c,B as d,g as e,S as f,K as g,G as h,O as i,H as j,w as k,P as l,k as m,z as n,F as o,$ as p,E as q,V as r,W as s,j as t,Y as u,q as v};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
1
|
+
import{a as p}from"./chunk-5LONOHNN.js";import{a as r,b as c}from"./chunk-WUGFTI5M.js";import{d as s}from"./chunk-IH2CB73H.js";import{a}from"./chunk-3B3CJS5I.js";import{Ha as n}from"./chunk-KEI3OJVP.js";import{g as o}from"./chunk-VKWPEFWQ.js";o();var t=class d extends a{static summary="Schedules manual-billing subscriptions to migrate to Shopify-managed app pricing.";static descriptionWithMarkdown="Schedules manual-billing subscriptions to migrate to Shopify-managed app pricing.\n\nWhen `--input` is omitted, the command reads CSV data from stdin. Use `--input <path>` to read from a file. `--input -` is also supported as an explicit stdin path.\n\n- Required CSV columns: `shop_id`, `target_plan_handle`, and `price_behavior`.\n- Optional CSV column: `notification`.\n- Example header: `shop_id,target_plan_handle,price_behavior,notification`.\n- Example row: `123456789,pro,HONOR_BILLING_PRICE,WHEN_REQUIRED`.\n\n`price_behavior` must be `HONOR_BILLING_PRICE` or `PLAN_PRICE`. `notification` can be `OPT_OUT` or `WHEN_REQUIRED` and defaults to `WHEN_REQUIRED` when omitted or blank.\n\nValidation is atomic: the command submits no operations unless the entire CSV is valid. Valid rows are submitted in batches of 250 shops. Preserve every operation GID printed by the command so you can check or cancel the submitted operations.\n\nRun the command from an app project. By default, it uses the Client ID from the active app configuration. Use `--path` to select an app directory or `--config` to select a configuration. Pass `--client-id` to select a different app within the project. Use `--reset` to relink the app.\n\nUse `--force` to skip confirmation and immediately submit every valid row. With `--watch`, human-readable output shows accepted identifiers before polling begins, then displays operation progress and the final outcome. With `--json --watch`, the command outputs one structured JSON document after every operation reaches a terminal status.";static description=this.descriptionWithoutMarkdown();static examples=["<%= config.bin %> <%= command.id %> --input migrations.csv --force","cat migrations.csv | <%= config.bin %> <%= command.id %> --force","<%= config.bin %> <%= command.id %> --input migrations.csv --path ../my-app --config staging --force --json","<%= config.bin %> <%= command.id %> --input migrations.csv --client-id <client-id> --force","<%= config.bin %> <%= command.id %> --input - --force --watch"];static flags={...s};async run(){let{flags:i}=await this.parse(d),{app:m,remoteApp:l}=await n({directory:i.path,clientId:i["client-id"],forceRelink:i.reset,userProvidedConfigName:i.config}),u=await p({action:"schedule",input:i.input??"-",clientId:l.apiKey,skipConfirmation:i.force,watch:i.watch,...i.watch&&!i.json?{onSubmissionAccepted:r}:{}}),e=c(u,{json:i.json,watch:i.watch});return e!==0&&(process.exitCode=e),{app:m}}};export{t as a};
|