Skip to content

Commit 7fb04c4

Browse files
committed
Extend ExtensionInstance.deployConfig to include app config info
1 parent 7660ce4 commit 7fb04c4

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

packages/app/src/cli/models/extensions/extension-instance.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,30 @@ describe('deployConfig', async () => {
218218
expect(got).toMatchObject({theme_extension: {files: {}}})
219219
})
220220

221+
test('passes app configuration context to deployConfig', async () => {
222+
const extensionInstance = await testThemeExtensions()
223+
const originalDeployConfig = extensionInstance.specification.deployConfig
224+
const deployConfig = vi.fn().mockResolvedValue({theme_extension: {files: {}}})
225+
extensionInstance.specification.deployConfig = deployConfig
226+
227+
try {
228+
await extensionInstance.deployConfig({
229+
apiKey: 'apiKey',
230+
appConfiguration: placeholderAppConfiguration,
231+
})
232+
233+
expect(deployConfig).toHaveBeenCalledWith(
234+
extensionInstance.configuration,
235+
extensionInstance.directory,
236+
'apiKey',
237+
undefined,
238+
{appConfiguration: placeholderAppConfiguration},
239+
)
240+
} finally {
241+
extensionInstance.specification.deployConfig = originalDeployConfig
242+
}
243+
})
244+
221245
test('returns transformed config when defined', async () => {
222246
const extensionInstance = await testAppConfigExtensions()
223247

packages/app/src/cli/models/extensions/extension-instance.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,15 @@ export class ExtensionInstance<TConfiguration extends BaseConfigType = BaseConfi
199199
apiKey,
200200
appConfiguration,
201201
}: ExtensionDeployConfigOptions): Promise<{[key: string]: unknown} | undefined> {
202-
const deployConfig = await this.specification.deployConfig?.(this.configuration, this.directory, apiKey, undefined)
202+
const deployConfig = await this.specification.deployConfig?.(
203+
this.configuration,
204+
this.directory,
205+
apiKey,
206+
undefined,
207+
{
208+
appConfiguration,
209+
},
210+
)
203211
const transformedConfig = this.specification.transformLocalToRemote?.(this.configuration, appConfiguration) as
204212
| {[key: string]: unknown}
205213
| undefined

packages/app/src/cli/models/extensions/specification.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ export interface BuildAsset {
5757
static?: boolean
5858
}
5959

60+
interface ExtensionDeployConfigContext {
61+
appConfiguration: AppConfiguration
62+
}
63+
6064
/**
6165
* Extension specification with all the needed properties and methods to load an extension.
6266
*/
@@ -80,6 +84,7 @@ export interface ExtensionSpecification<TConfiguration extends BaseConfigType =
8084
directory: string,
8185
apiKey: string,
8286
moduleId?: string,
87+
context?: ExtensionDeployConfigContext,
8388
) => Promise<Record<string, unknown> | undefined>
8489
validate?: (config: TConfiguration, configPath: string, directory: string) => Promise<Result<unknown, string>>
8590
preDeployValidation?: (extension: ExtensionInstance<TConfiguration>) => Promise<void>

0 commit comments

Comments
 (0)