diff --git a/packages/app/src/cli/models/extensions/extension-instance.ts b/packages/app/src/cli/models/extensions/extension-instance.ts index bf90ce1f6b5..318617ab2b7 100644 --- a/packages/app/src/cli/models/extensions/extension-instance.ts +++ b/packages/app/src/cli/models/extensions/extension-instance.ts @@ -533,6 +533,8 @@ export class ExtensionInstance( spec: Pick< CreateExtensionSpecType, - 'identifier' | 'appModuleFeatures' | 'buildConfig' | 'uidStrategy' | 'clientSteps' + 'identifier' | 'appModuleFeatures' | 'buildConfig' | 'uidStrategy' | 'clientSteps' | 'transformRemoteToLocal' >, ) { return createExtensionSpecification({ @@ -299,6 +299,7 @@ export function createContractBasedModuleSpecification { let parsedConfig = configWithoutFirstClassFields(config) if (spec.appModuleFeatures().includes('localization')) { diff --git a/packages/app/src/cli/models/extensions/specifications/admin.ts b/packages/app/src/cli/models/extensions/specifications/admin.ts new file mode 100644 index 00000000000..b7aa03027d2 --- /dev/null +++ b/packages/app/src/cli/models/extensions/specifications/admin.ts @@ -0,0 +1,42 @@ +import {createContractBasedModuleSpecification} from '../specification.js' + +const adminSpecificationSpec = createContractBasedModuleSpecification({ + identifier: 'admin', + uidStrategy: 'single', + transformRemoteToLocal: (remoteContent) => { + return { + admin: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + static_root: (remoteContent as any).admin.static_root, + }, + } + }, + buildConfig: { + mode: 'copy_files', + filePatterns: [], + }, + clientSteps: [ + { + lifecycle: 'deploy', + steps: [ + { + id: 'hosted_app_copy_files', + name: 'Hosted App Copy Files', + type: 'include_assets', + config: { + generateManifest: true, + inclusions: [ + { + type: 'configKey', + key: 'admin.static_root', + }, + ], + }, + }, + ], + }, + ], + appModuleFeatures: () => [], +}) + +export default adminSpecificationSpec diff --git a/packages/app/src/cli/models/extensions/specifications/channel.ts b/packages/app/src/cli/models/extensions/specifications/channel.ts index abe89c4a4e0..a52710c4f4c 100644 --- a/packages/app/src/cli/models/extensions/specifications/channel.ts +++ b/packages/app/src/cli/models/extensions/specifications/channel.ts @@ -6,6 +6,7 @@ const FILE_EXTENSIONS = ['json', 'toml', 'yaml', 'yml', 'svg'] const channelSpecificationSpec = createContractBasedModuleSpecification({ identifier: 'channel_config', + uidStrategy: 'single', buildConfig: { mode: 'copy_files', filePatterns: FILE_EXTENSIONS.map((ext) => joinPath(SUBDIRECTORY_NAME, '**', `*.${ext}`)),