shopify-cli 2.18.1 → 2.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/ISSUE_TEMPLATE/bug_report.yaml +2 -1
 - data/.github/ISSUE_TEMPLATE/config.yml +9 -0
 - data/.github/workflows/cla.yml +22 -0
 - data/CHANGELOG.md +23 -2
 - data/Gemfile.lock +4 -4
 - data/README.md +7 -6
 - data/dev.yml +0 -1
 - data/docs/users/installation.md +1 -1
 - data/lib/project_types/extension/messages/messages.rb +1 -1
 - data/lib/project_types/extension/models/development_server_requirements.rb +1 -6
 - data/lib/project_types/extension/tasks/fetch_specifications.rb +4 -1
 - data/lib/project_types/script/commands/create.rb +1 -1
 - data/lib/project_types/script/config/extension_points.yml +15 -15
 - data/lib/project_types/script/forms/ask_app.rb +0 -5
 - data/lib/project_types/script/layers/domain/metadata.rb +3 -5
 - data/lib/project_types/script/layers/infrastructure/script_service.rb +1 -1
 - data/lib/project_types/theme/commands/push.rb +3 -1
 - data/lib/project_types/theme/commands/serve.rb +1 -0
 - data/lib/project_types/theme/messages/messages.rb +39 -2
 - data/lib/shopify_cli/assets/post_auth_page/index.html.erb +34 -0
 - data/lib/shopify_cli/assets/post_auth_page/style.css +58 -0
 - data/lib/shopify_cli/identity_auth/servlet.rb +4 -20
 - data/lib/shopify_cli/messages/messages.rb +6 -8
 - data/lib/shopify_cli/theme/dev_server/hot-reload-no-script.html +27 -0
 - data/lib/shopify_cli/theme/dev_server/hot-reload.js +16 -4
 - data/lib/shopify_cli/theme/dev_server/hot_reload.rb +2 -0
 - data/lib/shopify_cli/theme/dev_server.rb +3 -2
 - data/lib/shopify_cli/theme/file.rb +5 -0
 - data/lib/shopify_cli/theme/syncer/json_update_handler.rb +21 -7
 - data/lib/shopify_cli/theme/syncer/operation.rb +7 -6
 - data/lib/shopify_cli/theme/syncer/unsupported_script_warning.rb +90 -0
 - data/lib/shopify_cli/theme/syncer.rb +81 -31
 - data/lib/shopify_cli/theme/theme_admin_api.rb +16 -11
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/bulk.rb +102 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/bulk_job.rb +75 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/errors.rb +7 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/put_request.rb +52 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/request_parser.rb +39 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler/response_parser.rb +21 -0
 - data/lib/shopify_cli/theme/theme_admin_api_throttler.rb +62 -0
 - data/lib/shopify_cli/version.rb +1 -1
 - data/shopify-cli.gemspec +1 -1
 - metadata +18 -6
 - data/.github/probots.yml +0 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 2bab2227e665dd4dec8e90ca261705072971a838f85d19bcbb85d18ed1a1d5b0
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 90e22472586a681a26974882b79ac3fd326fdcf696db2aa29201ab5d9a37c2b0
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 24701865a98be1b3062ff7644fff3d35b61532803e96c39d84c7fae636b8205531e57e41641d1222dbd09275288e4dee2f2f94c837d58846212a0f4ed1643b28
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6e5c53ef75f07879d338692ce9271749002c13f8174a19fe3857b3396ec1512a2368770ec50bd24de2a0c9dc325dddb5b3547564c79cc360a40d1b19b35d2c50
         
     | 
| 
         @@ -13,8 +13,9 @@ body: 
     | 
|
| 
       13 
13 
     | 
    
         
             
                id: preflight_checks
         
     | 
| 
       14 
14 
     | 
    
         
             
                attributes:
         
     | 
| 
       15 
15 
     | 
    
         
             
                  label: |-
         
     | 
| 
       16 
     | 
    
         
            -
                    Please confirm that you 
     | 
| 
      
 16 
     | 
    
         
            +
                    Please confirm that you:
         
     | 
| 
       17 
17 
     | 
    
         
             
                  options:
         
     | 
