Repository navigation
Releases
shopify-mcp-oauth@0.2.0
Minor Changes
-
#4
02a1903Thanks @mrmarufpro! - Rate limiting is now backed byexpress-rate-limit, configured through a single field, and opt-in.Breaking (a minor bump because this package is still pre-1.0):
registerRateLimitandrevokeRateLimitare replaced by one field,rateLimit, covering both/registerand/revoke. One setting builds one limiter mounted on both routes, solimitis what a caller spends across them combined per window — not per endpoint. Need them tuned separately? SetrateLimit: falseand mount your own middleware.- Rate limiting no longer defaults to 20 requests per hour. Omit
rateLimitand both endpoints are uncapped, with no limiter middleware mounted at all; pass the newly exportedRECOMMENDED_RATE_LIMITto keep the previous behaviour. Omitting warns at construction,falseis the same behaviour said out loud and stays quiet. ResolvedConfig.registerRateLimitand.revokeRateLimitbecomeResolvedConfig.rateLimit, typedRateLimitSetting | null.RateLimiterOptions.maxEntriesis gone;express-rate-limit'sMemoryStorehas no equivalent entry cap.
Why swap a limiter that worked: callers were keyed on the raw IPv6 address, so rotating through the /64 an ISP hands out bought a fresh quota per address — callers are now keyed by /56. And counting was unconditionally in-process;
rateLimit.storetakes anexpress-rate-limitStore(re-exported asRateLimitStore), so a Redis-backed one holds a single limit across every instance.Also in this release:
rateLimit.keyForoverrides caller identity whenreq.ipis the wrong one for your topology; blocked responses carry the standardizedRateLimit/RateLimit-Policyheaders (draft-7) alongsideRetry-After;windowMspast 2147483647 ms and astorethat isn't aStoreare both rejected at construction naming the field; andexpress-rate-limit's own findings (an unset or over-permissivetrust proxy, mostly) go through your configuredlogger.createRateLimiter's name, signature,429body shape, andlimit: 0(block every request) behaviour are unchanged.
create-shopify-mcp@0.1.1
Patch Changes
-
#4
02a1903Thanks @mrmarufpro! - Rate limiting is now backed byexpress-rate-limit, configured through a single field, and opt-in.Breaking (a minor bump because this package is still pre-1.0):
registerRateLimitandrevokeRateLimitare replaced by one field,rateLimit, covering both/registerand/revoke. One setting builds one limiter mounted on both routes, solimitis what a caller spends across them combined per window — not per endpoint. Need them tuned separately? SetrateLimit: falseand mount your own middleware.- Rate limiting no longer defaults to 20 requests per hour. Omit
rateLimitand both endpoints are uncapped, with no limiter middleware mounted at all; pass the newly exportedRECOMMENDED_RATE_LIMITto keep the previous behaviour. Omitting warns at construction,falseis the same behaviour said out loud and stays quiet. ResolvedConfig.registerRateLimitand.revokeRateLimitbecomeResolvedConfig.rateLimit, typedRateLimitSetting | null.RateLimiterOptions.maxEntriesis gone;express-rate-limit'sMemoryStorehas no equivalent entry cap.
Why swap a limiter that worked: callers were keyed on the raw IPv6 address, so rotating through the /64 an ISP hands out bought a fresh quota per address — callers are now keyed by /56. And counting was unconditionally in-process;
rateLimit.storetakes anexpress-rate-limitStore(re-exported asRateLimitStore), so a Redis-backed one holds a single limit across every instance.Also in this release:
rateLimit.keyForoverrides caller identity whenreq.ipis the wrong one for your topology; blocked responses carry the standardizedRateLimit/RateLimit-Policyheaders (draft-7) alongsideRetry-After;windowMspast 2147483647 ms and astorethat isn't aStoreare both rejected at construction naming the field; andexpress-rate-limit's own findings (an unset or over-permissivetrust proxy, mostly) go through your configuredlogger.createRateLimiter's name, signature,429body shape, andlimit: 0(block every request) behaviour are unchanged.
shopify-mcp-oauth@0.1.0
What's Changed
- feat(cli): scaffold from any example with --example by @mrmarufpro in #2
- chore: land CLAUDE.md and the pnpm pin that PR #2 left behind by @mrmarufpro in #3
- feat: npm distribution — metadata, docs, Changesets, and an OIDC release pipeline by @mrmarufpro in #1
New Contributors
- @mrmarufpro made their first contribution in #2
Full Changelog: https://github.com/mrmarufpro/shopify-mcp-oauth/commits/shopify-mcp-oauth@0.1.0
create-shopify-mcp@0.1.0
What's Changed
- feat(cli): scaffold from any example with --example by @mrmarufpro in #2
- chore: land CLAUDE.md and the pnpm pin that PR #2 left behind by @mrmarufpro in #3
- feat: npm distribution — metadata, docs, Changesets, and an OIDC release pipeline by @mrmarufpro in #1
New Contributors
- @mrmarufpro made their first contribution in #2
Full Changelog: https://github.com/mrmarufpro/shopify-mcp-oauth/commits/create-shopify-mcp@0.1.0