Socket
Socket
Sign inDemoInstall

@sap/cds-mtxs

Package Overview
Dependencies
Maintainers
1
Versions
60
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sap/cds-mtxs - npm Package Compare versions

Comparing version 1.8.0 to 1.8.1

lib/migration/extension-project-builder.js

5

env.js

@@ -11,3 +11,4 @@ /* eslint-disable quote-props */

const sqlite_mt = { kind: 'sqlite',
credentials: { url: 'db.sqlite' }
credentials: { url: 'db.sqlite' },
schema_evolution:'auto',
}

@@ -101,3 +102,3 @@

"[development]": {
requires: { auth: "dummy" },
// requires: { auth: "dummy" }, -> We need authentication for push and pull requests
server: { port: 4005 }

@@ -104,0 +105,0 @@ }

37

lib/migration/extension-project.js
const path = require('path')
const fs = require('fs').promises
const mtxAdapter = require('./mtx-adapter')
const cds = require('@sap/cds')
const { build } = require('./extension-project-builder')
module.exports.DEFAULT_TAG = 'migrated'

@@ -15,4 +14,6 @@

module.exports.createProjects = async function (tenant, mtxExtension, dir, tagRegex, defaultTag = module.exports.DEFAULT_TAG) {
module.exports.createProjects = async function (mtxExtension, dir, tagRegex, defaultTag = module.exports.DEFAULT_TAG) {
const validTags = []
const extensions = _splitExtensionByTag(mtxExtension, tagRegex, defaultTag)

@@ -28,3 +29,3 @@

}
await fs.mkdir(projectFolder, { recursive:true })
await fs.mkdir(projectFolder, { recursive: true })
// extension is a map of files

@@ -36,25 +37,13 @@ await mtxAdapter.writeFilesFromMap(Array.from(extension), projectFolder)

// keep in mind to avoid parallel execution !! - use runner from old mtx?
// some workarounds to ensure that the internal models are never added
const env = cds.env
const root = cds.root
const cwd = process.cwd()
try {
process.chdir(projectFolder)
cds.root = projectFolder
cds.env = cds.env.for('cds', projectFolder)
cds.env.build.tasks = [
{
for: 'mtx-extension',
options: {
defaultBuiltInModels: false
}
}
]
await cds.build()
} finally {
process.chdir(cwd)
cds.root = root
cds.env = env
await build({ project: projectFolder })
} catch (error) {
if (!error.code === 'MODEL_NOT_FOUND') throw error
continue
}
validTags.push(tag)
}
return validTags
}

@@ -61,0 +50,0 @@

@@ -183,3 +183,3 @@ const path = require('path')

LOG.log('cds.xt.Extensions not yet deployed, deploying ...')
DEBUG?.(error)
DEBUG && DEBUG(error)
await ds.subscribe({ tenant, metadata, options: { csn: extTables } }) // also creates metadata ...

@@ -197,7 +197,6 @@ }

await createProjects(tenant, mtxExtension, tenantProjectFolder, tagRegex, defaultTag)
const tags = await createProjects(mtxExtension, tenantProjectFolder, tagRegex, defaultTag)
// upload and verify extensions
// iterate all tags
const tags = await fs.readdir(tenantProjectFolder)
migrationResult.log(tenant, `Created projects for tags "${tags}"`)

@@ -208,3 +207,3 @@

try {
await _verifyExtension(tenantProjectFolder, tenant)
await _verifyExtension(tenantProjectFolder, tenant, tags)
migrationResult.log(tenant, `Extension verification successful for tenant ${tenant} [${tenantProjectFolder}]`)

@@ -270,5 +269,5 @@ } catch (error) {

async function _verifyExtension(tenantProjectFolder, tenant) {
async function _verifyExtension(tenantProjectFolder, tenant, tags) {
const projectFolders = await fs.readdir(tenantProjectFolder)
const projectFolders = tags//await fs.readdir(tenantProjectFolder)

@@ -282,11 +281,4 @@ const mp = await cds.connect.to('cds.xt.ModelProviderService')

for (const projectFolder of projectFolders) {
let extensionCsn
try {
const extensionCsnString = await fs.readFile(path.join(tenantProjectFolder, projectFolder, 'gen', 'ext', 'extension.csn'))
extensionCsn = JSON.parse(extensionCsnString)
} catch (error) {
// if migration gets here there MUST be an extension -> throw error
throw new Error(`No extension build result found for tenant ${tenant}`)
}
const extensionCsnString = await fs.readFile(path.join(tenantProjectFolder, projectFolder, 'gen', 'ext', 'extension.csn'))
const extensionCsn = JSON.parse(extensionCsnString)
// do not apply extensions if mp.getCsn already contained extensions

@@ -311,2 +303,5 @@ // TODO refine check

}
if (hanaDiffNewToOld.migrations.length) {
throw new Error(`Verification error for tenant ${tenant}: migrations found`)
}

@@ -313,0 +308,0 @@ // does the new model contain more artifacts?

{
"name": "@sap/cds-mtxs",
"version": "1.8.0",
"version": "1.8.1",
"description": "SAP Cloud Application Programming Model - Multitenancy library",

@@ -5,0 +5,0 @@ "homepage": "https://cap.cloud.sap/",

@@ -17,2 +17,6 @@ const fs = require('fs').promises

}
// If we run in sidecar with mocked auth, use the main app's configured mock users
if (conf.root && cds.env.requires.auth?.users) {
cds.env.requires.auth.users = main.requires.auth.users
}
const fts = main.env.features.folders

@@ -19,0 +23,0 @@ const DEBUG = cds.debug('mtx')

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc