feat(functions): Implement TaskQueue Scopes#3210
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a new FunctionScope type to represent the scope of a function in a task queue, deprecating the legacy extensionId string parameter. It updates FunctionsApiClient, Functions, and TaskQueue to support these scopes (including current, global, extension, and internal kit scopes) with fallback logic for migration, and adds comprehensive unit tests. The review feedback highlights a few issues and improvement opportunities: correcting a typo ('peformance') and an invalid scope value ({ scope: "self" } instead of { scope: "current" }) in warning messages (and their corresponding tests), removing a redundant type check in TaskQueue, and improving type safety in FunctionsApiClient by avoiding an as any cast through discriminated union narrowing.
lahirumaramba
left a comment
There was a problem hiding this comment.
Thank you for submitting this!
LGTM! Added a couple of comments.
…fety and signature simplification
egilmorez
left a comment
There was a problem hiding this comment.
Thanks, I do have some nits! :)
Description
This PR introduces Task Queue Scopes to the Firebase Admin SDK functions module. It decouples the legacy backward-compatible string-to-scope migration logic from the stateless client and isolates it inside the API wrapper layer (
TaskQueue).Key Changes
TaskQueue):TaskQueue.enqueue()anddelete()now capture404errors for legacy string parameters ('extensionOrKit'scope).404error, they automatically retry using a temporarykitscope.'kit'and logs a legacy targeting warning.process.env.EXT_INSTANCE_IDandprocess.env.KIT_INSTANCE_IDat construction time.'extension'or'kit', bypassing unnecessary404fallback call roundtrips.scoperesolves to global if no environment variables are set.