UNPKG

@sap/cds-dk

Version:

Command line client and development toolkit for the SAP Cloud Application Programming Model

81 lines (71 loc) 3.07 kB
/** @type { import('./cds') & CdsDk & CdsDkAdd & CdsDkBuild} */ const cds = module.exports = require('./cds') class CdsDk { get import() { return super.import = require('./import/importapi') } /** @type { import('./cds').compile } */ get compile() { let compile = require(_local('@sap/cds/lib/compile/cds-compile')) cds.extend (compile.to.constructor) .with (class { get asyncapi() { return super.asyncapi = require('./compile/to_asyncapi') } get openapi() { return super.openapi = require('./compile/to_openapi') } get xsuaa(){ return super.xsuaa = require('./compile/to-xsuaa') } get mermaid(){ return super.mermaid = require('./compile/to-mermaid') } 'edmx-v2'(csn,o) { return cds.compile.to.edmx(csn,{...o,flavor:'v2'}) } 'edmx-v4'(csn,o) { return cds.compile.to.edmx(csn,{...o,flavor:'v4'}) } 'edmx-w4'(csn,o) { return cds.compile.to.edmx(csn,{...o,flavor:'w4'}) } 'edmx-x4'(csn,o) { return cds.compile.to.edmx(csn,{...o,flavor:'x4'}) } }) return super.compile = compile } // add overlay4 method to cds.schema to retrieve schema with cds-dk features // schema is cds version specific; add cds-dk parts not present in cds, e.g. build // failsafe for legacy cds without schema.constructor get schema() { let schema = require(_local('@sap/cds/lib/env/schemas')) cds.extend(schema.constructor) .with (class { get overlay4() { return super.overlay4 = require('./env/schema') } }) return super.schema = schema } } const REQUIRED_CDS_MAJOR = 7, REQUIRED_CDS_MINOR = 2 const [major, minor] = cds.version.split('.').map(Number) if (major < REQUIRED_CDS_MAJOR || major === REQUIRED_CDS_MAJOR && minor < REQUIRED_CDS_MINOR) { const [dkVersion] = require('../package.json').version.split('.') console.error(` This application uses '@sap/cds' version ${major}.${minor}, which is not compatible with the installed '@sap/cds-dk' version ${dkVersion}. You can either: - update '@sap/cds' to the latest version (recommended) - downgrade '@sap/cds-dk' to version ${REQUIRED_CDS_MAJOR} `) process.exit(1) } const EXCLUDED_CDS_MAJOR = 9 if (major >= EXCLUDED_CDS_MAJOR) { const [dkVersion] = require('../package.json').version.split('.') console.error(` This application uses '@sap/cds' version ${major}, which is not compatible with the installed '@sap/cds-dk' version ${dkVersion}. Update '@sap/cds-dk' to the latest version. `) process.exit(1) } cds.extend (cds.constructor) .with (CdsDk) class CdsDkAdd { get add() { return super.add = require('./init/add') } } class CdsDkBuild { get build() { return super.build = require('./build') } } if (process.argv[2] in { add:1, init:1, help:1 }) { cds.extend (cds.constructor) .with (CdsDkAdd) } else if (process.argv[2] in { build:1, deploy:1, push:1 }) { cds.extend (cds.constructor) .with (CdsDkBuild) } function _local (id) { return require.resolve (id, {paths:[ process.cwd(), // project-local module is preferred __dirname // otherwise from our own dependencies ]}) }