chore: version packages - #28
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
@developerehsan/api-client@1.1.0
Minor Changes
#27
ed369dbThanks @developerEhsan! - Give the IndexedDB and Redis cache stores adapter-specific config: IndexedDB gainsversion,onQuotaExceeded, and proactivemaxEntrieseviction; Redis gains a realclear()(opt-in viascanKeys, namespace-safe) and a customserializer. Both gain a sharedonStoreErrordiagnostic hook (error + op/key only, never cached data).#27
ed369dbThanks @developerEhsan! - Add a grab-bag of caching hardening features:cache.cacheableStatuses/negativeTtl) for error statuses like 404.If-None-Matchconditional revalidation — automatic once a response captures anETag.client.cache.getStats()— aggregate hit/miss/hitRate metrics.cache.circuitBreaker), observable viacache.onStoreError.createIndexedDbStore({ encrypt })) — bring your own cipher, no default key management.client.cache.preview(pattern)— dry-run a glob invalidation before running it for real.All are opt-in / additive; default behavior is unchanged.
#27
ed369dbThanks @developerEhsan! - Add cross-instance cache invalidation via Redis pub/sub:createRedisStore(client, { crossInstance: true })broadcasts tag/key/clear invalidations to sibling server instances (opt-in, off by default). Fixes stale cache reads when a mutation lands on one instance behind a load balancer but the stale GET was cached on another.#27
ed369dbThanks @developerEhsan! - Addcache.cacheKeyParts— extra cache-key dimensions folded into the built-in tenant/auth-fingerprint scoping, settable per auto-method descriptor (computed from call args) or statically at the module/global/per-call layer. Safer thankeyResolverfor the common "add one more thing to the scope" case (e.g. an admin viewing "as" a target user, or a multi-workspace dashboard) since it can only add dimensions, never drop the existing tenant/auth isolation. A descriptor'scacheKeyParts(args)throwing fails closed (disables caching for that call). Also fixes a pre-existing gap wherecache.keyResolverwas declared onCacheConfigbut never actually wired into the request pipeline.#27
ed369dbThanks @developerEhsan! - AddcreateFileSystemStore— a Node-only, disk-backedPersistentCacheStore(the.next/cache/ nginxproxy_cacheshape) for long-running server processes that want to trade RAM for disk and survive restarts. Cache keys are SHA-256 hashed into fixed-length filenames (no path traversal), writes are atomic (write-then-rename), and it accepts the sameonStoreError/maxSizeBytes/encryptoptions as the other adapters. Not for serverless/edge; does not solve cross-instance staleness (use RediscrossInstancefor that).#27
ed369dbThanks @developerEhsan! - Add memory-aware caching for constrained hosts:cache.maxSizeBytes(approximate byte cap alongside the existing entry-countmaxSize),cache.mode('layered'default,'l1-only','l2-only'with a tiny bounded shadow L1), and a Node-only opt-incache.memoryPressureguard that proactively evicts before RSS crosses a threshold.#27
ed369dbThanks @developerEhsan! - Add a callback alternative to endpoint-based OAuth2 refresh (refresh: (refreshToken) => Promise<OAuth2Tokens>, for refresh logic that isn't "just POST a URL") and pluggabletokenStorage(mirrorsPersistentCacheStore's adapter pattern; shipscreateMemoryTokenStorage/createLocalStorageTokenStorage). Both are mutually exclusive with the existingrefreshEndpoint/manual-getters shape, enforced at the type level and defense-in-depth at construction time.#27
ed369dbThanks @developerEhsan! - Add a dev-time server-only guard:createRpcHandlernow throws immediately if constructed in a browser context (enforceServerOnly, on by default), anddefineModule({ serverOnly: true, ... })does the same for your own server-only modules. Both are defense-in-depth on top of the existingscripts/check-browser-bundle.mjsCI check, which remains authoritative.#27
ed369dbThanks @developerEhsan! - Add tag-based cache invalidation:cacheTags/invalidatesTagson auto-method descriptors andcache.tags/cache.invalidatesTagson per-call config, plusclient.cache.invalidateTags(tags). A mutation'sinvalidatesTagsnow clears every cached copy of a tagged resource in one process, regardless of which auth scope cached it — fixing stale GETs after a mutation and same-VM cross-user staleness.Patch Changes
ed369dbThanks @developerEhsan! - Document and type-test full type-safety without codegen:createTypedClient<Ops>()already accepts a hand-writtenOpsinterface with the exact shape codegen emits ({ params, query, body, response }per operation) — seedocs/manual-types.md.@developerehsan/api-client-cli@1.0.1
Patch Changes
ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db]:@developerehsan/api-client-query@0.2.3
Patch Changes
ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db]:@developerehsan/api-client-vite@1.0.1
Patch Changes
ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db,ed369db]: