Skip to content

Commit f77632f

Browse files
durga256claude
andcommitted
Fix spread syntax runtime error on non-iterable values
Replace unsafe non-null assertions and truthy guards with Array.isArray checks before spreading webhook subscription properties in reduceWebhooks. Use flatMap with nullish coalescing in esbuild watcher deleteContexts. Remove fragile Map.get()! in app-logs sources. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5f8d6a6 commit f77632f

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

packages/app/src/cli/models/extensions/specifications/transform/app_config_webhook.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,15 @@ export function reduceWebhooks(
8080
return subscriptions.reduce<WebhookSubscription[]>((accumulator, subscription) => {
8181
const existingSubscription = findSubscription(accumulator, subscription)
8282
if (existingSubscription) {
83-
if (property && subscription?.[property]?.length) {
84-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
85-
existingSubscription[property]?.push(...subscription[property]!)
83+
if (property && Array.isArray(subscription?.[property]) && subscription[property].length) {
84+
existingSubscription[property] ??= []
85+
existingSubscription[property].push(...subscription[property])
8686
} else {
87-
if (subscription.topics) {
87+
if (Array.isArray(subscription.topics)) {
8888
existingSubscription.topics ??= []
8989
existingSubscription.topics.push(...subscription.topics)
9090
}
91-
if (subscription.compliance_topics) {
91+
if (Array.isArray(subscription.compliance_topics)) {
9292
existingSubscription.compliance_topics ??= []
9393
existingSubscription.compliance_topics.push(...subscription.compliance_topics)
9494
}

packages/app/src/cli/services/app-logs/sources.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ export function sources(app: AppInterface) {
1515
sourcesByNamespace.set(sourceNamespace, [])
1616
}
1717

18-
sourcesByNamespace.set(sourceNamespace, [...sourcesByNamespace.get(sourceNamespace)!, source])
18+
const existing = sourcesByNamespace.get(sourceNamespace) ?? []
19+
sourcesByNamespace.set(sourceNamespace, [...existing, source])
1920
}
2021
})
2122

packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export class ESBuildContextManager {
116116
}
117117

118118
async deleteContexts(extensions: ExtensionInstance[]) {
119-
const promises = extensions.map((ext) => this.contexts[ext.uid]?.map((context) => context.dispose())).flat()
119+
const promises = extensions.flatMap((ext) => this.contexts[ext.uid]?.map((context) => context.dispose()) ?? [])
120120
await Promise.all(promises)
121121
extensions.forEach((ext) => {
122122
const {[ext.uid]: _, ...rest} = this.contexts

0 commit comments

Comments
 (0)