shopify 4.6.1 → 4.7.1
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-5SII3GTA.js +1 -0
- package/dist/analytics-F56E2NGH.js +1 -0
- package/dist/bootstrap.js +1 -1
- package/dist/{chunk-6HQMZ324.js → chunk-22NROZ5X.js} +18 -18
- package/dist/chunk-22NWEE5U.js +5 -0
- package/dist/{chunk-LURVEPYP.js → chunk-26DH5P7S.js} +1 -1
- package/dist/chunk-27UEK3FU.js +6 -0
- package/dist/chunk-2F2DXTRI.js +9 -0
- package/dist/chunk-2S3GOPRL.js +1 -0
- package/dist/{chunk-YR7K4NQT.js → chunk-3HCWJRL6.js} +1 -1
- package/dist/chunk-3KM2GKXH.js +3 -0
- package/dist/chunk-3MN3WLA2.js +1 -0
- package/dist/chunk-3WV7DQMM.js +12 -0
- package/dist/chunk-46BKAF3F.js +7 -0
- package/dist/chunk-4FCS6PJY.js +1 -0
- package/dist/{chunk-NKBSS7YL.js → chunk-4FI2YBRF.js} +1 -1
- package/dist/{chunk-EZBB2ULE.js → chunk-4I7TUB3K.js} +1 -1
- package/dist/chunk-4NXLDIW5.js +1 -0
- package/dist/chunk-4VJ6YK7U.js +1 -0
- package/dist/chunk-4WGJUVXS.js +20 -0
- package/dist/chunk-53IU36CL.js +1 -0
- package/dist/chunk-5HBIIYSK.js +1 -0
- package/dist/{chunk-NKT5U6IJ.js → chunk-5JW4JQWZ.js} +1 -1
- package/dist/chunk-5MD7GNEY.js +7 -0
- package/dist/chunk-5QZHJCZM.js +1 -0
- package/dist/chunk-5WGT45CO.js +10 -0
- package/dist/chunk-6AV6GX5W.js +2 -0
- package/dist/chunk-6ELAWKMY.js +18 -0
- package/dist/chunk-6G5TDB45.js +1 -0
- package/dist/{chunk-STCLJWHD.js → chunk-6K3AJTNO.js} +1 -1
- package/dist/chunk-6QJIGFQJ.js +6 -0
- package/dist/{chunk-GD5IRJBE.js → chunk-6R62DGJG.js} +1 -1
- package/dist/{chunk-K4M32VKU.js → chunk-6SM4RY3I.js} +1 -1
- package/dist/chunk-76NEIDP5.js +1 -0
- package/dist/chunk-77AC3OJQ.js +25 -0
- package/dist/{chunk-7MD5MIGN.js → chunk-7EUIO4ZO.js} +8 -8
- package/dist/chunk-7JIYJMRN.js +16 -0
- package/dist/chunk-7S73765P.js +5 -0
- package/dist/chunk-7Y7AZRL3.js +10 -0
- package/dist/{chunk-Y2PC2BBJ.js → chunk-AEUCDGTB.js} +4 -4
- package/dist/chunk-AFT6ABDE.js +10 -0
- package/dist/chunk-AIA7JVSJ.js +1 -0
- package/dist/chunk-AWHS336T.js +1 -0
- package/dist/chunk-B4OMIONW.js +5 -0
- package/dist/chunk-BI7LE6CZ.js +1 -0
- package/dist/{chunk-LJZIIURR.js → chunk-CNMJ6QXM.js} +1 -1
- package/dist/chunk-CRP4PQU2.js +1 -0
- package/dist/{chunk-DC7TXY4K.js → chunk-CUUCRIGC.js} +1 -1
- package/dist/chunk-DEMZRLX5.js +7 -0
- package/dist/{chunk-LXOBW4AW.js → chunk-DLSUDLXD.js} +1 -1
- package/dist/chunk-DMFEYI4G.js +1 -0
- package/dist/chunk-DPNZWBT5.js +1 -0
- package/dist/chunk-ELSDVDT7.js +1 -0
- package/dist/chunk-EMETQFFJ.js +7 -0
- package/dist/chunk-ESPT6CGE.js +1 -0
- package/dist/chunk-EULSSTWY.js +4 -0
- package/dist/{chunk-RMF3YNWE.js → chunk-EWS2RNM6.js} +1 -1
- package/dist/chunk-FAXNGDWI.js +11 -0
- package/dist/chunk-FELV7GWY.js +1 -0
- package/dist/chunk-FQQXU5IN.js +2 -0
- package/dist/chunk-GFWXVO72.js +317 -0
- package/dist/chunk-GJ4A4QKE.js +1 -0
- package/dist/chunk-GW4JHUIA.js +6 -0
- package/dist/{chunk-H5I7BSNG.js → chunk-GXOFJIKQ.js} +52 -52
- package/dist/chunk-HCQABTQL.js +1 -0
- package/dist/{chunk-MMP3F6LO.js → chunk-HOVIGRE4.js} +1 -1
- package/dist/chunk-HQUWYKSJ.js +19 -0
- package/dist/chunk-HRHNJFAA.js +8 -0
- package/dist/{chunk-X5RH4ALT.js → chunk-HU4GFVEN.js} +1 -1
- package/dist/{chunk-XZ2KUBFJ.js → chunk-I2LNQKIJ.js} +1 -1
- package/dist/chunk-I6XH7XDX.js +2 -0
- package/dist/{chunk-C7LFLIRT.js → chunk-IA3XNJ56.js} +1 -1
- package/dist/{chunk-WE3VLC2S.js → chunk-IENBHP2S.js} +7 -7
- package/dist/{chunk-UTK6V2NE.js → chunk-IF6EYTHG.js} +8 -8
- package/dist/chunk-IQT6LOA2.js +1 -0
- package/dist/chunk-IX4IGE5H.js +1 -0
- package/dist/{chunk-MY2H5XPY.js → chunk-J2VRPZFC.js} +1 -1
- package/dist/chunk-JD5P5RAJ.js +1 -0
- package/dist/chunk-JJSV7HNM.js +1 -0
- package/dist/{chunk-KRZABRYT.js → chunk-JLGA3B7P.js} +1 -1
- package/dist/chunk-JNIPCLAF.js +1 -0
- package/dist/{chunk-U3P5TIIR.js → chunk-JNVCCE6M.js} +1 -1
- package/dist/chunk-JQUEW7CB.js +3 -0
- package/dist/chunk-K3VLFPPI.js +1 -0
- package/dist/chunk-K63FW7Q7.js +1 -0
- package/dist/{chunk-P2P2MAZQ.js → chunk-KBBITJSF.js} +1 -1
- package/dist/chunk-KDBKEVCF.js +3 -0
- package/dist/chunk-KNVHXIEB.js +3 -0
- package/dist/chunk-KRLEEYLL.js +1 -0
- package/dist/chunk-KT5MDCII.js +6 -0
- package/dist/{chunk-W2357IN2.js → chunk-LBREJXT6.js} +1 -1
- package/dist/chunk-LFOBYEWG.js +1 -0
- package/dist/{chunk-FBVNXRVB.js → chunk-LKQ3EJ6Z.js} +1 -1
- package/dist/chunk-LKZQSER3.js +1 -0
- package/dist/{chunk-XWPPBOGF.js → chunk-LQ7ENG4V.js} +1 -1
- package/dist/chunk-M5Q74UZM.js +3 -0
- package/dist/chunk-MK7MOLLI.js +1 -0
- package/dist/{chunk-PCTVUTV3.js → chunk-MTTBBZSR.js} +1 -1
- package/dist/{chunk-QARALFHD.js → chunk-N4KDWHT2.js} +1 -1
- package/dist/chunk-N7425436.js +3 -0
- package/dist/chunk-NSZHEXZK.js +11 -0
- package/dist/chunk-O4G6TE26.js +16 -0
- package/dist/chunk-O4RHWBBM.js +1 -0
- package/dist/chunk-O53YIDJL.js +4 -0
- package/dist/chunk-OF6CV5R4.js +1 -0
- package/dist/chunk-OJSJWGP2.js +19 -0
- package/dist/chunk-OQWMCJLY.js +3 -0
- package/dist/chunk-P5OQUFH6.js +1 -0
- package/dist/{chunk-LDWMX3KZ.js → chunk-P5WLH64A.js} +1 -1
- package/dist/chunk-PE4TV5IJ.js +4 -0
- package/dist/chunk-PEHLR7XP.js +1 -0
- package/dist/chunk-PK73ZSND.js +836 -0
- package/dist/{chunk-J3D4KQOQ.js → chunk-PQG7XSQP.js} +1 -1
- package/dist/chunk-PS2UVFHP.js +4 -0
- package/dist/chunk-PU3NATV4.js +1 -0
- package/dist/{chunk-YHH3JA36.js → chunk-PV6T52KB.js} +1 -1
- package/dist/chunk-QASOHYDS.js +6 -0
- package/dist/chunk-QHLY2IID.js +2 -0
- package/dist/chunk-QT367CYF.js +32 -0
- package/dist/{chunk-EVIO6OWW.js → chunk-R2RULBBV.js} +1 -1
- package/dist/chunk-R5EGWWZH.js +2 -0
- package/dist/{chunk-NENUUNWB.js → chunk-RA3WWB2S.js} +1 -1
- package/dist/chunk-RM3B7AFT.js +1 -0
- package/dist/chunk-RXUOQZ32.js +1 -0
- package/dist/chunk-RY4MPX5A.js +8 -0
- package/dist/chunk-RY4YUBG3.js +15 -0
- package/dist/chunk-S2WUVD7V.js +1 -0
- package/dist/chunk-SCXL5UQ4.js +28 -0
- package/dist/{chunk-5INBKZRD.js → chunk-SGIMJQEM.js} +1 -1
- package/dist/chunk-SJGPJDGH.js +1 -0
- package/dist/{chunk-7EE7YOCR.js → chunk-SPE2D366.js} +5 -5
- package/dist/chunk-SYF6LGQB.js +1 -0
- package/dist/{chunk-7L5AIZOP.js → chunk-TP4Z5OZT.js} +1 -1
- package/dist/{chunk-5QDM4XIK.js → chunk-U3F6GPCE.js} +1 -1
- package/dist/chunk-U46RPVQA.js +1 -0
- package/dist/{chunk-NVQOAHID.js → chunk-UAJBQEGE.js} +1 -1
- package/dist/{chunk-GJEG7VGX.js → chunk-UK4WXL4G.js} +1 -1
- package/dist/chunk-ULR25PTO.js +15 -0
- package/dist/chunk-USBP7H7J.js +3 -0
- package/dist/chunk-UZV5H2JI.js +8 -0
- package/dist/chunk-UZVON6GP.js +1 -0
- package/dist/chunk-VI5FF6SW.js +1 -0
- package/dist/chunk-VPY47DBW.js +3 -0
- package/dist/chunk-VRH3HWYA.js +1 -0
- package/dist/chunk-VXX4EZ7G.js +2 -0
- package/dist/{chunk-HVMEBH24.js → chunk-VXYABRFY.js} +3 -3
- package/dist/{chunk-7TXWKLPY.js → chunk-WEWLPJK2.js} +1 -1
- package/dist/chunk-WMZS3Y4Z.js +1 -0
- package/dist/chunk-WOIAYH5U.js +1 -0
- package/dist/chunk-WR6LRE4I.js +1 -0
- package/dist/chunk-WSCSFFLH.js +375 -0
- package/dist/chunk-WTES5ZXR.js +1 -0
- package/dist/chunk-WXSDPMIZ.js +5 -0
- package/dist/chunk-X5JQU6T7.js +1 -0
- package/dist/{chunk-BDDROQGK.js → chunk-XMJFT4WP.js} +3 -3
- package/dist/chunk-XMQFQUUK.js +6 -0
- package/dist/chunk-XTXYS7LB.js +5 -0
- package/dist/chunk-Y6UZW73M.js +1 -0
- package/dist/{chunk-WOYI6SDK.js → chunk-YCU7ZCIG.js} +1 -1
- package/dist/chunk-YFKEESYB.js +3 -0
- package/dist/chunk-YXDIHVPY.js +5 -0
- package/dist/chunk-YY6TFARF.js +1 -0
- package/dist/chunk-Z66ZSXKB.js +1 -0
- package/dist/{chunk-M5YGJYNI.js → chunk-ZBSC2KZ7.js} +1 -1
- package/dist/chunk-ZDDLEFVO.js +1 -0
- package/dist/chunk-ZULQKYJ6.js +6 -0
- 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-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/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.d.ts +5 -0
- package/dist/cli/commands/send-analytics.js +1 -0
- 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/cli/services/doctor-release/theme/tests/init.js +4 -8
- package/dist/cli/services/doctor-release/theme/tests/push.js +3 -4
- package/dist/command-registry.js +1 -1
- package/dist/conf-store-QQ4DOFI3.js +1 -0
- package/dist/custom-oclif-loader-BWAMUFQ4.js +1 -0
- package/dist/deprecations-43ZQ5RCE.js +1 -0
- package/dist/dist-E7EGYE4D.js +1 -0
- package/dist/dist-WRUROUNV.js +1 -0
- package/dist/environments-RG64VB5R.js +1 -0
- package/dist/error-26WTDNKZ.js +1 -0
- package/dist/error-handler-XFH47Y75.js +1 -0
- package/dist/fs-Y7I3Y5IR.js +1 -0
- 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 +2 -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.d.ts +1 -1
- package/dist/index.js +15 -15
- package/dist/is-global-WBIBPIVZ.js +1 -0
- package/dist/lib-M72BVWQ3.js +1 -0
- package/dist/local-HF4T3FFE.js +1 -0
- package/dist/metadata-CSQPNQP2.js +1 -0
- package/dist/{morph-ABSWZEVT.js → morph-77RHJICZ.js} +1 -1
- package/dist/node-package-manager-CVEU22N7.js +1 -0
- package/dist/notifications-system-L3FMN6EX.js +1 -0
- package/dist/os-VLZLRAHR.js +1 -0
- package/dist/output-E6OGPGXL.js +1 -0
- package/dist/{prettier-6ZMB2MMO.js → prettier-RVUAAWC7.js} +1 -1
- package/dist/system-ZETSJRKS.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui-7TVGGEWJ.js +1 -0
- package/dist/upgrade-F77O4ZDT.js +1 -0
- package/dist/version-3L3ANUTL.js +1 -0
- package/dist/version-DL4Y6DRX.js +1 -0
- package/dist/workerd-EHI5ZCEV.js +18 -0
- package/oclif.manifest.json +146 -120
- package/package.json +7 -8
- package/dist/analytics-3ICKUTK2.js +0 -1
- package/dist/analytics-73NVZI4Z.js +0 -1
- package/dist/chunk-25Z36VJG.js +0 -1
- package/dist/chunk-2AVFG5KT.js +0 -1
- package/dist/chunk-2DMTEIS3.js +0 -2
- package/dist/chunk-2GB3EAD3.js +0 -153
- package/dist/chunk-2NB4P6BB.js +0 -5
- package/dist/chunk-2OYQHHKC.js +0 -3
- package/dist/chunk-2VJKXWLG.js +0 -4
- package/dist/chunk-3Q5ESVIY.js +0 -1
- package/dist/chunk-3XCIUG5P.js +0 -1
- package/dist/chunk-445NFHXL.js +0 -3
- package/dist/chunk-4BPFJDH3.js +0 -1
- package/dist/chunk-4E5RGEJO.js +0 -1
- package/dist/chunk-4IHSAT76.js +0 -2
- package/dist/chunk-4TANJ4JK.js +0 -1
- package/dist/chunk-534U3DKZ.js +0 -6
- package/dist/chunk-56T6YCU2.js +0 -1
- package/dist/chunk-5HJTCBBV.js +0 -317
- package/dist/chunk-5Q4WAGQL.js +0 -3
- package/dist/chunk-65CEF3SM.js +0 -8
- package/dist/chunk-6KAWCN3I.js +0 -10
- package/dist/chunk-6ZPHB5U2.js +0 -3
- package/dist/chunk-7AWKXTNS.js +0 -4
- package/dist/chunk-7US4TVO2.js +0 -32
- package/dist/chunk-A4SBXDZB.js +0 -14
- package/dist/chunk-A7IDVXF7.js +0 -1
- package/dist/chunk-AFM3UZQO.js +0 -684
- package/dist/chunk-AHLNB45E.js +0 -3
- package/dist/chunk-ARCAYYRW.js +0 -1
- package/dist/chunk-B3U6GDHL.js +0 -7
- package/dist/chunk-BCZMDFI2.js +0 -370
- package/dist/chunk-BKJMVAI7.js +0 -1
- package/dist/chunk-BPDUBZMU.js +0 -1
- package/dist/chunk-BQOKTPUU.js +0 -1
- package/dist/chunk-CELVG4AL.js +0 -6
- package/dist/chunk-CNI7ZUST.js +0 -3
- package/dist/chunk-CONJQV7M.js +0 -11
- package/dist/chunk-CV5ELBVU.js +0 -1
- package/dist/chunk-DXUISRMZ.js +0 -2
- package/dist/chunk-EHV7EKB3.js +0 -2
- package/dist/chunk-EJDWYASP.js +0 -1
- package/dist/chunk-EQNJ2NQD.js +0 -3
- package/dist/chunk-FG5QXIQH.js +0 -9
- package/dist/chunk-FGG6HXIZ.js +0 -1
- package/dist/chunk-FJCZ4F6J.js +0 -5
- package/dist/chunk-FKH5ZF2C.js +0 -1
- package/dist/chunk-GT6BJ2GK.js +0 -1
- package/dist/chunk-GWNV44NZ.js +0 -18
- package/dist/chunk-GXO2RRV2.js +0 -1
- package/dist/chunk-H5YC3EP6.js +0 -16
- package/dist/chunk-HY3INWPI.js +0 -1
- package/dist/chunk-I6ST5X56.js +0 -1
- package/dist/chunk-ID6ASBGV.js +0 -15
- package/dist/chunk-IDQT2UY7.js +0 -1
- package/dist/chunk-IIOFR25P.js +0 -3
- package/dist/chunk-IJEDTDSJ.js +0 -25
- package/dist/chunk-ILICQWUF.js +0 -1
- package/dist/chunk-IMWEC6NF.js +0 -16
- package/dist/chunk-ITNFDLZ4.js +0 -1
- package/dist/chunk-IU5U6KKO.js +0 -4
- package/dist/chunk-IXCDFXMB.js +0 -2
- package/dist/chunk-JRTJZAFJ.js +0 -19
- package/dist/chunk-JT7YTXJ7.js +0 -1
- package/dist/chunk-JX4HSDDG.js +0 -28
- package/dist/chunk-K5GJNXDK.js +0 -1
- package/dist/chunk-KCNOFNS5.js +0 -11
- package/dist/chunk-KM2R6O7V.js +0 -6
- package/dist/chunk-KNFDN3AP.js +0 -1
- package/dist/chunk-LEDVV6XK.js +0 -1
- package/dist/chunk-LEEVJH4B.js +0 -1
- package/dist/chunk-MDQHEW7V.js +0 -8
- package/dist/chunk-MPYCIVRA.js +0 -7
- package/dist/chunk-N4RYVOXT.js +0 -2
- package/dist/chunk-NB6HHZ36.js +0 -1
- package/dist/chunk-NEK2KNKR.js +0 -8
- package/dist/chunk-NJONAV7V.js +0 -1
- package/dist/chunk-OHQTOHUX.js +0 -15
- package/dist/chunk-PKR6HS4T.js +0 -6
- package/dist/chunk-PKRDBS7O.js +0 -5
- package/dist/chunk-PMD6S7YG.js +0 -1
- package/dist/chunk-PUOCHFFI.js +0 -1
- package/dist/chunk-Q2DPBMV4.js +0 -1
- package/dist/chunk-Q6XT3YKV.js +0 -3
- package/dist/chunk-QEL3F2NY.js +0 -5
- package/dist/chunk-R2W5B7YI.js +0 -3
- package/dist/chunk-REABQXMP.js +0 -1
- package/dist/chunk-RTPVI7LE.js +0 -3
- package/dist/chunk-SFZQFEZB.js +0 -6
- package/dist/chunk-STJ3LWFL.js +0 -1
- package/dist/chunk-STJWHL36.js +0 -7
- package/dist/chunk-SZJHOXS6.js +0 -6
- package/dist/chunk-TEPMNVJN.js +0 -1
- package/dist/chunk-TNSMROUR.js +0 -1
- package/dist/chunk-UDDJQ34Y.js +0 -1
- package/dist/chunk-UKQ7NE5V.js +0 -1
- package/dist/chunk-UOQBCBKY.js +0 -1
- package/dist/chunk-UQWT2PFO.js +0 -1
- package/dist/chunk-V26QBVCN.js +0 -1
- package/dist/chunk-VVEQ4IHW.js +0 -1
- package/dist/chunk-VXBHTSMX.js +0 -20
- package/dist/chunk-WDCCITSG.js +0 -1
- package/dist/chunk-WGMYSPR2.js +0 -10
- package/dist/chunk-WHT2RCAD.js +0 -11
- package/dist/chunk-WW7TENNA.js +0 -1
- package/dist/chunk-WXJGZGQS.js +0 -1
- package/dist/chunk-X4AZV5A2.js +0 -1
- package/dist/chunk-XBBP5BWC.js +0 -7
- package/dist/chunk-XH32NPYG.js +0 -1
- package/dist/chunk-Y7A7Z2V3.js +0 -1
- package/dist/chunk-YE7XCF44.js +0 -1
- package/dist/chunk-YIFT67BD.js +0 -4
- package/dist/chunk-Z36JS7OX.js +0 -6
- package/dist/chunk-ZHPPBTNE.js +0 -28
- package/dist/chunk-ZMSE5SQB.js +0 -1
- package/dist/conf-store-YW3NWYCN.js +0 -1
- package/dist/custom-oclif-loader-4ZAXX5MR.js +0 -1
- package/dist/deprecations-VW7UIMZX.js +0 -1
- package/dist/dist-I3VCRVOE.js +0 -1
- package/dist/dist-MP4AU5F4.js +0 -1
- package/dist/environments-5P57CTOG.js +0 -1
- package/dist/error-U7DOQOWG.js +0 -1
- package/dist/error-handler-AOEXPYI7.js +0 -1
- package/dist/fs-K5NT4W2Q.js +0 -1
- package/dist/hooks/app-init.d.ts +0 -9
- package/dist/hooks/app-init.js +0 -1
- package/dist/is-global-CFYYUAIJ.js +0 -1
- package/dist/is-wsl-UEMXYJPN.js +0 -1
- package/dist/lib-JKLF33A7.js +0 -1
- package/dist/local-BRRQOCGY.js +0 -1
- package/dist/local-storage-FVSI2IBZ.js +0 -1
- package/dist/metadata-HVSGVFUQ.js +0 -1
- package/dist/node-package-manager-6JURLQKU.js +0 -1
- package/dist/notifications-system-BTEFKXCS.js +0 -1
- package/dist/output-EXMTVS2V.js +0 -1
- package/dist/system-DUJDILSL.js +0 -1
- package/dist/ui-AX6ZMY6P.js +0 -1
- package/dist/upgrade-5TEVQNLY.js +0 -1
- package/dist/version-7LKOAVDW.js +0 -1
- package/dist/version-PRFBZAWQ.js +0 -1
- package/dist/workerd-MFV7EBVM.js +0 -18
- /package/dist/{chunk-VDN6MEYI.js → chunk-NJPL5BTN.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as A}from"./chunk-
|
|
1
|
+
import{n as A}from"./chunk-7EUIO4ZO.js";import{a as P}from"./chunk-Y6UZW73M.js";import{c as C}from"./chunk-WEWLPJK2.js";import{s as T}from"./chunk-K63FW7Q7.js";import{r as w}from"./chunk-3KM2GKXH.js";import{a as D}from"./chunk-QHLY2IID.js";import{S as u}from"./chunk-PK73ZSND.js";import{B as y,z as h}from"./chunk-WSCSFFLH.js";import{Ab as O,va as p}from"./chunk-HQUWYKSJ.js";import{d,q as m}from"./chunk-773TIA5M.js";import{g as l}from"./chunk-VKWPEFWQ.js";l();async function q(e){P({verbose:e.verbose,noColor:e.noColor});let t=w({store:e.store}),o=await u(t,e.password);await R(o,{path:e.path??m(),force:e.force??!1,silent:e.silent??!1})}var E={article:"ARTICLE",blog:"BLOG",collection:"COLLECTION",company:"COMPANY",company_location:"COMPANY_LOCATION",location:"LOCATION",market:"MARKET",order:"ORDER",page:"PAGE",product:"PRODUCT",variant:"PRODUCTVARIANT",shop:"SHOP"};async function R(e,t){let{force:o,path:i,silent:n}=t;if(!await A(i)&&(process.env.SHOPIFY_LANGUAGE_SERVER==="1"||!await C(o)))return;let f=[],r=[];for(let[a,s]of Object.entries(E))f.push(T(s,e).catch(c=>(r.push(s),[])).then(c=>({[a]:c})));let b=(await Promise.all(f)).reduce((a,s)=>({...a,...s}));if(r.length===Object.values(E).length){n||y({body:"Failed to fetch metafield definitions.",nextSteps:["Check your network connection and try again.","Ensure you have the permission to fetch metafield definitions."],reference:[{link:{label:"Metafield Definition API",url:"https://shopify.dev/docs/api/admin-graphql/latest/queries/metafieldDefinition"}}]});return}await S(i,b),r.length>0&&O(`Failed to fetch metafield definitions for the following owner types: ${r.join(", ")}`),n||h({body:"Metafield definitions have been successfully downloaded."})}async function S(e,t){let o=await D(e),i=d(o,"metafields.json"),n=JSON.stringify(t,null,2);p(i,n)}export{q as a};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{b as h}from"./chunk-3WV7DQMM.js";import{Ca as g,ua as u,wa as c}from"./chunk-HQUWYKSJ.js";import{d as f,q as p}from"./chunk-773TIA5M.js";import{g as l}from"./chunk-VKWPEFWQ.js";l();var d=f(p(),"/docs-shopify.dev/commands"),m=class extends h{static description="Generate CLI commands documentation";static hidden=!0;async run(){let a=this.config.commands;await g(d),await c(d);let o=a.sort((e,i)=>e.id.length-i.id.length).filter(e=>!b(e)).map(e=>{let i=k(e);return N(e,i)});await Promise.all(o)}},C=["commands","help","plugins"];function b(t){return t.hidden?(C.push(t.id),!0):t.pluginType==="user"?!0:C.some(a=>t.id.startsWith(`${a}:`))}function k(t){let a=t.id.replace(/[:]/g," "),s=t.id.replace(/[:]/g,"-"),o=t.id.replace(/[:-]/g,"");return{commandName:a,fileName:s,interfaceName:o}}async function N(t,{commandName:a,fileName:s,interfaceName:o}){let e=Object.keys(t.flags).map(r=>{let n=t.flags[r];if(!n||n.hidden)return;let $=n.description??"",w=n.char?`-${n.char}, `:"",y=n.type==="option"?"string":"''",v=n.type==="option"?" <value>":"",x=n.required?"":"?",D=n.env!==void 0?` @environment ${n.env}`:"";return` /**
|
|
2
|
+
* ${$}
|
|
3
|
+
*${D}
|
|
4
|
+
*/
|
|
5
|
+
'${w}--${r}${v}'${x}: ${y}`}).filter(r=>r&&r?.length>0).join(`
|
|
6
|
+
|
|
7
|
+
`),i=`// This is an autogenerated file. Don't edit this file manually.
|
|
8
|
+
/**
|
|
9
|
+
* The following flags are available for the \`${a}\` command:
|
|
10
|
+
* @publicDocs
|
|
11
|
+
*/
|
|
12
|
+
export interface ${o} {
|
|
13
|
+
${e}
|
|
14
|
+
}
|
|
15
|
+
`;await c(`${d}/interfaces`),await u(`${d}/interfaces/${s}.interface.ts`,i)}export{m as a,k as b,N as c};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as h}from"./chunk-26DH5P7S.js";import{p as m,v as a}from"./chunk-3KM2GKXH.js";import{b as n}from"./chunk-IX4IGE5H.js";import{wa as t}from"./chunk-PK73ZSND.js";import{a as w}from"./chunk-CTNBSUVU.js";import{S as s}from"./chunk-HQUWYKSJ.js";import{e as u,g as i}from"./chunk-VKWPEFWQ.js";i();var r=u(w(),1);var o=class extends a{static summary="Creates a shareable, unpublished, and new theme on your theme library with a randomized name.";static descriptionWithMarkdown=`Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.
|
|
2
|
+
|
|
3
|
+
This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.`;static description=this.descriptionWithoutMarkdown();static flags={...n,...m,force:r.Flags.boolean({hidden:!0,char:"f",description:"Proceed without confirmation, if current directory does not seem to be theme directory.",env:"SHOPIFY_FLAG_FORCE"}),listing:r.Flags.string({description:"The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.",env:"SHOPIFY_FLAG_LISTING"})};static multiEnvironmentsFlags=["store","password","path"];async command(e,d,p,g,c){let l={environment:e.environment,force:e.force,noColor:e["no-color"],password:e.password,path:e.path,store:e.store,theme:s("creative"),unpublished:!0,listing:e.listing};t("theme-command:share"),await h(l,d,p,c),t("theme-command:share")}};export{o as a};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{c as J}from"./chunk-M5Q74UZM.js";import{b as F}from"./chunk-I2LNQKIJ.js";import{a as ae}from"./chunk-KBBITJSF.js";import{a as ne}from"./chunk-ESPT6CGE.js";import{a as z}from"./chunk-RA3WWB2S.js";import{B as Z,D as ee,d as K,e as Q,sa as te}from"./chunk-GFWXVO72.js";import{f as T,h as X,i as B}from"./chunk-SPE2D366.js";import{a as k}from"./chunk-HU4GFVEN.js";import{b as H,f as O}from"./chunk-IX4IGE5H.js";import{d as E}from"./chunk-PK73ZSND.js";import{C as G,p as P,x as L,y as _}from"./chunk-GW4JHUIA.js";import{D as q,F as U,H as b,J as V,z as $}from"./chunk-WSCSFFLH.js";import{h as m}from"./chunk-BI7LE6CZ.js";import{a as xe}from"./chunk-CTNBSUVU.js";import{Oa as j,Ta as h,Ua as R,Wa as D,X as f,_ as M,ka as w,qa as N,rb as W,wa as g,ya as v}from"./chunk-HQUWYKSJ.js";import{e as Y}from"./chunk-4VJ6YK7U.js";import{d as p,n as C}from"./chunk-773TIA5M.js";import{e as he,g as d}from"./chunk-VKWPEFWQ.js";d();d();d();async function re(e,t,r,n={}){let{templates:a,groupOrder:i}=await e.templateSpecifications(t,n);return{templates:a.filter(o=>r.includes(o.identifier)||r.includes(o.type)),groupOrder:i}}d();d();async function ie(e,t){let r=e?.path??"",n=p(t,r);if(!await h(n))throw new m(`
|
|
2
|
+
The extension is not available for ${e?.value}`);return n}async function oe({name:e,app:t}){let r=M(e),n=p(t.directory,B.extensions.directoryName,r);if(await h(n))throw new m(`
|
|
3
|
+
A directory with this name (${r}) already exists.
|
|
4
|
+
Choose a new name for your extension.`);return await g(n),await N(p(n,T.lockFile)),n}function A(e){switch(e){case"vanilla-js":case"preact":case"react":case"typescript":case"typescript-react":return"javascript";case"rust":case"wasm":return e;case void 0:case"liquid":case"config-only":return}}async function se(e){let t=e.extensionChoices.name,r=e.extensionChoices.flavor,n=e.extensionTemplate.supportedFlavors.find(o=>o.value===r),a=await oe({app:e.app,name:t}),i=e.cloneUrl??e.extensionTemplate.url,s={directory:a,url:i,app:e.app,project:e.project,type:e.extensionTemplate.type,name:t,extensionFlavor:n,onGetTemplateRepository:e.onGetTemplateRepository??(async(o,c)=>{await J({repoUrl:o,destination:c,shallow:!0})})};return await we(s),{directory:C(a),extensionTemplate:e.extensionTemplate}}async function we(e){try{switch(e.type){case"theme":await ge(e);break;case"function":await ve(e);break;default:await Ee(e);break}let t=p(e.directory,T.lockFile);await v(t)}catch(t){throw await v(e.directory),t}}async function ge({directory:e,url:t,type:r,name:n,extensionFlavor:a,onGetTemplateRepository:i}){return w(async s=>{let o=await I(t,a,s,i);await F(o,e,{name:n,type:r,uid:E(f(n))})})}async function ve({directory:e,url:t,app:r,project:n,name:a,extensionFlavor:i,onGetTemplateRepository:s}){let o=A(i?.value),c=[];c.push({title:"Generating function extension",task:async()=>{if(await w(async l=>{let u=await I(t,i,l,s);await F(u,e,{name:a,handle:f(a),flavor:i?.value,uid:E(f(a))})}),o==="javascript"){let l=ce(i?.value??"rust");await le(e,l,"!(*.graphql)")}}}),o==="javascript"&&c.push({title:"Installing additional dependencies",task:async()=>{n.usesWorkspaces&&await P({packageManager:n.packageManager,directory:n.directory});let l=Fe(o);await _(l,{packageManager:n.packageManager,type:"prod",directory:n.usesWorkspaces?e:n.directory})}}),o==="javascript"&&c.push({title:"Building GraphQL types",task:async()=>{await Q({directory:e,isJavaScript:!0},{stdout:process.stdout,stderr:process.stderr,app:r})}}),await b(c)}async function Ee({directory:e,url:t,app:r,project:n,name:a,extensionFlavor:i,onGetTemplateRepository:s}){let o=A(i?.value),c=[{title:"Generating extension",task:async()=>{let l=ce(i?.value??"vanilla-js");await w(async u=>{let y=await I(t,i,u,s);await F(y,e,{srcFileExtension:l,name:a,handle:f(a),flavor:i?.value??"",uid:E(f(a))})}),o==="javascript"&&await le(e,l)}},{title:"Installing dependencies",task:async()=>{let l=n.packageManager;if(n.usesWorkspaces)A(i?.value)==="javascript"&&await P({packageManager:l,directory:n.directory});else{await Te(n.directory,i?.value);let u=p(e,"package.json"),y=await ke(u);await _(y,{packageManager:l,type:"prod",directory:n.directory}),await v(u)}}}];c.push({title:"Update shared type definition",task:async()=>{await ee(r)}}),await b(c)}function ce(e){return{"vanilla-js":"js",preact:"jsx",react:"jsx",typescript:"ts","typescript-react":"tsx",rust:"rs",wasm:"wasm",liquid:"liquid","config-only":""}[e]??"js"}function Fe(e){let t=[];return e==="javascript"&&t.push({name:"@shopify/shopify_function",version:`~${K}.0.0`}),t}async function le(e,t,r="*"){let n=await D(p(e,"src",r)),a=[];for(let i of n)a.push(j(i,`${i}.${t}`));await Promise.all(a)}async function Te(e,t){t==="typescript-react"&&await G(e,{"@types/react":X.reactTypes})}async function ke(e){if(!await h(e))return[];let t=await L(e);return Object.entries(t?.dependencies??{}).map(([r,n])=>({name:r,version:n}))}async function I(e,t,r,n){let a=p(r,"download");return await g(a),await n(e,a),ie(t,a)}d();function Pe(e,t=[]){let r=[...e.map(a=>({label:a.name,value:a.identifier,group:a.group||"Other",sortPriority:a.sortPriority??Number.MAX_SAFE_INTEGER})),...t.map(a=>({label:`${a.name} (limit reached)`,value:a.identifier,group:a.group||"Other",disabled:!0,sortPriority:a.sortPriority??Number.MAX_SAFE_INTEGER}))],n=(a,i)=>a.sortPriority===i.sortPriority?a.label.localeCompare(i.label):a.sortPriority-i.sortPriority;return r.sort(n)}var _e=async e=>{let t=e.extensionTemplates,r=e.templateType,n=e.extensionFlavor;if(!r){if(n&&(t=t.filter(c=>c.supportedFlavors.map(l=>l.value).includes(n))),t.length===0)throw new m("You have reached the limit for the number of extensions you can create.");r=await U({message:"Type of extension?",choices:Pe(t,e.unavailableExtensions),groupOrder:e.groupOrder})}let a=t.find(c=>c.identifier===r),i=e.name||await pe(e.directory,a.defaultName),s=e.extensionFlavor??await be(a);return{extensionTemplate:a,extensionContent:{name:i,flavor:s}}};async function pe(e,t,r=1){let n=t.includes(" ")?" ":"-",a=r<=1?t:`${t}${n}${r}`,i=p(e,f(a));return R(i)?pe(e,t,r+1):V({message:"Name your extension:",defaultValue:a})}async function be(e){if(e.supportedFlavors.length!==0)return e.supportedFlavors.length===1&&e.supportedFlavors[0]?e.supportedFlavors[0].value:q({message:"What would you like to work in?",choices:e.supportedFlavors.map(t=>({label:t.name,value:t.value})),defaultValue:"react"})}var de=_e;async function Oe(e){let{app:t,developerPlatformClient:r,remoteApp:n,specifications:a,template:i}=e,s=a.map(ye=>ye.identifier),{templates:o,groupOrder:c}=await re(r,n,s,{requestedTemplate:i}),l=await Ae(o,c,a,t,e),u=await de(l);await Se(u,i);let y=Ce(u,t,e,r),fe=await se(y);Me(fe,e.project.packageManager)}async function Ae(e,t,r,n,a){let i=await Re(a.template,n,e,r);Ne(i,a.flavor);let{validTemplates:s,templatesOverlimit:o}=Ie(e,r,n);return{templateType:i?.identifier,name:a.name,extensionFlavor:a.flavor,directory:p(a.directory,"extensions"),app:n,extensionTemplates:s??[],unavailableExtensions:o??[],reset:a.reset,groupOrder:t}}function Ie(e,t,r){return ae(e,a=>!ue(r,t,a)?"validTemplates":"templatesOverlimit")}function ue(e,t,r){let n=r.type,a=t.find(s=>s.identifier===n||s.externalIdentifier===n);return e.extensionsForType({identifier:n,externalIdentifier:n}).length>=(a?.registrationLimit??1)}async function Se(e,t){let{extensionContent:r}=e;return k.addPublicMetadata(()=>({cmd_scaffold_template_flavor:r.flavor,cmd_scaffold_type:e.extensionTemplate.identifier,cmd_scaffold_used_prompts_for_type:!t}))}function Ce(e,t,r,n){return{app:t,project:r.project,cloneUrl:r.cloneUrl,extensionChoices:e.extensionContent,extensionTemplate:e.extensionTemplate,developerPlatformClient:n}}function Me(e,t){let r=je(e.extensionTemplate,e.directory,t);$(r)}function Ne(e,t){if(!t||!e)return;let r=e.supportedFlavors.map(n=>n.value);if(!r.includes(t))throw new m("Invalid template for extension type",`Expected template to be one of the following: ${r.join(", ")}.`)}function je(e,t,r){let n={headline:["Your extension was created in",{filePath:t},{char:"."}],nextSteps:[],reference:[]};return e.type!=="function"&&n.nextSteps.push(["To preview this extension along with the rest of the project, run",{command:W(r,"shopify app dev")}]),e.supportLinks[0]&&n.reference.push(["For more details, see the",{link:{label:"docs",url:e.supportLinks[0]}}]),n}async function Re(e,t,r,n){if(!e)return;let a=r.find(i=>i.identifier===e);if(!a){let i=await Y(),s=r.map(c=>c.identifier),o=i?"You might need to enable some flags on your Organization or App":void 0;throw new m(`Unknown extension type: ${e}.
|
|
5
|
+
The following extension types are supported: ${s.join(", ")}`,o)}if(ue(t,n,a))throw new m(`Invalid extension type: ${e}`,`You have reached the limit of extension(s) of type ${a.type} per app`);return a}var me=Oe;var x=he(xe(),1);var S=class e extends ne{static summary="Generate a new app Extension.";static descriptionWithMarkdown=`Generates a new [app extension](https://shopify.dev/docs/apps/build/app-extensions). For a list of app extensions that you can generate using this command, refer to [Supported extensions](https://shopify.dev/docs/apps/build/app-extensions/list-of-app-extensions).
|
|
6
|
+
|
|
7
|
+
Each new app extension is created in a folder under \`extensions/\`. To learn more about the extensions file structure, refer to [App structure](https://shopify.dev/docs/apps/build/cli-for-apps/app-structure) and the documentation for your extension.
|
|
8
|
+
`;static description=this.descriptionWithoutMarkdown();static flags={...H,...z,template:O(x.Flags.string({char:"t",hidden:!1,description:"Extension template",env:"SHOPIFY_FLAG_EXTENSION_TEMPLATE"})),name:O(x.Flags.string({char:"n",hidden:!1,description:"name of your Extension",env:"SHOPIFY_FLAG_NAME"})),"clone-url":x.Flags.string({hidden:!0,char:"u",description:"The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples",env:"SHOPIFY_FLAG_CLONE_URL"}),flavor:x.Flags.string({hidden:!1,description:"Choose a starting template for your extension, where applicable. Required if non interactive when the selected extension template supports multiple flavors.",options:["vanilla-js","react","typescript","typescript-react","wasm","rust"],env:"SHOPIFY_FLAG_FLAVOR"})};async run(){let{flags:t}=await this.parse(e);await k.addPublicMetadata(()=>({cmd_scaffold_required_auth:!0,cmd_scaffold_template_custom:t["clone-url"]!==void 0,cmd_scaffold_type_owner:"@shopify/app"})),await Z(t.path);let{app:r,project:n,specifications:a,remoteApp:i,developerPlatformClient:s}=await te({directory:t.path,clientId:t["client-id"],forceRelink:t.reset,userProvidedConfigName:t.config});return await me({directory:t.path,reset:t.reset,name:t.name,cloneUrl:t["clone-url"],template:t.template,flavor:t.flavor,app:r,project:n,specifications:a,remoteApp:i,developerPlatformClient:s}),{app:r}}};export{S as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as h,E as e,F as r,J as o,K as s,n}from"./chunk-WSCSFFLH.js";import{g as i}from"./chunk-VKWPEFWQ.js";i();async function y(){await h({message:"Associate your project with the org Castile Ventures?",choices:[{label:"first",value:"first",disabled:!0},{label:"second",value:"second"},{label:"third (limit reached)",value:"third",disabled:!0},{label:"fourth (limit reached)",value:"fourth",disabled:!0},{label:"fifth",value:"fifth",group:"Automations",disabled:!0},{label:"sixth",value:"sixth",group:"Automations"},{label:"seventh",value:"seventh"},{label:"eighth (limit reached)",value:"eighth",group:"Merchant Admin",disabled:!0},{label:"ninth",value:"ninth",group:"Merchant Admin"},{label:"tenth",value:"tenth"}],infoTable:[{header:"add",items:["new-ext"],bullet:"+"},{header:"remove",items:["integrated-demand-ext","order-discount"],bullet:"-"}]}),await o({message:"App project name (can be changed later)",defaultValue:"expansive commerce app",validate:t=>{if(t.includes("shopify"))return`Can't include "shopify" in the name`}});let l=[{label:"first",value:"first"},{label:"second",value:"second"},{label:"third",value:"third"},{label:"fourth",value:"fourth"},{label:"fifth",value:"fifth"},{label:"sixth",value:"sixth"},{label:"seventh",value:"seventh"},{label:"eighth",value:"eighth"},{label:"ninth",value:"ninth"},{label:"tenth",value:"tenth"},{label:"eleventh",value:"eleventh"},{label:"twelfth",value:"twelfth"},{label:"thirteenth",value:"thirteenth"},{label:"fourteenth",value:"fourteenth"},{label:"fifteenth",value:"fifteenth"},{label:"sixteenth",value:"sixteenth"},{label:"seventeenth",value:"seventeenth"},{label:"eighteenth",value:"eighteenth"},{label:"nineteenth",value:"nineteenth"},{label:"twentieth",value:"twentieth"},{label:"twenty-first",value:"twenty-first"},{label:"twenty-second",value:"twenty-second"},{label:"twenty-third",value:"twenty-third"},{label:"twenty-fourth",value:"twenty-fourth"},{label:"twenty-fifth",value:"twenty-fifth"},{label:"twenty-sixth",value:"twenty-sixth"},{label:"twenty-seventh",value:"twenty-seventh"},{label:"twenty-eighth",value:"twenty-eighth"},{label:"twenty-ninth",value:"twenty-ninth"},{label:"thirtieth",value:"thirtieth"},{label:"thirty-first",value:"thirty-first"},{label:"thirty-second",value:"thirty-second"},{label:"thirty-third",value:"thirty-third"},{label:"thirty-fourth",value:"thirty-fourth"},{label:"thirty-fifth",value:"thirty-fifth"},{label:"thirty-sixth",value:"thirty-sixth"},{label:"thirty-seventh",value:"thirty-seventh"},{label:"thirty-eighth",value:"thirty-eighth"},{label:"thirty-ninth",value:"thirty-ninth"},{label:"fortieth",value:"fortieth"},{label:"forty-first",value:"forty-first"},{label:"forty-second",value:"forty-second"},{label:"forty-third",value:"forty-third"},{label:"forty-fourth",value:"forty-fourth"},{label:"forty-fifth",value:"forty-fifth"},{label:"forty-sixth",value:"forty-sixth"},{label:"forty-seventh",value:"forty-seventh"},{label:"forty-eighth",value:"forty-eighth"},{label:"forty-ninth",value:"forty-ninth"},{label:"fiftieth",value:"fiftieth"}];await r({message:"Template",choices:l,search(t){return Promise.resolve({data:l.filter(f=>f.label.includes(t))})}});let a=[["first theme",{subdued:"(#1)"}],["second theme",{subdued:"(#2)"}]];await e({message:"Add the following themes to the store?",infoTable:{"":a},confirmationMessage:"Yes, add them",cancellationMessage:"Cancel"});let u={title:{color:"red",text:`${n.warning} This can't be undone.`},body:"The action you are executing should be confirmed to proceed."};await e({message:"Delete the following themes from the store?",infoTable:{"":a},infoMessage:u,confirmationMessage:"Yes, delete them",cancellationMessage:"Cancel",defaultValue:!1}),await e({message:["Make the following changes to your",{filePath:".env"},"file?"],defaultValue:!0,confirmationMessage:"Yes, confirm changes",cancellationMessage:"No, make changes later"}),await s({message:"Release this version of Mega App?",infoTable:[{header:"Includes",items:["My subscription extension","Order discount function","Subscription cancelled trigger","Add subscription action"],bullet:"+"},{header:"Removes",items:["product-discount-function","product-subscription-extension"],bullet:"-"}],confirmation:"Mega App"})}export{y as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as N}from"./chunk-ESPT6CGE.js";import{a as R}from"./chunk-RA3WWB2S.js";import{Y as k,sa as x}from"./chunk-GFWXVO72.js";import{b as T,c as C}from"./chunk-IX4IGE5H.js";import{G as A}from"./chunk-WSCSFFLH.js";import{h as y}from"./chunk-BI7LE6CZ.js";import{Gb as L,ba as u,qb as v,sb as w,wb as E,xb as l}from"./chunk-HQUWYKSJ.js";import{i as h}from"./chunk-B4OMIONW.js";import{j as g}from"./chunk-773TIA5M.js";import{g as p}from"./chunk-VKWPEFWQ.js";p();p();var I=12;async function M(n,t,a){let r=await n.appVersions(t);if(!r.app)throw new y(`Invalid API Key: ${t.apiKey}`);let o=r.app.appVersions.nodes.map(e=>{let i=e.message??"";return{...e,status:e.status==="active"&&!a?h.green(`\u2605 ${e.status}`):e.status,createdBy:e.createdBy?.displayName??"",createdAt:u(new Date(e.createdAt)),message:i}});if(!a){let e=(process.stdout.columns??75)-I,i=e;o.forEach(s=>{let d=s.message.length+(s.versionTag?.length??0)+L(s.status).length+s.createdAt.length+s.createdBy.length;if(d>e){let b=d-s.message.length,f=Math.max(e-b,10);f<i&&(i=f)}}),o.forEach(s=>{s.message.length>i&&(s.message=`${s.message.slice(0,i-3)}...`)})}return{appVersions:o,totalResults:r.app.appVersions.pageInfo.totalResults,app:r.app}}async function m(n){let{remoteApp:t,developerPlatformClient:a,organization:r}=n,{appVersions:o,totalResults:e}=await M(a,t,n.json);if(n.json)return E(JSON.stringify(o,null,2));if(k({org:r.businessName,appName:t.title,configFile:g(n.app.configPath)}),o.length===0){l("No app versions found for this app");return}A({rows:o,columns:{versionTag:{header:"VERSION"},status:{header:"STATUS"},message:{header:"MESSAGE"},createdAt:{header:"DATE CREATED"},createdBy:{header:"CREATED BY"}}});let i=v.link(a.webUiName,[await a.appDeepLink(t),"versions"].join("/"));l(w`\nView all ${String(e)} app versions in the ${i}`)}var c=class n extends N{static summary="List deployed versions of your app.";static descriptionWithMarkdown="Lists the deployed app versions. An app version is a snapshot of your app extensions.";static description=this.descriptionWithoutMarkdown();static flags={...T,...R,...C};async run(){let{flags:t}=await this.parse(n),{app:a,remoteApp:r,developerPlatformClient:o,organization:e}=await x({directory:t.path,clientId:t["client-id"],forceRelink:t.reset,userProvidedConfigName:t.config});return await m({app:a,remoteApp:r,organization:e,developerPlatformClient:o,json:t.json}),{app:a}}};export{c as a};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as L,b as g,d as P,g as w}from"./chunk-YCU7ZCIG.js";import{a as A}from"./chunk-MTTBBZSR.js";import{t as F}from"./chunk-SGIMJQEM.js";import{a as G}from"./chunk-ESPT6CGE.js";import{a as S}from"./chunk-RA3WWB2S.js";import{b as v,e as b}from"./chunk-IX4IGE5H.js";import{C as d,x as l}from"./chunk-PK73ZSND.js";import{N as u,a as c}from"./chunk-WSCSFFLH.js";import{a as q}from"./chunk-CTNBSUVU.js";import{Bb as y,qb as f,sb as h,xb as i}from"./chunk-HQUWYKSJ.js";import{e as Q,g as o}from"./chunk-VKWPEFWQ.js";o();o();o();import{randomBytes as x}from"crypto";function K(){return x(32).toString("hex")}function C(r){let e=new URL(`http://localhost:${r.port}/graphiql`);return e.searchParams.set("key",r.key),r.query&&e.searchParams.set("query",r.query),r.variables&&e.searchParams.set("variables",r.variables),r.apiVersion&&e.searchParams.set("api_version",r.apiVersion),e.toString()}async function k(r){let e=await A(r.port),t=g({stdout:r.stdout??process.stdout,port:e,storeFqdn:r.storeFqdn,tokenProvider:r.tokenProvider,key:r.key,appContext:r.appContext,protectMutations:r.protectMutations}),a=C({port:e,key:r.key,query:r.query,variables:r.variables,apiVersion:r.apiVersion});try{i(h`GraphiQL is running at ${f.link(a)}`),r.additionalReadyMessages?.forEach(s=>i(s)),i("Press Ctrl+C to stop."),await u(a)||y("Browser did not open automatically. Open the URL above manually."),await T(r.abortSignal)}finally{t.close()}}async function T(r){let e=new c,t=()=>e.abort();process.once("SIGINT",t);try{await new Promise(a=>{if(e.signal.aborted||r?.aborted){a();return}e.signal.addEventListener("abort",()=>a(),{once:!0}),r?.addEventListener("abort",()=>e.abort(),{once:!0})})}finally{process.removeListener("SIGINT",t)}}async function I(r){let e=r.remoteApp.apiSecretKeys[0]?.secret??"",t=L(void 0,e,r.store),a=w({apiKey:r.remoteApp.apiKey,apiSecret:e,storeFqdn:r.store}),m=await l(),s=P(r.store,r.remoteApp.apiKey,m);await k({port:r.port,storeFqdn:r.store,tokenProvider:a,key:t,appContext:{appName:r.remoteApp.title,appUrl:s,apiSecret:e},variables:r.variables,apiVersion:r.apiVersion,abortSignal:r.abortSignal})}var n=Q(q(),1),p=class r extends G{static summary="Open a local GraphiQL UI for your app and store.";static descriptionWithMarkdown=`Opens an authenticated Admin API GraphiQL UI for your app and selected store.
|
|
2
|
+
|
|
3
|
+
The app must be installed on the store.`;static description=this.descriptionWithoutMarkdown();static examples=["<%= config.bin %> <%= command.id %> --store shop.myshopify.com","<%= config.bin %> <%= command.id %> --store shop.myshopify.com --port 9123"];static flags={...v,...S,store:n.Flags.string({char:"s",description:"The myshopify.com domain of the store to open GraphiQL against. The app must be installed on the store. If not specified, you will be prompted to select a store.",env:"SHOPIFY_FLAG_STORE",parse:async e=>d(e)}),port:b({description:"Local port for the GraphiQL server.",env:"SHOPIFY_FLAG_PORT"}),variables:n.Flags.string({char:"v",description:"The values for any GraphQL variables in your query or mutation, in JSON format.",env:"SHOPIFY_FLAG_VARIABLES"}),version:n.Flags.string({description:"The API version to use in GraphiQL. Defaults to the latest stable version.",env:"SHOPIFY_FLAG_VERSION"})};async run(){let{flags:e}=await this.parse(r),{appContextResult:t,store:a}=await F(e);return await I({remoteApp:t.remoteApp,store:a.shopDomain,port:e.port,variables:e.variables,apiVersion:e.version}),{app:t.app}}};export{K as a,k as b,p as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as E}from"./chunk-IX4IGE5H.js";import{b}from"./chunk-3WV7DQMM.js";import{Q as F,R as N}from"./chunk-WSCSFFLH.js";import{a as U}from"./chunk-CTNBSUVU.js";import{S as C,Ta as w,ma as O,xb as k}from"./chunk-HQUWYKSJ.js";import{i as n}from"./chunk-B4OMIONW.js";import{j as R}from"./chunk-4VJ6YK7U.js";import{d as u,f as P,g as x,h as g,n as T,q as y}from"./chunk-773TIA5M.js";import{e as H,g as d}from"./chunk-VKWPEFWQ.js";d();d();d();d();var m=class{static description="Doctor test suite";context;assertions=[];registeredTests=[];async runSuite(t){this.context=t,this.registeredTests=[];let e=[];this.tests();for(let o of this.registeredTests){this.assertions=[];let s=Date.now();try{await o.fn(),e.push({name:o.name,status:this.hasFailures()?"failed":"passed",duration:Date.now()-s,assertions:[...this.assertions]})}catch(r){e.push({name:o.name,status:"failed",duration:Date.now()-s,assertions:[...this.assertions],error:r instanceof Error?r:new Error(String(r))})}}return e}test(t,e){this.registeredTests.push({name:t,fn:e})}tests(){}async run(t,e){let o=e?.cwd??this.context.workingDirectory,s=await F(t,{cwd:o,env:e?.env});return{command:t,exitCode:s.exitCode,stdout:s.stdout,stderr:s.stderr,output:String(s.stdout)+String(s.stderr),success:s.exitCode===0}}async runInteractive(t,e){let o=e?.cwd??this.context.workingDirectory,s=0;try{await N(t,{cwd:o,env:e?.env,stdin:"inherit"})}catch{s=1}return{command:t,exitCode:s,stdout:"",stderr:"",output:"",success:s===0}}assertSuccess(t,e){this.assertions.push({description:e??`Command succeeded: ${t.command}`,passed:t.success,expected:"exit code 0",actual:`exit code ${t.exitCode}`})}assertError(t,e,o){let s=!t.success;if(e){let h=(typeof e=="string"?new RegExp(e):e).test(t.output),c;s?h?c="matched":c=`output: ${t.output.slice(0,200)}`:c="command succeeded",this.assertions.push({description:o??`Command failed with expected error: ${e}`,passed:s&&h,expected:`failure with error matching ${e}`,actual:c})}else this.assertions.push({description:o??`Command failed: ${t.command}`,passed:s,expected:"non-zero exit code",actual:`exit code ${t.exitCode}`})}async assertFile(t,e,o){let s=g(t)?t:u(this.context.workingDirectory,t),r=x(this.context.workingDirectory,s);if(!await w(s)){this.assertions.push({description:o??`File exists: ${r}`,passed:!1,expected:"file exists",actual:"file not found"});return}if(e){let c=await O(s),D=(typeof e=="string"?new RegExp(e):e).test(c);this.assertions.push({description:o??`File ${r} matches ${e}`,passed:D,expected:`content matching ${e}`,actual:D?"matched":`content: ${c.slice(0,200)}...`})}else this.assertions.push({description:o??`File exists: ${r}`,passed:!0,expected:"file exists",actual:"file exists"})}async assertNoFile(t,e){let o=g(t)?t:u(this.context.workingDirectory,t),s=x(this.context.workingDirectory,o),r=await w(o);this.assertions.push({description:e??`File does not exist: ${s}`,passed:!r,expected:"file does not exist",actual:r?"file exists":"file does not exist"})}async assertDirectory(t,e){let o=g(t)?t:u(this.context.workingDirectory,t),s=x(this.context.workingDirectory,o),r=await w(o);this.assertions.push({description:e??`Directory exists: ${s}`,passed:r,expected:"directory exists",actual:r?"directory exists":"directory not found"})}assertOutput(t,e,o){let r=(typeof e=="string"?new RegExp(e):e).test(t.output);this.assertions.push({description:o??`Output matches ${e}`,passed:r,expected:`output matching ${e}`,actual:r?"matched":`output: ${t.output.slice(0,200)}`})}assertJson(t,e,o){try{let s=JSON.parse(t.stdout);if(e){let r=e(s);this.assertions.push({description:o??"Output is valid JSON matching validator",passed:r,expected:"valid JSON matching validator",actual:r?"matched":"validator returned false"})}else this.assertions.push({description:o??"Output is valid JSON",passed:!0,expected:"valid JSON",actual:"valid JSON"});return s}catch{this.assertions.push({description:o??"Output is valid JSON",passed:!1,expected:"valid JSON",actual:`invalid JSON: ${t.stdout.slice(0,100)}`});return}}assert(t,e){this.assertions.push({description:e,passed:t,expected:"true",actual:String(t)})}assertEqual(t,e,o){this.assertions.push({description:o,passed:t===e,expected:String(e),actual:String(t)})}hasFailures(){return this.assertions.some(t=>!t.passed)}};var p=class extends m{static description="Tests the theme init command creates a valid theme structure";themeName="";themePath="";tests(){this.test("init creates theme directory",async()=>{this.themeName=`doctor-theme-${C("creative")}`,this.themePath=u(this.context.workingDirectory,this.themeName);let t=await this.runInteractive(`shopify theme init ${this.themeName} --path ${this.context.workingDirectory}`);this.assertSuccess(t),this.context.themeName=this.themeName,this.context.themePath=this.themePath}),this.test("essential theme files exist",async()=>{let t=["layout/theme.liquid","config/settings_schema.json","templates/index.json"];await Promise.all(t.map(e=>this.assertFile(u(this.themePath,e))))}),this.test("theme directories exist",async()=>{let t=["sections","snippets","assets","locales"];await Promise.all(t.map(e=>this.assertDirectory(u(this.themePath,e))))}),this.test("layout/theme.liquid has valid content",async()=>{await this.assertFile(u(this.themePath,"layout/theme.liquid"),/<!doctype html>|<html|{{ content_for_header }}/i,"layout/theme.liquid contains expected Liquid markup")})}};d();var l=class extends m{static description="Tests pushing a theme to the store creates an unpublished theme";static requiresStore=!0;tests(){this.test("push creates unpublished theme",async()=>{if(!this.context.themePath){this.assert(!1,"Theme init did not complete successfully; themePath is missing in context");return}let t=this.context.themeName??"doctor-theme",e=`shopify theme push --unpublished --json --path ${this.context.themePath} -t ${t}`;this.context.environment&&(e+=` -e ${this.context.environment}`),this.context.store&&(e+=` -s ${this.context.store}`),this.context.password&&(e+=` --password ${this.context.password}`);let o=await this.run(e);this.assertSuccess(o);let s=this.assertJson(o,r=>typeof r.theme?.id=="number");s?.theme&&(this.assert(typeof s.theme.id=="number","Theme was created with a valid ID"),this.assertEqual(s.theme.role,"unpublished","Theme role is unpublished"),this.assert(s.theme.editor_url.includes("/admin/themes/"),"Editor URL is provided"),this.assert(s.theme.preview_url.includes("preview_theme_id="),"Preview URL is provided"),this.context.themeId=String(s.theme.id),this.context.data.editorUrl=s.theme.editor_url,this.context.data.previewUrl=s.theme.preview_url)})}};d();function _(i){return{workingDirectory:i.path??y(),environment:i.environment,store:i.store,password:i.password,data:{}}}d();var a=i=>k(i),v;function J(i){v=i}function G(i){if(!v)return i;let t=/\/[^\s,)]+/g;return i.replace(t,e=>T(e,v))}function A(i,t){a(""),a(n.bold(n.cyan(`Suite: ${i}`))),a(n.dim(t))}function j(i){a(n.bold(n.blue(`Running: ${i}`)))}function q(i){let t=`(${(i.duration/1e3).toFixed(2)}s)`;if(i.status==="passed"){a(n.bold(n.green(`PASSED: ${i.name} ${n.dim(t)}`)));for(let e of I(i.assertions))a(e)}else if(i.status==="failed"){a(n.red(`FAILED: ${i.name} ${n.dim(t)}`));for(let e of I(i.assertions))a(e);i.error&&a(n.red(` Error: ${G(i.error.message)}`))}else a(n.yellow(`SKIPPED: ${i.name}`))}function S(i){let t=i.filter(h=>h.status==="passed").length,e=i.filter(h=>h.status==="failed").length,o=i.filter(h=>h.status==="skipped").length,s=i.length,r=i.reduce((h,c)=>h+c.duration,0);a(""),a(n.bold("\u2500".repeat(40))),e>0?a(n.red(n.bold(`Doctor Complete: ${e}/${s} tests failed`))):a(n.green(n.bold(`Doctor Complete: ${t}/${s} tests passed`))),a(` Passed: ${n.green(String(t))}`),a(` Failed: ${n.red(String(e))}`),o>0&&a(` Skipped: ${n.yellow(String(o))}`),a(` Total time: ${n.dim(`${(r/1e3).toFixed(2)}s`)}`)}function I(i){return i.map(t=>{if(t.passed)return n.green(` [OK] ${t.description}`);{let e=` (expected: ${t.expected}, actual: ${t.actual})`;return n.red(` [FAIL] ${t.description}${e}`)}})}var Y=[p,l];async function L(i){let t=[],e=_(i);J(e.workingDirectory);for(let o of Y){let s=new o,r=o.description??"Test suite";A(o.name,r);let h=await s.runSuite(e);for(let c of h)if(j(c.name),q(c),t.push(c),c.status==="failed")return S(t),t}return S(t),t}var f=H(U(),1);var $=class i extends b{static description="Run all theme command doctor-release tests";static hidden=!0;static flags={...E,path:f.Flags.string({char:"p",description:"The path to run tests in. Defaults to current directory.",env:"SHOPIFY_FLAG_PATH",parse:async t=>P(t),default:async()=>y()}),environment:f.Flags.string({char:"e",description:"The environment to use from shopify.theme.toml (required for store-connected tests).",env:"SHOPIFY_FLAG_ENVIRONMENT",required:!0}),store:f.Flags.string({char:"s",description:"Store URL (overrides environment).",env:"SHOPIFY_FLAG_STORE"}),password:f.Flags.string({description:"Password from Theme Access app (overrides environment).",env:"SHOPIFY_FLAG_PASSWORD"})};async run(){if(!R())return;let{flags:t}=await this.parse(i);(await L({path:t.path,environment:t.environment,store:t.store,password:t.password})).some(s=>s.status==="failed")&&(process.exitCode=1)}};export{$ as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as N,b as $,c as w}from"./chunk-MK7MOLLI.js";import{q as T}from"./chunk-PK73ZSND.js";import{S as P,T as k,a as F}from"./chunk-WSCSFFLH.js";import{a as D,b}from"./chunk-WMZS3Y4Z.js";import{k as A}from"./chunk-BI7LE6CZ.js";import{Ab as u,Ia as U,La as I,N as x,Pa as O,Ua as p,xa as y,za as _}from"./chunk-HQUWYKSJ.js";import{f as h}from"./chunk-4VJ6YK7U.js";import{d as m,i as l,j as S}from"./chunk-773TIA5M.js";import{g as f}from"./chunk-VKWPEFWQ.js";f();f();import{fileURLToPath as q}from"url";import Y from"util";import{pipeline as j}from"stream";import{execSync as z,execFileSync as B}from"child_process";var H="2024.8.2",W=`https://github.com/cloudflare/cloudflared/releases/download/${H}/`,G={arm64:"cloudflared-linux-arm64",arm:"cloudflared-linux-arm",x64:"cloudflared-linux-amd64",ia32:"cloudflared-linux-386"},V={arm64:"cloudflared-darwin-arm64.tgz",x64:"cloudflared-darwin-amd64.tgz"},X={x64:"cloudflared-windows-amd64.exe",ia32:"cloudflared-windows-386.exe",arm64:"cloudflared-windows-amd64.exe"},v={linux:G,darwin:V,win32:X};function Z(r=process.platform,t=process.arch){if(!Object.keys(v).includes(r))throw new Error(`Unsupported system platform: ${r}`);let n=v[r][t];if(n===void 0)throw new Error(`Unsupported system arch: ${t}`);return W+n}function J(r=process.env,t=process.platform){return r.SHOPIFY_CLI_CLOUDFLARED_PATH?r.SHOPIFY_CLI_CLOUDFLARED_PATH:m(l(q(import.meta.url)),"..","bin",t==="win32"?"cloudflared.exe":"cloudflared")}async function g(r=process.env,t=process.platform,e=process.arch){if(r.SHOPIFY_CLI_IGNORE_CLOUDFLARED){u("Skipping cloudflared installation because SHOPIFY_CLI_IGNORE_CLOUDFLARED is set");return}let n=Z(t,e),o=J(r,t);if(p(o))try{let i=B(o,["--version"],{encoding:"utf8"}).split(" "),a=i.length>2?i[2]:"0.0.0";if(!K(H,a)){u("cloudflared already installed, skipping");return}}catch{u("version check failed, reinstalling")}if(t==="linux")await Q(n,o);else if(t==="darwin")await rt(n,o);else if(t==="win32")await tt(n,o);else throw new Error(`Unsupported platform: ${t}`)}function K(r,t){let[e,n,o]=r.split(".").map(Number),[i,a,c]=t.split(".").map(Number);return e!==i?(e??0)>(i??0):n!==a?(n??0)>(a??0):(o??0)>(c??0)}async function Q(r,t){await C(r,t),await O(t,"755")}async function tt(r,t){await C(r,t)}async function rt(r,t){await C(r,`${t}.tgz`);let e=S(`${t}.tgz`);z(`tar -xzf ${e}`,{cwd:l(t)}),U(`${t}.tgz`),await _(`${l(t)}/cloudflared`,t)}async function C(r,t){p(l(t))||y(l(t));let e=Y.promisify(j),n=await T(r,{redirect:"follow"},"slow-request");if(!n.ok||!n.body)throw new Error(`Couldn't download file ${r} (${n.status} ${n.statusText})`);let o=I(t);return await e(n.body,o),t}import{Writable as et}from"stream";import{fileURLToPath as nt}from"url";var $t=$({provider:w,action:it}),ot=h()?.2:40,st=5;async function it(r){try{let t=new R(r);return await t.startTunnel(),D(t)}catch(t){let e=new N("unknown",t.message);return b(e)}}var R=class{port;provider=w;currentStatus={status:"not-started"};abortController=void 0;constructor(t){this.port=t}async startTunnel(){try{await g(),this.tunnel()}catch(t){this.currentStatus={status:"error",message:t.message,tryMessage:d()}}}getTunnelStatus(){return this.currentStatus}stopTunnel(){this.abortController?.abort()}tunnel(t=0){this.abortController=new F;let e=!1;if(t>=st){e=!0,this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: max retries reached.",tryMessage:d()};return}let n=["tunnel","--url",`http://localhost:${this.port}`,"--no-autoupdate"],o=[],i=!1,a;this.currentStatus={status:"starting"},setTimeout(()=>{if(!e){e=!0;let s=x(o).slice(-5).join(`
|
|
2
|
+
`);s===""?this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: unknown error.",tryMessage:d()}:this.currentStatus={status:"error",message:s,tryMessage:d()},this.abortController?.abort()}},ot*1e3);let c=this,E=new et({write(s,mt,M){if(u(s.toString()),e)return;a??=at(s),ct(s)&&(i=!0),i&&(a?(e=!0,c.currentStatus={status:"connected",url:a}):c.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: URL not found."});let L=lt(s);L&&o.push(L),M()}});P(dt(),n,{stdout:E,stderr:E,signal:this.abortController.signal,externalErrorHandler:async s=>{if(e)throw new A(`Could not start Cloudflare tunnel: process crashed after stablishing a connection: ${s.message}`,d());u(`Cloudflare tunnel crashed: ${s.message}, restarting...`),h()||await k(1),this.tunnel(t+1)}})}};function d(){return["You can run the command again, or try networking with Shopify via",{command:"--use-localhost"},"or",{command:"--tunnel-url <custom tunnel>"},".",{link:{label:"See documentation for details.",url:"https://shopify.dev/docs/apps/build/cli-for-apps/networking-options"}}]}function at(r){let t=new RegExp(`(https:\\/\\/[^\\s]+\\.${ft()})`),e=r.toString().match(t)??void 0;return e&&e[1]}function lt(r){if([/failed to request quick Tunnel/,/failed to unmarshal quick Tunnel/,/failed to parse quick Tunnel ID/,/failed to provision routing/,/ERR Couldn't start tunnel/,/ERR Failed to serve quic connection/,/ERR Failed to create new quic connection error/].some(n=>n.test(r.toString())))return`Could not start Cloudflare tunnel: ${ut(r.toString())}`}function ut(r){let t=/^[0-9TZ:-]+ (ERR )?/g,e=/connIndex.*/g;return r.replace(t,"").replace(e,"")}function ct(r){let t=r.toString().match(/(INF Registered tunnel connection|INF Connection)/)??void 0;return t&&t[0]}function dt(){return process.env.SHOPIFY_CLI_CLOUDFLARED_PATH?process.env.SHOPIFY_CLI_CLOUDFLARED_PATH:m(l(nt(import.meta.url)),"..","bin",process.platform==="win32"?"cloudflared.exe":"cloudflared")}function ft(){return process.env.SHOPIFY_CLI_CLOUDFLARED_DOMAIN??"trycloudflare.com"}export{$t as a};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as v}from"./chunk-J3JPJCWP.js";import{a as fe}from"./chunk-CNMJ6QXM.js";import{b as re,c as oe,d as se,e as ne,f as ie,h as ae,i as le,k as ce,l as me,n as de}from"./chunk-7EUIO4ZO.js";import{c as ee,e as te}from"./chunk-WEWLPJK2.js";import{a as X}from"./chunk-EWS2RNM6.js";import{c as Q,e as b,m as Z,n as x}from"./chunk-5JW4JQWZ.js";import{k as P,l as V,n as w}from"./chunk-K63FW7Q7.js";import{s as C,u as k}from"./chunk-3KM2GKXH.js";import{a as Y,b as B}from"./chunk-MTTBBZSR.js";import{o as J,s as K,t as j,u as z,w as N}from"./chunk-Q7BOSHWX.js";import{a as F,va as $,za as L}from"./chunk-PK73ZSND.js";import{A as T,C as q,D as G,N as U,w as W,y as I,z as M}from"./chunk-WSCSFFLH.js";import{d as _,e as H}from"./chunk-6K3AJTNO.js";import{h as y}from"./chunk-BI7LE6CZ.js";import{Ab as u,qb as g,sb as R,xb as E}from"./chunk-HQUWYKSJ.js";import{i as p}from"./chunk-B4OMIONW.js";import{g as f}from"./chunk-VKWPEFWQ.js";f();f();f();f();var he={workPromise:Promise.resolve()};async function ue(e,t,o,r,s){if(o.length===0)return he;u("Initiating theme asset reconciliation process");let{filesOnlyPresentLocally:i,filesOnlyPresentOnRemote:n,filesWithConflictingChecksums:l}=Ee(o,r),a=i.length===0&&n.length===0&&l.length===0;if(L(`theme-service:theme-reconciliation:manual:${a}`),a)return u("Local and remote checksums match - no need to reconcile theme assets"),he;let m=await De({filesOnlyPresentLocally:i,filesOnlyPresentOnRemote:n,filesWithConflictingChecksums:l},s);return{workPromise:Ae(e,t,r,m)}}function Ee(e,t){let o=new Set,r=[],s=[];for(let n of e){o.add(n.key);let l=t.files.get(n.key);l?n.checksum!==l.checksum&&s.push(n):r.push(n)}let i=Array.from(t.files.values()).filter(n=>!o.has(n.key));return{filesOnlyPresentOnRemote:S(r,t),filesOnlyPresentLocally:S(i,t),filesWithConflictingChecksums:S(s,t)}}function S(e,t){return t.applyIgnoreFilters(e).filter(r=>r.key.endsWith(".json"))}async function A(e,t,o,r){if(e.length===0)return;if(r){Ce(e,o,r);return}I({body:{list:{title:t,items:e.map(i=>i.key)}}}),await G({message:"Reconciliation Strategy",choices:[{label:o.remote.label,value:D},{label:o.local.label,value:pe}]})===D?o.remote.callback(e):o.local.callback(e)}function Ce(e,t,o){switch(o){case"keep-remote":t.remote.callback(e);break;case"keep-local":t.local.callback(e);break;case"abort":break}}function Se(e){let t=[{title:"The files listed below are only present locally.",files:e.filesOnlyPresentLocally},{title:"The files listed below are only present on the remote theme.",files:e.filesOnlyPresentOnRemote},{title:"The files listed below differ between the local and remote versions.",files:e.filesWithConflictingChecksums}];throw new y("Theme JSON files need reconciliation.",t.filter(o=>o.files.length>0).map(o=>`${o.title}
|
|
2
2
|
${o.files.map(r=>`- ${r.key}`).join(`
|
|
3
3
|
`)}`).join(`
|
|
4
4
|
|
|
5
|
-
`))}async function
|
|
6
|
-
`,{list:{title:"Known limitations:",items:["Hot module reloading","Password protected storefronts"]}}],link:{label:"Theme Access app",url:"https://shopify.dev/docs/storefronts/themes/tools/theme-access"}}),e.listing&&await ce(e.directory,e.listing);let[t,o]=await Promise.all([Z(e.adminSession),Q(e.adminSession)]),r=o?await X(e.storePassword,e.adminSession.storeFqdn,t):void 0,s=ie(),i=me(e.directory,{filters:e,listing:e.listing,noDelete:e.noDelete,notify:e.notify}),n=e.host??
|
|
5
|
+
`))}async function Ae(e,t,o,r){let{localFilesToDelete:s,filesToDownload:i,remoteFilesToDelete:n}=r,l=s.map(d=>o.delete(d.key)),a=v(i,k,async d=>{let c=await P(e.id,d.map(h=>h.key),t);return Promise.all(c.map(h=>{if(h)return o.write(h)}))}),m=V(e.id,n.map(d=>d.key),t);await Promise.all([...l,...a,m])}async function De(e,t){let{filesOnlyPresentLocally:o,filesOnlyPresentOnRemote:r,filesWithConflictingChecksums:s}=e,{reconciliationStrategy:i}=t,n=[],l=[],a=[],m={filesOnlyPresentLocally:t.noDelete?[]:o,filesOnlyPresentOnRemote:r,filesWithConflictingChecksums:s},d=Object.values(m).some(c=>c.length>0);return i==="abort"&&d&&Se(m),t.noDelete||await A(o,"The files listed below are only present locally. What would you like to do?",{remote:{label:"Delete files from the local directory",callback:c=>{n.push(...c)}},local:{label:"Upload local files to the remote theme",callback:()=>{}}},i),await A(r,"The files listed below are only present on the remote theme. What would you like to do?",{remote:{label:"Download remote files to the local directory",callback:c=>{l.push(...c)}},local:{label:"Delete files from the remote theme",callback:c=>{a.push(...c)}}},i),await A(s,"The files listed below differ between the local and remote versions. What would you like to do?",{remote:{label:"Keep the remote version",callback:c=>{l.push(...c)}},local:{label:"Keep the local version",callback:c=>{a.push(...c)}}},i),{localFilesToDelete:n,filesToDownload:l,remoteFilesToDelete:a}}f();var Oe=3e3,O=class extends Error{};function we(e,t,o,r,s,i){u("Listening for changes in the theme editor");let n=5,l=0,a="",m=o,d=async()=>{await new Promise(c=>setTimeout(c,Oe)),m=await Fe(e,t,m,r,s).then(c=>(l=0,a="",c)).catch(c=>{if(l++,c.message!==a&&(a=c.message,b("Error while polling for changes.",c)),l>=n){let h=new y("Too many polling errors...","Please check the errors above and ensure you have a stable internet connection.");q(h),i(h)}return m})};setTimeout(async()=>{for(;;)await d()})}async function Fe(e,t,o,r,s){let i=new Set(r.unsyncedFileKeys),n=ye(o,r,i),l=await w(e.id,t).then(d=>ye(d,r,i)),a=Le(n,l),m=$e(l,n);return await We(r,a),await _e(e,t,r,a),await He(r,m,s),l}function $e(e,t){let o=new Map(e.map(s=>[s.key,s]));return t.filter(s=>o.get(s.key)===void 0)}function Le(e,t){let o=new Map(e.map(s=>[s.key,s]));return t.filter(s=>{let i=o.get(s.key);if(!i||i.checksum!==s.checksum)return!0})}async function _e(e,t,o,r){let s=r.filter(n=>o.files.get(n.key)?.checksum!==n.checksum),i=v(s,k,async n=>P(e.id,n.map(l=>l.key),t).then(l=>Promise.all(l.map(async a=>{a&&(await o.write(a),E(R`• ${C.format(new Date)} Synced ${g.raw("\xBB")} ${g.gray(`download ${a.key} from remote theme`)}`))}))));await Promise.all(i)}async function He(e,t,o){if(!o.noDelete)return Promise.all(t.map(r=>{if(e.files.get(r.key))return e.delete(r.key).then(()=>{E(R`• ${C.format(new Date)} Synced ${g.raw("\xBB")} ${g.gray(`remove ${r.key} from local theme`)}`)})}))}async function We(e,t){let o=new Map(e.files);await Promise.all(t.map(r=>e.read(r.key)));for(let r of t){let s=o.get(r.key)?.checksum,i=e.files.get(r.key)?.checksum;if(s!==i)throw new O(`Detected changes to the file '${r.key}' on both local and remote sources. Aborting...`)}}function ye(e,t,o){return t.applyIgnoreFilters(e).filter(s=>s.key.endsWith(".json")).filter(s=>!o.has(s.key))}var pe="local",D="remote";async function ge(e,t,o,r,s,i){u("Initiating theme asset reconciliation process"),await r.ready();let{workPromise:n}=await ue(e,t,o,r,s);return{updatedRemoteChecksumsPromise:n.then(async()=>{let a=await w(e.id,t);return we(e,t,a,r,s,i),a}),workPromise:n}}import{createServer as Ie}from"node:http";function ke(e,t){let{promise:o,resolve:r,reject:s}=Promise.withResolvers(),i=ae(e,t),n=Me(e,t,s),l=Promise.all([i,n.workPromise]).then(()=>t.localThemeFileSystem.startWatcher(e.id.toString(),t.session)),a=Ge(e,t,l);return{workPromise:l,serverStart:a.start,dispatchEvent:a.dispatch,renderDevSetupProgress:n.renderProgress,backgroundJobPromise:o,resolveBackgroundJob:r}}function Me(e,t,o){let r=a=>(b("Failed to perform the initial theme synchronization.",a),o(a),new Promise(()=>{})),i=w(e.id,t.session).then(a=>qe(e,t,a,o)),n=i.then(async({updatedRemoteChecksumsPromise:a})=>{let m=await a;return fe(e,t.session,m,t.localThemeFileSystem,{nodelete:t.options.noDelete,deferPartialWork:!0,backgroundWorkCatch:r})});return{workPromise:n.then(a=>a.workPromise).catch(r),renderProgress:async()=>{if(t.options.themeEditorSync){let{workPromise:m}=await i;await te([{title:"Performing file synchronization. This may take a while...",task:async()=>{await m}}])}let{renderThemeSyncProgress:a}=await n;await a()}}}function qe(e,t,o,r){return t.options.themeEditorSync?ge(e,t.session,o,t.localThemeFileSystem,{noDelete:t.options.noDelete,ignore:t.options.ignore,only:t.options.only,reconciliationStrategy:t.options.reconciliationStrategy},r):Promise.resolve({updatedRemoteChecksumsPromise:Promise.resolve(o),workPromise:Promise.resolve()})}function Ge(e,t,o){let r=z(),s=[`http://${t.options.host}:${t.options.port}`,`https://${t.session.storeFqdn}`,"https://online-store-web.shopifyapps.com"];r.use(ne(t.options.host,t.options.port)),r.use(j(async()=>(await o,K(n=>{n.node.req.headers.origin&&J(n,{origin:a=>s.includes(a),credentials:!0,methods:["GET","POST","HEAD","OPTIONS"],preflight:{statusCode:204}})})))),t.options.liveReload!=="off"&&r.use(le(e,t)),r.use(se(e,t)),r.use(re(e,t)),r.use(oe(e,t));let i=Ie(N(r));return{dispatch:r.handler.bind(r),start:async()=>new Promise(n=>i.listen({port:t.options.port,host:t.options.host},()=>n({close:async()=>{await Promise.all([new Promise(l=>{i.closeAllConnections(),i.close(l)})])}})))}}import Ue from"readline";var Je="127.0.0.1",Ke=9292,Pe=!1;async function Zt(e){if(!await de(e.directory)&&!await ee(e.force))return;e.password?.startsWith("shpat_")&&T({headline:"Admin API token missing features:",body:["Directly using an Admin API token will result in some missing features.","We recommend generating a password from the Theme Access app.","Alternatively, you can authenticate normally by not passing the --password flag.",`
|
|
6
|
+
`,{list:{title:"Known limitations:",items:["Hot module reloading","Password protected storefronts"]}}],link:{label:"Theme Access app",url:"https://shopify.dev/docs/storefronts/themes/tools/theme-access"}}),e.listing&&await ce(e.directory,e.listing);let[t,o]=await Promise.all([Z(e.adminSession),Q(e.adminSession)]),r=o?await X(e.storePassword,e.adminSession.storeFqdn,t):void 0,s=ie(),i=me(e.directory,{filters:e,listing:e.listing,noDelete:e.noDelete,notify:e.notify}),n=e.host??Je,l;if(e.port){if(!await B(e.port))throw new y(`Port ${e.port} is not available. Try a different port or remove the --port flag to use an available port.`);l=e.port}else l=await Y(Ke);let a={local:`http://${n}:${l}`,giftCard:`http://${n}:${l}/gift_cards/[store_id]/preview`,themeEditor:`https://${e.store}/admin/themes/${e.theme.id}/editor?hr=${l}`,preview:`https://${e.store}/?preview_theme_id=${e.theme.id}`},d={session:await x(e.theme.id.toString(),e.adminSession,e.password,r,t),localThemeFileSystem:i,localThemeExtensionFileSystem:s,directory:e.directory,type:"theme",lastRequestedPath:"",options:{themeEditorSync:e["theme-editor-sync"],reconciliationStrategy:e.reconciliationStrategy,host:n,port:l,open:e.open,liveReload:e["live-reload"],standardEventsDevBundle:!0,standardEventsInspector:e["standard-events-inspector"],noDelete:e.noDelete,ignore:e.ignore,only:e.only,errorOverlay:e["error-overlay"]}},{serverStart:c,renderDevSetupProgress:h,backgroundJobPromise:ve,resolveBackgroundJob:Te}=ke(e.theme,d);Ue.emitKeypressEvents(process.stdin);let Re=ze(a,d,Te);process.stdin.on("keypress",Re),await Promise.all([ve,h().then(c).then(()=>{process.stdin.isTTY&&process.stdin.setRawMode(!0),Ye(a),e.open&&be(a.local,"development server")})]),await je(e.commandConfig,e.adminSession),process.exit(0)}async function je(e,t){if(!Pe){Pe=!0;try{await _(()=>({store_fqdn_hash:F(t.storeFqdn)})),await H(()=>({store_fqdn:t.storeFqdn})),await $({config:e,exitMode:"ok"})}catch{}}}function ze(e,t,o){let r=W(be,100,{leading:!0,trailing:!1});return(s,i)=>{if(i.ctrl&&i.name==="c"){o();return}switch(i.name){case void 0:break;case"t":r(e.local,"localhost");break;case"p":r(e.preview,"theme preview");break;case"e":r(t.lastRequestedPath==="/"?e.themeEditor:`${e.themeEditor}&previewPath=${encodeURIComponent(t.lastRequestedPath)}`,"theme editor");break;case"g":r(e.giftCard,"gift card preview");break;default:break}}}function be(e,t){U(e).catch(Ne(t))}function Ne(e){return t=>{T({headline:`Failed to open ${e}.`,body:t.stack??t.message})}}function Ye(e){M({body:[{list:{title:p.bold("Preview your theme ")+p.cyan("(t)"),items:[{link:{url:e.local}}]}}],nextSteps:[[{link:{label:`Share your theme preview ${p.cyan("(p)")}`,url:e.preview}},{subdued:e.preview}],[{link:{label:`Customize your theme at the theme editor ${p.cyan("(e)")}`,url:e.themeEditor}}],[{link:{label:`Preview your gift cards ${p.cyan("(g)")}`,url:e.giftCard}}]]})}export{Zt as a,be as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as d}from"./chunk-
|
|
1
|
+
import{c as d}from"./chunk-K63FW7Q7.js";import{za as i}from"./chunk-PK73ZSND.js";import{A as m,B as u,E as s,H as a}from"./chunk-WSCSFFLH.js";import{g as c}from"./chunk-VKWPEFWQ.js";c();function f(e){return[`'${e.name}'`,{subdued:`(#${e.id})`}]}function y(e){return{list:{items:e.map(f)}}}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 u({headline:o?`Environment: ${o}`:"",body:r}),!1;if(m({body:r}),!process.stdout.isTTY)return!0;let t=await s({message:"Do you want to proceed?"});return i(`theme-service:confirm-directory:${t}`),t}async function v(e,r,o){if(e.role!==d||!process.stdout.isTTY||o)return!0;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 s({message:n,confirmationMessage:"Yes, proceed with live theme",cancellationMessage:"No, cancel"});return i(`theme-service:confirm-live-theme:${t}`),t}async function E(e,r,o=!1){e.length>0&&await a(e,{renderOptions:{stdout:r??process.stderr},noProgressBar:o})}export{f as a,y as b,T as c,v as d,E as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as i,h as t}from"./chunk-BI7LE6CZ.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as o}from"./chunk-JNVCCE6M.js";import{b as a}from"./chunk-3WV7DQMM.js";import{g as s}from"./chunk-VKWPEFWQ.js";s();var t=class extends a{static description="View the UI kit components that process async tasks";static hidden=!0;async run(){await o()}};export{t as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as y}from"./chunk-IX4IGE5H.js";import{b as g}from"./chunk-3WV7DQMM.js";import{B as u,E as l,F as f,G as m,H as d,N as p}from"./chunk-PK73ZSND.js";import{j as n}from"./chunk-AFT6ABDE.js";import{D as S,J as h}from"./chunk-WSCSFFLH.js";import{a as v}from"./chunk-CTNBSUVU.js";import{zb as w}from"./chunk-HQUWYKSJ.js";import{e as N,g as i}from"./chunk-VKWPEFWQ.js";i();i();var r="NEW_LOGIN";function C(s,t){let e=[],o=s[t];if(o)for(let[c,L]of Object.entries(o))e.push({label:L.identity.alias??c,value:c});return e}async function b(){let s=await p({},{forceNewSession:!0}),t=await f(s.userId);if(!t){let e=await h({message:"Enter an alias for this account (e.g. your email or a nickname)"});return await m(s.userId,e),e}return t}async function x(){let s=await l(),t=await u(),e=[];return s&&e.push(...C(s,t)),e.length>0&&e.push({label:"Log in with a different account",value:r}),e}async function A(s){if(s){let o=await d(s);if(o)return n(o),s}let t=await x(),e=r;return t.length>0&&(e=await S({message:"Which account would you like to use?",choices:t})),e===r?b():(n(e),t.find(o=>o.value===e)?.label??e)}var I=N(v(),1);var a=class s extends g{static description="Logs you in to your Shopify account.";static flags={alias:y(I.Flags.string({description:"Alias of an existing session you want to use.",env:"SHOPIFY_FLAG_AUTH_ALIAS"}))};async run(){let{flags:t}=await this.parse(s),e=await A(t.alias);w(`Current account: ${e}.`)}};export{a};
|