Skip to content

Commit dae5fee

Browse files
committed
Ensure create and request options are deeply merged
1 parent 316688c commit dae5fee

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

packages/ai/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"@firebase/component": "0.6.14",
5353
"@firebase/logger": "0.4.4",
5454
"@firebase/util": "1.11.1",
55+
"deepmerge": "4.3.1",
5556
"tslib": "^2.1.0"
5657
},
5758
"license": "Apache-2.0",

packages/ai/src/methods/chrome-adapter.test.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ describe('ChromeAdapter', () => {
275275
})
276276
).to.be.false;
277277
});
278-
it('extracts expected inputs from the request', async () => {
278+
it('extracts and merges expected inputs from the request', async () => {
279279
const languageModelProvider = {
280280
availability: () => Promise.resolve(Availability.available)
281281
} as LanguageModel;
@@ -285,7 +285,12 @@ describe('ChromeAdapter', () => {
285285
).resolves(Availability.available);
286286
const adapter = new ChromeAdapter(
287287
languageModelProvider,
288-
'prefer_on_device'
288+
'prefer_on_device',
289+
{
290+
createOptions: {
291+
expectedInputs: [{ type: 'text' }]
292+
}
293+
}
289294
);
290295
await adapter.isAvailable({
291296
contents: [
@@ -300,7 +305,7 @@ describe('ChromeAdapter', () => {
300305
]
301306
});
302307
expect(availabilityStub).to.have.been.calledWith({
303-
expectedInputs: [{ type: 'image' }]
308+
expectedInputs: [{ type: 'text' }, { type: 'image' }]
304309
});
305310
});
306311
});

packages/ai/src/methods/chrome-adapter.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import {
3737
LanguageModelMessageRole,
3838
LanguageModelMessageType
3939
} from '../types/language-model';
40-
import { deepExtend } from '@firebase/util';
40+
import deepMerge from 'deepmerge';
4141

4242
/**
4343
* Defines an inference "backend" that uses Chrome's on-device model,
@@ -203,10 +203,7 @@ export class ChromeAdapter {
203203
private mergeCreateOptions(
204204
requestOptions: LanguageModelCreateOptions
205205
): LanguageModelCreateOptions {
206-
return deepExtend(
207-
this.onDeviceParams.createOptions,
208-
requestOptions
209-
) as LanguageModelCreateOptions;
206+
return deepMerge(this.onDeviceParams.createOptions || {}, requestOptions);
210207
}
211208

212209
/**

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6250,7 +6250,7 @@ deep-is@^0.1.3:
62506250
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
62516251
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
62526252

6253-
deepmerge@^4.2.2:
6253+
deepmerge@4.3.1, deepmerge@^4.2.2:
62546254
version "4.3.1"
62556255
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
62566256
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==

0 commit comments

Comments
 (0)