@sap/cds-dk
Version:
Command line client and development toolkit for the SAP Cloud Application Programming Model
81 lines (71 loc) • 3.07 kB
JavaScript
/** @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
]})
}