diff --git a/cli/src/commands/xlr/compile.ts b/cli/src/commands/xlr/compile.ts index 7ede6883..c7282a85 100644 --- a/cli/src/commands/xlr/compile.ts +++ b/cli/src/commands/xlr/compile.ts @@ -131,6 +131,16 @@ export default class XLRCompile extends BaseCommand { } if (generatedCapabilites) { + generatedCapabilites = { + ...generatedCapabilites, + }; + if (customPrimitives) { + generatedCapabilites = { + ...generatedCapabilites, + customPrimitives, + }; + } + capabilities = generatedCapabilites; } } @@ -151,16 +161,19 @@ export default class XLRCompile extends BaseCommand { }) .join('\n')} -module.exports = { - "pluginName": "${capabilities.pluginName}", - "capabilities": { - ${[...(capabilities.capabilities?.entries() ?? [])] - .map(([capabilityName, provides]) => { - return `"${capabilityName}":[${provides.join(',')}],`; - }) - .join('\n\t\t')} - } -} + module.exports = { + "pluginName": "${capabilities.pluginName}", + "capabilities": { + ${[...(capabilities.capabilities?.entries() ?? [])] + .map(([capabilityName, provides]) => { + return `"${capabilityName}":[${provides.join(',')}],`; + }) + .join('\n\t\t')} + }, + "customPrimitives": [ + ${[capabilities.customPrimitives?.map((i) => `'${i}'`).join(',') ?? '']} + ] + } `; fs.writeFileSync(path.join(outputDirectory, 'manifest.js'), tsManifestFile); diff --git a/cli/src/utils/xlr/visitors/file.ts b/cli/src/utils/xlr/visitors/file.ts index 2768799b..be55a2a4 100644 --- a/cli/src/utils/xlr/visitors/file.ts +++ b/cli/src/utils/xlr/visitors/file.ts @@ -2,7 +2,6 @@ import type { Manifest } from '@player-tools/xlr'; import path from 'path'; import fs from 'fs'; import type { VisitorProps } from './types'; - /** export all exported types in the file */ export function fileVisitor(args: VisitorProps): Manifest | undefined { const { sourceFile, converter, outputDirectory } = args; diff --git a/common/static_xlrs/core/xlr/manifest.js b/common/static_xlrs/core/xlr/manifest.js index 4d64803c..2a262220 100644 --- a/common/static_xlrs/core/xlr/manifest.js +++ b/common/static_xlrs/core/xlr/manifest.js @@ -34,5 +34,13 @@ module.exports = { "pluginName": "Types", "capabilities": { "Types":[Asset,AssetBinding,SwitchCase,Switch,AssetWrapper,AssetWrapperOrSwitch,AssetSwitch,StaticSwitch,DynamicSwitch,Expression,ExpressionRef,Binding,BindingRef,DataModel,Navigation,ExpressionObject,NavigationFlow,NavigationFlowTransition,NavigationBaseState,NavigationFlowTransitionableState,NavigationFlowViewState,NavigationFlowEndState,NavigationFlowActionState,NavigationFlowExternalState,NavigationFlowFlowState,NavigationFlowState,FlowResult,Templatable,Template,View,Flow], - } + }, + "customPrimitives":[ + 'Expression', + 'Asset', + 'Binding', + 'AssetWrapper', + 'Schema.DataType', + 'ExpressionHandler', + ] } diff --git a/xlr/types/src/utility.ts b/xlr/types/src/utility.ts index aabc759e..152b21de 100644 --- a/xlr/types/src/utility.ts +++ b/xlr/types/src/utility.ts @@ -17,6 +17,8 @@ export interface Manifest { pluginName: string; /** Map of capabilities provided by the plugin to the name of the XLR for the capabilities */ capabilities?: Map>; + /** CustomPrimitives that are the most basic types in the Payer Ecosystem */ + customPrimitives?: Array; } export interface TSManifest {