@shopify/cli-hydrogen 4.0.0-alpha.1 → 4.0.0-alpha.2
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/templates/demo-store/.cache/content-v2/sha512/00/cf/2691ba3b4253dc803282219fc108c6d7b3fb03e318729ee568216e8a13af36614948c5a215992ba7b5222cc1055cf81b6a752c3597e261a8c8095f55eb9d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/02/76/13bbea15bb42b81a204b0dc5f14726e0bfa8d012a7b284f887cc2e3c92195d6b07a78f199f990b311ca5fafa9079563503cdd81808cd9b7e496d86c72732 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/08/3c/f2108d415b1474e3e7fee6684b9f1c4b99249c5d4178686b1632d19209f6782c86d7b04abe3873d955bb9e353cca92d8ae7324f374eb691bfd8729ce8407 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/0c/da/c6f091fb614d96e6d0a533733b487011ab615ad5983823c7085320ec2ea2ee8e020ae2646f4772d350f253abb4f8a2489c843a8b873a90bfed3c27c5fd0b +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/11/0c/195071c290a61e22dd825b300c9f93e5315b2effefc3e5545440ac704d629e177bc877333ce73232ac72703bcc69fb425632d84b3caefe7f5c0fd12537ee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/17/08/03dabbacd40d4a2b132018a520d1dbcf29ffb2c659bbe01cb91f700202d5016ab4104831b95a05b98535549be4a6520ddcd6504ba361692549a5cd0458ee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/25/f3/97b4dddda618ca4621d4a8da779269ba2f2eae1fc35cb0cc394e5fb909bb4825e10ca37a4115d69fdd5551be5d64bdb75e0bf0199794f473c25f4ae7aa1a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/27/a0/d277ff364ced6a2d01639f1e2b8675ef95eff3a4aa4d2fda0990392526e0f18def66116a8623096d1bdafabe1dc8efc56ef0956054b3370dfa9ad6596a29 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/28/53/96d2a5c3d4b08a7191e545d4d961f7690f814a331dc8efcc11e45854fbccd04f825ec8d3a1070b05aca51dd63e06c778316395446055cc3cfc90c8b30615 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/28/7c/c71b0c6367bdf7307a8061fe1c4568c9f1e9603d835b6fc917fe8042535a867c37154e35376a01ad6bdb3c2d6f29b88b41902fd6f20b1227e02081682d01 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/29/2e/db501d168869cc6b7d5e51bfbf399e920773ed905b9e2b782ebfb29c5260f05b67d0b7d4599e8c5666253789d545ecfdfdb9e020da8ac262d99d0e69e5b0 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2b/71/b06448186eeafe74e7e29de9fb188013acc513af9d0d4eeff66650385fce9f77f5f2ccea51806c8449cf25c7825ee4c3ac428822d4e3b8b3f1b010adb7aa +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2d/e9/141465ed1c16a93073fe5602f300dc3d8a5246fe045abffa4ac277550e4b365c30629224f328540a36d470ef4d69d8f80d6aeadfbd4a07872a66c40143df +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/2d/ec/a65ff18546d88746d8d74b60cd34137005996ded9afd4877b74cba36e9a4dd1829992dbb37ec13b296f39cfeef462c6f12a4c6913577504fec6d7d5611aa +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/30/9f/f03a3dcdd3a5f1116ab710595deb552c1564bd8295bff71f62b3d95be656a6ef53e8ceaee21cbcb880cc06270c3db2327ab1ddef2fc09d6cba4436f470e7 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/35/3c/f46f8adbcf210210bac8ab00267ab16c16393ab4a95920f69c4452b298a83c9785d3d2c2bb4a63937cb4eed028197a18f0d2929024ebae18b0751f07ebf5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/36/3e/ece5cc6633a23301aa4f05fc1efddd8876aec2d8bf7afe504526e2866ed67263e99bffbb1e0d99a65622a7246f9d662217032aca47f70b6f0f13b75e7df1 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/37/19/de54f68ea7b2a79f86d12ec1107e99d04217817fb6de9a5ba2dc5cdd16d16e1dda4cc9f7cf2b6ece5a6330f47ca20fa27a08aeffc17eb23fd11399e601fd +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/46/04/af285aee74d96b28b24f75d7911de65e6c7bb26475ab5219fe5308028fda55060cf45650dfa09c0731ec73ece453c1e24e0c38715e8d4c5c80fd6365a1f4 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/46/1c/c69c5b9150a9f76dff13c0d6a768540636e6569f4f3f56795d1b4c494045d5908674f292815212ac52e6d8a597b4ad35783506113f195a09f1057f09f00c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/4b/48/ca635670e7d1b1a5550d32f51389a5754234da55c6d7c900f348c8bf1ccc84bdcefc620e08979b7aa1d04a49a1138b46346f126d20c0126eb0c3261deb5b +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/50/75/609ace481c5e148698b91afca04bd995ab360802c5f8961228eceb891236836cab54c7fddd97a62e4ca19a03e5863fd0999c68849cf37b30a4fe32e1397f +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/50/cd/4f809a5b4a52449879ecf0b061e00f36f5e2df284fddb5c9c75e13ab1db6e85931fb82d211f1699eed3fe308ffd5d2e69dc2d261fdea58f8224acc278143 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/51/ab/e165384df6374c7b2d0ebebc8642ecb0e0c14f7c5b57970ec5d2e17f7d1643e0b01eda69e5ffbefde85ecba6d613bcc5175c5564e36bfb73d966c8ea4153 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/54/86/917224aeb3e04e19a51534244f5ed28f3529d85276452f52af9af3657798246c97a0948bcf62c707394ab80f0062a87e7079bd71c05e0d16f927091617d2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6a/9d/a99dc2fae7981ecb35b0dadc0acddd23e65ae6590f70743d824c36697fd10610ffafa9aa63c09a7861a701c1d52400050d9b562dc4f6bdba8e0de362b486 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6b/6d/71211d4cebfd1e1c86788ede5784a53cf366a85f4e2646a300c820958a5219bfa5492b169d1cca1b431e946b41d15a526ee7f77db65a6e730dead281f777 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/6e/25/d2212e576c7d9684f5237bd1ee363dfe5cf0ad5f9acbeeded47a531c7d3444d2144684e310c8d4d4200ee5b142671bc2be887dc8d3244377d645813e048c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/73/40/c822831f11f08a9ceea944d0145b072ba6164a3e2e75f98fda5437cda6dfddf9ca9450445c1f3236228d6259ac95e4cde9bb6e5996490ed00b7b13b06121 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/73/4c/bf7dfa31c1d17f57e5fdabc0bd79ce133d3ea7562f494615c8bd4369b58c29963090577cd70c6ab2bb8af6ae92915ce20bb0bf1925cccb961aeeed9c8703 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/7b/15/d1749be8fa73f2f123e5e9a0807f343cdfa14fd263f9073fe7cd73352b7318b976a43687096a06acbbed2a2f0f86119d45cdd1e9ad6d09208c06b6232db2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/88/76/d18fdfbb05293909609d42368642fc6da4bd138c5864ec2f721212b52e595b84ae46f48021ed3e6240edf443f78bdea557d56d700e3da848459ea3077a80 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8a/d1/ca384452cdc8a2fb92fa1c70a4db303dd5f9887475e0e4ddf4bc711b5ebceb684ba5fd8bf596c3d491ab8598bd52ffe20f98564f8110da0730f46f39e790 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8b/ae/5793cc875f8fa5fe744c72c07b09ead40386e23a89cb2b77957c61413eb4afc993f70eee071a00aeff74bfe63cfcd91385e45094338c0fc05aedaca91917 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8c/51/88e1fc4d8365cb6ad1a755e8bca81fbb64abb1c8ef08a8314471952910e0e29eadfa283d482233d500893a57b57470171ab98ebacb4b93780b37e7a87c93 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/8f/81/8e238bb1d4654dcc554d661194c9415fe36dc6f20624dd26e47c0043f06ee69d1abd49947b11954508bfd01823fdf97a3ca9196521f05cb471473095c5c5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/91/39/2d6842760bb34dde16e9aad46162f546e8cab25d2440a69cb01bf4b2ed8fb3122490666d3eb9b70225259f7ed47e182bc6b83fe455647dde30d61cefa07d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/91/ef/9fc44c6b88d8614b31058550efddfc49a43aeef50cf16d7ade5087e6b13c3f5ca743b1a10c72993a806db4ddf093c2216a853e0dbf6c002c61507e60bfee +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/93/6b/e60098157f6bff8ba570cab2ffd97a14983109006f7fa87e4432728366f96dfb19e957d28754daa45f1b6cb2421d26ab59bbd5ce5a448d6102e8e662403d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/94/4a/a539de5a6348e4ecc4e05ea18301c0077a30ed452550660f8b13440a40f7e3858a03ef0aad25b559c49dbbe51455cc5d8e2a7b6c2b0c57e31875b5f8e6be +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/94/6b/572828348790e114213fd3502aba2781cdb87da48f9a16bc6c407d5e12ec888c3fd144f699f50c26934255feee621b2e81aa9156d1afd4e838698fd7be94 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9c/93/917e1b17263467c1baa4f0ef3e5f0a24cf28fc88f290532df19a48d5364d0ca64ef4b5296581cec1e94c5b9a896174e7dd67f42c44ab0482ecbbedf46b3a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9e/2e/945fdc4a4fb8c2186645c71b48ef341e6f0da2a6b3ddd38761210fcf713c2249160f87387ac66547fa30732269fbf9ad6b24b6c6a50ae914284b96be8571 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/9f/e5/f8840af1702b9e2e9005708f2513779d889a88d8d7379d5d93cf28390fd6c0300ba5cac0fe429d67a22ddeb884f85917c73f4ae286328a5cf437f568b73f +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/a0/92/dc5bc315864cebde3ccd84e2a2e4228d8f467aa14efdcc3ef13b8815abbf495afeccb531cc4e049fe4d81d0b3e5afc0139b4450fb2cfca2b2c82cdd450ac +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/aa/85/daa1447b7715eafed15469bb5fdce67152d71416d2c40db224480ca151019a7ee86ea5b81ddeb85f7bdae453dab2021886ba63e85b0303ab20bc7b712ea4 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ad/44/f00b1b89c5d7778be4cd40cff421c77e97a937e945491777256fafa6ac80cc334b7118b4248fd13c3cb7fb37d86e1b54afaf688b295542694f276d359082 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/b0/02/9ef55507e114e4391048df8e43101c006d5b3852e33450030d3ba974d438dd3ac489b084b15445ff5e1747e642eda2d969a13c8ba5a778669f9ab019789a +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ba/08/9238d2f1bec0536eed757ab6583e384da966814a1c83896409f032bb673a056d62bb6f3b8a5bef36d61daf0e15617154b106b3bbc721354690bc930bb649 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/bc/33/6e26ece5ac53d9eac9ac8a192ef39faf2a587a5808253c659fb1d371c477fc8074d428c8d1929b0d85dd1fec66fc79ea6b9fcb01507e2efec75fb7fbc2cc +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/be/33/7a64881c125a7ff913866bb1818d3fd54d10d837c5a66b6e8f39b9be9e12d352d060f365a62b070414995afb4e90ce70e3d0d31423e6f6fa4e02141e9e9d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/c5/5a/e35359eb2d580bc01b459208e8911fb606223ae88c095db8174d0400824626bc8cf02c869c11d3b751774fafc52555243ed0ea6d6e3c072ef990a4f41461 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/cd/6c/8525b5108666cbe3305a4ad413c0ea863878337b0621eaff9443c170e2f4afe6a0b0ece9ea5ee6777f37b483dede689e86734350430416bde47553bdaf7c +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d4/79/8b69e57b3c37d1b04f2734fef377858aaa753467733fc2545b45556e0ae2d066c0180fa34c3a93b625db353ee070b82ad24f3b8dd2a2513aac4fcdc55154 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d5/f6/e56af7190da8a8ba31ae458ad2b1cbfc0cd10a449248348eb92dd8a7de2819c284525513e3082fcd3b1bfdddbe2135bda8bf827cef58bc95abb8a3c83278 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/d7/9e/450b29d4cb47831fc3235642c3f4c461d3fb8f8c0ee567aeed2d51d3c0eb6d2e0cfabcf0dbe709ff99d3ba04ead42c75b06efe396aae4939163884cbfec5 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/da/84/b6d27e02f9b109d7cff3095b08e2e2ed1802c8b6829c98f6e297d1c404059f8bacfdc278afd07e2f81cbc487318396a3775037b678ab6aff9a5231c94c0d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/dc/0a/58f1301ab9de7b2c6b01d5d5b3676416048c9a42e4140ce4149d242da4d1d7b009bd9f911cf5860628ede86c7d30f4e827c502b8b4f365de6d7e7378ca94 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/dd/b0/b95c68e126e3b0ceeb4c28f6d9cfd165597001d03c7287a9d2fe632cd166c442a578b55ddbb757b72202dcdd49586de80d54cb98ec439d0bd99c0023d6f6 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/e2/6e/b769bab909900c19709f3779dde41268bd5bad463f233c1a4934aefc4af01ba532b0ec73776e874427e110710069e5c2c0aeb4debeef9827a21cc8d3364d +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/e8/ae/9b467e1d23913d4584d9417875b3cdc25f6dfed8b228f3a0c818129010b778aae1af1eb200b015ab428e79afe0ef1061262392fbdb96ed7da95efbe7f758 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ec/08/68aa37fb6cee7b8ad4e1c4ee9d352d626db39c1f6b1ed71530e5943d1575127e82f636bdab2fa00b90581c3829db9bf4d3ef4130024ef224c8a48b4d7df2 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/ed/74/dda12abc4e0e3d645725a3b240b3874262c153ae37fe7a2991d5b6aa7564b5adf8080d262c0be4f841747ca359db51d58b004b7eed8330f27a739b9e3a46 +1 -0
- package/dist/templates/demo-store/.cache/content-v2/sha512/fd/f3/986b7ee5ea5ad1d89af5c08de69d43c025b54381092e0a19fd7e7a1e0352552aa85c056315ce5e11a46ec75a252b1a44e2083abb73cd6df8407dfdb0ac48 +1 -0
- package/dist/templates/demo-store/.cache/index-v5/06/7e/7376a38676aa7f0543ab03fc451602dab8ad66e6ddebc44d94ee6f5c1df2 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/06/84/719070270981ac7d003eefa98569d499d2d93dd2f1828da9825b87d03160 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/08/b4/0d9cf6db265587df0990c07ef4bc1e61fa9fe85d6cfe4d6cbbf839c2313c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/0a/75/d3baf53012b62018cb60557f47601d810ec57c564bdc0b24c4990c73a833 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/0c/43/721b2c2b054af973286c2ea3c51c612d347365682b5aae5b9e98554f91e1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/12/83/1a44e36774d9014fe186e18a3691e1ec3f37f2c30c22d38787a3cd157d7f +2 -0
- package/dist/templates/demo-store/.cache/index-v5/13/bd/14a326bd4cb6fb280eb85ecca60d6519738bf7e80df5285ec626d129baf3 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/19/b1/b0877b4141a2ee6f7c173e2407c0b26958c0919238934a89a03049397aec +2 -0
- package/dist/templates/demo-store/.cache/index-v5/1b/6a/418ff1309326b48db3963d5ad40eacb0728d138b7f24896390e484b34c50 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/24/d9/e0e8006f3c8deb17314475a674698161e207f116d9056bf0e1aabfa6c430 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/28/f4/466108ec4c6619222c94f178cc3962ed49f5f9a1e3783ad55335de0cdad3 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/2e/ae/45167cd92f49c852d660e05a29b7484c886b3c0579fb9c148162b1a88fb6 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/35/95/be51ab071b6bd2259e4acb91185c5e0affeee223c15a822ba226607d5616 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/36/74/12368a4a642be74c83dfdb5eaca244dc624ca78c3528edc49262807f9f96 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/37/56/4cbfef349acf26ffb05aa7f17742913d7bd956c920a5bb1941ca0dda3a22 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/3b/e5/5841b3445af43a34c7b560d6cf329ade1bfb64584b85fbb10ac4a7313ef4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/40/67/0807c50d176836338cf5fe4864622d377a143dc97f0a86a702bf11dd7d72 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/45/4b/1a3af253b3e2ef123d3872ad54d71865cc788ff5373a00414d2ae0243421 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/4f/8a/4672c73b9b76b90b7b378fbf9bc1a09426d0b5dbe97404e1f1f5a354013c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/51/da/70f3331e7c62bab563cf9f86297b1bda6f6215420807d7710aaee0b8ca5d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/55/0e/4666f091383137a5168d8052b246b3a7a28e05215dc7d8ff7f6b921f0142 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/58/93/287077465c80a2bfba306f218e51893019895137562df4a116326a0b222a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/61/d4/edd3f3713e7e144ff99d6920736fddfa8676eb5ab824f3f97cf65fa250ea +2 -0
- package/dist/templates/demo-store/.cache/index-v5/68/63/f781b7764101dfe1c192f68e1083513974e2396c9db609adf220a983bd88 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/68/f1/4a98caa6e2ab43e78781b99c7833cab4e722cd716bf9718e001a43efb27b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7d/de/0d76288297eecd2ad4b07dd881631b481b19a83f7c9d36cfa4f967332943 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7e/12/528dc5a6aebfe1fb1d5b4b7d56097f25291dd9454e0ab8faa0a26f296815 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/7e/bf/17c5f07b52df7946e14e733afa8f3880a40c1032bd3fb307cae4319e0fa8 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/81/59/14da935263d86e18f99d2391d6731d29cd2d5c0d8c81c65293816e6ad32a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/85/85/0475166b36ce12e75c5a6352b12ea2fa872f696b8161dd08fdfab09a7273 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/88/bd/84904435de02c12b5b01c5aadd782e65a48d44006d98b864e01961a109dc +2 -0
- package/dist/templates/demo-store/.cache/index-v5/88/f6/729e4bad26ebd2b792dee6d1f96f87546ff9c4fa95518f603627fdd1126f +2 -0
- package/dist/templates/demo-store/.cache/index-v5/8a/7c/f5287da63fd3884889fef7019b2679f9a53ce5a268097295682ddad5131b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/95/40/bed10ab9e6081915bc6dc1ffb23a589f407c22ab7d254453f0b3ce53e5f5 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/96/b8/090abc56d6e9489d08af9564fb75d34477730aa1ece14ad85ba516549f2b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/9b/e4/8aa4e95d52644490afdb862c05cb2dccb9f5c1aa45157f3af5c37aad080a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a1/e7/85ee850c85c329791d2123dd8231464fa27317290756b459012830d0f57e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a2/27/f2e299e50a8a3b2b54a89bb3be85f3118081b3c6cfed704bb7d2802e2a49 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/a2/88/971871174c14875c70ca7bc9cea8d6b01465c1716d99440b059fa493947c +2 -0
- package/dist/templates/demo-store/.cache/index-v5/aa/57/05b67f08f71909d263fe9c357786097f5683394dbd65b0e4da2f9aa25288 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/ac/25/d778b282ab78dbafcc1b4fb19695aed368081c76fa680140b89af08b07b1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/ad/f9/09a060689bb686417e37a22fcf4866b6188f58eff7128f7979a4a68a6b2d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/af/79/e80586a8b4bd0086246d97823d95bd64c77ad44b1fae591fdcd3883f776e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/b8/22/805af62bf21b63052b47f2f85322cb615ee786c214c0abc63b593a9f80ac +2 -0
- package/dist/templates/demo-store/.cache/index-v5/b8/67/17d551f86553b2a3a30c80b1d9797cbfcaa3d00f5239f39c1727c4d4fe8e +2 -0
- package/dist/templates/demo-store/.cache/index-v5/bc/52/538f70c9e2857f944f17c9121f6018d5c26ba916801b78d75484b130cd78 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c1/77/182e74b8e456fd321a98e8b23f5616eaf2968ccc0dd0eeff016624a89534 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c2/b6/58c9b05294374187ca9a342d46ed1b1f9e0afaf619acf88014f7f1a5dd8b +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c6/72/887059f60c91b6fa41fbdab6bc1e1b6f4e3596cadd7a22457466fc1c2f67 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/c8/52/09bfbca72b45aec745fc339c27986edefa85e40bd69113275a6ecd6495e9 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/cb/f3/c8983d3f6b148ff6b70a42e0c3ccc4ca2f368df0aca086b8f0279d49f5be +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d2/7b/9476cfbc06c75a311a1951bcdea3b843d3f8763c916468901c3cd85ae7a4 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d7/2f/11fb6fd9a383d1edb40e2a774ca2de45a4f4b2c02e3f10d772427ef813d1 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/d7/a8/e21243c97a68bff4874453358b21815d4dc4c804b63fce7cba9cc567c3d6 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/db/34/e258d66ddeae0e8df2f3a92f0fc0a0472adc9b48c8d2f38087a828da4bc0 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/de/8a/31224d2c63a17ccc13c25e35f4e5882c9a5f5553a3ffeb916c84aa73a15d +2 -0
- package/dist/templates/demo-store/.cache/index-v5/e0/9c/a50143959e2a05f23db12f6e7f9982a0889c4105004c9f58115f9fdb19e0 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f3/45/ed5a71628f7babbcd96f9d316ba1a9a7cdea5be1ef54d931ed5d6fcbfc21 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f4/20/fefac33b4499a27824ee7ef5a84779df38eca55b00ec3046fcb028efb593 +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f6/1d/25c4d10714262d4559d2c43d3e64ebfc038d37b0edbbf02246bdd6dcdacb +2 -0
- package/dist/templates/demo-store/.cache/index-v5/f8/f2/017d33a8105299b5a1d72ea80b7cce0d4bafbcd8409437a212735325631a +2 -0
- package/dist/templates/demo-store/.cache/index-v5/fd/f2/f7f55dae9bf6b65ea883eb44dc2fd24a2d2a97c5b68cb559255c6574d239 +2 -0
- package/dist/templates/demo-store/.hydrogen/routes/[route-manifest.json].tsx +54 -0
- package/dist/templates/demo-store/.hydrogen/routes/admin.tsx +15 -0
- package/dist/templates/demo-store/_env +6 -0
- package/dist/templates/demo-store/_gitignore +14 -0
- package/dist/templates/demo-store/app/styles/app.css +4203 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_assets/app-QCTC5PWY.css +4203 -0
- package/dist/templates/demo-store/dist/client/build/_assets/custom-font-COCMVHUB.css +13 -0
- package/dist/templates/demo-store/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js +133 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js +27 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js +83 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js +20 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js +32 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js +105 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js +68 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js +24 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js +25 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js +54 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js +66 -0
- package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js +2 -0
- package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/manifest-78BD90E6.js +1 -0
- package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js +32 -0
- package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js.map +7 -0
- package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js +2 -0
- package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js.map +7 -0
- package/dist/templates/demo-store/dist/client/favicon.svg +28 -0
- package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-Text.woff2 +0 -0
- package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-TextItalic.woff2 +0 -0
- package/dist/templates/demo-store/dist/worker/_assets/app-QCTC5PWY.css +4203 -0
- package/dist/templates/demo-store/dist/worker/_assets/custom-font-COCMVHUB.css +13 -0
- package/dist/templates/demo-store/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/demo-store/dist/worker/index.js +1572 -0
- package/dist/templates/demo-store/dist/worker/index.js.map +7 -0
- package/dist/templates/demo-store/package.json +1 -1
- package/dist/templates/demo-store/remix.init/index.mjs +25 -0
- package/dist/templates/hello-world/.cache/content-v2/sha512/34/81/da34a44efefe809149ec1298fc4031563cb2702c00c70fbd1d0392afa44e5a6bc535cbe5c34a6f379361a5991327c2023fb915b0f94940d21c42cc38a368 +1 -0
- package/dist/templates/hello-world/.cache/content-v2/sha512/fa/dd/9bc10a1cb1f145eabd96bdba509178e20484197fefd8469ace9f53bf277e875751db3c4dddf229807c48cbe8db19494fe2a5aab7d2a4b7ae8bebbd67509c +1 -0
- package/dist/templates/hello-world/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
- package/dist/templates/hello-world/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
- package/dist/templates/hello-world/_env +6 -0
- package/dist/templates/hello-world/_gitignore +8 -0
- package/dist/templates/hello-world/dist/client/build/_assets/app-2MJQXVFI.css +38 -0
- package/dist/templates/hello-world/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js +66 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js +20 -0
- package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js +27 -0
- package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/manifest-7F090344.js +1 -0
- package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js +2 -0
- package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js.map +7 -0
- package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js +2 -0
- package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js.map +7 -0
- package/dist/templates/hello-world/dist/client/favicon.svg +28 -0
- package/dist/templates/hello-world/dist/worker/_assets/app-2MJQXVFI.css +38 -0
- package/dist/templates/hello-world/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
- package/dist/templates/hello-world/dist/worker/index.js +257 -0
- package/dist/templates/hello-world/dist/worker/index.js.map +7 -0
- package/dist/templates/hello-world/package.json +1 -1
- package/dist/templates/hello-world/remix.init/index.mjs +25 -0
- package/dist/templates/hello-world/remix.init/package.json +7 -0
- package/package.json +1 -1
- package/tmp-create-app.mjs +7 -1
- package/dist/templates/demo-store/.turbo/turbo-build.log +0 -13
- package/dist/templates/demo-store/package-lock.json +0 -25515
- package/dist/templates/demo-store/remix.init/index.ts +0 -15
- package/dist/templates/hello-world/.turbo/turbo-build.log +0 -9
- package/dist/templates/hello-world/package-lock.json +0 -27641
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'IBMPlexSerif';
|
|
3
|
+
font-display: swap;
|
|
4
|
+
font-weight: 400;
|
|
5
|
+
src: url('../../fonts/IBMPlexSerif-Text.woff2') format('woff2');
|
|
6
|
+
}
|
|
7
|
+
@font-face {
|
|
8
|
+
font-family: 'IBMPlexSerif';
|
|
9
|
+
font-display: swap;
|
|
10
|
+
font-weight: 400;
|
|
11
|
+
font-style: italic;
|
|
12
|
+
src: url('../../fonts/IBMPlexSerif-TextItalic.woff2') format('woff2');
|
|
13
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none">
|
|
2
|
+
<style>
|
|
3
|
+
.stroke {
|
|
4
|
+
stroke: #000;
|
|
5
|
+
}
|
|
6
|
+
.fill {
|
|
7
|
+
fill: #000;
|
|
8
|
+
}
|
|
9
|
+
@media (prefers-color-scheme: dark) {
|
|
10
|
+
.stroke {
|
|
11
|
+
stroke: #fff;
|
|
12
|
+
}
|
|
13
|
+
.fill {
|
|
14
|
+
fill: #fff;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
</style>
|
|
18
|
+
<path
|
|
19
|
+
class="stroke"
|
|
20
|
+
fill-rule="evenodd"
|
|
21
|
+
d="M16.1 16.04 1 8.02 6.16 5.3l5.82 3.09 4.88-2.57-5.82-3.1L16.21 0l15.1 8.02-5.17 2.72-5.5-2.91-4.88 2.57 5.5 2.92-5.16 2.72Z"
|
|
22
|
+
/>
|
|
23
|
+
<path
|
|
24
|
+
class="fill"
|
|
25
|
+
fill-rule="evenodd"
|
|
26
|
+
d="M16.1 32 1 23.98l5.16-2.72 5.82 3.08 4.88-2.57-5.82-3.08 5.17-2.73 15.1 8.02-5.17 2.72-5.5-2.92-4.88 2.58 5.5 2.92L16.1 32Z"
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as i}from"/build/_shared/chunk-4ROFW2VH.js";import{H as n}from"/build/_shared/chunk-HX34UWFZ.js";import{q as t}from"/build/_shared/chunk-ZNLABNO4.js";import{b as o}from"/build/_shared/chunk-KSKV5IK6.js";import{b as r}from"/build/_shared/chunk-X4LCECW4.js";var a=r(o());var u=({data:e})=>({title:e?.page?.seo?.title??"Page",description:e?.page?.seo?.description}),y={hydrogen:{resourceType:i.PAGE}};function g(){let{page:e}=t();return(0,a.jsx)(a.Fragment,{children:(0,a.jsx)(n,{heading:e.title,children:(0,a.jsx)("div",{dangerouslySetInnerHTML:{__html:e.body},className:"prose dark:prose-invert"})})})}export{u as a,y as b,g as c};
|
|
2
|
+
//# sourceMappingURL=/build/_shared/chunk-3CERGUQT.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../app/routes/pages/$pageHandle.tsx"],
|
|
4
|
+
"sourcesContent": ["import {\n json,\n type MetaFunction,\n type SerializeFrom,\n type LoaderArgs,\n} from '@shopify/remix-oxygen';\nimport {notFoundMaybeRedirect, RESOURCE_TYPES} from '@shopify/hydrogen';\nimport type {Page as PageType} from '@shopify/hydrogen-react/storefront-api-types';\nimport {useLoaderData} from '@remix-run/react';\nimport invariant from 'tiny-invariant';\nimport {PageHeader} from '~/components';\n\nexport async function loader({request, params, context}: LoaderArgs) {\n invariant(params.pageHandle, 'Missing page handle');\n\n const {page} = await context.storefront.query<{page: PageType}>(PAGE_QUERY, {\n variables: {\n handle: params.pageHandle,\n language: context.storefront.i18n?.language,\n },\n });\n\n if (!page) {\n throw await notFoundMaybeRedirect(request, context);\n }\n\n return json(\n {page},\n {\n headers: {\n // TODO cacheLong()\n },\n },\n );\n}\n\nexport const meta: MetaFunction = ({\n data,\n}: {\n data: SerializeFrom<typeof loader> | undefined;\n}) => {\n return {\n title: data?.page?.seo?.title ?? 'Page',\n description: data?.page?.seo?.description,\n };\n};\n\nexport const handle = {\n hydrogen: {\n resourceType: RESOURCE_TYPES.PAGE,\n },\n};\n\nexport default function Page() {\n const {page} = useLoaderData<typeof loader>();\n\n return (\n <>\n <PageHeader heading={page.title}>\n <div\n dangerouslySetInnerHTML={{__html: page.body}}\n className=\"prose dark:prose-invert\"\n />\n </PageHeader>\n </>\n );\n}\n\nconst PAGE_QUERY = `#graphql\n query PageDetails($language: LanguageCode, $handle: String!)\n @inContext(language: $language) {\n page(handle: $handle) {\n id\n title\n body\n seo {\n description\n title\n }\n }\n }\n`;\n"],
|
|
5
|
+
"mappings": "yQAAA,IAAAA,EAAA,OAoCO,IAAMC,EAAqB,CAAC,CACjC,KAAAC,CACF,KAGS,CACL,MAAOA,GAAM,MAAM,KAAK,OAAS,OACjC,YAAaA,GAAM,MAAM,KAAK,WAChC,GAGWC,EAAS,CACpB,SAAU,CACR,aAAcC,EAAe,IAC/B,CACF,EAEe,SAARC,GAAwB,CAC7B,GAAM,CAAC,KAAAC,CAAI,EAAIC,EAA6B,EAE5C,SACE,mBACE,mBAACC,EAAA,CAAW,QAASF,EAAK,MACxB,mBAAC,OACC,wBAAyB,CAAC,OAAQA,EAAK,IAAI,EAC3C,UAAU,0BACZ,EACF,EACF,CAEJ",
|
|
6
|
+
"names": ["import_jsx_runtime", "meta", "data", "handle", "x", "Page", "page", "useLoaderData", "PageHeader"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{G as i,H as s,K as g,Y as m,ba as u}from"/build/_shared/chunk-HX34UWFZ.js";import{b as d}from"/build/_shared/chunk-6IZ7NY57.js";import{q as r}from"/build/_shared/chunk-ZNLABNO4.js";import{b as l}from"/build/_shared/chunk-KSKV5IK6.js";import{b as n}from"/build/_shared/chunk-X4LCECW4.js";var e=n(l()),c="Journal",x={seo:{titleTemplate:"%s | Journal"}};var B=()=>({title:"All Journals"});function p(){let{articles:a}=r();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(s,{heading:c}),(0,e.jsx)(i,{children:(0,e.jsx)(u,{as:"ol",layout:"blog",children:a.map((t,o)=>(0,e.jsx)(h,{blogHandle:c.toLowerCase(),article:t,loading:g(o,2)},t.id))})})]})}function h({blogHandle:a,article:t,loading:o}){return(0,e.jsx)("li",{children:(0,e.jsxs)(m,{to:`/${a}/${t.handle}`,children:[t.image&&(0,e.jsx)("div",{className:"card-image aspect-[3/2]",children:(0,e.jsx)(d,{alt:t.image.altText||t.title,className:"object-cover w-full",data:t.image,height:400,loading:o,sizes:"(min-width: 768px) 50vw, 100vw",width:600,loaderOptions:{scale:2,crop:"center"}})}),(0,e.jsx)("h2",{className:"mt-4 font-medium",children:t.title}),(0,e.jsx)("span",{className:"block mt-1",children:t.publishedAt})]})},t.id)}export{x as a,B as b,p as c};
|
|
2
|
+
//# sourceMappingURL=/build/_shared/chunk-3RYZL4SD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../app/routes/journal/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import {json, type MetaFunction, type LoaderArgs} from '@shopify/remix-oxygen';\nimport {useLoaderData} from '@remix-run/react';\nimport {flattenConnection, Image} from '@shopify/hydrogen-react';\nimport type {Article, Blog} from '@shopify/hydrogen-react/storefront-api-types';\nimport {Grid, PageHeader, Section, Link} from '~/components';\nimport {getImageLoadingPriority, PAGINATION_SIZE} from '~/lib/const';\nimport {getLocaleFromRequest} from '~/lib/utils';\n\nconst BLOG_HANDLE = 'Journal';\n\nexport const handle = {\n seo: {\n titleTemplate: '%s | Journal',\n },\n};\n\nexport const loader = async ({request, context: {storefront}}: LoaderArgs) => {\n const {language, country} = getLocaleFromRequest(request);\n const {blog} = await storefront.query<{\n blog: Blog;\n }>(BLOGS_QUERY, {\n variables: {\n blogHandle: BLOG_HANDLE,\n pageBy: PAGINATION_SIZE,\n language: storefront.i18n?.language,\n },\n });\n\n if (!blog?.articles) {\n throw new Response('Not found', {status: 404});\n }\n\n const articles = flattenConnection(blog.articles).map((article) => {\n const {publishedAt} = article;\n return {\n ...article,\n publishedAt: new Intl.DateTimeFormat(`${language}-${country}`, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(new Date(publishedAt!)),\n };\n });\n\n return json(\n {articles},\n {\n headers: {\n // TODO cacheLong()\n },\n },\n );\n};\n\nexport const meta: MetaFunction = () => {\n return {\n title: 'All Journals',\n };\n};\n\nexport default function Journals() {\n const {articles} = useLoaderData<typeof loader>();\n\n return (\n <>\n <PageHeader heading={BLOG_HANDLE} />\n <Section>\n <Grid as=\"ol\" layout=\"blog\">\n {articles.map((article, i) => (\n <ArticleCard\n blogHandle={BLOG_HANDLE.toLowerCase()}\n article={article as Article}\n key={article.id}\n loading={getImageLoadingPriority(i, 2)}\n />\n ))}\n </Grid>\n </Section>\n </>\n );\n}\n\nfunction ArticleCard({\n blogHandle,\n article,\n loading,\n}: {\n blogHandle: string;\n article: Article;\n loading?: HTMLImageElement['loading'];\n}) {\n return (\n <li key={article.id}>\n <Link to={`/${blogHandle}/${article.handle}`}>\n {article.image && (\n <div className=\"card-image aspect-[3/2]\">\n <Image\n alt={article.image.altText || article.title}\n className=\"object-cover w-full\"\n data={article.image}\n height={400}\n loading={loading}\n sizes=\"(min-width: 768px) 50vw, 100vw\"\n width={600}\n loaderOptions={{\n scale: 2,\n crop: 'center',\n }}\n />\n </div>\n )}\n <h2 className=\"mt-4 font-medium\">{article.title}</h2>\n <span className=\"block mt-1\">{article.publishedAt}</span>\n </Link>\n </li>\n );\n}\n\nconst BLOGS_QUERY = `#graphql\nquery Blog(\n $language: LanguageCode\n $blogHandle: String!\n $pageBy: Int!\n $cursor: String\n) @inContext(language: $language) {\n blog(handle: $blogHandle) {\n articles(first: $pageBy, after: $cursor) {\n edges {\n node {\n author: authorV2 {\n name\n }\n contentHtml\n handle\n id\n image {\n id\n altText\n url\n width\n height\n }\n publishedAt\n title\n }\n }\n }\n }\n}\n`;\n"],
|
|
5
|
+
"mappings": "sSAAA,IAAAA,EAAA,OAQMC,EAAc,UAEPC,EAAS,CACpB,IAAK,CACH,cAAe,cACjB,CACF,EAwCO,IAAMC,EAAqB,KACzB,CACL,MAAO,cACT,GAGa,SAARC,GAA4B,CACjC,GAAM,CAAC,SAAAC,CAAQ,EAAIC,EAA6B,EAEhD,SACE,oBACE,oBAACC,EAAA,CAAW,QAASC,EAAa,KAClC,OAACC,EAAA,CACC,mBAACC,EAAA,CAAK,GAAG,KAAK,OAAO,OAClB,SAAAL,EAAS,IAAI,CAACM,EAASC,OACtB,OAACC,EAAA,CACC,WAAYL,EAAY,YAAY,EACpC,QAASG,EAET,QAASG,EAAwBF,EAAG,CAAC,GADhCD,EAAQ,EAEf,CACD,EACH,EACF,GACF,CAEJ,CAEA,SAASE,EAAY,CACnB,WAAAE,EACA,QAAAJ,EACA,QAAAK,CACF,EAIG,CACD,SACE,OAAC,MACC,oBAACC,EAAA,CAAK,GAAI,IAAIF,KAAcJ,EAAQ,SACjC,UAAAA,EAAQ,UACP,OAAC,OAAI,UAAU,0BACb,mBAACO,EAAA,CACC,IAAKP,EAAQ,MAAM,SAAWA,EAAQ,MACtC,UAAU,sBACV,KAAMA,EAAQ,MACd,OAAQ,IACR,QAASK,EACT,MAAM,iCACN,MAAO,IACP,cAAe,CACb,MAAO,EACP,KAAM,QACR,EACF,EACF,KAEF,OAAC,MAAG,UAAU,mBAAoB,SAAAL,EAAQ,MAAM,KAChD,OAAC,QAAK,UAAU,aAAc,SAAAA,EAAQ,YAAY,GACpD,GArBOA,EAAQ,EAsBjB,CAEJ",
|
|
6
|
+
"names": ["import_jsx_runtime", "BLOG_HANDLE", "handle", "meta", "Journals", "articles", "useLoaderData", "PageHeader", "BLOG_HANDLE", "Section", "Grid", "article", "i", "ArticleCard", "getImageLoadingPriority", "blogHandle", "loading", "Link", "Image"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Y as n}from"/build/_shared/chunk-HX34UWFZ.js";import{f as o}from"/build/_shared/chunk-WYHUKY3H.js";import{o as m,q as u,r as d}from"/build/_shared/chunk-ZNLABNO4.js";import{a as y,b as p}from"/build/_shared/chunk-KSKV5IK6.js";import{b as s}from"/build/_shared/chunk-X4LCECW4.js";var i=s(y());var e=s(p()),E={isPublic:!0};var A=()=>({title:"Login"});function b(){let{shopName:g}=u(),l=d(),[a,f]=(0,i.useState)(null),[r,c]=(0,i.useState)(null);return(0,e.jsx)("div",{className:"flex justify-center my-24 px-4",children:(0,e.jsxs)("div",{className:"max-w-md w-full",children:[(0,e.jsx)("h1",{className:"text-4xl",children:"Sign in."}),(0,e.jsxs)(m,{method:"post",noValidate:!0,className:"pt-6 pb-8 mt-4 mb-4 space-y-3",children:[l?.formError&&(0,e.jsx)("div",{className:"flex items-center justify-center mb-6 bg-zinc-500",children:(0,e.jsx)("p",{className:"m-4 text-s text-contrast",children:l.formError})}),(0,e.jsxs)("div",{children:[(0,e.jsx)("input",{className:`mb-1 ${o(a)}`,id:"email",name:"email",type:"email",autoComplete:"email",required:!0,placeholder:"Email address","aria-label":"Email address",autoFocus:!0,onBlur:t=>{f(t.currentTarget.value.length&&!t.currentTarget.validity.valid?"Invalid email address":null)}}),a&&(0,e.jsxs)("p",{className:"text-red-500 text-xs",children:[a," \xA0"]})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("input",{className:`mb-1 ${o(r)}`,id:"password",name:"password",type:"password",autoComplete:"current-password",placeholder:"Password","aria-label":"Password",minLength:8,required:!0,autoFocus:!0,onBlur:t=>{t.currentTarget.validity.valid||!t.currentTarget.value.length?c(null):c(t.currentTarget.validity.valueMissing?"Please enter a password":"Passwords must be at least 8 characters")}}),r&&(0,e.jsxs)("p",{className:"text-red-500 text-xs",children:[" ",r," \xA0"]})]}),(0,e.jsx)("div",{className:"flex items-center justify-between",children:(0,e.jsx)("button",{className:"bg-primary text-contrast rounded py-2 px-4 focus:shadow-outline block w-full",type:"submit",children:"Sign in"})}),(0,e.jsxs)("div",{className:"flex justify-between items-center mt-8 border-t border-gray-300",children:[(0,e.jsxs)("p",{className:"align-baseline text-sm mt-6",children:["New to ",g,"? \xA0",(0,e.jsx)(n,{className:"inline underline",to:"/account/register",children:"Create an account"})]}),(0,e.jsx)(n,{className:"mt-6 inline-block align-baseline text-sm text-primary/50",to:"/account/recover",children:"Forgot password"})]})]})]})})}export{E as a,A as b,b as c};
|
|
2
|
+
//# sourceMappingURL=/build/_shared/chunk-4GXS2URF.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../app/routes/account/__public/login.tsx"],
|
|
4
|
+
"sourcesContent": ["import {\n type MetaFunction,\n type ActionFunction,\n type LoaderArgs,\n redirect,\n json,\n} from '@shopify/remix-oxygen';\nimport {Form, useActionData, useLoaderData} from '@remix-run/react';\nimport {useState} from 'react';\nimport {login} from '~/data';\nimport {getInputStyleClasses} from '~/lib/utils';\nimport {Link} from '~/components';\n\nexport const handle = {\n isPublic: true,\n};\n\nexport async function loader({context, params}: LoaderArgs) {\n const customerAccessToken = await context.session.get('customerAccessToken');\n\n if (customerAccessToken) {\n return redirect(params.lang ? `${params.lang}/account` : '/account');\n }\n\n // TODO: Query for this?\n return json({shopName: 'Hydrogen'});\n}\n\ntype ActionData = {\n formError?: string;\n};\n\nconst badRequest = (data: ActionData) => json(data, {status: 400});\n\nexport const action: ActionFunction = async ({request, context, params}) => {\n const formData = await request.formData();\n\n const email = formData.get('email');\n const password = formData.get('password');\n\n if (\n !email ||\n !password ||\n typeof email !== 'string' ||\n typeof password !== 'string'\n ) {\n return badRequest({\n formError: 'Please provide both an email and a password.',\n });\n }\n\n const {session, storefront} = context;\n\n try {\n const customerAccessToken = await login(context, {email, password});\n session.set('customerAccessToken', customerAccessToken);\n\n return redirect(params.lang ? `${params.lang}/account` : '/account', {\n headers: {\n 'Set-Cookie': await session.commit(),\n },\n });\n } catch (error: any) {\n if (storefront.isApiError(error)) {\n return badRequest({\n formError: 'Something went wrong. Please try again later.',\n });\n }\n\n /**\n * The user did something wrong, but the raw error from the API is not super friendly.\n * Let's make one up.\n */\n return badRequest({\n formError:\n 'Sorry. We did not recognize either your email or password. Please try to sign in again or create a new account.',\n });\n }\n};\n\nexport const meta: MetaFunction = () => {\n return {\n title: 'Login',\n };\n};\n\nexport default function Login() {\n const {shopName} = useLoaderData<typeof loader>();\n const actionData = useActionData<ActionData>();\n const [nativeEmailError, setNativeEmailError] = useState<null | string>(null);\n const [nativePasswordError, setNativePasswordError] = useState<null | string>(\n null,\n );\n\n return (\n <div className=\"flex justify-center my-24 px-4\">\n <div className=\"max-w-md w-full\">\n <h1 className=\"text-4xl\">Sign in.</h1>\n {/* TODO: Add onSubmit to validate _before_ submission with native? */}\n <Form\n method=\"post\"\n noValidate\n className=\"pt-6 pb-8 mt-4 mb-4 space-y-3\"\n >\n {actionData?.formError && (\n <div className=\"flex items-center justify-center mb-6 bg-zinc-500\">\n <p className=\"m-4 text-s text-contrast\">{actionData.formError}</p>\n </div>\n )}\n <div>\n <input\n className={`mb-1 ${getInputStyleClasses(nativeEmailError)}`}\n id=\"email\"\n name=\"email\"\n type=\"email\"\n autoComplete=\"email\"\n required\n placeholder=\"Email address\"\n aria-label=\"Email address\"\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus\n onBlur={(event) => {\n setNativeEmailError(\n event.currentTarget.value.length &&\n !event.currentTarget.validity.valid\n ? 'Invalid email address'\n : null,\n );\n }}\n />\n {nativeEmailError && (\n <p className=\"text-red-500 text-xs\">{nativeEmailError} </p>\n )}\n </div>\n\n <div>\n <input\n className={`mb-1 ${getInputStyleClasses(nativePasswordError)}`}\n id=\"password\"\n name=\"password\"\n type=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"Password\"\n aria-label=\"Password\"\n minLength={8}\n required\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus\n onBlur={(event) => {\n if (\n event.currentTarget.validity.valid ||\n !event.currentTarget.value.length\n ) {\n setNativePasswordError(null);\n } else {\n setNativePasswordError(\n event.currentTarget.validity.valueMissing\n ? 'Please enter a password'\n : 'Passwords must be at least 8 characters',\n );\n }\n }}\n />\n {nativePasswordError && (\n <p className=\"text-red-500 text-xs\">\n {' '}\n {nativePasswordError} \n </p>\n )}\n </div>\n <div className=\"flex items-center justify-between\">\n <button\n className=\"bg-primary text-contrast rounded py-2 px-4 focus:shadow-outline block w-full\"\n type=\"submit\"\n >\n Sign in\n </button>\n </div>\n <div className=\"flex justify-between items-center mt-8 border-t border-gray-300\">\n <p className=\"align-baseline text-sm mt-6\">\n New to {shopName}? \n <Link className=\"inline underline\" to=\"/account/register\">\n Create an account\n </Link>\n </p>\n <Link\n className=\"mt-6 inline-block align-baseline text-sm text-primary/50\"\n to=\"/account/recover\"\n >\n Forgot password\n </Link>\n </div>\n </Form>\n </div>\n </div>\n );\n}\n"],
|
|
5
|
+
"mappings": "8RAQA,IAAAA,EAAuB,OARvB,IAAAC,EAAA,OAaaC,EAAS,CACpB,SAAU,EACZ,EAiEO,IAAMC,EAAqB,KACzB,CACL,MAAO,OACT,GAGa,SAARC,GAAyB,CAC9B,GAAM,CAAC,SAAAC,CAAQ,EAAIC,EAA6B,EAC1CC,EAAaC,EAA0B,EACvC,CAACC,EAAkBC,CAAmB,KAAI,YAAwB,IAAI,EACtE,CAACC,EAAqBC,CAAsB,KAAI,YACpD,IACF,EAEA,SACE,OAAC,OAAI,UAAU,iCACb,oBAAC,OAAI,UAAU,kBACb,oBAAC,MAAG,UAAU,WAAW,oBAAQ,KAEjC,QAACC,EAAA,CACC,OAAO,OACP,WAAU,GACV,UAAU,gCAET,UAAAN,GAAY,cACX,OAAC,OAAI,UAAU,oDACb,mBAAC,KAAE,UAAU,2BAA4B,SAAAA,EAAW,UAAU,EAChE,KAEF,QAAC,OACC,oBAAC,SACC,UAAW,QAAQO,EAAqBL,CAAgB,IACxD,GAAG,QACH,KAAK,QACL,KAAK,QACL,aAAa,QACb,SAAQ,GACR,YAAY,gBACZ,aAAW,gBAEX,UAAS,GACT,OAASM,GAAU,CACjBL,EACEK,EAAM,cAAc,MAAM,QACxB,CAACA,EAAM,cAAc,SAAS,MAC5B,wBACA,IACN,CACF,EACF,EACCN,MACC,QAAC,KAAE,UAAU,uBAAwB,UAAAA,EAAiB,SAAO,GAEjE,KAEA,QAAC,OACC,oBAAC,SACC,UAAW,QAAQK,EAAqBH,CAAmB,IAC3D,GAAG,WACH,KAAK,WACL,KAAK,WACL,aAAa,mBACb,YAAY,WACZ,aAAW,WACX,UAAW,EACX,SAAQ,GAER,UAAS,GACT,OAASI,GAAU,CAEfA,EAAM,cAAc,SAAS,OAC7B,CAACA,EAAM,cAAc,MAAM,OAE3BH,EAAuB,IAAI,EAE3BA,EACEG,EAAM,cAAc,SAAS,aACzB,0BACA,yCACN,CAEJ,EACF,EACCJ,MACC,QAAC,KAAE,UAAU,uBACV,cACAA,EAAoB,SACvB,GAEJ,KACA,OAAC,OAAI,UAAU,oCACb,mBAAC,UACC,UAAU,+EACV,KAAK,SACN,mBAED,EACF,KACA,QAAC,OAAI,UAAU,kEACb,qBAAC,KAAE,UAAU,8BAA8B,oBACjCN,EAAS,YACjB,OAACW,EAAA,CAAK,UAAU,mBAAmB,GAAG,oBAAoB,6BAE1D,GACF,KACA,OAACA,EAAA,CACC,UAAU,2DACV,GAAG,mBACJ,2BAED,GACF,GACF,GACF,EACF,CAEJ",
|
|
6
|
+
"names": ["import_react", "import_jsx_runtime", "handle", "meta", "Login", "shopName", "useLoaderData", "actionData", "useActionData", "nativeEmailError", "setNativeEmailError", "nativePasswordError", "setNativePasswordError", "Form", "getInputStyleClasses", "event", "Link"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=Object.freeze({BLOG:"BLOG",ARTICLE:"ARTICLE",CATALOG:"CATALOG",COLLECTION:"COLLECTION",COLLECTIONS:"COLLECTIONS",FRONT_PAGE:"FRONT_PAGE",PAGE:"PAGE",PRODUCT:"PRODUCT",SEARCH:"SEARCH",POLICIES:"POLICIES"}),t=Object.freeze([e.PRODUCT,e.COLLECTION,e.FRONT_PAGE]);export{e as a};
|
|
2
|
+
//# sourceMappingURL=/build/_shared/chunk-4ROFW2VH.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../packages/hydrogen/src/storefront.ts", "../../../../../../packages/hydrogen/src/utils/hash.ts", "../../../../../../packages/hydrogen/src/cache/strategies.ts", "../../../../../../packages/hydrogen/src/cache/api.ts", "../../../../../../packages/hydrogen/src/cache/sub-request.ts", "../../../../../../packages/hydrogen/src/cache/fetch.ts", "../../../../../../packages/hydrogen/src/constants.ts", "../../../../../../packages/hydrogen/src/utils/uuid.ts", "../../../../../../packages/hydrogen/src/utils/parse-json.ts", "../../../../../../packages/hydrogen/src/utils/warning.ts", "../../../../../../packages/hydrogen/src/cache/in-memory.ts", "../../../../../../packages/hydrogen/src/routing/types.ts", "../../../../../../packages/hydrogen/src/routing/redirect.ts", "../../../../../../packages/hydrogen/src/routing/proxy.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n createStorefrontClient as createStorefrontUtilities,\n type StorefrontApiResponseOk,\n} from '@shopify/hydrogen-react';\nimport type {ExecutionArgs} from 'graphql';\nimport {fetchWithServerCache, checkGraphQLErrors} from './cache/fetch';\nimport {\n STOREFRONT_API_BUYER_IP_HEADER,\n STOREFRONT_REQUEST_GROUP_ID_HEADER,\n} from './constants';\nimport {\n CacheNone,\n CacheLong,\n CacheShort,\n CacheCustom,\n generateCacheControlHeader,\n type CachingStrategy,\n} from './cache/strategies';\nimport {generateUUID} from './utils/uuid';\nimport {parseJSON} from './utils/parse-json';\nimport {\n CountryCode,\n LanguageCode,\n} from '@shopify/hydrogen-react/storefront-api-types';\nimport {warnOnce} from './utils/warning';\n\ntype StorefrontApiResponse<T> = StorefrontApiResponseOk<T>;\n\nexport type StorefrontClient = ReturnType<typeof createStorefrontClient>;\nexport type Storefront = StorefrontClient['storefront'];\n\nexport type CreateStorefrontClientOptions = Parameters<\n typeof createStorefrontUtilities\n>[0] & {\n cache?: Cache;\n buyerIp?: string;\n requestGroupId?: string;\n waitUntil?: ExecutionContext['waitUntil'];\n i18n?: {\n language: LanguageCode;\n country: CountryCode;\n };\n};\n\ntype StorefrontCommonOptions = {\n variables?: ExecutionArgs['variableValues'] & {\n country?: CountryCode;\n language?: LanguageCode;\n };\n headers?: HeadersInit;\n storefrontApiVersion?: string;\n};\n\nexport type StorefrontQueryOptions = StorefrontCommonOptions & {\n query: string;\n mutation?: never;\n cache?: CachingStrategy;\n};\n\nexport type StorefrontMutationOptions = StorefrontCommonOptions & {\n query?: never;\n mutation: string;\n cache?: never;\n};\n\nconst StorefrontApiError = class extends Error {} as ErrorConstructor;\nexport const isStorefrontApiError = (error: any) =>\n error instanceof StorefrontApiError;\n\nconst isQueryRE = /(^|}\\s)query[\\s({]/im;\nconst isMutationRE = /(^|}\\s)mutation[\\s({]/im;\n\nfunction minifyQuery(string: string) {\n return string\n .replace(/\\s*#.*$/gm, '') // Remove GQL comments\n .replace(/\\s+/gm, ' ') // Minify spaces\n .trim();\n}\n\nexport function createStorefrontClient({\n cache,\n waitUntil,\n buyerIp,\n i18n,\n requestGroupId = generateUUID(),\n ...clientOptions\n}: CreateStorefrontClientOptions) {\n if (!cache) {\n // TODO: should only warn in development\n warnOnce(\n 'Storefront API client created without a cache instance. This may slow down your sub-requests.',\n );\n }\n\n clientOptions.storeDomain = clientOptions.storeDomain.replace(\n '.myshopify.com',\n '',\n );\n\n const {\n getPublicTokenHeaders,\n getPrivateTokenHeaders,\n getStorefrontApiUrl,\n getShopifyDomain,\n } = createStorefrontUtilities(clientOptions);\n\n const getHeaders = clientOptions.privateStorefrontToken\n ? getPrivateTokenHeaders\n : getPublicTokenHeaders;\n\n const defaultHeaders = getHeaders({contentType: 'json'});\n\n defaultHeaders[STOREFRONT_REQUEST_GROUP_ID_HEADER] = requestGroupId;\n if (buyerIp) defaultHeaders[STOREFRONT_API_BUYER_IP_HEADER] = buyerIp;\n\n async function fetchStorefrontApi<T>({\n query,\n mutation,\n variables,\n cache: cacheOptions,\n headers = [],\n storefrontApiVersion,\n }: StorefrontQueryOptions | StorefrontMutationOptions): Promise<T> {\n const userHeaders =\n headers instanceof Headers\n ? Object.fromEntries(headers.entries())\n : Array.isArray(headers)\n ? Object.fromEntries(headers)\n : headers;\n\n query = query ?? mutation;\n\n const queryVariables = {...variables};\n\n if (i18n) {\n if (!variables?.country && /\\$country/.test(query)) {\n queryVariables.country = i18n.country;\n }\n\n if (!variables?.language && /\\$language/.test(query)) {\n queryVariables.language = i18n.language;\n }\n }\n\n const url = getStorefrontApiUrl({storefrontApiVersion});\n const requestInit = {\n method: 'POST',\n headers: {...defaultHeaders, ...userHeaders},\n body: JSON.stringify({\n query,\n variables: queryVariables,\n }),\n };\n\n const [body, response] = await fetchWithServerCache(url, requestInit, {\n cacheInstance: mutation ? undefined : cache,\n cache: cacheOptions || CacheShort(),\n shouldCacheResponse: checkGraphQLErrors,\n waitUntil,\n });\n\n if (!response.ok) {\n /**\n * The Storefront API might return a string error, or a JSON-formatted {error: string}.\n * We try both and conform them to a single {errors} format.\n */\n let errors;\n try {\n errors = parseJSON(body);\n } catch (_e) {\n errors = [{message: body}];\n }\n\n throwError(response, errors);\n }\n\n const {data, errors} = body as StorefrontApiResponse<T>;\n\n if (errors?.length) throwError(response, errors, StorefrontApiError);\n\n return data as T;\n }\n\n return {\n storefront: {\n /**\n * Sends a GraphQL query to the Storefront API.\n *\n * Example:\n *\n * ```js\n * async function loader ({context: {storefront}}) {\n * const data = await storefront.query('query { ... }', {\n * variables: {},\n * cache: storefront.CacheLong()\n * });\n * }\n * ```\n */\n query: <T>(\n query: string,\n payload?: StorefrontCommonOptions & {cache?: CachingStrategy},\n ) => {\n query = minifyQuery(query);\n if (isMutationRE.test(query))\n throw new Error('storefront.query cannot execute mutations');\n\n return fetchStorefrontApi<T>({...payload, query});\n },\n /**\n * Sends a GraphQL mutation to the Storefront API.\n *\n * Example:\n *\n * ```js\n * async function loader ({context: {storefront}}) {\n * await storefront.mutate('mutation { ... }', {\n * variables: {},\n * });\n * }\n * ```\n */\n mutate: <T>(mutation: string, payload?: StorefrontCommonOptions) => {\n mutation = minifyQuery(mutation);\n if (isQueryRE.test(mutation))\n throw new Error('storefront.mutate cannot execute queries');\n\n return fetchStorefrontApi<T>({...payload, mutation});\n },\n cache,\n CacheNone,\n CacheLong,\n CacheShort,\n CacheCustom,\n generateCacheControlHeader,\n getPublicTokenHeaders,\n getPrivateTokenHeaders,\n getShopifyDomain,\n getApiUrl: getStorefrontApiUrl,\n /**\n * Wether it's a GraphQL error returned in the Storefront API response.\n *\n * Example:\n *\n * ```js\n * async function loader ({context: {storefront}}) {\n * try {\n * await storefront.query(...);\n * } catch(error) {\n * if (storefront.isApiError(error)) {\n * // ...\n * }\n *\n * throw error;\n * }\n * }\n * ```\n */\n isApiError: isStorefrontApiError,\n i18n,\n },\n };\n}\n\nfunction throwError<T>(\n response: Response,\n errors: StorefrontApiResponse<T>['errors'],\n ErrorConstructor = Error,\n) {\n const reqId = response.headers.get('x-request-id');\n const reqIdMessage = reqId ? ` - Request ID: ${reqId}` : '';\n\n if (errors) {\n const errorMessages =\n typeof errors === 'string'\n ? errors\n : errors.map((error) => error.message).join('\\n');\n\n throw new ErrorConstructor(errorMessages + reqIdMessage);\n }\n\n throw new ErrorConstructor(\n `API response error: ${response.status}` + reqIdMessage,\n );\n}\n", "type QueryKey = string | readonly unknown[];\n\nexport function hashKey(queryKey: QueryKey): string {\n const rawKeys = Array.isArray(queryKey) ? queryKey : [queryKey];\n let hash = '';\n\n // Keys from `storefront.query` are in the following shape:\n // ['prefix', 'api-endpoint', {body:'query',headers:{}}]\n // Since the API endpoint already contains the shop domain and api version,\n // we can ignore the headers and only use the `body` from the payload.\n for (const key of rawKeys) {\n if (key != null) {\n if (typeof key === 'object') {\n // Queries from useQuery might not have a `body`. In that case,\n // fallback to a safer (but slower) stringify.\n if (!!key.body && typeof key.body === 'string') {\n hash += key.body;\n } else {\n hash += JSON.stringify(key);\n }\n } else {\n hash += key;\n }\n }\n }\n\n return hash;\n}\n", "export interface AllCacheOptions {\n mode?: string;\n maxAge?: number;\n staleWhileRevalidate?: number;\n sMaxAge?: number;\n staleIfError?: number;\n}\n\nexport type CachingStrategy = AllCacheOptions;\n\nexport type NoStoreStrategy = {\n mode: string;\n};\n\nconst PUBLIC = 'public';\nconst PRIVATE = 'private';\nexport const NO_STORE = 'no-store';\n\nconst optionMapping: {\n [key: string]: string;\n} = {\n maxAge: 'max-age',\n staleWhileRevalidate: 'stale-while-revalidate',\n sMaxAge: 's-maxage',\n staleIfError: 'stale-if-error',\n};\n\nexport function generateCacheControlHeader(\n cacheOptions: CachingStrategy,\n): string {\n const cacheControl: string[] = [];\n Object.keys(cacheOptions).forEach((key: string) => {\n if (key === 'mode') {\n cacheControl.push(cacheOptions[key] as string);\n } else if (optionMapping[key]) {\n cacheControl.push(\n `${optionMapping[key]}=${cacheOptions[key as keyof CachingStrategy]}`,\n );\n }\n });\n return cacheControl.join(', ');\n}\n\n/**\n *\n * @public\n */\nexport function CacheNone(): NoStoreStrategy {\n return {\n mode: NO_STORE,\n };\n}\n\nfunction guardExpirableModeType(overrideOptions?: CachingStrategy) {\n if (\n overrideOptions?.mode &&\n overrideOptions?.mode !== PUBLIC &&\n overrideOptions?.mode !== PRIVATE\n ) {\n throw Error(\"'mode' must be either 'public' or 'private'\");\n }\n}\n\n/**\n *\n * @public\n */\nexport function CacheShort(overrideOptions?: CachingStrategy): AllCacheOptions {\n guardExpirableModeType(overrideOptions);\n return {\n mode: PUBLIC,\n maxAge: 1,\n staleWhileRevalidate: 9,\n ...overrideOptions,\n };\n}\n\n/**\n *\n * @public\n */\nexport function CacheLong(overrideOptions?: CachingStrategy): AllCacheOptions {\n guardExpirableModeType(overrideOptions);\n return {\n mode: PUBLIC,\n maxAge: 3600, // 1 hour\n staleWhileRevalidate: 82800, // 23 Hours\n ...overrideOptions,\n };\n}\n\n/**\n *\n * @public\n */\nexport function CacheCustom(overrideOptions: CachingStrategy): AllCacheOptions {\n return overrideOptions as AllCacheOptions;\n}\n", "import type {CachingStrategy} from './strategies';\nimport {CacheShort, generateCacheControlHeader} from './strategies';\n\nfunction logCacheApiStatus(status: string | null, url: string) {\n // // eslint-disable-next-line no-console\n // console.log('\\n' + status, url);\n}\n\nfunction getCacheControlSetting(\n userCacheOptions?: CachingStrategy,\n options?: CachingStrategy,\n): CachingStrategy {\n if (userCacheOptions && options) {\n return {\n ...userCacheOptions,\n ...options,\n };\n } else {\n return userCacheOptions || CacheShort();\n }\n}\n\nfunction generateDefaultCacheControlHeader(\n userCacheOptions?: CachingStrategy,\n): string {\n return generateCacheControlHeader(getCacheControlSetting(userCacheOptions));\n}\n\n/**\n * Get an item from the cache. If a match is found, returns a tuple\n * containing the `JSON.parse` version of the response as well\n * as the response itself so it can be checked for staleness.\n */\nasync function getItem(\n cache: Cache,\n request: Request,\n): Promise<Response | undefined> {\n if (!cache) return;\n\n const response = await cache.match(request);\n if (!response) {\n logCacheApiStatus('MISS', request.url);\n return;\n }\n\n logCacheApiStatus('HIT', request.url);\n\n return response;\n}\n\n/**\n * Put an item into the cache.\n */\nasync function setItem(\n cache: Cache,\n request: Request,\n response: Response,\n userCacheOptions: CachingStrategy,\n) {\n if (!cache) return;\n\n /**\n * We are manually managing staled request by adding this workaround.\n * Why? cache control header support is dependent on hosting platform\n *\n * For example:\n *\n * Cloudflare's Cache API does not support `stale-while-revalidate`.\n * Cloudflare cache control header has a very odd behaviour.\n * Say we have the following cache control header on a request:\n *\n * public, max-age=15, stale-while-revalidate=30\n *\n * When there is a cache.match HIT, the cache control header would become\n *\n * public, max-age=14400, stale-while-revalidate=30\n *\n * == `stale-while-revalidate` workaround ==\n * Update response max-age so that:\n *\n * max-age = max-age + stale-while-revalidate\n *\n * For example:\n *\n * public, max-age=1, stale-while-revalidate=9\n * |\n * V\n * public, max-age=10, stale-while-revalidate=9\n *\n * Store the following information in the response header:\n *\n * cache-put-date - UTC time string of when this request is PUT into cache\n *\n * Note on `cache-put-date`: The `response.headers.get('date')` isn't static. I am\n * not positive what date this is returning but it is never over 500 ms\n * after subtracting from the current timestamp.\n *\n * `isStale` function will use the above information to test for stale-ness of a cached response\n */\n\n const cacheControl = getCacheControlSetting(userCacheOptions);\n\n // The padded cache-control to mimic stale-while-revalidate\n request.headers.set(\n 'cache-control',\n generateDefaultCacheControlHeader(\n getCacheControlSetting(cacheControl, {\n maxAge:\n (cacheControl.maxAge || 0) + (cacheControl.staleWhileRevalidate || 0),\n }),\n ),\n );\n // The cache-control we want to set on response\n const cacheControlString = generateDefaultCacheControlHeader(\n getCacheControlSetting(cacheControl),\n );\n\n // CF will override cache-control, so we need to keep a non-modified real-cache-control\n // cache-control is still necessary for mini-oxygen\n response.headers.set('cache-control', cacheControlString);\n response.headers.set('real-cache-control', cacheControlString);\n response.headers.set('cache-put-date', new Date().toUTCString());\n\n logCacheApiStatus('PUT', request.url);\n await cache.put(request, response);\n}\n\nasync function deleteItem(cache: Cache, request: Request) {\n if (!cache) return;\n\n logCacheApiStatus('DELETE', request.url);\n await cache.delete(request);\n}\n\n/**\n * Manually check the response to see if it's stale.\n */\nfunction isStale(request: Request, response: Response) {\n const responseDate = response.headers.get('cache-put-date');\n const cacheControl = response.headers.get('real-cache-control');\n let responseMaxAge = 0;\n\n if (cacheControl) {\n const maxAgeMatch = cacheControl.match(/max-age=(\\d*)/);\n if (maxAgeMatch && maxAgeMatch.length > 1) {\n responseMaxAge = parseFloat(maxAgeMatch[1]);\n }\n }\n\n if (!responseDate) {\n return false;\n }\n\n const ageInMs =\n new Date().valueOf() - new Date(responseDate as string).valueOf();\n const age = ageInMs / 1000;\n\n const result = age > responseMaxAge;\n\n if (result) {\n logCacheApiStatus('STALE', request.url);\n }\n\n return result;\n}\n\n/**\n *\n * @private\n */\nexport const CacheAPI = {\n get: getItem,\n set: setItem,\n delete: deleteItem,\n generateDefaultCacheControlHeader,\n isStale,\n};\n", "import {CacheAPI} from './api';\nimport {\n CacheShort,\n type CachingStrategy,\n type AllCacheOptions,\n} from './strategies.js';\n\n/**\n * Wrapper Cache functions for sub queries\n */\n\n/**\n * Cache API is weird. We just need a full URL, so we make one up.\n */\nfunction getKeyUrl(key: string) {\n return `https://shopify.dev/?${key}`;\n}\n\nfunction getCacheOption(userCacheOptions?: CachingStrategy): AllCacheOptions {\n return userCacheOptions || CacheShort();\n}\n\nexport function generateSubRequestCacheControlHeader(\n userCacheOptions?: CachingStrategy,\n): string {\n return CacheAPI.generateDefaultCacheControlHeader(\n getCacheOption(userCacheOptions),\n );\n}\n\n/**\n * Get an item from the cache. If a match is found, returns a tuple\n * containing the `JSON.parse` version of the response as well\n * as the response itself so it can be checked for staleness.\n * @private\n */\nexport async function getItemFromCache(\n cache: Cache,\n key: string,\n): Promise<undefined | [any, Response]> {\n if (!cache) return;\n const url = getKeyUrl(key);\n const request = new Request(url);\n\n const response = await CacheAPI.get(cache, request);\n\n if (!response) {\n return;\n }\n\n return [await response.json(), response];\n}\n\n/**\n * Put an item into the cache.\n * @private\n */\nexport async function setItemInCache(\n cache: Cache,\n key: string,\n value: any,\n userCacheOptions?: CachingStrategy,\n) {\n if (!cache) return;\n\n const url = getKeyUrl(key);\n const request = new Request(url);\n const response = new Response(JSON.stringify(value));\n\n await CacheAPI.set(\n cache,\n request,\n response,\n getCacheOption(userCacheOptions),\n );\n}\n\n/**\n *\n * @private\n */\nexport async function deleteItemFromCache(cache: Cache, key: string) {\n if (!cache) return;\n\n const url = getKeyUrl(key);\n const request = new Request(url);\n\n await CacheAPI.delete(cache, request);\n}\n\n/**\n * Manually check the response to see if it's stale.\n * @private\n */\nexport function isStale(key: string, response: Response) {\n return CacheAPI.isStale(new Request(getKeyUrl(key)), response);\n}\n", "import {hashKey} from '../utils/hash.js';\nimport {CacheShort, CachingStrategy} from './strategies';\nimport {getItemFromCache, setItemInCache, isStale} from './sub-request';\n\nexport type FetchCacheOptions = {\n cache?: CachingStrategy;\n cacheInstance?: Cache;\n cacheKey?: string | readonly unknown[];\n shouldCacheResponse?: (body: any, response: Response) => boolean;\n waitUntil?: ExecutionContext['waitUntil'];\n returnType?: 'json' | 'text' | 'arrayBuffer' | 'blob';\n};\n\nfunction serializeResponse(body: any, response: Response) {\n return [\n body,\n {\n status: response.status,\n statusText: response.statusText,\n headers: Array.from(response.headers.entries()),\n },\n ];\n}\n\n// Check if the response body has GraphQL errors\n// https://spec.graphql.org/June2018/#sec-Response-Format\nexport const checkGraphQLErrors = (body: any) => !body?.errors;\n\n// Lock to prevent revalidating the same sub-request\n// in the same isolate. Note that different isolates\n// in the same colo could duplicate the revalidation\n// since this is only an in-memory lock.\n// https://github.com/Shopify/oxygen-platform/issues/625\nconst swrLock = new Set<string>();\n\n/**\n * `fetch` equivalent that stores responses in cache.\n * Useful for calling third-party APIs that need to be cached.\n * @private\n */\nexport async function fetchWithServerCache(\n url: string,\n requestInit: Request | RequestInit,\n {\n cacheInstance,\n cache: cacheOptions,\n cacheKey = [url, requestInit],\n shouldCacheResponse = () => true,\n waitUntil,\n returnType = 'json',\n }: FetchCacheOptions = {},\n): Promise<readonly [any, Response]> {\n if (!cacheOptions && (!requestInit.method || requestInit.method === 'GET')) {\n cacheOptions = CacheShort();\n }\n\n const doFetch = async () => {\n const response = await fetch(url, requestInit);\n let data;\n\n try {\n data = await response[returnType]();\n } catch {\n data = await response.text();\n }\n\n return [data, response] as const;\n };\n\n if (!cacheInstance || !cacheKey || !cacheOptions) return doFetch();\n\n const key = hashKey([\n // '__HYDROGEN_CACHE_ID__', // TODO purgeQueryCacheOnBuild\n ...(typeof cacheKey === 'string' ? [cacheKey] : cacheKey),\n ]);\n\n const cachedItem = await getItemFromCache(cacheInstance, key);\n // console.log('--- Cache', cachedItem ? 'HIT' : 'MISS');\n\n if (cachedItem) {\n const [cachedValue, cacheInfo] = cachedItem;\n\n if (!swrLock.has(key) && isStale(key, cacheInfo)) {\n swrLock.add(key);\n\n // Important: Run revalidation asynchronously.\n const revalidatingPromise = Promise.resolve().then(async () => {\n try {\n const [body, response] = await doFetch();\n\n if (shouldCacheResponse(body, response)) {\n await setItemInCache(\n cacheInstance,\n key,\n serializeResponse(body, response),\n cacheOptions,\n );\n }\n } catch (error: any) {\n if (error.message) {\n error.message = 'SWR in sub-request failed: ' + error.message;\n }\n\n console.error(error);\n } finally {\n swrLock.delete(key);\n }\n });\n\n // Asynchronously wait for it in workers\n waitUntil?.(revalidatingPromise);\n }\n\n const [body, init] = cachedValue;\n return [body, new Response(body, init)];\n }\n\n const [body, response] = await doFetch();\n\n /**\n * Important: Do this async\n */\n if (shouldCacheResponse(body, response)) {\n const setItemInCachePromise = setItemInCache(\n cacheInstance,\n key,\n serializeResponse(body, response),\n cacheOptions,\n );\n\n waitUntil?.(setItemInCachePromise);\n }\n\n return [body, response];\n}\n", "export const STOREFRONT_REQUEST_GROUP_ID_HEADER =\n 'Custom-Storefront-Request-Group-ID';\nexport const STOREFRONT_API_BUYER_IP_HEADER = 'Shopify-Storefront-Buyer-IP';\n", "/*\n * Generate a UUID using crypto and fallback to Math.random if crypto is not available.\n */\nexport function generateUUID() {\n if (typeof crypto !== 'undefined' && !!crypto.randomUUID) {\n return crypto.randomUUID();\n } else {\n return `weak-${Math.random().toString(16).substring(2)}`;\n }\n}\n", "export function parseJSON(json: any) {\n if (String(json).includes('__proto__')) return JSON.parse(json, noproto);\n return JSON.parse(json);\n}\nfunction noproto(k: string, v: string) {\n if (k !== '__proto__') return v;\n}\n", "const warnings = new Set<string>();\nexport const warnOnce = (string: string) => {\n if (!warnings.has(string)) {\n console.warn(string);\n warnings.add(string);\n }\n};\n", "type CacheMatch = {\n body: Uint8Array;\n timestamp: number;\n status: number;\n headers: [string, string][];\n};\n\n/**\n * This is a limited implementation of an in-memory cache.\n * It only supports the `cache-control` header.\n * It does NOT support `age` or `expires` headers.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Cache\n */\nexport class InMemoryCache implements Cache {\n #store: Map<string, CacheMatch>;\n\n constructor() {\n this.#store = new Map();\n }\n\n add(request: RequestInfo): Promise<void> {\n throw new Error('Method not implemented. Use `put` instead.');\n }\n\n addAll(requests: RequestInfo[]): Promise<void> {\n throw new Error('Method not implemented. Use `put` instead.');\n }\n\n matchAll(\n request?: RequestInfo,\n options?: CacheQueryOptions,\n ): Promise<readonly Response[]> {\n throw new Error('Method not implemented. Use `match` instead.');\n }\n\n async put(request: Request, response: Response) {\n if (request.method !== 'GET') {\n throw new TypeError('Cannot cache response to non-GET request.');\n }\n\n if (response.status === 206) {\n throw new TypeError(\n 'Cannot cache response to a range request (206 Partial Content).',\n );\n }\n\n if (response.headers.get('vary')?.includes('*')) {\n throw new TypeError(\"Cannot cache response with 'Vary: *' header.\");\n }\n\n this.#store.set(request.url, {\n body: new Uint8Array(await response.arrayBuffer()),\n status: response.status,\n headers: [...response.headers],\n timestamp: Date.now(),\n });\n }\n\n async match(request: Request) {\n if (request.method !== 'GET') return;\n\n const match = this.#store.get(request.url);\n\n if (!match) {\n return;\n }\n\n const {body, timestamp, ...metadata} = match;\n\n const headers = new Headers(metadata.headers);\n const cacheControl =\n headers.get('cache-control') || headers.get('real-cache-control') || '';\n const maxAge = parseInt(\n cacheControl.match(/max-age=(\\d+)/)?.[1] || '0',\n 10,\n );\n const swr = parseInt(\n cacheControl.match(/stale-while-revalidate=(\\d+)/)?.[1] || '0',\n 10,\n );\n const age = (Date.now() - timestamp) / 1000;\n\n const isMiss = age > maxAge + swr;\n\n if (isMiss) {\n this.#store.delete(request.url);\n return;\n }\n\n const isStale = age > maxAge;\n\n headers.set('cache', isStale ? 'STALE' : 'HIT');\n headers.set('date', new Date(timestamp).toUTCString());\n\n return new Response(body, {\n status: metadata.status ?? 200,\n headers,\n });\n }\n\n async delete(request: Request) {\n if (this.#store.has(request.url)) {\n this.#store.delete(request.url);\n return true;\n }\n return false;\n }\n\n keys(request?: Request) {\n const cacheKeys = [] as Request[];\n\n for (const url of this.#store.keys()) {\n if (!request || request.url === url) {\n cacheKeys.push(new Request(url));\n }\n }\n\n return Promise.resolve(cacheKeys);\n }\n}\n", "export const RESOURCE_TYPES = Object.freeze({\n BLOG: 'BLOG',\n ARTICLE: 'ARTICLE',\n CATALOG: 'CATALOG',\n COLLECTION: 'COLLECTION',\n COLLECTIONS: 'COLLECTIONS',\n FRONT_PAGE: 'FRONT_PAGE',\n PAGE: 'PAGE',\n PRODUCT: 'PRODUCT',\n SEARCH: 'SEARCH',\n POLICIES: 'POLICIES',\n});\n\nexport const REQUIRED_RESOURCES = Object.freeze([\n RESOURCE_TYPES.PRODUCT,\n RESOURCE_TYPES.COLLECTION,\n RESOURCE_TYPES.FRONT_PAGE,\n]);\n", "import {redirect} from '@remix-run/server-runtime';\nimport type {Storefront} from '../storefront';\n\nexport async function notFoundMaybeRedirect(\n request: Request,\n context: {storefront: Storefront},\n): Promise<Response> {\n const {pathname, search} = new URL(request.url);\n const {urlRedirects} = await context.storefront.query<{\n urlRedirects: {\n edges: Array<{node: {target: string}}>;\n };\n }>(REDIRECT_QUERY, {\n variables: {\n url: pathname + search,\n },\n storefrontApiVersion: '2023-01',\n });\n\n if (urlRedirects?.edges?.length) {\n return new Response(null, {\n status: 302,\n headers: {\n location: urlRedirects.edges[0]?.node?.target!,\n },\n });\n } else {\n const redirectPath = new URLSearchParams(search).get('return_to');\n\n if (redirectPath && isLocalPath(redirectPath)) {\n return redirect(redirectPath);\n }\n\n return new Response('Not found', {status: 404});\n }\n}\n\nfunction isLocalPath(url: string) {\n try {\n // We don't want to redirect cross domain,\n // doing so could create fishing vulnerability\n // If `new URL()` succeeds, it's a fully qualified\n // url which is cross domain. If it fails, it's just\n // a path, which will be the current domain.\n new URL(url);\n } catch (e) {\n return true;\n }\n\n return false;\n}\n\nconst REDIRECT_QUERY = `#graphql\n query redirects($url:String) {\n urlRedirects(first:1, query:$url) {\n edges {\n node {\n target\n }\n }\n }\n }\n`;\n", "export async function proxyLiquidRoute(\n request: Request,\n storefrontDomain: string,\n destinationPath: string,\n): Promise<Response> {\n const clientIP = request.headers.get('X-Shopify-Client-IP');\n const clientIPSig = request.headers.get('X-Shopify-Client-IP-Sig');\n\n // @todo - filter out google bot user agents when proxying\n\n const newHost = `${storefrontDomain}.myshopify.com`;\n const host = new URL(request.url).host;\n\n const headers = swapHeaderHostname(request.headers, host, newHost);\n\n if (!clientIP || !clientIPSig) {\n console.warn(\n 'Proxying the online store is only available in Oxygen. This request is likely to be throttled.',\n );\n }\n\n return fetch(\n `https://${newHost}${\n destinationPath.startsWith('/') ? destinationPath : '/' + destinationPath\n }`,\n {headers},\n ).then((resp) => {\n const headers = swapHeaderHostname(resp.headers, newHost, host);\n headers.delete('content-encoding');\n return new Response(resp.body, {headers});\n });\n}\n\nfunction swapHeaderHostname(\n headers: Headers,\n hostname: string,\n newHostname: string,\n) {\n const newHeaders = new Headers();\n\n const headersToFilterOut = ['connection'];\n\n for (const [key, value] of headers.entries()) {\n if (!headersToFilterOut.includes(key)) {\n newHeaders.append(key, value.replaceAll(hostname, newHostname));\n }\n }\n\n return newHeaders;\n}\n"],
|
|
5
|
+
"mappings": "AYoDuB,IAAAA,EAAA,OAAA,OAAA,CAAA,KAAA,OAAA,QAAA,UAAA,QAAA,UAAA,WAAA,aAAA,YAAA,cAAA,WAAA,aAAA,KAAA,OAAA,QAAA,UAAA,OAAA,SAAA,SAAA,UAAA,CAAA,EAAAC,EAAA,OAAA,OAAA,CAAAD,EAAA,QAAAA,EAAA,WAAAA,EAAA,UAAA,CAAA",
|
|
6
|
+
"names": ["x", "Ce"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
var e=`#graphql
|
|
2
|
+
fragment Media on Media {
|
|
3
|
+
__typename
|
|
4
|
+
mediaContentType
|
|
5
|
+
alt
|
|
6
|
+
previewImage {
|
|
7
|
+
url
|
|
8
|
+
}
|
|
9
|
+
... on MediaImage {
|
|
10
|
+
id
|
|
11
|
+
image {
|
|
12
|
+
url
|
|
13
|
+
width
|
|
14
|
+
height
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
... on Video {
|
|
18
|
+
id
|
|
19
|
+
sources {
|
|
20
|
+
mimeType
|
|
21
|
+
url
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
... on Model3d {
|
|
25
|
+
id
|
|
26
|
+
sources {
|
|
27
|
+
mimeType
|
|
28
|
+
url
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
... on ExternalVideo {
|
|
32
|
+
id
|
|
33
|
+
embedUrl
|
|
34
|
+
host
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
`,u=`#graphql
|
|
38
|
+
fragment ProductCard on Product {
|
|
39
|
+
id
|
|
40
|
+
title
|
|
41
|
+
publishedAt
|
|
42
|
+
handle
|
|
43
|
+
variants(first: 1) {
|
|
44
|
+
nodes {
|
|
45
|
+
id
|
|
46
|
+
image {
|
|
47
|
+
url
|
|
48
|
+
altText
|
|
49
|
+
width
|
|
50
|
+
height
|
|
51
|
+
}
|
|
52
|
+
price: priceV2 {
|
|
53
|
+
amount
|
|
54
|
+
currencyCode
|
|
55
|
+
}
|
|
56
|
+
compareAtPrice: compareAtPriceV2 {
|
|
57
|
+
amount
|
|
58
|
+
currencyCode
|
|
59
|
+
}
|
|
60
|
+
selectedOptions {
|
|
61
|
+
name
|
|
62
|
+
value
|
|
63
|
+
}
|
|
64
|
+
product {
|
|
65
|
+
handle
|
|
66
|
+
title
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
`,i=`#graphql
|
|
72
|
+
fragment ProductVariantFragment on ProductVariant {
|
|
73
|
+
id
|
|
74
|
+
availableForSale
|
|
75
|
+
selectedOptions {
|
|
76
|
+
name
|
|
77
|
+
value
|
|
78
|
+
}
|
|
79
|
+
image {
|
|
80
|
+
id
|
|
81
|
+
url
|
|
82
|
+
altText
|
|
83
|
+
width
|
|
84
|
+
height
|
|
85
|
+
}
|
|
86
|
+
price {
|
|
87
|
+
amount
|
|
88
|
+
currencyCode
|
|
89
|
+
}
|
|
90
|
+
compareAtPrice {
|
|
91
|
+
amount
|
|
92
|
+
currencyCode
|
|
93
|
+
}
|
|
94
|
+
sku
|
|
95
|
+
title
|
|
96
|
+
unitPrice {
|
|
97
|
+
amount
|
|
98
|
+
currencyCode
|
|
99
|
+
}
|
|
100
|
+
product {
|
|
101
|
+
title
|
|
102
|
+
handle
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`;var m=`#graphql
|
|
106
|
+
${e}
|
|
107
|
+
fragment CollectionContent on Collection {
|
|
108
|
+
id
|
|
109
|
+
handle
|
|
110
|
+
title
|
|
111
|
+
descriptionHtml
|
|
112
|
+
heading: metafield(namespace: "hero", key: "title") {
|
|
113
|
+
value
|
|
114
|
+
}
|
|
115
|
+
byline: metafield(namespace: "hero", key: "byline") {
|
|
116
|
+
value
|
|
117
|
+
}
|
|
118
|
+
cta: metafield(namespace: "hero", key: "cta") {
|
|
119
|
+
value
|
|
120
|
+
}
|
|
121
|
+
spread: metafield(namespace: "hero", key: "spread") {
|
|
122
|
+
reference {
|
|
123
|
+
...Media
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
spreadSecondary: metafield(namespace: "hero", key: "spread_secondary") {
|
|
127
|
+
reference {
|
|
128
|
+
...Media
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
`;export{e as a,u as b,i as c,m as d};
|
|
133
|
+
//# sourceMappingURL=/build/_shared/chunk-63VE24M5.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../app/data/index.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n Cart,\n Shop,\n Order,\n CustomerAccessTokenCreatePayload,\n Customer,\n CustomerUpdateInput,\n CustomerUpdatePayload,\n CustomerAddressUpdatePayload,\n MailingAddressInput,\n CustomerAddressDeletePayload,\n CustomerDefaultAddressUpdatePayload,\n CustomerAddressCreatePayload,\n CustomerCreatePayload,\n CustomerRecoverPayload,\n CustomerResetPayload,\n CustomerActivatePayload,\n} from '@shopify/hydrogen-react/storefront-api-types';\nimport {type EnhancedMenu, parseMenu, assertApiErrors} from '~/lib/utils';\nimport invariant from 'tiny-invariant';\nimport {logout} from '~/routes/account/__private/logout';\nimport type {AppLoadContext} from '@shopify/remix-oxygen';\n\nexport interface LayoutData {\n headerMenu: EnhancedMenu;\n footerMenu: EnhancedMenu;\n shop: Shop;\n cart?: Promise<Cart>;\n}\n\nexport async function getLayoutData({storefront}: AppLoadContext) {\n const HEADER_MENU_HANDLE = 'main-menu';\n const FOOTER_MENU_HANDLE = 'footer';\n\n const data = await storefront.query<LayoutData>(LAYOUT_QUERY, {\n variables: {\n headerMenuHandle: HEADER_MENU_HANDLE,\n footerMenuHandle: FOOTER_MENU_HANDLE,\n language: storefront.i18n?.language,\n },\n });\n\n invariant(data, 'No data returned from Shopify API');\n\n /*\n Modify specific links/routes (optional)\n @see: https://shopify.dev/api/storefront/unstable/enums/MenuItemType\n e.g here we map:\n - /blogs/news -> /news\n - /blog/news/blog-post -> /news/blog-post\n - /collections/all -> /products\n */\n const customPrefixes = {BLOG: '', CATALOG: 'products'};\n\n const headerMenu = data?.headerMenu\n ? parseMenu(data.headerMenu, customPrefixes)\n : undefined;\n\n const footerMenu = data?.footerMenu\n ? parseMenu(data.footerMenu, customPrefixes)\n : undefined;\n\n return {shop: data.shop, headerMenu, footerMenu};\n}\n\nconst LAYOUT_QUERY = `#graphql\n query layoutMenus(\n $language: LanguageCode\n $headerMenuHandle: String!\n $footerMenuHandle: String!\n ) @inContext(language: $language) {\n shop {\n name\n description\n }\n headerMenu: menu(handle: $headerMenuHandle) {\n id\n items {\n ...MenuItem\n items {\n ...MenuItem\n }\n }\n }\n footerMenu: menu(handle: $footerMenuHandle) {\n id\n items {\n ...MenuItem\n items {\n ...MenuItem\n }\n }\n }\n }\n fragment MenuItem on MenuItem {\n id\n resourceId\n tags\n title\n type\n url\n }\n`;\n\nexport const MEDIA_FRAGMENT = `#graphql\n fragment Media on Media {\n __typename\n mediaContentType\n alt\n previewImage {\n url\n }\n ... on MediaImage {\n id\n image {\n url\n width\n height\n }\n }\n ... on Video {\n id\n sources {\n mimeType\n url\n }\n }\n ... on Model3d {\n id\n sources {\n mimeType\n url\n }\n }\n ... on ExternalVideo {\n id\n embedUrl\n host\n }\n }\n`;\n\nexport const PRODUCT_CARD_FRAGMENT = `#graphql\n fragment ProductCard on Product {\n id\n title\n publishedAt\n handle\n variants(first: 1) {\n nodes {\n id\n image {\n url\n altText\n width\n height\n }\n price: priceV2 {\n amount\n currencyCode\n }\n compareAtPrice: compareAtPriceV2 {\n amount\n currencyCode\n }\n selectedOptions {\n name\n value\n }\n product {\n handle\n title\n }\n }\n }\n }\n`;\n\nexport const PRODUCT_VARIANT_FRAGMENT = `#graphql\n fragment ProductVariantFragment on ProductVariant {\n id\n availableForSale\n selectedOptions {\n name\n value\n }\n image {\n id\n url\n altText\n width\n height\n }\n price {\n amount\n currencyCode\n }\n compareAtPrice {\n amount\n currencyCode\n }\n sku\n title\n unitPrice {\n amount\n currencyCode\n }\n product {\n title\n handle\n }\n }\n`;\n\nconst CART_FRAGMENT = `#graphql\nfragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: 100, reverse: true) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPriceV2 {\n ...MoneyFragment\n }\n priceV2 {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n}\n\nfragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n}\nfragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n}\n`;\n\n// shop primary domain url for /admin\nexport async function getPrimaryShopDomain({storefront}: AppLoadContext) {\n const data = await storefront.query<{shop: Shop}>(SHOP_PRIMARY_DOMAIN_QUERY);\n\n invariant(data?.shop?.primaryDomain, 'Primary domain not found');\n\n return data.shop;\n}\n\nconst SHOP_PRIMARY_DOMAIN_QUERY = `#graphql\n query {\n shop {\n primaryDomain {\n url\n }\n }\n }\n`;\n\nexport const COLLECTION_CONTENT_FRAGMENT = `#graphql\n ${MEDIA_FRAGMENT}\n fragment CollectionContent on Collection {\n id\n handle\n title\n descriptionHtml\n heading: metafield(namespace: \"hero\", key: \"title\") {\n value\n }\n byline: metafield(namespace: \"hero\", key: \"byline\") {\n value\n }\n cta: metafield(namespace: \"hero\", key: \"cta\") {\n value\n }\n spread: metafield(namespace: \"hero\", key: \"spread\") {\n reference {\n ...Media\n }\n }\n spreadSecondary: metafield(namespace: \"hero\", key: \"spread_secondary\") {\n reference {\n ...Media\n }\n }\n }\n`;\n\n/*\n Account ------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n*/\n\nconst LOGIN_MUTATION = `#graphql\n mutation customerAccessTokenCreate($input: CustomerAccessTokenCreateInput!) {\n customerAccessTokenCreate(input: $input) {\n customerUserErrors {\n code\n field\n message\n }\n customerAccessToken {\n accessToken\n expiresAt\n }\n }\n }\n`;\n\nexport async function login(\n {storefront}: AppLoadContext,\n {\n email,\n password,\n }: {\n email: string;\n password: string;\n },\n) {\n const data = await storefront.mutate<{\n customerAccessTokenCreate: CustomerAccessTokenCreatePayload;\n }>(LOGIN_MUTATION, {\n variables: {\n input: {\n email,\n password,\n },\n },\n });\n\n if (data?.customerAccessTokenCreate?.customerAccessToken?.accessToken) {\n return data.customerAccessTokenCreate.customerAccessToken.accessToken;\n }\n\n /**\n * Something is wrong with the user's input.\n */\n throw new Error(\n data?.customerAccessTokenCreate?.customerUserErrors.join(', '),\n );\n}\n\nconst CUSTOMER_CREATE_MUTATION = `#graphql\n mutation customerCreate($input: CustomerCreateInput!) {\n customerCreate(input: $input) {\n customer {\n id\n }\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function registerCustomer(\n {storefront}: AppLoadContext,\n {\n email,\n password,\n }: {\n email: string;\n password: string;\n },\n) {\n const data = await storefront.mutate<{\n customerCreate: CustomerCreatePayload;\n }>(CUSTOMER_CREATE_MUTATION, {\n variables: {\n input: {\n email,\n password,\n },\n },\n });\n\n if (data?.customerCreate?.customer?.id) {\n return data.customerCreate.customer.id;\n }\n\n /**\n * Something is wrong with the user's input.\n */\n throw new Error(data?.customerCreate?.customerUserErrors.join(', '));\n}\n\nconst CUSTOMER_RECOVER_MUTATION = `#graphql\n mutation customerRecover($email: String!) {\n customerRecover(email: $email) {\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function sendPasswordResetEmail(\n {storefront}: AppLoadContext,\n {email}: {email: string},\n) {\n await storefront.mutate<{\n customerRecover: CustomerRecoverPayload;\n }>(CUSTOMER_RECOVER_MUTATION, {\n variables: {email},\n });\n\n // User doesn't exist but we don't need to notify that.\n return null;\n}\n\nconst CUSTOMER_RESET_MUTATION = `#graphql\n mutation customerReset($id: ID!, $input: CustomerResetInput!) {\n customerReset(id: $id, input: $input) {\n customerAccessToken {\n accessToken\n expiresAt\n }\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function resetPassword(\n {storefront}: AppLoadContext,\n {\n id,\n resetToken,\n password,\n }: {\n id: string;\n resetToken: string;\n password: string;\n },\n) {\n const data = await storefront.mutate<{\n customerReset: CustomerResetPayload;\n }>(CUSTOMER_RESET_MUTATION, {\n variables: {\n id: `gid://shopify/Customer/${id}`,\n input: {\n password,\n resetToken,\n },\n },\n });\n\n if (data?.customerReset?.customerAccessToken) {\n return data.customerReset.customerAccessToken;\n }\n\n /**\n * Something is wrong with the user's input.\n */\n throw new Error(data?.customerReset?.customerUserErrors.join(', '));\n}\n\nconst CUSTOMER_ACTIVATE_MUTATION = `#graphql\n mutation customerActivate($id: ID!, $input: CustomerActivateInput!) {\n customerActivate(id: $id, input: $input) {\n customerAccessToken {\n accessToken\n expiresAt\n }\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function activateAccount(\n {storefront}: AppLoadContext,\n {\n id,\n password,\n activationToken,\n }: {\n id: string;\n password: string;\n activationToken: string;\n },\n) {\n const data = await storefront.mutate<{\n customerActivate: CustomerActivatePayload;\n }>(CUSTOMER_ACTIVATE_MUTATION, {\n variables: {\n id: `gid://shopify/Customer/${id}`,\n input: {\n password,\n activationToken,\n },\n },\n });\n\n if (data?.customerActivate?.customerAccessToken) {\n return data.customerActivate.customerAccessToken;\n }\n\n /**\n * Something is wrong with the user's input.\n */\n throw new Error(data?.customerActivate?.customerUserErrors.join(', '));\n}\n\nconst CUSTOMER_QUERY = `#graphql\n query CustomerDetails(\n $customerAccessToken: String!\n $country: CountryCode\n $language: LanguageCode\n ) @inContext(country: $country, language: $language) {\n customer(customerAccessToken: $customerAccessToken) {\n firstName\n lastName\n phone\n email\n defaultAddress {\n id\n formatted\n firstName\n lastName\n company\n address1\n address2\n country\n province\n city\n zip\n phone\n }\n addresses(first: 6) {\n edges {\n node {\n id\n formatted\n firstName\n lastName\n company\n address1\n address2\n country\n province\n city\n zip\n phone\n }\n }\n }\n orders(first: 250, sortKey: PROCESSED_AT, reverse: true) {\n edges {\n node {\n id\n orderNumber\n processedAt\n financialStatus\n fulfillmentStatus\n currentTotalPrice {\n amount\n currencyCode\n }\n lineItems(first: 2) {\n edges {\n node {\n variant {\n image {\n url\n altText\n height\n width\n }\n }\n title\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n\nconst CUSTOMER_ORDER_QUERY = `#graphql\n fragment Money on MoneyV2 {\n amount\n currencyCode\n }\n fragment AddressFull on MailingAddress {\n address1\n address2\n city\n company\n country\n countryCodeV2\n firstName\n formatted\n id\n lastName\n name\n phone\n province\n provinceCode\n zip\n }\n fragment DiscountApplication on DiscountApplication {\n value {\n ... on MoneyV2 {\n amount\n currencyCode\n }\n ... on PricingPercentageValue {\n percentage\n }\n }\n }\n fragment Image on Image {\n altText\n height\n src: url(transform: {crop: CENTER, maxHeight: 96, maxWidth: 96, scale: 2})\n id\n width\n }\n fragment ProductVariant on ProductVariant {\n id\n image {\n ...Image\n }\n priceV2 {\n ...Money\n }\n product {\n handle\n }\n sku\n title\n }\n fragment LineItemFull on OrderLineItem {\n title\n quantity\n discountAllocations {\n allocatedAmount {\n ...Money\n }\n discountApplication {\n ...DiscountApplication\n }\n }\n originalTotalPrice {\n ...Money\n }\n discountedTotalPrice {\n ...Money\n }\n variant {\n ...ProductVariant\n }\n }\n\n query CustomerOrder(\n $country: CountryCode\n $language: LanguageCode\n $orderId: ID!\n ) @inContext(country: $country, language: $language) {\n node(id: $orderId) {\n ... on Order {\n id\n name\n orderNumber\n processedAt\n fulfillmentStatus\n totalTaxV2 {\n ...Money\n }\n totalPriceV2 {\n ...Money\n }\n subtotalPriceV2 {\n ...Money\n }\n shippingAddress {\n ...AddressFull\n }\n discountApplications(first: 100) {\n nodes {\n ...DiscountApplication\n }\n }\n lineItems(first: 100) {\n nodes {\n ...LineItemFull\n }\n }\n }\n }\n }\n`;\n\nexport async function getCustomerOrder(\n {storefront}: AppLoadContext,\n {\n orderId,\n }: {\n orderId: string;\n },\n): Promise<Order | undefined> {\n const data = await storefront.query<{\n node: Order;\n }>(CUSTOMER_ORDER_QUERY, {\n variables: {\n orderId,\n country: storefront.i18n?.country,\n language: storefront.i18n?.language,\n },\n });\n\n return data?.node;\n}\n\nexport async function getCustomer(\n context: AppLoadContext,\n {\n request,\n customerAccessToken,\n }: {\n request: Request;\n customerAccessToken: string;\n },\n) {\n const {storefront} = context;\n\n const data = await storefront.query<{\n customer: Customer;\n }>(CUSTOMER_QUERY, {\n variables: {\n customerAccessToken,\n country: context.storefront.i18n?.country,\n language: context.storefront.i18n?.language,\n },\n });\n\n /**\n * If the customer failed to load, we assume their access token is invalid.\n */\n if (!data || !data.customer) {\n throw await logout(request, context);\n }\n\n return data.customer;\n}\n\nconst CUSTOMER_UPDATE_MUTATION = `#graphql\n mutation customerUpdate($customerAccessToken: String!, $customer: CustomerUpdateInput!) {\n customerUpdate(customerAccessToken: $customerAccessToken, customer: $customer) {\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n `;\n\nexport async function updateCustomer(\n {storefront}: AppLoadContext,\n {\n customerAccessToken,\n customer,\n }: {\n customerAccessToken: string;\n customer: CustomerUpdateInput;\n },\n): Promise<void> {\n const data = await storefront.mutate<{\n customerUpdate: CustomerUpdatePayload;\n }>(CUSTOMER_UPDATE_MUTATION, {\n variables: {\n customerAccessToken,\n customer,\n },\n });\n\n assertApiErrors(data.customerUpdate);\n}\n\nconst UPDATE_ADDRESS_MUTATION = `#graphql\n mutation customerAddressUpdate(\n $address: MailingAddressInput!\n $customerAccessToken: String!\n $id: ID!\n ) {\n customerAddressUpdate(\n address: $address\n customerAccessToken: $customerAccessToken\n id: $id\n ) {\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function updateCustomerAddress(\n {storefront}: AppLoadContext,\n {\n customerAccessToken,\n addressId,\n address,\n }: {\n customerAccessToken: string;\n addressId: string;\n address: MailingAddressInput;\n },\n): Promise<void> {\n const data = await storefront.mutate<{\n customerAddressUpdate: CustomerAddressUpdatePayload;\n }>(UPDATE_ADDRESS_MUTATION, {\n variables: {\n customerAccessToken,\n id: addressId,\n address,\n },\n });\n\n assertApiErrors(data.customerAddressUpdate);\n}\n\nconst DELETE_ADDRESS_MUTATION = `#graphql\n mutation customerAddressDelete($customerAccessToken: String!, $id: ID!) {\n customerAddressDelete(customerAccessToken: $customerAccessToken, id: $id) {\n customerUserErrors {\n code\n field\n message\n }\n deletedCustomerAddressId\n }\n }\n`;\n\nexport async function deleteCustomerAddress(\n {storefront}: AppLoadContext,\n {\n customerAccessToken,\n addressId,\n }: {\n customerAccessToken: string;\n addressId: string;\n },\n): Promise<void> {\n const data = await storefront.mutate<{\n customerAddressDelete: CustomerAddressDeletePayload;\n }>(DELETE_ADDRESS_MUTATION, {\n variables: {\n customerAccessToken,\n id: addressId,\n },\n });\n\n assertApiErrors(data.customerAddressDelete);\n}\n\nconst UPDATE_DEFAULT_ADDRESS_MUTATION = `#graphql\n mutation customerDefaultAddressUpdate(\n $addressId: ID!\n $customerAccessToken: String!\n ) {\n customerDefaultAddressUpdate(\n addressId: $addressId\n customerAccessToken: $customerAccessToken\n ) {\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function updateCustomerDefaultAddress(\n {storefront}: AppLoadContext,\n {\n customerAccessToken,\n addressId,\n }: {\n customerAccessToken: string;\n addressId: string;\n },\n): Promise<void> {\n const data = await storefront.mutate<{\n customerDefaultAddressUpdate: CustomerDefaultAddressUpdatePayload;\n }>(UPDATE_DEFAULT_ADDRESS_MUTATION, {\n variables: {\n customerAccessToken,\n addressId,\n },\n });\n\n assertApiErrors(data.customerDefaultAddressUpdate);\n}\n\nconst CREATE_ADDRESS_MUTATION = `#graphql\n mutation customerAddressCreate(\n $address: MailingAddressInput!\n $customerAccessToken: String!\n ) {\n customerAddressCreate(\n address: $address\n customerAccessToken: $customerAccessToken\n ) {\n customerAddress {\n id\n }\n customerUserErrors {\n code\n field\n message\n }\n }\n }\n`;\n\nexport async function createCustomerAddress(\n {storefront}: AppLoadContext,\n {\n customerAccessToken,\n address,\n }: {\n customerAccessToken: string;\n address: MailingAddressInput;\n },\n): Promise<string> {\n const data = await storefront.mutate<{\n customerAddressCreate: CustomerAddressCreatePayload;\n }>(CREATE_ADDRESS_MUTATION, {\n variables: {\n customerAccessToken,\n address,\n },\n });\n\n assertApiErrors(data.customerAddressCreate);\n\n invariant(\n data?.customerAddressCreate?.customerAddress?.id,\n 'Expected customer address to be created',\n );\n\n return data.customerAddressCreate.customerAddress.id;\n}\n"],
|
|
5
|
+
"mappings": "AAwGO,IAAMA,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCjBC,EAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCxBC,EAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EA6JjC,IAAMC,EAA8B;AAAA,IACvCC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": ["MEDIA_FRAGMENT", "PRODUCT_CARD_FRAGMENT", "PRODUCT_VARIANT_FRAGMENT", "COLLECTION_CONTENT_FRAGMENT", "MEDIA_FRAGMENT"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as P,b as y}from"/build/_shared/chunk-KSKV5IK6.js";import{b as h}from"/build/_shared/chunk-X4LCECW4.js";function Y(r){if(!r){let o=`flattenConnection(): needs a 'connection' to flatten, but received '${r}' instead`;return console.error(o),[]}return r.nodes?r.nodes:r.edges?r.edges.map(o=>{if(!o?.node)throw new Error("Connection edges must contain nodes");return o.node}):[]}var K=["cdn.shopify.com","cdn.shopifycdn.net","shopify-assets.shopifycdn.com","shopify-assets.shopifycdn.net"],X=["spin.dev"],ee=[...K,...X],b=[352,832,1200,1920,2560];function D({src:r,width:o,height:t,crop:i,scale:a}){let u=new URL(r),s=a??1;if(o){let c;typeof o=="string"?c=(b[0]*s).toString():c=(Number(o)*s).toString(),u.searchParams.append("width",c)}return t&&typeof t=="number"&&u.searchParams.append("height",(t*s).toString()),i&&u.searchParams.append("crop",i),u.toString()}function k(r){let o=new URL(r.src);return!ee.some(i=>o.hostname.endsWith(i))||!r.width&&!r.height&&!r.crop&&!r.scale?r.src:D(r)}function j({data:r,loaderOptions:o,elementProps:t}){var i,a,u,s,c,m;let l=null;return r?.width&&r?.height&&(l=r?.width/r?.height),o?.width||o?.height?{width:(i=o?.width)!=null?i:l&&typeof o.height=="number"?Math.round(l*o.height):null,height:(a=o?.height)!=null?a:l&&typeof o.width=="number"?Math.round(l*o.width):null}:t?.width||t?.height?{width:(u=t?.width)!=null?u:l&&typeof t.height=="number"?Math.round(l*t.height):null,height:(s=t?.height)!=null?s:l&&typeof t.width=="number"?Math.round(l*t.width):null}:r?.width||r?.height?{width:(c=r?.width)!=null?c:null,height:(m=r?.height)!=null?m:null}:{width:null,height:null}}var B=h(y(),1);function F({data:r,width:o,height:t,loading:i,loader:a=k,loaderOptions:u,widths:s,decoding:c="async",...m}){var l,f,d,n,p,g;if(!r.url){let T=`<Image/>: the 'data' prop requires the 'url' property. Image: ${(l=r.id)!=null?l:"no ID provided"}`;return console.error(T),null}let{width:v,height:S}=j({data:r,loaderOptions:u,elementProps:{width:o,height:t}}),w=r.url;if(a&&(w=a({...u,src:r.url,width:v,height:S}),typeof w!="string"||!w))throw new Error(`<Image/>: 'loader' did not return a valid string. Image: ${(f=r.id)!=null?f:r.url}`);let e=o&&v&&o<v?o:v,U=(d=m.srcSet)!=null?d:re({...u,widths:s,src:r.url,width:e,height:S,loader:a});return(0,B.jsx)("img",{id:(n=r.id)!=null?n:"",alt:(g=(p=r.altText)!=null?p:m.alt)!=null?g:"",loading:i??"lazy",...m,src:w,width:v??void 0,height:S??void 0,srcSet:U,decoding:c})}function re({src:r,width:o,crop:t,scale:i,widths:a,loader:u,height:s}){let c=a&&Array.isArray(a);if(c&&a.some(d=>isNaN(d)))throw new Error(`<Image/>: the 'widths' must be an array of numbers. Image: ${r}`);let m=1;o&&s&&(m=Number(s)/Number(o));let l=c?a:b;!c&&o&&o<b[b.length-1]&&(l=b.filter(d=>d<=o));let f=u||D;return l.map(d=>`${f({src:r,width:d,height:t?Number(d)*m:void 0,crop:t,scale:i})} ${d}w`).join(", ")}var L=h(P(),1);var C=h(P(),1);var $="2022-10";var oe=h(y(),1),te=(0,C.createContext)({storeDomain:"test.myshopify.com",storefrontToken:"abc123",storefrontApiVersion:$,country:{isoCode:"US"},language:{isoCode:"EN"},locale:"EN-US",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}}});function V(){let r=(0,C.useContext)(te);if(!r)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return r}function N(r){let{locale:o}=V();if(!o)throw new Error("useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work");let t=parseFloat(r.amount),i=(0,L.useMemo)(()=>({style:"currency",currency:r.currencyCode}),[r.currencyCode]),a=E(o,i),u=E(o,{...i,currencyDisplay:"name"}),s=E(o,{...i,currencyDisplay:"narrowSymbol"}),c=E(o,{...i,minimumFractionDigits:0,maximumFractionDigits:0}),m=E(o),l=E(o,{minimumFractionDigits:0,maximumFractionDigits:0}),f=n=>n.type==="currency",d=(0,L.useMemo)(()=>({original:()=>r,currencyCode:()=>r.currencyCode,localizedString:()=>a().format(t),parts:()=>a().formatToParts(t),withoutTrailingZeros:()=>t%1===0?c().format(t):a().format(t),withoutTrailingZerosAndCurrency:()=>t%1===0?l().format(t):m().format(t),currencyName:()=>{var n,p;return(p=(n=u().formatToParts(t).find(f))==null?void 0:n.value)!=null?p:r.currencyCode},currencySymbol:()=>{var n,p;return(p=(n=a().formatToParts(t).find(f))==null?void 0:n.value)!=null?p:r.currencyCode},currencyNarrowSymbol:()=>{var n,p;return(p=(n=s().formatToParts(t).find(f))==null?void 0:n.value)!=null?p:""},amount:()=>a().formatToParts(t).filter(n=>["decimal","fraction","group","integer","literal"].includes(n.type)).map(n=>n.value).join("")}),[r,t,u,a,s,m,c,l]);return(0,L.useMemo)(()=>new Proxy(d,{get:(n,p)=>{var g;return(g=Reflect.get(n,p))==null?void 0:g.call(null)}}),[d])}function E(r,o){return(0,L.useMemo)(()=>{let t;return()=>t??(t=new Intl.NumberFormat(r,o))},[r,o])}var x=h(y(),1);function ne({data:r,as:o,withoutCurrency:t,withoutTrailingZeros:i,measurement:a,measurementSeparator:u="/",...s}){if(!ie(r))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");let c=N(r),m=o??"div",l=c.localizedString;return(t||i)&&(t&&!i?l=c.amount:!t&&i?l=c.withoutTrailingZeros:l=c.withoutTrailingZerosAndCurrency),(0,x.jsxs)(m,{...s,children:[l,a&&a.referenceUnit&&(0,x.jsxs)(x.Fragment,{children:[u,a.referenceUnit]})]})}function ie(r){return typeof r.amount=="string"&&!!r.amount&&typeof r.currencyCode=="string"&&!!r.currencyCode}var A=h(P(),1),q={};function ae(r,o){let t=q[r];if(t)return t;let i=new Promise((a,u)=>{let s=document.createElement("script");o?.module?s.type="module":s.type="text/javascript",s.src=r,s.onload=()=>{a(!0)},s.onerror=()=>{u(!1)},o?.in==="head"?document.head.appendChild(s):document.body.appendChild(s)});return q[r]=i,i}function I(r,o){let[t,i]=(0,A.useState)("loading"),a=JSON.stringify(o);return(0,A.useEffect)(()=>{async function u(){try{i("loading"),await ae(r,o),i("done")}catch{i("error")}}u()},[r,a,o]),t}var R=h(y(),1),le="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function se({variantIds:r,className:o,variantIdsAndQuantities:t,width:i}){let{storeDomain:a}=V(),u=I(le),s;if(r&&t)throw new Error(de);if(r)s=r.reduce((m,l)=>{let f=H(l);return f&&m.push(f),m},[]);else if(t)s=t.reduce((m,l)=>{var f;let d=H(l?.id);return d&&m.push(`${d}:${(f=l?.quantity)!=null?f:1}`),m},[]);else throw new Error(ue);return(0,R.jsx)("div",{className:o,style:i?{"--shop-pay-button-width":i}:void 0,children:u==="done"&&(0,R.jsx)("shop-pay-button",{"store-url":`https://${a}`,variants:s.join(",")})})}function H(r){if(!!r)return r.split("/").pop()}var ue='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',de="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component";var z=h(y(),1);function G(r){var o,t;let{data:i,options:a,id:u=i.id,frameBorder:s="0",allow:c="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:m=!0,loading:l="lazy",...f}=r;if(!i.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let d=i.embedUrl;if(a){let n=new URL(i.embedUrl);for(let p of Object.keys(a))n.searchParams.set(p,a[p]);d=n.toString()}return(0,z.jsx)("iframe",{...f,id:u??i.embedUrl,title:(t=(o=i.alt)!=null?o:i.id)!=null?t:"external video",frameBorder:s,allow:c,allowFullScreen:m,src:d,loading:l})}var W=h(P(),1),Z=h(y(),1);function Q(r){var o,t;let{data:i,previewImageOptions:a,id:u=i.id,playsInline:s=!0,controls:c=!0,sourceProps:m={},...l}=r,f=k({src:(t=(o=i.previewImage)==null?void 0:o.url)!=null?t:"",...a});if(!i.sources)throw new Error("<Video/> requires a 'data.sources' array");return(0,Z.jsx)("video",{...l,id:u,playsInline:s,controls:c,poster:f,children:i.sources.map(d=>{if(!(d?.url&&d?.mimeType))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return(0,W.createElement)("source",{...m,key:d.url,src:d.url,type:d.mimeType})})})}var _=h(P(),1);var O=h(y(),1);function J(r){var o,t,i,a,u,s,c,m,l,f,d;let[n,p]=(0,_.useState)(void 0),g=(0,_.useCallback)(T=>{p(T)},[]),{data:v,children:S,className:w,...e}=r,U=I("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return(0,_.useEffect)(()=>{if(!!n)return e.onError&&n.addEventListener("error",e.onError),e.onLoad&&n.addEventListener("load",e.onLoad),e.onPreload&&n.addEventListener("preload",e.onPreload),e.onModelVisibility&&n.addEventListener("model-visibility",e.onModelVisibility),e.onProgress&&n.addEventListener("progress",e.onProgress),e.onArStatus&&n.addEventListener("ar-status",e.onArStatus),e.onArTracking&&n.addEventListener("ar-tracking",e.onArTracking),e.onQuickLookButtonTapped&&n.addEventListener("quick-look-button-tapped",e.onQuickLookButtonTapped),e.onCameraChange&&n.addEventListener("camera-change",e.onCameraChange),e.onEnvironmentChange&&n.addEventListener("environment-change",e.onEnvironmentChange),e.onPlay&&n.addEventListener("play",e.onPlay),e.onPause&&n.addEventListener("ar-status",e.onPause),e.onSceneGraphReady&&n.addEventListener("scene-graph-ready",e.onSceneGraphReady),()=>{n!=null&&(e.onError&&n.removeEventListener("error",e.onError),e.onLoad&&n.removeEventListener("load",e.onLoad),e.onPreload&&n.removeEventListener("preload",e.onPreload),e.onModelVisibility&&n.removeEventListener("model-visibility",e.onModelVisibility),e.onProgress&&n.removeEventListener("progress",e.onProgress),e.onArStatus&&n.removeEventListener("ar-status",e.onArStatus),e.onArTracking&&n.removeEventListener("ar-tracking",e.onArTracking),e.onQuickLookButtonTapped&&n.removeEventListener("quick-look-button-tapped",e.onQuickLookButtonTapped),e.onCameraChange&&n.removeEventListener("camera-change",e.onCameraChange),e.onEnvironmentChange&&n.removeEventListener("environment-change",e.onEnvironmentChange),e.onPlay&&n.removeEventListener("play",e.onPlay),e.onPause&&n.removeEventListener("ar-status",e.onPause),e.onSceneGraphReady&&n.removeEventListener("scene-graph-ready",e.onSceneGraphReady))}},[n,e.onArStatus,e.onArTracking,e.onCameraChange,e.onEnvironmentChange,e.onError,e.onLoad,e.onModelVisibility,e.onPause,e.onPlay,e.onPreload,e.onProgress,e.onQuickLookButtonTapped,e.onSceneGraphReady]),U!=="done"?null:(t=(o=v.sources)==null?void 0:o[0])!=null&&t.url?(0,O.jsx)("model-viewer",{ref:g,...e,className:w,id:(i=e.id)!=null?i:v.id,src:v.sources[0].url,alt:(a=v.alt)!=null?a:null,"camera-controls":(u=e.cameraControls)!=null?u:!0,poster:(c=e.poster||((s=v.previewImage)==null?void 0:s.url))!=null?c:null,autoplay:(m=e.autoplay)!=null?m:!0,loading:e.loading,reveal:e.reveal,ar:e.ar,"ar-modes":e.arModes,"ar-scale":e.arScale,"ar-placement":e.arPlacement,"ios-src":e.iosSrc,"touch-action":e.touchAction,"disable-zoom":e.disableZoom,"orbit-sensitivity":e.orbitSensitivity,"auto-rotate":e.autoRotate,"auto-rotate-delay":e.autoRotateDelay,"rotation-per-second":e.rotationPerSecond,"interaction-policy":e.interactionPolicy,"interaction-prompt":e.interactionPrompt,"interaction-prompt-style":e.interactionPromptStyle,"interaction-prompt-threshold":e.interactionPromptThreshold,"camera-orbit":e.cameraOrbit,"camera-target":e.cameraTarget,"field-of-view":e.fieldOfView,"max-camera-orbit":e.maxCameraOrbit,"min-camera-orbit":e.minCameraOrbit,"max-field-of-view":e.maxFieldOfView,"min-field-of-view":e.minFieldOfView,bounds:e.bounds,"interpolation-decay":(l=e.interpolationDecay)!=null?l:100,"skybox-image":e.skyboxImage,"environment-image":e.environmentImage,exposure:e.exposure,"shadow-intensity":(f=e.shadowIntensity)!=null?f:0,"shadow-softness":(d=e.shadowSoftness)!=null?d:0,"animation-name":e.animationName,"animation-crossfade-duration":e.animationCrossfadeDuration,"variant-name":e.variantName,orientation:e.orientation,scale:e.scale,children:S}):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}var M=h(y(),1);function ce({data:r,mediaOptions:o,...t}){switch(r.__typename){case"MediaImage":return r.image?(0,M.jsx)(F,{...t,...o?.image,data:r.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return(0,M.jsx)(Q,{...t,...o?.video,data:r});case"ExternalVideo":return(0,M.jsx)(G,{...t,...o?.externalVideo,data:r});case"Model3d":return(0,M.jsx)(J,{...t,...o?.modelViewer,data:r});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default"),null}}export{Y as a,F as b,ce as c,N as d,ne as e,se as f};
|
|
2
|
+
//# sourceMappingURL=/build/_shared/chunk-6IZ7NY57.js.map
|