@sap/ux-cds-compiler-facade v1.13.3
@sap/ux-cds-compiler-facade
The SAP Fiori Tools - CDS Compiler Facade is a wrapper module for CAP CDS compiler. It contains a set of specific APIs needed for annotation handling in CAP CDS projects.
Compiler facade provides various API methods that allows the user to extract data from the CAP CDS compile model such as metadata, annotation index, compiler messages, annotation propagation map and others (see usage example below) in a compiler version agnostic way.
It supports all the officially supported CAP CDS compiler versions.
Support
Join the SAP Fiori Tools Community. Ask Questions, Read the Latest Blogs, Explore Content. Please assign tag: SAP Fiori tools
To log an issue with SAP Fiori Tools, please see Contact SAP Support.
Installation
Npm
npm install --save @sap/ux-cds-compiler-facade
Yarn
yarn add @sap/ux-cds-compiler-facade
Pnpm
pnpm add @sap/ux-cds-compiler-facade
Usage
Create compiler facade object from existing CDS compile model.
const cdsCompilerFacade = await createCdsCompilerFacade(compileModel);
const uris = cdsCompilerFacade.getAllSourceUris();
If you don't have CDS compile model available, you can compile the project files and obtain compiler facade.
import { readFile } from 'fs/promises';
import { getCdsArtifacts } from '@sap/ux-cds-compiler-facade';
const getFile = async (path: string): Promise<AdapterFile> => {
const relativeUri = path.split('/').join(pathSeparator);
const fileContent = await readFile(join(projectRootFolder, relativeUri));
return { relativeUri, fileContent };
};
const getProjectFiles = async (): Promise<AdapterFile[]> => {
return Promise.all([
getFile('db/schema.cds'),
getFile('srv/admin-service.cds'),
getFile('app/common.cds')
]);
};
const getFileCache = (files: AdapterFile[]): Map<string, FileSystemFile> => {
const cache = new Map<string, FileSystemFile>();
for (const file of files) {
cache.set(file.relativeUri, {
fileContent: file.fileContent,
fileUri: file.relativeUri,
isDirty: false
});
}
return cache;
};
const projectFiles = await getProjectFiles();
const files = projectFiles.map((file) => file.relativeUri);
const cache = getFileCache(projectFiles);
// build CDS artifacts
const project = { root: projectRootFolder, apps: {}, type: ProjectType.Cap };
const { cdsCompilerFacade } = await getCdsArtifacts(project, 'myService', files, cache);
// Use of facade methods and properties
const metadata: MetadataElementMap = cdsCompilerFacade.getMetadata('myService');
const errors = cdsCompilerFacade.getCompilerErrors();
Support
Join the SAP Fiori tools Community. Ask Questions, Read the Latest Blogs, Explore Content.
Please assign tag: SAP Fiori tools.
To log an issue with SAP Fiori tools, please see Contact SAP Support.
Documentation
- Visit SAP Help Portal for SAP Fiori tools documentation.
License
Keywords
OData annotations CAP CDS compiler