1.13.3 • Published 12 days ago

@sap/ux-cds-compiler-facade v1.13.3

Weekly downloads
-
License
SEE LICENSE IN LI...
Repository
-
Last release
12 days ago

@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

License

Keywords

OData annotations CAP CDS compiler

1.13.3

12 days ago

1.13.2

29 days ago

1.13.1

1 month ago

1.13.0

2 months ago

1.12.5

2 months ago

1.12.4

3 months ago

1.12.3

3 months ago

1.12.2

4 months ago

1.12.0

5 months ago

1.11.5

6 months ago

1.11.4

6 months ago

1.11.3

7 months ago