| 
      
 18 
     | 
    
         
            +
                    - label: Are working with Shopify CLI 2.0, not 3.0. (You can [open a 3.0 issue here](https://github.com/Shopify/cli/issues/new/choose).)
         
     | 
| 
       18 
19 
     | 
    
         
             
                    - label: Searched [existing issues](https://github.com/Shopify/shopify-cli/issues) to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
         
     | 
| 
       19 
20 
     | 
    
         
             
                      required: true
         
     | 
| 
       20 
21 
     | 
    
         
             
                    - label: Reproduced the issue in [the latest CLI version](https://github.com/Shopify/shopify-cli/releases).
         
     | 
| 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            blank_issues_enabled: true
         
     | 
| 
      
 2 
     | 
    
         
            +
            contact_links:
         
     | 
| 
      
 3 
     | 
    
         
            +
              - name: Shopify Partners Community 🙌
         
     | 
| 
      
 4 
     | 
    
         
            +
                url: https://www.shopify.com/partners/community#conversation
         
     | 
| 
      
 5 
     | 
    
         
            +
                about: Connect with Shopify and other Shopify Partners through our online communities!
         
     | 
| 
      
 6 
     | 
    
         
            +
              - name: Shopify CLI 3.0 issues 📝
         
     | 
| 
      
 7 
     | 
    
         
            +
                url: https://www.github.com/Shopify/cli/issues/new/choose
         
     | 
| 
      
 8 
     | 
    
         
            +
                about: |-
         
     | 
| 
      
 9 
     | 
    
         
            +
                  You're about to open an issue about Shopify CLI 2.0. Are you actually using our new CLI? If so, please create an issue there instead.
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            name: Contributor License Agreement (CLA)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            on:
         
     | 
| 
      
 4 
     | 
    
         
            +
              pull_request_target:
         
     | 
| 
      
 5 
     | 
    
         
            +
                types: [opened, synchronize]
         
     | 
| 
      
 6 
     | 
    
         
            +
              issue_comment:
         
     | 
| 
      
 7 
     | 
    
         
            +
                types: [created]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            jobs:
         
     | 
| 
      
 10 
     | 
    
         
            +
              cla:
         
     | 
| 
      
 11 
     | 
    
         
            +
                runs-on: ubuntu-latest
         
     | 
| 
      
 12 
     | 
    
         
            +
                if: |
         
     | 
| 
      
 13 
     | 
    
         
            +
                  (github.event.issue.pull_request 
         
     | 
| 
      
 14 
     | 
    
         
            +
                    && !github.event.issue.pull_request.merged_at
         
     | 
| 
      
 15 
     | 
    
         
            +
                    && contains(github.event.comment.body, 'signed')
         
     | 
| 
      
 16 
     | 
    
         
            +
                  ) 
         
     | 
| 
      
 17 
     | 
    
         
            +
                  || (github.event.pull_request && !github.event.pull_request.merged)
         
     | 
| 
      
 18 
     | 
    
         
            +
                steps:
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - uses: Shopify/shopify-cla-action@v1
         
     | 
| 
      
 20 
     | 
    
         
            +
                    with:
         
     | 
| 
      
 21 
     | 
    
         
            +
                      github-token: ${{ secrets.GITHUB_TOKEN }}
         
     | 
| 
      
 22 
     | 
    
         
            +
                      cla-token: ${{ secrets.CLA_TOKEN }}
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -2,6 +2,26 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
            ## Version 2.20.1 - 2022-07-18
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 8 
     | 
    
         
            +
            * [#2458](https://github.com/Shopify/shopify-cli/pull/2458): Fix shop URL in unauthorized error message
         
     | 
| 
      
 9 
     | 
    
         
            +
            * [#2459](https://github.com/Shopify/shopify-cli/pull/2459): Fix `.json` file ignore issues with `shopify theme push`
         
     | 
| 
      
 10 
     | 
    
         
            +
            * [#2460](https://github.com/Shopify/shopify-cli/pull/2460): Fix job retries for .json theme file dependencies and support wider range of asset API errors
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ## Version 2.20.0 - 2022-07-11
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 15 
     | 
    
         
            +
            * [#2368](https://github.com/Shopify/shopify-cli/pull/2368): Add performance enhancements to the `theme serve` and `theme push` commands
         
     | 
| 
      
 16 
     | 
    
         
            +
            * [#2437](https://github.com/Shopify/shopify-cli/pull/2437): Add support to the `warnings` field in the assets API
         
     | 
| 
      
 17 
     | 
    
         
            +
            * [#2446](https://github.com/Shopify/shopify-cli/pull/2446): Show a friendly message when developers use a browser without SSE support
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 20 
     | 
    
         
            +
            * [#2418](https://github.com/Shopify/shopify-cli/pull/2418): Improve the help message of the `theme open -e/--editor` flag
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ### Changed
         
     | 
| 
      
 23 
     | 
    
         
            +
            * [#2444](https://github.com/Shopify/shopify-cli/pull/2444): Expose the `-s` option in the help text of `login`, `switch` etc.
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       5 
25 
     | 
    
         
             
            ## Version 2.18.0 - 2022-05-30
         
     | 
| 
       6 
26 
     | 
    
         | 
| 
       7 
27 
     | 
    
         
             
            ### Added
         
     | 
| 
         @@ -12,6 +32,7 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h 
     | 
|
| 
       12 
32 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       13 
33 
     | 
    
         
             
            * [#2352](https://github.com/Shopify/shopify-cli/pull/2352): Provide better DX when dealing with empty theme selection
         
     | 
| 
       14 
34 
     | 
    
         
             
            * [#2347](https://github.com/Shopify/shopify-cli/pull/2347): Fix #2346 Heroku CLI installation for Apple silicon
         
     | 
| 
      
 35 
     | 
    
         
            +
            * [#2422](https://github.com/Shopify/shopify-cli/pull/2422): Add Shopify branding and styling to post-authentication browser page
         
     | 
| 
       15 
36 
     | 
    
         | 
| 
       16 
37 
     | 
    
         
             
            ## Version 2.17.0 - 2022-05-12
         
     | 
| 
       17 
38 
     | 
    
         | 
| 
         @@ -42,7 +63,7 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h 
     | 
|
| 
       42 
63 
     | 
    
         | 
| 
       43 
64 
     | 
    
         
             
            ### Added
         
     | 
| 
       44 
65 
     | 
    
         
             
            * [#2189](https://github.com/Shopify/shopify-cli/pull/2189): Retrieve latest CLI version in the background
         
     | 
| 
       45 
     | 
    
         
            -
            * [#2263](https://github.com/Shopify/shopify-cli/pull/2263): Add `POS UI Extension` to support third party developers to extend POS smart grid functionality using native retail components. 
     | 
| 
      
 66 
     | 
    
         
            +
            * [#2263](https://github.com/Shopify/shopify-cli/pull/2263): Add `POS UI Extension` to support third party developers to extend POS smart grid functionality using native retail components.
         
     | 
| 
       46 
67 
     | 
    
         | 
| 
       47 
68 
     | 
    
         
             
            ### Changed
         
     | 
| 
       48 
69 
     | 
    
         
             
            * [#2272](https://github.com/Shopify/shopify-cli/pull/2272): Changed interactive apps list scope for extension create|register|connect commands
         
     | 
| 
         @@ -50,7 +71,7 @@ From version 2.6.0, the sections in this file adhere to the [keep a changelog](h 
     | 
|
| 
       50 
71 
     | 
    
         
             
            ## Version 2.15.6 - 2022-04-12
         
     | 
| 
       51 
72 
     | 
    
         | 
| 
       52 
73 
     | 
    
         
             
            ### Fixed
         
     | 
| 
       53 
     | 
    
         
            -
            * [#2246](https://github.com/Shopify/shopify-cli/pull/2246): Fix callback urls for app serve 
     | 
| 
      
 74 
     | 
    
         
            +
            * [#2246](https://github.com/Shopify/shopify-cli/pull/2246): Fix callback urls for app serve
         
     | 
| 
       54 
75 
     | 
    
         | 
| 
       55 
76 
     | 
    
         
             
            ## Version 2.15.5 - 2022-04-08
         
     | 
| 
       56 
77 
     | 
    
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                shopify-cli (2. 
     | 
| 
      
 4 
     | 
    
         
            +
                shopify-cli (2.20.1)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  bugsnag (~> 6.22)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  listen (~> 3.7.0)
         
     | 
| 
       7 
     | 
    
         
            -
                  theme-check (~> 1.10. 
     | 
| 
      
 7 
     | 
    
         
            +
                  theme-check (~> 1.10.3)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            GEM
         
     | 
| 
       10 
10 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
         @@ -108,7 +108,7 @@ GEM 
     | 
|
| 
       108 
108 
     | 
    
         
             
                  faraday (>= 0.9)
         
     | 
| 
       109 
109 
     | 
    
         
             
                  sawyer (~> 0.8.0, >= 0.5.3)
         
     | 
| 
       110 
110 
     | 
    
         
             
                parallel (1.21.0)
         
     | 
| 
       111 
     | 
    
         
            -
                parser (3.1. 
     | 
| 
      
 111 
     | 
    
         
            +
                parser (3.1.2.0)
         
     | 
| 
       112 
112 
     | 
    
         
             
                  ast (~> 2.4.1)
         
     | 
| 
       113 
113 
     | 
    
         
             
                pry (0.13.1)
         
     | 
| 
       114 
114 
     | 
    
         
             
                  coderay (~> 1.1)
         
     | 
| 
         @@ -150,7 +150,7 @@ GEM 
     | 
|
| 
       150 
150 
     | 
    
         
             
                  faraday (> 0.8, < 2.0)
         
     | 
| 
       151 
151 
     | 
    
         
             
                sys-uname (1.2.2)
         
     | 
| 
       152 
152 
     | 
    
         
             
                  ffi (~> 1.1)
         
     | 
| 
       153 
     | 
    
         
            -
                theme-check (1.10. 
     | 
| 
      
 153 
     | 
    
         
            +
                theme-check (1.10.3)
         
     | 
| 
       154 
154 
     | 
    
         
             
                  liquid (>= 5.1.0)
         
     | 
| 
       155 
155 
     | 
    
         
             
                  nokogiri (>= 1.12)
         
     | 
| 
       156 
156 
     | 
    
         
             
                  parser (~> 3)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
              <h1>Shopify CLI</h1>
         
     | 
| 
      
 1 
     | 
    
         
            +
            # Shopify CLI 2.0
         
     | 
| 
      
 2 
     | 
    
         
            +
              
         
     | 
| 
       4 
3 
     | 
    
         
             
              <a href=""><img src="https://github.com/shopify/shopify-cli/workflows/CI/badge.svg" alt="Shopify"></a>
         
     | 
| 
       5 
4 
     | 
    
         
             
              <img src="https://img.shields.io/github/v/release/shopify/shopify-cli?include_prereleases&style=flat-square" alt="Latest Version">
         
     | 
| 
       6 
5 
     | 
    
         
             
              <img src="https://img.shields.io/github/forks/shopify/shopify-cli?style=flat-square" alt="GitHub forks">
         
     | 
| 
         @@ -11,12 +10,14 @@ 
     | 
|
| 
       11 
10 
     | 
    
         
             
              <a href="http://twitter.com/ShopifyDevs"><img src="https://img.shields.io/twitter/follow/ShopifyDevs?style=flat-square" alt="Twitter Followers"></a>
         
     | 
| 
       12 
11 
     | 
    
         
             
              <img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License">
         
     | 
| 
       13 
12 
     | 
    
         
             
              <img src="https://img.shields.io/badge/Powered%20by-Ruby-red" alt="Powered by Ruby">
         
     | 
| 
       14 
     | 
    
         
            -
            </div>
         
     | 
| 
       15 
13 
     | 
    
         | 
| 
       16 
14 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            Shopify CLI  
     | 
| 
      
 15 
     | 
    
         
            +
            Shopify CLI 2.0 is a command line to help you build on Shopify. It's available as a Ruby gem and can be run and installed on Mac, Linux, and Windows systems.
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ## Note on Shopify CLI 2.0 versus Shopify CLI 3.0 ##
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            Use 2.0 for developing themes. For developing apps and custom storefronts, we recommend using [Shopify CLI 3.0](https://github.com/Shopify/cli).
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            Shopify CLI is available as a gem and can be run and installed on Mac, Linux and Windows systems.
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
            ## Installation 
         
     | 
| 
       22 
23 
     | 
    
         | 
    
        data/dev.yml
    CHANGED
    
    
    
        data/docs/users/installation.md
    CHANGED
    
    
| 
         @@ -183,7 +183,7 @@ module Extension 
     | 
|
| 
       183 
183 
     | 
    
         
             
                  },
         
     | 
| 
       184 
184 
     | 
    
         
             
                  errors: {
         
     | 
| 
       185 
185 
     | 
    
         
             
                    unknown_type: "Unknown extension type %s. Valid extension types include: CHECKOUT_POST_PURCHASE, " \
         
     | 
| 
       186 
     | 
    
         
            -
                    " 
     | 
| 
      
 186 
     | 
    
         
            +
                    "THEME_APP_EXTENSION, and PRODUCT_SUBSCRIPTION.",
         
     | 
| 
       187 
187 
     | 
    
         
             
                    package_not_found: "`%s` package not found.",
         
     | 
| 
       188 
188 
     | 
    
         
             
                    missing_push_options_ci: "The following are missing: %s. ",
         
     | 
| 
       189 
189 
     | 
    
         
             
                    missing_push_options_ci_solution: "To add them to a CI environment:\n\t1. Run a connect command " \
         
     | 
| 
         @@ -15,7 +15,7 @@ module Extension 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                  class << self
         
     | 
| 
       17 
17 
     | 
    
         
             
                    def supported?(type)
         
     | 
| 
       18 
     | 
    
         
            -
                      if type_supported?(type) &&  
     | 
| 
      
 18 
     | 
    
         
            +
                      if type_supported?(type) && beta_enabled?
         
     | 
| 
       19 
19 
     | 
    
         
             
                        return true if binary_installed?
         
     | 
| 
       20 
20 
     | 
    
         
             
                        warn_about_missing_binary
         
     | 
| 
       21 
21 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -31,11 +31,6 @@ module Extension 
     | 
|
| 
       31 
31 
     | 
    
         
             
                      SUPPORTED_EXTENSION_TYPES.include?(type.downcase)
         
     | 
| 
       32 
32 
     | 
    
         
             
                    end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
                    # Some types are enabled unconditionally; others require beta_enabled
         
     | 
| 
       35 
     | 
    
         
            -
                    def type_enabled?(type)
         
     | 
| 
       36 
     | 
    
         
            -
                      beta_enabled? || "checkout_ui_extension" == type.downcase
         
     | 
| 
       37 
     | 
    
         
            -
                    end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
34 
     | 
    
         
             
                    private
         
     | 
| 
       40 
35 
     | 
    
         | 
| 
       41 
36 
     | 
    
         
             
                    def binary_installed?
         
     | 
| 
         @@ -11,7 +11,10 @@ module Extension 
     | 
|
| 
       11 
11 
     | 
    
         
             
                      .query(context, "fetch_specifications", api_key: api_key)
         
     | 
| 
       12 
12 
     | 
    
         
             
                      .dig("data", "extensionSpecifications")
         
     | 
| 
       13 
13 
     | 
    
         
             
                    context.abort(context.message("tasks.errors.parse_error")) if response.nil?
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    response.reject do |line|
         
     | 
| 
      
 16 
     | 
    
         
            +
                      ::Extension::Features::Runtimes::CheckoutUiExtension::IDENTIFIERS.include?(line["identifier"].upcase)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
       15 
18 
     | 
    
         
             
                  end
         
     | 
| 
       16 
19 
     | 
    
         
             
                end
         
     | 
| 
       17 
20 
     | 
    
         
             
              end
         
     | 
| 
         @@ -25,7 +25,7 @@ module Script 
     | 
|
| 
       25 
25 
     | 
    
         
             
                    project = Layers::Application::CreateScript.call(
         
     | 
| 
       26 
26 
     | 
    
         
             
                      ctx: @ctx,
         
     | 
| 
       27 
27 
     | 
    
         
             
                      language: options.flags[:language]&.downcase || "wasm",
         
     | 
| 
       28 
     | 
    
         
            -
                      sparse_checkout_branch: options.flags[:branch] || " 
     | 
| 
      
 28 
     | 
    
         
            +
                      sparse_checkout_branch: options.flags[:branch] || "main",
         
     | 
| 
       29 
29 
     | 
    
         
             
                      title: form.title,
         
     | 
| 
       30 
30 
     | 
    
         
             
                      extension_point_type: form.extension_point,
         
     | 
| 
       31 
31 
     | 
    
         
             
                    )
         
     | 
| 
         @@ -4,57 +4,57 @@ payment_methods: 
     | 
|
| 
       4 
4 
     | 
    
         
             
                typescript:
         
     | 
| 
       5 
5 
     | 
    
         
             
                  beta: true
         
     | 
| 
       6 
6 
     | 
    
         
             
                  package: "@shopify/scripts-checkout-apis"
         
     | 
| 
       7 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 7 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       8 
8 
     | 
    
         
             
                wasm:
         
     | 
| 
       9 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 9 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       10 
10 
     | 
    
         
             
                rust:
         
     | 
| 
       11 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 11 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       12 
12 
     | 
    
         
             
            payment_customization:
         
     | 
| 
       13 
13 
     | 
    
         
             
              beta: true
         
     | 
| 
       14 
14 
     | 
    
         
             
              domain: 'checkout'
         
     | 
| 
       15 
15 
     | 
    
         
             
              libraries:
         
     | 
| 
       16 
16 
     | 
    
         
             
                wasm:
         
     | 
| 
       17 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 17 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       18 
18 
     | 
    
         
             
                rust:
         
     | 
| 
       19 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 19 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       20 
20 
     | 
    
         
             
            shipping_methods:
         
     | 
| 
       21 
21 
     | 
    
         
             
              domain: 'checkout'
         
     | 
| 
       22 
22 
     | 
    
         
             
              libraries:
         
     | 
| 
       23 
23 
     | 
    
         
             
                typescript:
         
     | 
| 
       24 
24 
     | 
    
         
             
                  beta: true
         
     | 
| 
       25 
25 
     | 
    
         
             
                  package: "@shopify/scripts-checkout-apis"
         
     | 
| 
       26 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 26 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       27 
27 
     | 
    
         
             
                wasm:
         
     | 
| 
       28 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 28 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       29 
29 
     | 
    
         
             
                rust:
         
     | 
| 
       30 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 30 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       31 
31 
     | 
    
         
             
            product_discounts:
         
     | 
| 
       32 
32 
     | 
    
         
             
              beta: true
         
     | 
| 
       33 
33 
     | 
    
         
             
              domain: 'discounts'
         
     | 
| 
       34 
34 
     | 
    
         
             
              libraries:
         
     | 
| 
       35 
35 
     | 
    
         
             
                wasm:
         
     | 
| 
       36 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 36 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       37 
37 
     | 
    
         
             
                rust:
         
     | 
| 
       38 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 38 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       39 
39 
     | 
    
         
             
            order_discounts:
         
     | 
| 
       40 
40 
     | 
    
         
             
              beta: true
         
     | 
| 
       41 
41 
     | 
    
         
             
              domain: 'discounts'
         
     | 
| 
       42 
42 
     | 
    
         
             
              libraries:
         
     | 
| 
       43 
43 
     | 
    
         
             
                wasm:
         
     | 
| 
       44 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 44 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       45 
45 
     | 
    
         
             
                rust:
         
     | 
| 
       46 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 46 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       47 
47 
     | 
    
         
             
            shipping_discounts:
         
     | 
| 
       48 
48 
     | 
    
         
             
              beta: true
         
     | 
| 
       49 
49 
     | 
    
         
             
              domain: 'discounts'
         
     | 
| 
       50 
50 
     | 
    
         
             
              libraries:
         
     | 
| 
       51 
51 
     | 
    
         
             
                wasm:
         
     | 
| 
       52 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 52 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       53 
53 
     | 
    
         
             
                rust:
         
     | 
| 
       54 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 54 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
       55 
55 
     | 
    
         
             
            shipping_rates_consolidation:
         
     | 
| 
       56 
56 
     | 
    
         
             
              beta: true
         
     | 
| 
       57 
57 
     | 
    
         
             
              domain: 'checkout'
         
     | 
| 
       58 
58 
     | 
    
         
             
              libraries:
         
     | 
| 
       59 
59 
     | 
    
         
             
                wasm:
         
     | 
| 
       60 
     | 
    
         
            -
                  repo: "https://github.com/Shopify/ 
     | 
| 
      
 60 
     | 
    
         
            +
                  repo: "https://github.com/Shopify/function-examples"
         
     | 
| 
         @@ -4,12 +4,11 @@ module Script 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Layers
         
     | 
| 
       5 
5 
     | 
    
         
             
                module Domain
         
     | 
| 
       6 
6 
     | 
    
         
             
                  class Metadata
         
     | 
| 
       7 
     | 
    
         
            -
                    attr_reader :schema_major_version, :schema_minor_version 
     | 
| 
      
 7 
     | 
    
         
            +
                    attr_reader :schema_major_version, :schema_minor_version
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                    def initialize(schema_major_version, schema_minor_version 
     | 
| 
      
 9 
     | 
    
         
            +
                    def initialize(schema_major_version, schema_minor_version)
         
     | 
| 
       10 
10 
     | 
    
         
             
                      @schema_major_version = schema_major_version
         
     | 
| 
       11 
11 
     | 
    
         
             
                      @schema_minor_version = schema_minor_version
         
     | 
| 
       12 
     | 
    
         
            -
                      @use_msgpack = use_msgpack
         
     | 
| 
       13 
12 
     | 
    
         
             
                    end
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
14 
     | 
    
         
             
                    class << self
         
     | 
| 
         @@ -17,7 +16,6 @@ module Script 
     | 
|
| 
       17 
16 
     | 
    
         
             
                        err_tag = nil
         
     | 
| 
       18 
17 
     | 
    
         
             
                        metadata_hash = JSON.parse(metadata_json)
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                        use_msgpack = !!metadata_hash.dig("flags", "use_msgpack")
         
     | 
| 
       21 
19 
     | 
    
         
             
                        schema_versions = metadata_hash["schemaVersions"] || {}
         
     | 
| 
       22 
20 
     | 
    
         | 
| 
       23 
21 
     | 
    
         
             
                        version = schema_versions.values.first || {}
         
     | 
| 
         @@ -35,7 +33,7 @@ module Script 
     | 
|
| 
       35 
33 
     | 
    
         
             
                          err_tag = "script.error.metadata_schema_versions_missing_minor"
         
     | 
| 
       36 
34 
     | 
    
         
             
                        end
         
     | 
| 
       37 
35 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                        Metadata.new(schema_major_version, schema_minor_version 
     | 
| 
      
 36 
     | 
    
         
            +
                        Metadata.new(schema_major_version, schema_minor_version)
         
     | 
| 
       39 
37 
     | 
    
         
             
                      rescue JSON::ParserError
         
     | 
| 
       40 
38 
     | 
    
         
             
                        err_tag = "script.error.metadata_validation_cause"
         
     | 
| 
       41 
39 
     | 
    
         
             
                      ensure
         
     | 
| 
         @@ -90,7 +90,7 @@ module Script 
     | 
|
| 
       90 
90 
     | 
    
         
             
                        )
         
     | 
| 
       91 
91 
     | 
    
         
             
                      elsif (errors = user_errors.filter { |err| err["tag"] == "input_query_validation_error" }).any?
         
     | 
| 
       92 
92 
     | 
    
         
             
                        raise Errors::InvalidInputQueryErrors, errors.map { |err| err["message"] }
         
     | 
| 
       93 
     | 
    
         
            -
                      elsif user_errors.find { |err| %w( 
     | 
| 
      
 93 
     | 
    
         
            +
                      elsif user_errors.find { |err| %w(schema_version_argument_error).include?(err["tag"]) }
         
     | 
| 
       94 
94 
     | 
    
         
             
                        raise Domain::Errors::MetadataValidationError
         
     | 
| 
       95 
95 
     | 
    
         
             
                      elsif user_errors.find { |err| err["tag"] == "invalid_app_bridge_create_path" }
         
     | 
| 
       96 
96 
     | 
    
         
             
                        raise Errors::InvalidAppBridgePathError, "create"
         
     | 
| 
         @@ -28,6 +28,7 @@ module Theme 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    parser.on("-j", "--json") { flags[:json] = true }
         
     | 
| 
       29 
29 
     | 
    
         
             
                    parser.on("-a", "--allow-live") { flags[:allow_live] = true }
         
     | 
| 
       30 
30 
     | 
    
         
             
                    parser.on("-p", "--publish") { flags[:publish] = true }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    parser.on("-s", "--stable") { flags[:stable] = true }
         
     | 
| 
       31 
32 
     | 
    
         
             
                    parser.on("-o", "--only=PATTERN", Conversions::IncludeGlob) do |pattern|
         
     | 
| 
       32 
33 
     | 
    
         
             
                      flags[:includes] ||= []
         
     | 
| 
       33 
34 
     | 
    
         
             
                      flags[:includes] |= pattern
         
     | 
| 
         @@ -56,7 +57,8 @@ module Theme 
     | 
|
| 
       56 
57 
     | 
    
         | 
| 
       57 
58 
     | 
    
         
             
                    syncer = ShopifyCLI::Theme::Syncer.new(@ctx, theme: theme,
         
     | 
| 
       58 
59 
     | 
    
         
             
                      include_filter: include_filter,
         
     | 
| 
       59 
     | 
    
         
            -
                      ignore_filter: ignore_filter 
     | 
| 
      
 60 
     | 
    
         
            +
                      ignore_filter: ignore_filter,
         
     | 
| 
      
 61 
     | 
    
         
            +
                      stable: options.flags[:stable])
         
     | 
| 
       60 
62 
     | 
    
         
             
                    begin
         
     | 
| 
       61 
63 
     | 
    
         
             
                      syncer.start_threads
         
     | 
| 
       62 
64 
     | 
    
         
             
                      if options.flags[:json]
         
     | 
| 
         @@ -17,6 +17,7 @@ module Theme 
     | 
|
| 
       17 
17 
     | 
    
         
             
                    parser.on("--poll") { flags[:poll] = true }
         
     | 
| 
       18 
18 
     | 
    
         
             
                    parser.on("--live-reload=MODE") { |mode| flags[:mode] = as_reload_mode(mode) }
         
     | 
| 
       19 
19 
     | 
    
         
             
                    parser.on("--theme-editor-sync") { flags[:editor_sync] = true }
         
     | 
| 
      
 20 
     | 
    
         
            +
                    parser.on("--stable") { flags[:stable] = true }
         
     | 
| 
       20 
21 
     | 
    
         
             
                    parser.on("-t", "--theme=NAME_OR_ID") { |theme| flags[:theme] = theme }
         
     | 
| 
       21 
22 
     | 
    
         
             
                  end
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
         @@ -11,11 +11,13 @@ module Theme 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    unauthorized_error: <<~EOD,
         
     | 
| 
       12 
12 
     | 
    
         
             
                      You can't use Shopify CLI with development stores if you only have Partner staff member access. If you want to use Shopify CLI to work on a development store, then you should be the store owner or create a staff account on the store.
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                      If you're the store owner, then you need to log in to the store directly using the store URL at least once (for example, using %s 
     | 
| 
      
 14 
     | 
    
         
            +
                      If you're the store owner, then you need to log in to the store directly using the store URL at least once (for example, using %s/admin) before you log in using Shopify CLI. Logging in to the Shopify admin directly connects the development store with your Shopify login.
         
     | 
| 
       15 
15 
     | 
    
         
             
                    EOD
         
     | 
| 
       16 
16 
     | 
    
         
             
                    ensure_user_try_this: <<~ENSURE_USER,
         
     | 
| 
       17 
17 
     | 
    
         
             
                      Check if your user is activated, has permission to edit themes at the store, and try to re-login.
         
     | 
| 
       18 
18 
     | 
    
         
             
                    ENSURE_USER
         
     | 
| 
      
 19 
     | 
    
         
            +
                    stable_flag_suggestion: "If the current command isn't working as expected," \
         
     | 
| 
      
 20 
     | 
    
         
            +
                      " we suggest re-running the command with the {{command: --stable}} flag",
         
     | 
| 
       19 
21 
     | 
    
         
             
                    init: {
         
     | 
| 
       20 
22 
     | 
    
         
             
                      help: <<~HELP,
         
     | 
| 
       21 
23 
     | 
    
         
             
                        {{command:%s theme init}}: Clones a Git repository to use as a starting point for building a new theme.
         
     | 
| 
         @@ -179,6 +181,41 @@ module Theme 
     | 
|
| 
       179 
181 
     | 
    
         
             
                            exit: "Exit",
         
     | 
| 
       180 
182 
     | 
    
         
             
                          },
         
     | 
| 
       181 
183 
     | 
    
         
             
                        },
         
     | 
| 
      
 184 
     | 
    
         
            +
                        warnings: {
         
     | 
| 
      
 185 
     | 
    
         
            +
                          unsupported_script: "unsupported script",
         
     | 
| 
      
 186 
     | 
    
         
            +
                          unsupported_script_text: <<~UNSUPPORTED_SCRIPT,
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                            {{underline:Unsupported external checkout script}}
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                            You have a code snippet on your storefront that violates
         
     | 
| 
      
 191 
     | 
    
         
            +
                            Shopify's Terms of Service. This script removes Shopify's
         
     | 
| 
      
 192 
     | 
    
         
            +
                            ability to protect your store against fraudulent orders,
         
     | 
| 
      
 193 
     | 
    
         
            +
                            could steal customer data and may cause customers to be
         
     | 
| 
      
 194 
     | 
    
         
            +
                            charged the wrong amount.
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
                            %s
         
     | 
| 
      
 197 
     | 
    
         
            +
                            By proceeding, you're acknowledging that you understand the
         
     | 
| 
      
 198 
     | 
    
         
            +
                            risks and will not hold Shopify liable for any problems that
         
     | 
| 
      
 199 
     | 
    
         
            +
                            occur due to the use of an external checkout, including:
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
                            - Discounts
         
     | 
| 
      
 202 
     | 
    
         
            +
                            - Shipping rules
         
     | 
| 
      
 203 
     | 
    
         
            +
                            - Multi-currency rules
         
     | 
| 
      
 204 
     | 
    
         
            +
                            - Variant selection
         
     | 
| 
      
 205 
     | 
    
         
            +
                            - Orders and fulfillment workflows
         
     | 
| 
      
 206 
     | 
    
         
            +
                            - Shopify Fraud Protection
         
     | 
| 
      
 207 
     | 
    
         
            +
                            - Payment settings
         
     | 
| 
      
 208 
     | 
    
         
            +
                            - Cart
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
                            You also acknowledge that you will not be able to reliably
         
     | 
| 
      
 211 
     | 
    
         
            +
                            get support for those features from Shopify because you are
         
     | 
| 
      
 212 
     | 
    
         
            +
                            violating Shopify's terms of service and that your account
         
     | 
| 
      
 213 
     | 
    
         
            +
                            may become suspended as a result.
         
     | 
| 
      
 214 
     | 
    
         
            +
                          UNSUPPORTED_SCRIPT
         
     | 
| 
      
 215 
     | 
    
         
            +
                          line_and_column: <<~LINE_AND_COLUMN,
         
     | 
| 
      
 216 
     | 
    
         
            +
                            - Line: %s Column: %s
         
     | 
| 
      
 217 
     | 
    
         
            +
                          LINE_AND_COLUMN
         
     | 
| 
      
 218 
     | 
    
         
            +
                        },
         
     | 
| 
       182 
219 
     | 
    
         
             
                      },
         
     | 
| 
       183 
220 
     | 
    
         
             
                      error: {
         
     | 
| 
       184 
221 
     | 
    
         
             
                        address_binding_error: "Couldn't bind to localhost."\
         
     | 
| 
         @@ -309,7 +346,7 @@ module Theme 
     | 
|
| 
       309 
346 
     | 
    
         
             
                          {{command:-t, --theme=NAME_OR_ID}} Theme ID or name of your theme.
         
     | 
| 
       310 
347 
     | 
    
         
             
                          {{command:-l, --live}}             Open your live theme.
         
     | 
| 
       311 
348 
     | 
    
         
             
                          {{command:-d, --development}}      Open your development theme.
         
     | 
| 
       312 
     | 
    
         
            -
                          {{command:-e, --editor}}           Open the editor  
     | 
| 
      
 349 
     | 
    
         
            +
                          {{command:-e, --editor}}           Open the theme editor for the specified theme in the browser.
         
     | 
| 
       313 
350 
     | 
    
         
             
                      HELP
         
     | 
| 
       314 
351 
     | 
    
         
             
                    },
         
     | 
| 
       315 
352 
     | 
    
         
             
                    list: {
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html lang="en">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <meta charset="UTF-8">
         
     | 
| 
      
 5 
     | 
    
         
            +
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
         
     | 
| 
      
 6 
     | 
    
         
            +
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
         
     | 
| 
      
 7 
     | 
    
         
            +
                <title>Shopify CLI</title>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <style><%= locals[:css] %></style>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <link rel="icon" href="data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3c!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 109.5 124.5' style='enable-background:new 0 0 109.5 124.5;' xml:space='preserve'%3e%3cstyle type='text/css'%3e .st0%7bfill:%2395BF47;%7d .st1%7bfill:%235E8E3E;%7d .st2%7bfill:%23FFFFFF;%7d %3c/style%3e%3cg%3e%3cpath class='st0' d='M95.9,23.9c-0.1-0.6-0.6-1-1.1-1c-0.5,0-9.3-0.2-9.3-0.2s-7.4-7.2-8.1-7.9c-0.7-0.7-2.2-0.5-2.7-0.3 c0,0-1.4,0.4-3.7,1.1c-0.4-1.3-1-2.8-1.8-4.4c-2.6-5-6.5-7.7-11.1-7.7c0,0,0,0,0,0c-0.3,0-0.6,0-1,0.1c-0.1-0.2-0.3-0.3-0.4-0.5 c-2-2.2-4.6-3.2-7.7-3.1c-6,0.2-12,4.5-16.8,12.2c-3.4,5.4-6,12.2-6.8,17.5c-6.9,2.1-11.7,3.6-11.8,3.7c-3.5,1.1-3.6,1.2-4,4.5 c-0.3,2.5-9.5,73-9.5,73l76.4,13.2l33.1-8.2C109.5,115.8,96,24.5,95.9,23.9z M67.2,16.8c-1.8,0.5-3.8,1.2-5.9,1.8 c0-3-0.4-7.3-1.8-10.9C64,8.6,66.2,13.7,67.2,16.8z M57.2,19.9c-4,1.2-8.4,2.6-12.8,3.9c1.2-4.7,3.6-9.4,6.4-12.5 c1.1-1.1,2.6-2.4,4.3-3.2C56.9,11.6,57.3,16.5,57.2,19.9z M49.1,4c1.4,0,2.6,0.3,3.6,0.9C51.1,5.8,49.5,7,48,8.6 c-3.8,4.1-6.7,10.5-7.9,16.6c-3.6,1.1-7.2,2.2-10.5,3.2C31.7,18.8,39.8,4.3,49.1,4z'/%3e%3cg%3e%3cpath class='st1' d='M94.8,22.9c-0.5,0-9.3-0.2-9.3-0.2s-7.4-7.2-8.1-7.9c-0.3-0.3-0.6-0.4-1-0.5l0,109.7l33.1-8.2 c0,0-13.5-91.3-13.6-92C95.8,23.3,95.3,22.9,94.8,22.9z'/%3e%3cpath class='st2' d='M58,39.9l-3.8,14.4c0,0-4.3-2-9.4-1.6c-7.5,0.5-7.5,5.2-7.5,6.4c0.4,6.4,17.3,7.8,18.3,22.9 c0.7,11.9-6.3,20-16.4,20.6c-12.2,0.8-18.9-6.4-18.9-6.4l2.6-11c0,0,6.7,5.1,12.1,4.7c3.5-0.2,4.8-3.1,4.7-5.1 c-0.5-8.4-14.3-7.9-15.2-21.7c-0.7-11.6,6.9-23.4,23.7-24.4C54.7,38.2,58,39.9,58,39.9z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e" sizes="any" type="image/svg+xml">
         
     | 
| 
      
 10 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              <% if successful %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                <body class="body-success">
         
     | 
| 
      
 14 
     | 
    
         
            +
                  <div class="app-success">
         
     | 
| 
      
 15 
     | 
    
         
            +
                    <div class="container">
         
     | 
| 
      
 16 
     | 
    
         
            +
                      <h1><%= locals[:message] %></h1>
         
     | 
| 
      
 17 
     | 
    
         
            +
                      <p>You can close this tab and return to your terminal.</p>
         
     | 
| 
      
 18 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 19 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 20 
     | 
    
         
            +
                </body>
         
     | 
| 
      
 21 
     | 
    
         
            +
              <% else %>
         
     | 
| 
      
 22 
     | 
    
         
            +
                <body class="body-error">
         
     | 
| 
      
 23 
     | 
    
         
            +
                  <div class="app-error">
         
     | 
| 
      
 24 
     | 
    
         
            +
                    <div class="container">
         
     | 
| 
      
 25 
     | 
    
         
            +
                      <h1>Something went wrong!</h1>
         
     | 
| 
      
 26 
     | 
    
         
            +
                      <p><%= locals[:message] %></p>
         
     | 
| 
      
 27 
     | 
    
         
            +
                      <br>
         
     | 
| 
      
 28 
     | 
    
         
            +
                      <br>
         
     | 
| 
      
 29 
     | 
    
         
            +
                      <p>Return to your terminal and try running the previous command again.</p>
         
     | 
| 
      
 30 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 31 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 32 
     | 
    
         
            +
                </body>
         
     | 
| 
      
 33 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 34 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,58 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            html {
         
     | 
| 
      
 2 
     | 
    
         
            +
              font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
         
     | 
| 
      
 3 
     | 
    
         
            +
              text-size-adjust: 100%;
         
     | 
| 
      
 4 
     | 
    
         
            +
              text-rendering: optimizeLegibility;
         
     | 
| 
      
 5 
     | 
    
         
            +
              -webkit-font-smoothing: antialiased;
         
     | 
| 
      
 6 
     | 
    
         
            +
              -moz-osx-font-smoothing: grayscale;
         
     | 
| 
      
 7 
     | 
    
         
            +
            }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            body {
         
     | 
| 
      
 10 
     | 
    
         
            +
              font-size: 26px;
         
     | 
| 
      
 11 
     | 
    
         
            +
              line-height: normal;
         
     | 
| 
      
 12 
     | 
    
         
            +
              margin: 0;
         
     | 
| 
      
 13 
     | 
    
         
            +
              padding: 0;
         
     | 
| 
      
 14 
     | 
    
         
            +
            }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            button, input, optgroup, select, textarea {
         
     | 
| 
      
 17 
     | 
    
         
            +
              font-family: inherit;
         
     | 
| 
      
 18 
     | 
    
         
            +
            }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            h1 {
         
     | 
| 
      
 21 
     | 
    
         
            +
              font-weight: 600;
         
     | 
| 
      
 22 
     | 
    
         
            +
              font-size: 1em;
         
     | 
| 
      
 23 
     | 
    
         
            +
            }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            p {
         
     | 
| 
      
 26 
     | 
    
         
            +
              font-weight: 400;
         
     | 
| 
      
 27 
     | 
    
         
            +
            }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            .body-success {
         
     | 
| 
      
 30 
     | 
    
         
            +
              color: #F6F6F7;
         
     | 
| 
      
 31 
     | 
    
         
            +
            }
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            .body-error {
         
     | 
| 
      
 34 
     | 
    
         
            +
              color: #202223;
         
     | 
| 
      
 35 
     | 
    
         
            +
            }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            .app-success {
         
     | 
| 
      
 38 
     | 
    
         
            +
              width: 100vw;
         
     | 
| 
      
 39 
     | 
    
         
            +
              height: 100vh;
         
     | 
| 
      
 40 
     | 
    
         
            +
              background-color: #054A49;
         
     | 
| 
      
 41 
     | 
    
         
            +
              display: flex;
         
     | 
| 
      
 42 
     | 
    
         
            +
            }
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            .app-error {
         
     | 
| 
      
 45 
     | 
    
         
            +
              width: 100vw;
         
     | 
| 
      
 46 
     | 
    
         
            +
              height: 100vh;
         
     | 
| 
      
 47 
     | 
    
         
            +
              background-color: #F6F6F7;
         
     | 
| 
      
 48 
     | 
    
         
            +
              display: flex;
         
     | 
| 
      
 49 
     | 
    
         
            +
            }
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            .container {
         
     | 
| 
      
 52 
     | 
    
         
            +
              display: flex;
         
     | 
| 
      
 53 
     | 
    
         
            +
              flex-direction: column;
         
     | 
| 
      
 54 
     | 
    
         
            +
              justify-content: center;
         
     | 
| 
      
 55 
     | 
    
         
            +
              width: 100%;
         
     | 
| 
      
 56 
     | 
    
         
            +
              height: 100%;
         
     | 
| 
      
 57 
     | 
    
         
            +
              padding-left: 7.5em;
         
     | 
| 
      
 58 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -1,20 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ShopifyCLI
         
     | 
| 
       2 
2 
     | 
    
         
             
              class IdentityAuth
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Servlet < WEBrick::HTTPServlet::AbstractServlet
         
     | 
| 
       4 
     | 
    
         
            -
                   
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                    <head>
         
     | 
| 
       7 
     | 
    
         
            -
                      <title>%{title}</title>
         
     | 
| 
       8 
     | 
    
         
            -
                    </head>
         
     | 
| 
       9 
     | 
    
         
            -
                    <body>
         
     | 
| 
       10 
     | 
    
         
            -
                      <h1 style="color: #%{color};">%{message}</h1>
         
     | 
| 
       11 
     | 
    
         
            -
                      %{autoclose}
         
     | 
| 
       12 
     | 
    
         
            -
                    </body>
         
     | 
| 
       13 
     | 
    
         
            -
                    </html>
         
     | 
| 
       14 
     | 
    
         
            -
                  }
         
     | 
| 
       15 
     | 
    
         
            -
                  AUTOCLOSE_TEMPLATE = %{
         
     | 
| 
       16 
     | 
    
         
            -
                    <script>window.close();</script>
         
     | 
| 
       17 
     | 
    
         
            -
                  }
         
     | 
| 
      
 4 
     | 
    
         
            +
                  ERB_FILENAME = File.join(ROOT, "lib/shopify_cli/assets/post_auth_page/index.html.erb")
         
     | 
| 
      
 5 
     | 
    
         
            +
                  CSS_FILENAME = File.join(ROOT, "lib/shopify_cli/assets/post_auth_page/style.css")
         
     | 
| 
       18 
6 
     | 
    
         | 
| 
       19 
7 
     | 
    
         
             
                  def initialize(server, identity_auth, token)
         
     | 
| 
       20 
8 
     | 
    
         
             
                    super
         
     | 
| 
         @@ -46,14 +34,10 @@ module ShopifyCLI 
     | 
|
| 
       46 
34 
     | 
    
         
             
                    locals = {
         
     | 
| 
       47 
35 
     | 
    
         
             
                      status: status,
         
     | 
| 
       48 
36 
     | 
    
         
             
                      message: message,
         
     | 
| 
       49 
     | 
    
         
            -
                       
     | 
| 
       50 
     | 
    
         
            -
                      title: Context.message(
         
     | 
| 
       51 
     | 
    
         
            -
                        successful ? "core.identity_auth.servlet.authenticated" : "core.identity_auth.servlet.not_authenticated"
         
     | 
| 
       52 
     | 
    
         
            -
                      ),
         
     | 
| 
       53 
     | 
    
         
            -
                      autoclose: successful ? AUTOCLOSE_TEMPLATE : "",
         
     | 
| 
      
 37 
     | 
    
         
            +
                      css: File.read(CSS_FILENAME),
         
     | 
| 
       54 
38 
     | 
    
         
             
                    }
         
     | 
| 
       55 
39 
     | 
    
         
             
                    response.status = status
         
     | 
| 
       56 
     | 
    
         
            -
                    response.body =  
     | 
| 
      
 40 
     | 
    
         
            +
                    response.body = ERB.new(File.read(ERB_FILENAME)).result(binding)
         
     | 
| 
       57 
41 
     | 
    
         
             
                  end
         
     | 
| 
       58 
42 
     | 
    
         
             
                end
         
     | 
| 
       59 
43 
     | 
    
         
             
              end
         
     | 
| 
         @@ -449,7 +449,7 @@ module ShopifyCLI 
     | 
|
| 
       449 
449 
     | 
    
         
             
                    login: {
         
     | 
| 
       450 
450 
     | 
    
         
             
                      help: <<~HELP,
         
     | 
| 
       451 
451 
     | 
    
         
             
                        Log in to the Shopify CLI by authenticating with a store or partner organization
         
     | 
| 
       452 
     | 
    
         
            -
                          Usage: {{command:%s login [--store STORE]}}
         
     | 
| 
      
 452 
     | 
    
         
            +
                          Usage: {{command:%s login [--store/-s STORE]}}
         
     | 
| 
       453 
453 
     | 
    
         
             
                      HELP
         
     | 
| 
       454 
454 
     | 
    
         
             
                      invalid_shop: <<~MESSAGE,
         
     | 
| 
       455 
455 
     | 
    
         
             
                        Invalid store provided (%s). Please provide the store in the following format: my-store.myshopify.com
         
     | 
| 
         @@ -476,7 +476,7 @@ module ShopifyCLI 
     | 
|
| 
       476 
476 
     | 
    
         
             
                    switch: {
         
     | 
| 
       477 
477 
     | 
    
         
             
                      help: <<~HELP,
         
     | 
| 
       478 
478 
     | 
    
         
             
                        Switch between development stores in your partner organization
         
     | 
| 
       479 
     | 
    
         
            -
                          Usage: {{command:%s switch [--store STORE]}}
         
     | 
| 
      
 479 
     | 
    
         
            +
                          Usage: {{command:%s switch [--store/-s STORE]}}
         
     | 
| 
       480 
480 
     | 
    
         
             
                      HELP
         
     | 
| 
       481 
481 
     | 
    
         
             
                      disabled_as_shopify_org: "Can't switch development stores logged in as {{green:Shopify partners org}}",
         
     | 
| 
       482 
482 
     | 
    
         
             
                      success: "Switched development store to {{green:%s}}",
         
     | 
| 
         @@ -498,11 +498,9 @@ module ShopifyCLI 
     | 
|
| 
       498 
498 
     | 
    
         
             
                        "{{i}} Authentication required. Login to the URL below with your %s credentials to continue.",
         
     | 
| 
       499 
499 
     | 
    
         | 
| 
       500 
500 
     | 
    
         
             
                      servlet: {
         
     | 
| 
       501 
     | 
    
         
            -
                        success_response: " 
     | 
| 
      
 501 
     | 
    
         
            +
                        success_response: "You've successfuly logged into the Shopify CLI!",
         
     | 
| 
       502 
502 
     | 
    
         
             
                        invalid_request_response: "Invalid request: %s",
         
     | 
| 
       503 
     | 
    
         
            -
                        invalid_state_response: " 
     | 
| 
       504 
     | 
    
         
            -
                        authenticated: "Authenticated successfully",
         
     | 
| 
       505 
     | 
    
         
            -
                        not_authenticated: "Failed to authenticate",
         
     | 
| 
      
 503 
     | 
    
         
            +
                        invalid_state_response: "The anti-forgery state token does not match the initial request.",
         
     | 
| 
       506 
504 
     | 
    
         
             
                      },
         
     | 
| 
       507 
505 
     | 
    
         
             
                      login_prompt: "Please ensure you've logged in with {{command:%s login}} and try again",
         
     | 
| 
       508 
506 
     | 
    
         
             
                      token_authentication: "%s environment variable. We'll authenticate using its value as a token.",
         
     | 
| 
         @@ -589,7 +587,7 @@ module ShopifyCLI 
     | 
|
| 
       589 
587 
     | 
    
         
             
                      HELP
         
     | 
| 
       590 
588 
     | 
    
         | 
| 
       591 
589 
     | 
    
         
             
                      error: {
         
     | 
| 
       592 
     | 
    
         
            -
                        no_shop: "No store found. Please run {{command:%s login --store STORE}} to login to a specific store",
         
     | 
| 
      
 590 
     | 
    
         
            +
                        no_shop: "No store found. Please run {{command:%s login --store/-s STORE}} to login to a specific store",
         
     | 
| 
       593 
591 
     | 
    
         
             
                      },
         
     | 
| 
       594 
592 
     | 
    
         | 
| 
       595 
593 
     | 
    
         
             
                      customer: {
         
     | 
| 
         @@ -820,7 +818,7 @@ module ShopifyCLI 
     | 
|
| 
       820 
818 
     | 
    
         
             
                      not_logged_in: <<~MESSAGE,
         
     | 
| 
       821 
819 
     | 
    
         
             
                        It doesn't appear that you're logged in. You must log into a partner organization or a store staff account.
         
     | 
| 
       822 
820 
     | 
    
         | 
| 
       823 
     | 
    
         
            -
                        If trying to log into a store staff account, please use {{command:%s login --store STORE}} to log in.
         
     | 
| 
      
 821 
     | 
    
         
            +
                        If trying to log into a store staff account, please use {{command:%s login --store/-s STORE}} to log in.
         
     | 
| 
       824 
822 
     | 
    
         
             
                      MESSAGE
         
     | 
| 
       825 
823 
     | 
    
         
             
                      logged_in_shop_only: <<~MESSAGE,
         
     | 
| 
       826 
824 
     | 
    
         
             
                        Logged into store {{green:%s}} as staff (no partner organizations available for this login)
         
     |