Skip to content

fix: Scope store service instances to requests - #17

Merged
aklinker1 merged 2 commits into
mainfrom
request-scoped-stores
Oct 2, 2026
Merged

aklinker1 merged 2 commits into
mainfrom
request-scoped-stores

Conversation

@aklinker1

@aklinker1 aklinker1 commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Follow up to #14. Services were transient before, which is technically fine, as long as you're careful about when the different stores are accessed.

.register("chromeWebStore", transient(createChromeWebStore))
.register("firefoxAddonStore", transient(createFirefoxAddonStore))
.register("edgeAddonStore", transient(createEdgeAddonStore))
.register(
"stores",
(deps) =>
({
[ExtensionStoreName.ChromeWebStore]: deps.chromeWebStore,
[ExtensionStoreName.FirefoxAddonStore]: deps.firefoxAddonStore,
[ExtensionStoreName.EdgeAddonStore]: deps.edgeAddonStore,
// Deprecated, but staying around for a while.
[ExtensionStoreName.ChromeExtensions]: deps.chromeWebStore,
[ExtensionStoreName.FirefoxExtensions]: deps.firefoxAddonStore,
[ExtensionStoreName.EdgeExtensions]: deps.edgeAddonStore,
}) satisfies ExtensionStores,

Now they're scoped and recreated at most once each request, so we don't have to be as careful about how/when they're accessed.

Additionally, I've made the stores object into getters so each store is only resolved when it is needed.

@aklinker1 aklinker1 changed the title Request scoped stores fix: Scope store service instances to requests Oct 2, 2026
@aklinker1
aklinker1 force-pushed the request-scoped-stores branch from 7c43c6c to 0a5df9e Compare October 2, 2026 13:30
@aklinker1
aklinker1 marked this pull request as ready for review October 2, 2026 13:31
@aklinker1
aklinker1 merged commit caa2792 into main Oct 2, 2026
2 checks passed
@aklinker1
aklinker1 deleted the request-scoped-stores branch October 2, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant