shopify-upgrade-guard 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -9
- package/action.yml +2 -0
- package/data/versions.json +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/action.js +1 -1
- package/src/git.js +80 -2
- package/src/graphql.js +39 -2
- package/src/output.js +2 -2
- package/src/rules.js +15 -1
- package/src/scan.js +51 -8
- package/src/version-data.js +2 -2
- package/src/version.js +1 -1
- package/src/versions.js +11 -3
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Shopify Upgrade Guard is an offline, evidence-backed CLI and GitHub Action for S
|
|
|
16
16
|
|
|
17
17
|
Maintained by RexCode Digital Ltd.
|
|
18
18
|
|
|
19
|
-
Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
19
|
+
Part of the **RexCode Shopify developer tools** suite. Requires Node.js 20 or later for the CLI. The parser remains on GraphQL 16 because GraphQL 17.0.2 requires Node.js 22 or later, which would drop the supported Node.js 20 runtime. [Releases](https://github.com/RexCode-Digital/shopify-upgrade-guard/releases) · [npm](https://www.npmjs.com/package/shopify-upgrade-guard) · [Marketplace](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
20
20
|
|
|
21
21
|
## Quick start
|
|
22
22
|
|
|
@@ -39,7 +39,7 @@ Upgrade Guard separates **current debt** from **target-version blockers**, so te
|
|
|
39
39
|
|
|
40
40
|
- **Target-aware** — evaluate findings against the Shopify version you actually plan to adopt.
|
|
41
41
|
- **Evidence-backed** — Shopify-specific rules link to official Shopify documentation or changelog evidence.
|
|
42
|
-
- **PR-aware** —
|
|
42
|
+
- **PR-aware** — compare independent base and head tree scans, including renamed files, to distinguish new, existing, and resolved findings.
|
|
43
43
|
- **Baseline-friendly** — adopt the tool without forcing a big-bang cleanup of historical findings.
|
|
44
44
|
- **CI-ready** — human, JSON, and SARIF output plus a GitHub Action.
|
|
45
45
|
- **Offline by default** — ordinary scans require no network access, Shopify token, or store access.
|
|
@@ -67,7 +67,7 @@ jobs:
|
|
|
67
67
|
fetch-depth: 0
|
|
68
68
|
persist-credentials: false
|
|
69
69
|
|
|
70
|
-
- uses: RexCode-Digital/shopify-upgrade-guard@
|
|
70
|
+
- uses: RexCode-Digital/shopify-upgrade-guard@b0a6816f95d783f703bf031c9920004fbb865bc1 # v0.2.6
|
|
71
71
|
with:
|
|
72
72
|
target: 2026-10
|
|
73
73
|
fail-on: warning
|
|
@@ -88,10 +88,12 @@ Use the immutable patch release tag or a reviewed full commit SHA. Existing mino
|
|
|
88
88
|
|
|
89
89
|
### Action outputs
|
|
90
90
|
|
|
91
|
-
`outcome`, `finding-count`, `new-finding-count`, `error-count`, `current-versions`, and `result-json`.
|
|
91
|
+
`outcome`, `finding-count`, `new-finding-count`, `resolved-finding-count`, `error-count`, `current-versions`, and `result-json`.
|
|
92
92
|
|
|
93
93
|
The Action is bundled and runs on the current GitHub `node24` JavaScript Action runtime.
|
|
94
94
|
|
|
95
|
+
The example above pins v0.2.6, which does not expose `resolved-finding-count`. The independent base/head comparison and resolved-finding behaviour described below are part of the unreleased changes here; they are not available from the current npm package or Action.
|
|
96
|
+
|
|
95
97
|
## What it catches today
|
|
96
98
|
|
|
97
99
|
The rule pack is intentionally focused. Literal GraphQL checks parse supported documents and ignore malformed or dynamic queries; rule-specific context limits findings to Shopify API constructs that can be identified deterministically.
|
|
@@ -109,6 +111,8 @@ The rule pack is intentionally focused. Literal GraphQL checks parse supported d
|
|
|
109
111
|
| `UG-ADMIN-002` | Literal GraphQL root `automaticDiscounts` removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/automaticdiscounts-query-is-removed-in-api-version-2027-01) |
|
|
110
112
|
| `UG-ADMIN-003` | GraphQL `metafieldInteger` collection conditions and types removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/metafieldinteger-collection-condition-removed-in-api-version-2027-01) |
|
|
111
113
|
| `UG-ADMIN-004` | `ProductVariant.barcode` read deprecated in 2026-10; it still works and no removal date is announced | [Official deprecation](https://shopify.dev/changelog/posts/product-variant-barcode-is-being-replaced-by-barcodes) |
|
|
114
|
+
| `UG-ADMIN-006` | Literal `marketCurrencySettingsUpdate` Admin mutation removed in 2027-01 | [Official removal](https://shopify.dev/changelog/posts/removing-marketcurrencysettingsupdate-mutation) |
|
|
115
|
+
| `UG-ADMIN-007` | `PRIVATE` / `PUBLIC_READ` literals passed as metaobject definition admin access removed in 2027-01 | [Official deprecation](https://shopify.dev/changelog/posts/removing-deprecated-private-and-public-read-enums-on-metaobject-definitions) |
|
|
112
116
|
| `UG-SEGMENT-001` | Legacy function/date syntax inside literal segment GraphQL query arguments | [Official syntax update](https://shopify.dev/changelog/posts/updated-function-syntax-on-the-segment-query-language) |
|
|
113
117
|
| `UG-ADMIN-005` | Source handling for removed inventory error `ITEM_NOT_STOCKED_AT_LOCATION` | [Official removal](https://shopify.dev/changelog/posts/removal-of-itemnotstockedatlocation-error) |
|
|
114
118
|
| `UG-SCRIPT-001` | Cross-version Script Tag write restrictions; REST resource references require method review | [Script Tag deprecation](https://shopify.dev/changelog/online-store-script-tags-deprecation) |
|
|
@@ -154,9 +158,11 @@ npx shopify-upgrade-guard baseline check
|
|
|
154
158
|
|
|
155
159
|
Baselined findings remain reviewable while new fingerprints stay actionable.
|
|
156
160
|
|
|
157
|
-
`--fail-on-new` requires a valid Git base comparison. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
|
|
161
|
+
`--fail-on-new` requires a valid Git base comparison. Upgrade Guard scans the base commit and head tree independently, then matches findings by rule, file identity, and evidence; recognized file renames keep existing debt stable. JSON includes `resolvedFindings`, and human output reports their count. Fetch full history and provide `--base-ref`, or use the pull-request Action. Missing refs/history exit 2 instead of passing an incomplete comparison.
|
|
162
|
+
|
|
163
|
+
The bundled snapshot, verified 14 October 2026, lists `2026-10` as the latest stable API and `2027-01` as a release candidate for development testing. Version status uses Shopify's exact `accessibleUntil` timestamp: `2025-10` remains accessible until 16 October 2026 at 15:00 UTC, then becomes unsupported. Future version names do not imply verified rule coverage.
|
|
158
164
|
|
|
159
|
-
The
|
|
165
|
+
The 2027-01 tax payload change converts IDs in tax calculation requests and tax summary webhook payloads to Global IDs. Upgrade Guard cannot reliably tell whether arbitrary runtime parsing assumes numeric IDs, so tax app handlers need review against Shopify's [official migration note](https://shopify.dev/changelog/posts/tax-webhook-summary-and-calculation-requests-now-use-global-ids).
|
|
160
166
|
|
|
161
167
|
## Configuration
|
|
162
168
|
|
|
@@ -197,6 +203,8 @@ Building or maintaining Shopify apps?
|
|
|
197
203
|
- **[Shopify Scope Guard](https://github.com/RexCode-Digital/shopify-scope-guard)** — Audit whether declared Shopify permissions are supported by offline code evidence.
|
|
198
204
|
- **[Shopify App Review Guard](https://github.com/RexCode-Digital/shopify-app-review-guard)** — Run deterministic preflight checks for Shopify App Store and production readiness.
|
|
199
205
|
|
|
206
|
+
See the [coordinated workflow example](https://github.com/RexCode-Digital/shopify-app-changeguard/blob/main/docs/ecosystem-workflow.md) to run all four published Actions in one pull-request workflow.
|
|
207
|
+
|
|
200
208
|
GitHub Marketplace: [Shopify Upgrade Guard](https://github.com/marketplace/actions/shopify-upgrade-guard)
|
|
201
209
|
|
|
202
210
|
All four tools run offline and require no Shopify credentials.
|
|
@@ -217,7 +225,7 @@ Start with [the contribution guide](CONTRIBUTING.md) or browse the [open issues]
|
|
|
217
225
|
|
|
218
226
|
## Roadmap
|
|
219
227
|
|
|
220
|
-
Current priorities include additional verified Shopify breaking-change coverage,
|
|
228
|
+
Current priorities include additional verified Shopify breaking-change coverage, high-confidence Functions/Customer Account/POS/GraphQL rules, and maintainable GraphQL deprecation evidence when Shopify provides a versioned source with clear redistribution rights. See the [metadata decision](docs/graphql-deprecation-metadata.md).
|
|
221
229
|
|
|
222
230
|
See [ROADMAP.md](ROADMAP.md).
|
|
223
231
|
|
|
@@ -227,10 +235,10 @@ MIT — see [LICENSE](LICENSE).
|
|
|
227
235
|
|
|
228
236
|
## Immutable SHA usage
|
|
229
237
|
|
|
230
|
-
The Action example pins the reviewed v0.2.
|
|
238
|
+
The Action example pins the reviewed v0.2.6 release commit. Verify the release reference with:
|
|
231
239
|
|
|
232
240
|
```bash
|
|
233
|
-
|
|
241
|
+
git fetch --tags origin && git rev-parse 'v0.2.6^{commit}'
|
|
234
242
|
```
|
|
235
243
|
|
|
236
244
|
Published patch tags and existing minor aliases are retained. Future releases do not move minor aliases; use an immutable patch tag or a reviewed full commit SHA.
|
package/action.yml
CHANGED
|
@@ -29,6 +29,8 @@ runs:
|
|
|
29
29
|
outputs:
|
|
30
30
|
new-finding-count:
|
|
31
31
|
description: Number of findings classified as NEW
|
|
32
|
+
resolved-finding-count:
|
|
33
|
+
description: Number of findings resolved against the Git base tree
|
|
32
34
|
outcome:
|
|
33
35
|
description: Whether the configured failure policy passed
|
|
34
36
|
finding-count:
|
package/data/versions.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"verifiedAt": "2026-10-
|
|
2
|
+
"verifiedAt": "2026-10-14",
|
|
3
3
|
"source": "https://shopify.dev/docs/api/usage/versioning",
|
|
4
4
|
"versions": [
|
|
5
5
|
{
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"version": "2025-10",
|
|
25
25
|
"releaseDate": "2025-10-01",
|
|
26
26
|
"accessibleUntil": "2026-10-16T15:00:00Z",
|
|
27
|
-
"status": "
|
|
27
|
+
"status": "stable"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"version": "2026-01",
|