From 532f64c2ebf8e8c027e23853b030b4a3cf0eeae7 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Thu, 20 Jan 2022 17:11:56 -0500 Subject: [PATCH 1/5] First version using hdb module --- CHANGELOG.json | 22 +- CHANGELOG.md | 6 + bin/callProcedure.js | 19 +- bin/cds.js | 5 +- bin/containers.js | 17 +- bin/copy2DefaultEnv.js | 3 +- bin/functions.js | 8 +- bin/indexes.js | 8 +- bin/iniContents.js | 8 +- bin/inspectFunction.js | 3 +- bin/inspectIndex.js | 3 +- bin/inspectLibMember.js | 3 +- bin/inspectLibrary.js | 3 +- bin/inspectProcedure.js | 3 +- bin/inspectTable.js | 11 +- bin/inspectTrigger.js | 3 +- bin/inspectView.js | 3 +- bin/libraries.js | 9 +- bin/objects.js | 8 +- bin/openDBExplorer.js | 3 +- bin/privilegeError.js | 3 +- bin/procedures.js | 8 +- bin/roles.js | 8 +- bin/schemas.js | 6 +- bin/sequences.js | 8 +- bin/synonyms.js | 10 +- bin/tables.js | 9 +- bin/triggers.js | 10 +- bin/users.js | 6 +- bin/version.js | 4 +- bin/views.js | 8 +- npm-shrinkwrap.json | 1412 ++++++----------- package.json | 21 +- .../help/utils/adapters/fiori/Component.d.ts | 0 types/app/resources/WebAssistant.d.ts | 0 types/utils/base.d.ts | 11 +- types/utils/connections.d.ts | 2 +- types/utils/sqlInjection.d.ts | 72 + utils/base.js | 8 +- utils/connections.js | 31 +- utils/dbInspect.js | 3 +- utils/massConvert.js | 9 +- utils/sqlInjection.js | 157 ++ 43 files changed, 824 insertions(+), 1130 deletions(-) create mode 100644 types/app/dfa/help/utils/adapters/fiori/Component.d.ts create mode 100644 types/app/resources/WebAssistant.d.ts create mode 100644 types/utils/sqlInjection.d.ts create mode 100644 utils/sqlInjection.js diff --git a/CHANGELOG.json b/CHANGELOG.json index 68c4907..c355eab 100644 --- a/CHANGELOG.json +++ b/CHANGELOG.json @@ -1,24 +1,31 @@ [ + { + "date": "2022-01-21", + "version": "3.202201.1", + "Changed": [ + "Major New Version: Remove dependency upon @sap/hdbext and @sap/hana-client. Replaced with smaller footprint hdb module." + ] + }, { "date": "2022-01-11", "version": "2.202201.9", "Changed": [ "Update the Web UI Web Asssistant feature to work with the experimental SAP Horizon theme", - "GraphQL option of cds command now fully works and cross references entity name in the exit correctly" + "GraphQL option of cds command now fully works and cross references entity name in the exit correctly" ] }, { "date": "2022-01-10", "version": "2.202201.8", "Changed": [ - "Fix [Issue #66](https://github.com/SAP-samples/hana-developer-cli-tool-example/issues/66) - account for different return JSON in cf service-key depending upon if the cf cli is ver 7 or ver 8" + "Fix [Issue #66](https://github.com/SAP-samples/hana-developer-cli-tool-example/issues/66) - account for different return JSON in cf service-key depending upon if the cf cli is ver 7 or ver 8" ] }, { "date": "2022-01-10", "version": "2.202201.7", "Changed": [ - "Replace Node.js module colors with chalk [https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/](https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/)" + "Replace Node.js module colors with chalk [https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/](https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/)" ] }, { @@ -27,7 +34,7 @@ "Changed": [ "Updates to support SAP BTP Free Tier and the hana-free service plan", "createModule command update package.json it produces to support newer versions of Node.js", - "Version dependency updates @sap/hdbext 7.5, @sap/hana-client 2.11.14, @sap/cds to 5.7.4 and SAPUI5 to 1.97.1" + "Version dependency updates @sap/hdbext 7.5, @sap/hana-client 2.11.14, @sap/cds to 5.7.4 and SAPUI5 to 1.97.1" ] }, { @@ -37,14 +44,14 @@ "Upgrade dependencies @sap/hdbext 7.4.1, @sap/hana-client 2.10.20, @sap/cds to 5.6.4 and SAPUI5 to 1.96.1", "Add first support for GraphQL Experimental (queries don't exit and cross reference table name yet)", "Switch to SAP_HORIZON new visual theme", - "Support for Node.js 16.x although you might see some warnings for inner packages upon install" + "Support for Node.js 16.x although you might see some warnings for inner packages upon install" ] }, { "date": "2021-10-25", "version": "2.202110.1", "Changed": [ - "Upgrade dependencies @sap/hdbext 7.4, @sap/hana-client 2.10.x, @sap/cds to 5.5.5 and SAPUI5 to 1.95.0" + "Upgrade dependencies @sap/hdbext 7.4, @sap/hana-client 2.10.x, @sap/cds to 5.5.5 and SAPUI5 to 1.95.0" ] }, { @@ -54,7 +61,6 @@ "Tested and made fixes for upcomming Node.js 16.x support. Tested under Node.js 16.9.0. You can use with Node.js 16, but will receive installation warnings and a warning on each command as the inner SAP supplied modules are technically not validated or supported yet on Node.js 16. However my local tests have been sucessful after some minor code changes. We will offically support Node.js 16 as soon as key SAP inner modules do as well", "Upgrade dependencies @sap/cds to 5.4.4 and SAPUI5 to 1.94.0", "New Command querySimpleUI - browser based UI for executing single SQL Statements" - ] }, { @@ -64,7 +70,6 @@ "Added status of hana cloud instance to output of command hc by [sbarzaghialteaup](https://github.com/sbarzaghialteaup) [Pull Request 64](https://github.com/SAP-samples/hana-developer-cli-tool-example/pull/64)", "Optimize performance for the inspectTable feature in the Browser based UI", "Switch to the UI5 CodeEditor for output in the inspectTable command in the Browser" - ] }, { @@ -75,7 +80,6 @@ "Update Dependencies - especially HANA Client to 2.9.28", "Update to SAPUI5 1.93.0", "Convert entire project to ECMAScript Modules (ESM) - this is a massive internal change and we appologize in advance if it results in any instablity. If you hit any issues please report then you can target specifically the last version until they are resolved" - ] }, { diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dab60c..9c5b221 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/). +## [3.202201.1] - 2022-01-21 + +**Changed** + +- Major New Version: Remove dependency upon @sap/hdbext and @sap/hana-client. Replaced with smaller footprint hdb module + ## [2.202201.9] - 2022-01-11 **Changed** diff --git a/bin/callProcedure.js b/bin/callProcedure.js index 3e5b437..5aef7f8 100644 --- a/bin/callProcedure.js +++ b/bin/callProcedure.js @@ -1,10 +1,7 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' - import * as dbInspect from '../utils/dbInspect.js' -import * as conn from'../utils/connections.js' -import * as hdbext from '@sap/hdbext' +import * as conn from '../utils/connections.js' export const command = 'callProcedure [schema] [procedure]' export const aliases = ['cp', 'callprocedure', 'callProc', 'callproc', 'callSP', 'callsp'] @@ -25,7 +22,7 @@ export const builder = base.getBuilder({ }) -export async function handler (argv) { +export async function handler(argv) { let schema = { procedure: { description: base.bundle.getText("procedure"), @@ -43,8 +40,8 @@ export async function handler (argv) { const dbConn = await conn.createConnection(argv) - const db = new dbClass(dbConn) - let procSchema = await dbClass.schemaCalc(argv, db) + const db = new base.dbClass(dbConn) + let procSchema = await base.dbClass.schemaCalc(argv, db) base.debug(`${base.bundle.getText("schema")}: ${procSchema}, ${base.bundle.getText("procedure")}: ${argv.procedure}`) let proc = await dbInspect.getProcedure(db, procSchema, argv.procedure) @@ -80,7 +77,7 @@ export async function handler (argv) { } } } - base.debug(schema) + base.debug(schema) } catch (error) { base.error(error) } @@ -94,7 +91,7 @@ export async function callProc(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) let proc = await dbInspect.getProcedure(db, schema, prompts.procedure) let parameters = await dbInspect.getProcedurePrams(db, proc[0].PROCEDURE_OID) var inputParams = { @@ -105,7 +102,7 @@ export async function callProc(prompts) { } } - let sp = await db.loadProcedurePromisified(hdbext, proc[0].SCHEMA_NAME, prompts.procedure) + let sp = await db.loadProcedurePromisified(proc[0].SCHEMA_NAME, prompts.procedure) let output = await db.callProcedurePromisified(sp, inputParams) base.debug(output) base.outputTable(output.outputScalar) @@ -114,7 +111,7 @@ export async function callProc(prompts) { case 1: break case 2: - if(output.results){ + if (output.results) { base.outputTable(output.results) } break diff --git a/bin/cds.js b/bin/cds.js index 9ad2e82..b0c3c81 100644 --- a/bin/cds.js +++ b/bin/cds.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' import * as dbInspect from '../utils/dbInspect.js' import * as swaggerUi from 'swagger-ui-express' import open from 'open' @@ -94,7 +93,7 @@ export async function cdsBuild(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) let object, fields, constraints, cdsSource dbInspect.options.useHanaTypes = prompts.useHanaTypes dbInspect.options.noColons = true @@ -236,7 +235,7 @@ async function cdsServerSetup(prompts, cdsSource) { if (req.query.SELECT.columns) { //&& req.query.SELECT.columns[0].func) { // @ts-ignore if (req.query.SELECT.columns[0].func) { - const db = new dbClass(await conn.createConnection(prompts)) + const db = new base.dbClass(await conn.createConnection(prompts)) query += `COUNT(*) AS "counted" FROM "${prompts.table}"` return (await db.execSQL(query)) } diff --git a/bin/containers.js b/bin/containers.js index e2493dc..69dff67 100644 --- a/bin/containers.js +++ b/bin/containers.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as hdbext from '@sap/hdbext' -import dbClass from 'sap-hdbext-promisfied' export const command = 'containers [containerGroup] [container]' export const aliases = ['cont', 'listContainers', 'listcontainers'] @@ -28,7 +26,7 @@ export const builder = base.getBuilder({ } }) -export let inputPrompts = { +export let inputPrompts = { container: { description: base.bundle.getText("container"), type: 'string', @@ -46,7 +44,7 @@ export let inputPrompts = { } } -export function handler (argv) { +export function handler(argv) { base.promptHandler(argv, getContainers, inputPrompts) } @@ -79,9 +77,16 @@ export async function getContainersInt(containerGroup, container, client, limit) WHERE A.CONTAINER_NAME LIKE ? AND A.CONTAINER_GROUP_NAME LIKE ? ORDER BY A.CONTAINER_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + + if (limit | base.sqlInjection.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } - return await client.statementExecPromisified(await client.preparePromisified(query), [dbClass.objectName(container), dbClass.objectName(containerGroup)]) + return await client.statementExecPromisified( + await client.preparePromisified(query), + [ + base.dbClass.objectName(container), + base.dbClass.objectName(containerGroup) + ] + ) } diff --git a/bin/copy2DefaultEnv.js b/bin/copy2DefaultEnv.js index ef363f3..e852f0f 100644 --- a/bin/copy2DefaultEnv.js +++ b/bin/copy2DefaultEnv.js @@ -1,6 +1,6 @@ // @ts-check import * as base from '../utils/base.js' -import * as dotenv from 'dotenv' +import 'dotenv/config' import * as fs from 'fs' export const command = 'copy2DefaultEnv' @@ -15,7 +15,6 @@ export function handler (argv) { export async function copy() { base.debug('copy') - dotenv.config() let defaultEnv = {} if (process.env.VCAP_SERVICES == null) { return base.error(base.bundle.getText("errNoEnv")) diff --git a/bin/functions.js b/bin/functions.js index 5c1461a..2d18223 100644 --- a/bin/functions.js +++ b/bin/functions.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'functions [schema] [function]' export const aliases = ['f', 'listFuncs', 'ListFunc', 'listfuncs', 'Listfunc', "listFunctions", "listfunctions"] @@ -57,7 +55,7 @@ export async function getFunctions(prompts) { const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.output(`Schema: ${schema}, Function: ${prompts.function}`) let results = await getFunctionsInt(schema, prompts.function, db, prompts.limit) @@ -72,14 +70,14 @@ export async function getFunctions(prompts) { async function getFunctionsInt(schema, functionName, client, limit) { base.debug(`getFunctionsInt ${schema} ${functionName} ${limit}`) - functionName = dbClass.objectName(functionName) + functionName = base.dbClass.objectName(functionName) var query = `SELECT SCHEMA_NAME, FUNCTION_NAME, SQL_SECURITY, CREATE_TIME from FUNCTIONS WHERE SCHEMA_NAME LIKE ? AND FUNCTION_NAME LIKE ? ORDER BY FUNCTION_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjection.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, functionName]) diff --git a/bin/indexes.js b/bin/indexes.js index 39e9967..4184c7d 100644 --- a/bin/indexes.js +++ b/bin/indexes.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" -import * as hdbext from '@sap/hdbext' export const command = 'indexes [schema] [indexes]' export const aliases = ['ind', 'listIndexes', 'ListInd', 'listind', 'Listind', "listfindexes"] @@ -56,7 +54,7 @@ export async function getIndexes(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.output(`Schema: ${schema}, Index: ${prompts.indexes}`) let results = await getIndexesInt(schema, prompts.indexes, db, prompts.limit) @@ -71,14 +69,14 @@ export async function getIndexes(prompts) { async function getIndexesInt(schema, indexes, client, limit) { base.debug(`getIndexesInt ${schema} ${indexes} ${limit}`) - indexes = dbClass.objectName(indexes) + indexes = base.dbClass.objectName(indexes) let query = `SELECT SCHEMA_NAME, TABLE_NAME, INDEX_NAME, INDEX_TYPE, CONSTRAINT, CREATE_TIME from INDEXES WHERE SCHEMA_NAME LIKE ? AND INDEX_NAME LIKE ? ORDER BY SCHEMA_NAME, TABLE_NAME, INDEX_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjection.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, indexes]) diff --git a/bin/iniContents.js b/bin/iniContents.js index 14844bd..e995979 100644 --- a/bin/iniContents.js +++ b/bin/iniContents.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'iniContents [file] [section]' export const aliases = ['if', 'inifiles', 'ini'] @@ -54,15 +52,15 @@ export async function iniContents(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let iniFile = dbClass.objectName(prompts.file) - let section = dbClass.objectName(prompts.section) + let iniFile = base.dbClass.objectName(prompts.file) + let section = base.dbClass.objectName(prompts.section) var query = `SELECT * from M_INIFILE_CONTENTS WHERE FILE_NAME LIKE ? AND SECTION LIKE ? ORDER BY FILE_NAME, SECTION, KEY ` - if (prompts.limit | hdbext.sqlInjectionUtils.isAcceptableParameter(prompts.limit)) { + if (prompts.limit | base.sqlInjectionUtils.isAcceptableParameter(prompts.limit)) { query += `LIMIT ${prompts.limit.toString()}` } let results = await db.statementExecPromisified(await db.preparePromisified(query), [iniFile, section]) diff --git a/bin/inspectFunction.js b/bin/inspectFunction.js index 762db27..ff28204 100644 --- a/bin/inspectFunction.js +++ b/bin/inspectFunction.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' import * as dbInspect from '../utils/dbInspect.js' import {highlight} from 'cli-highlight' @@ -57,7 +56,7 @@ export async function functionInspect(prompts) { const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("function")}: ${prompts.function}`); let proc = await dbInspect.getFunction(db, schema, prompts.function); diff --git a/bin/inspectIndex.js b/bin/inspectIndex.js index 5b9b73f..5bb42d3 100644 --- a/bin/inspectIndex.js +++ b/bin/inspectIndex.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" export const command = 'inspectIndex [schema] [index]' export const aliases = ['ii', 'index', 'insIndex', 'inspectindex'] @@ -41,7 +40,7 @@ export async function indexInspect(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.output(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("index")}: ${prompts.index}`) let query = diff --git a/bin/inspectLibMember.js b/bin/inspectLibMember.js index 07dceee..cf58a40 100644 --- a/bin/inspectLibMember.js +++ b/bin/inspectLibMember.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import {highlight} from 'cli-highlight' export const command = 'inspectLibMember [schema] [library] [libraryMem]' @@ -65,7 +64,7 @@ export async function libraryMemInspect(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("library")}: ${prompts.library}, ${base.bundle.getText("libMember")}: ${prompts.libraryMem}`) let query = diff --git a/bin/inspectLibrary.js b/bin/inspectLibrary.js index ce7b070..88ec334 100644 --- a/bin/inspectLibrary.js +++ b/bin/inspectLibrary.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import {highlight} from 'cli-highlight' export const command = 'inspectLibrary [schema] [library]' @@ -57,7 +56,7 @@ export async function libraryInspect(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("library")}: ${prompts.library}`) let query = diff --git a/bin/inspectProcedure.js b/bin/inspectProcedure.js index 7987859..a5a6a7c 100644 --- a/bin/inspectProcedure.js +++ b/bin/inspectProcedure.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import * as dbInspect from '../utils/dbInspect.js' import {highlight} from 'cli-highlight' @@ -56,7 +55,7 @@ export async function procedureInspect(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("procedure")}: ${prompts.procedure}`) let proc = await dbInspect.getProcedure(db, schema, prompts.procedure) diff --git a/bin/inspectTable.js b/bin/inspectTable.js index 04da2c3..2a8687c 100644 --- a/bin/inspectTable.js +++ b/bin/inspectTable.js @@ -1,8 +1,6 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import * as dbInspect from '../utils/dbInspect.js' -import * as conn from "../utils/connections.js" import { highlight } from 'cli-highlight' import cds from '@sap/cds' // @ts-ignore @@ -76,12 +74,9 @@ export function handler(argv) { export async function tableInspect(prompts) { base.debug('tableInspect') try { - // base.setPrompts(prompts) - //const db = await base.createDBConnection() - - let dbConnection = await conn.createConnection(prompts, false) - const db = new dbClass(dbConnection) - let schema = await dbClass.schemaCalc(prompts, db) + base.setPrompts(prompts) + const db = await base.createDBConnection() + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("table")}: ${prompts.table}`) dbInspect.options.useHanaTypes = prompts.useHanaTypes diff --git a/bin/inspectTrigger.js b/bin/inspectTrigger.js index fc60375..b11cc1b 100644 --- a/bin/inspectTrigger.js +++ b/bin/inspectTrigger.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import {highlight} from 'cli-highlight' export const command = 'inspectTrigger [schema] [trigger]' @@ -56,7 +55,7 @@ export async function triggerInspect(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("trigger")}: ${prompts.trigger}`) let query = diff --git a/bin/inspectView.js b/bin/inspectView.js index d489405..1b8c8ee 100644 --- a/bin/inspectView.js +++ b/bin/inspectView.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" import * as dbInspect from '../utils/dbInspect.js' import {highlight} from 'cli-highlight' import cds from '@sap/cds' @@ -74,7 +73,7 @@ export async function viewInspect(prompts) { try { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("view")}: ${prompts.view}`) dbInspect.options.useHanaTypes = prompts.useHanaTypes diff --git a/bin/libraries.js b/bin/libraries.js index 9674fe9..5a70326 100644 --- a/bin/libraries.js +++ b/bin/libraries.js @@ -1,8 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" -import * as hdbext from '@sap/hdbext' - export const command = 'libraries [schema] [library]' export const aliases = ['l', 'listLibs', 'ListLibs', 'listlibs', 'ListLib', "listLibraries", "listlibraries"] export const describe = base.bundle.getText("libraries") @@ -54,7 +51,7 @@ export async function getLibraries(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("library")}: ${prompts.library}`) let results = await getLibrariesInt(schema, prompts.library, db, prompts.limit) @@ -68,13 +65,13 @@ export async function getLibraries(prompts) { async function getLibrariesInt(schema, library, client, limit) { base.debug(`getLibrariesInt ${schema} ${library} ${limit}`) - library = dbClass.objectName(library) + library = base.dbClass.objectName(library) let query = `SELECT SCHEMA_NAME, LIBRARY_NAME, OWNER_NAME, LIBRARY_TYPE, IS_VALID, CREATE_TIME from LIBRARIES WHERE SCHEMA_NAME LIKE ? AND LIBRARY_NAME LIKE ? ORDER BY LIBRARY_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjection.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, library]) diff --git a/bin/objects.js b/bin/objects.js index 32b2c04..b29fd8f 100644 --- a/bin/objects.js +++ b/bin/objects.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'objects [schema] [object]' export const aliases = ['o', 'listObjects', 'listobjects'] @@ -54,7 +52,7 @@ export async function getObjects(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("object")}: ${prompts.object}`) let results = await getObjectsInt(schema, prompts.object, db, prompts.limit) @@ -68,14 +66,14 @@ export async function getObjects(prompts) { async function getObjectsInt(schema, object, client, limit) { base.debug(`getObjectsInt ${schema} ${object} ${limit}`) - object = dbClass.objectName(object) + object = base.dbClass.objectName(object) var query = `SELECT OBJECT_CATEGORY, SCHEMA_NAME, OBJECT_NAME, OBJECT_TYPE, TO_NVARCHAR(OBJECT_OID) AS OBJECT_OID from OBJECTS WHERE SCHEMA_NAME LIKE ? AND OBJECT_NAME LIKE ? ORDER BY OBJECT_TYPE, OBJECT_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, object]) diff --git a/bin/openDBExplorer.js b/bin/openDBExplorer.js index 7593d37..78d86b5 100644 --- a/bin/openDBExplorer.js +++ b/bin/openDBExplorer.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' import * as conn from '../utils/connections.js' import open from 'open' @@ -34,7 +33,7 @@ export async function getDBX(prompts) { } else if (host.includes('ap21.hanacloud')) { dbxURL = 'https://hana-cockpit.cfapps.ap21.hana.ondemand.com/sap/hana/cst/catalog/index.html' } else { - const db = new dbClass(await conn.createConnection(prompts)) + const db = new base.dbClass(await conn.createConnection(prompts)) let query = `SELECT * from M_INIFILE_CONTENTS WHERE FILE_NAME LIKE 'xscontroller.ini' diff --git a/bin/privilegeError.js b/bin/privilegeError.js index db68957..15fd382 100644 --- a/bin/privilegeError.js +++ b/bin/privilegeError.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as hdbext from '@sap/hdbext' export const command = 'privilegeError [guid]' export const aliases = ['pe', 'privilegeerror', 'privilegerror', 'getInsuffficientPrivilegeErrorDetails'] @@ -34,7 +33,7 @@ export async function dbCall(prompts) { GUID: prompts.guid } - let sp = await db.loadProcedurePromisified(hdbext, "SYS", "GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS") + let sp = await db.loadProcedurePromisified("SYS", "GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS") let object = await db.callProcedurePromisified(sp, inputParams) if (object.results < 1) { throw new Error(base.bundle.getText("errGUID")) diff --git a/bin/procedures.js b/bin/procedures.js index e322431..f6c8559 100644 --- a/bin/procedures.js +++ b/bin/procedures.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'procedures [schema] [procedure]' export const aliases = ['p', 'listProcs', 'ListProc', 'listprocs', 'Listproc', "listProcedures", "listprocedures"] @@ -54,7 +52,7 @@ export async function getProcedures(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db); + let schema = await base.dbClass.schemaCalc(prompts, db); base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("procedure")}: ${prompts.procedure}`); let results = await getProceduresInt(schema, prompts.procedure, db, prompts.limit) @@ -68,13 +66,13 @@ export async function getProcedures(prompts) { async function getProceduresInt(schema, procedure, client, limit) { base.debug(`getProceduresInt ${schema} ${procedure} ${limit}`) - procedure = dbClass.objectName(procedure) + procedure = base.dbClass.objectName(procedure) let query = `SELECT SCHEMA_NAME, PROCEDURE_NAME, SQL_SECURITY, CREATE_TIME from PROCEDURES WHERE SCHEMA_NAME LIKE ? AND PROCEDURE_NAME LIKE ? ORDER BY PROCEDURE_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, procedure]) diff --git a/bin/roles.js b/bin/roles.js index 28b473d..11333e7 100644 --- a/bin/roles.js +++ b/bin/roles.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'roles [schema] [role]' export const aliases = ['r', 'listRoles', 'listroles'] @@ -54,7 +52,7 @@ export async function getRoles(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("role")}: ${prompts.role}`) let results = await getRolesInt(schema, prompts.role, db, prompts.limit) @@ -69,7 +67,7 @@ export async function getRoles(prompts) { async function getRolesInt(schema, role, client, limit) { base.debug(`getRolesInt ${schema} ${role} ${limit}`) - role = dbClass.objectName(role) + role = base.dbClass.objectName(role) let query = '' if (schema === '%') { query = @@ -91,7 +89,7 @@ async function getRolesInt(schema, role, client, limit) { ORDER BY ROLE_SCHEMA_NAME, ROLE_NAME ` } - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, role]) diff --git a/bin/schemas.js b/bin/schemas.js index 7c6752b..f56a591 100644 --- a/bin/schemas.js +++ b/bin/schemas.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" -import * as hdbext from "@sap/hdbext" export const command = 'schemas [schema]' export const aliases = ['sch', 'getSchemas', 'listSchemas'] @@ -71,7 +69,7 @@ export async function getSchemas(prompts) { async function getSchemasInt(schema, client, limit, all) { base.debug(`getSchemasInt ${schema} ${limit} ${all}`) - schema = dbClass.objectName(schema) + schema = base.dbClass.objectName(schema) let hasPrivileges = 'FALSE' if (!all) { hasPrivileges = 'TRUE' } console.log(schema) @@ -80,7 +78,7 @@ async function getSchemasInt(schema, client, limit, all) { WHERE SCHEMA_NAME LIKE ? AND HAS_PRIVILEGES = ? ORDER BY SCHEMA_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, hasPrivileges]) diff --git a/bin/sequences.js b/bin/sequences.js index dc1712c..3c5cc23 100644 --- a/bin/sequences.js +++ b/bin/sequences.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'sequences [schema] [sequence]' export const aliases = ['seq', 'listSeqs', 'ListSeqs', 'listseqs', 'Listseq', "listSequences"] @@ -54,7 +52,7 @@ export async function getSequences(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("sequence")}: ${prompts.sequence}`) let results = await getSequencesInt(schema, prompts.sequence, db, prompts.limit) @@ -68,13 +66,13 @@ export async function getSequences(prompts) { async function getSequencesInt(schema, sequence, client, limit) { base.debug(`getSequencesInt ${schema} ${sequence} ${limit}`) - sequence = dbClass.objectName(sequence) + sequence = base.dbClass.objectName(sequence) let query = `SELECT SCHEMA_NAME, SEQUENCE_NAME, CACHE_SIZE, START_VALUE, END_VALUE, CURRENT_VALUE from M_SEQUENCES WHERE SCHEMA_NAME LIKE ? AND SEQUENCE_NAME LIKE ? ORDER BY SCHEMA_NAME, SEQUENCE_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, sequence]) diff --git a/bin/synonyms.js b/bin/synonyms.js index 64c15ea..6414a4c 100644 --- a/bin/synonyms.js +++ b/bin/synonyms.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'synonyms [schema] [synonym] [target]' export const aliases = ['syn', 'listSynonyms', 'listsynonyms'] @@ -65,7 +63,7 @@ export async function getSynonyms(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("synonym")}: ${prompts.synonym}, ${base.bundle.getText("target")}: ${prompts.target}`) let results = await getSynonymsInt(schema, prompts.synonym, prompts.target, db, prompts.limit) @@ -79,8 +77,8 @@ export async function getSynonyms(prompts) { async function getSynonymsInt(schema, synonym, target, client, limit) { base.debug(`getSynonymsInt ${schema} ${synonym} ${target} ${limit}`) - synonym = dbClass.objectName(synonym) - target = dbClass.objectName(target) + synonym = base.dbClass.objectName(synonym) + target = base.dbClass.objectName(target) let query = `SELECT SCHEMA_NAME, SYNONYM_NAME, OBJECT_SCHEMA, OBJECT_NAME, OBJECT_TYPE, CREATE_TIME from SYNONYMS WHERE SCHEMA_NAME LIKE ? @@ -88,7 +86,7 @@ async function getSynonymsInt(schema, synonym, target, client, limit) { AND OBJECT_NAME LIKE ? ORDER BY SCHEMA_NAME, SYNONYM_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, synonym, target]) diff --git a/bin/tables.js b/bin/tables.js index 120ec52..76b34d7 100644 --- a/bin/tables.js +++ b/bin/tables.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from "sap-hdbext-promisfied" -import * as hdbext from "@sap/hdbext" export const command = 'tables [schema] [table]' export const aliases = ['t', 'listTables', 'listtables'] @@ -56,7 +54,8 @@ export async function getTables(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + console.table(prompts) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("table")}: ${prompts.table}`) let results = await getTablesInt(schema, prompts.table, db, prompts.limit) @@ -70,14 +69,14 @@ export async function getTables(prompts) { async function getTablesInt(schema, table, client, limit) { base.debug(`getTablesInt ${schema} ${table} ${limit}`) - table = dbClass.objectName(table) + table = base.dbClass.objectName(table) let query = `SELECT SCHEMA_NAME, TABLE_NAME, TO_NVARCHAR(TABLE_OID) AS TABLE_OID, COMMENTS from TABLES WHERE SCHEMA_NAME LIKE ? AND TABLE_NAME LIKE ? ORDER BY SCHEMA_NAME, TABLE_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, table]) diff --git a/bin/triggers.js b/bin/triggers.js index d4ff8bb..10409b9 100644 --- a/bin/triggers.js +++ b/bin/triggers.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'triggers [schema] [trigger] [target]' export const aliases = ['trig', 'listTriggers', 'ListTrigs', 'listtrigs', 'Listtrig', "listrig"] @@ -65,7 +63,7 @@ export async function getTriggers(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("trigger")}: ${prompts.trigger}, ${base.bundle.getText("target")}: ${prompts.target}`) let results = await getTriggersInt(schema, prompts.trigger, prompts.target, db, prompts.limit) @@ -79,8 +77,8 @@ export async function getTriggers(prompts) { async function getTriggersInt(schema, trigger, target, client, limit) { base.debug(`getTriggersInt ${schema} ${trigger} ${target} ${limit}`) - trigger = dbClass.objectName(trigger) - target = dbClass.objectName(target) + trigger = base.dbClass.objectName(trigger) + target = base.dbClass.objectName(target) let query = `SELECT SCHEMA_NAME, TRIGGER_NAME, OWNER_NAME, SUBJECT_TABLE_SCHEMA, SUBJECT_TABLE_NAME, TRIGGER_ACTION_TIME, @@ -90,7 +88,7 @@ async function getTriggersInt(schema, trigger, target, client, limit) { AND TRIGGER_NAME LIKE ? AND SUBJECT_TABLE_NAME LIKE ? ORDER BY SCHEMA_NAME, TRIGGER_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, trigger, target]) diff --git a/bin/users.js b/bin/users.js index d73e327..1203591 100644 --- a/bin/users.js +++ b/bin/users.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'users [user]' export const aliases = ['u', 'listUsers', 'listusers'] @@ -55,13 +53,13 @@ export async function getUsers(prompts) { async function getUsersInt(user, client, limit) { base.debug(`getUsersInt ${user} ${limit}`) - user = dbClass.objectName(user) + user = base.dbClass.objectName(user) let query = `SELECT USER_NAME, USERGROUP_NAME, CREATOR, CREATE_TIME FROM USERS WHERE USER_NAME LIKE ? ORDER BY USER_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [user]) diff --git a/bin/version.js b/bin/version.js index a6f615a..d09d47b 100644 --- a/bin/version.js +++ b/bin/version.js @@ -45,7 +45,9 @@ export function version4(pkgPath = '..', info = {}, parentPath) { if (info[name]) return // safeguard against circular dependencies info[name] = pkj.version // recurse sap packages in dependencies... - for (let dep in pkj.dependencies) if (dep.startsWith('@sap/') || dep.startsWith('sap-hdbext-promisfied')) version4(dep, info, pkgPath) + for (let dep in pkj.dependencies) if ( + dep.startsWith('@sap/') || dep === 'sap-hdb-promisfied' || dep === 'hdb' + ) version4(dep, info, pkgPath) } catch (e) { if (e.code !== 'MODULE_NOT_FOUND') info[pkgPath] = '-- missing --' // unknown error else if (parentPath) version4(parentPath + '/node_modules/' + pkgPath, info) diff --git a/bin/views.js b/bin/views.js index 2ce94af..24d5d0d 100644 --- a/bin/views.js +++ b/bin/views.js @@ -1,7 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import dbClass from 'sap-hdbext-promisfied' -import * as hdbext from '@sap/hdbext' export const command = 'views [schema] [view]' export const aliases = ['v', 'listViews', 'listviews'] @@ -53,7 +51,7 @@ export async function getViews(prompts) { try { base.setPrompts(prompts) const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("view")}: ${prompts.view}`) let results = await getViewsInt(schema, prompts.view, db, prompts.limit) @@ -67,13 +65,13 @@ export async function getViews(prompts) { async function getViewsInt(schema, view, client, limit) { base.debug(`getViewsInt ${schema} ${view} ${limit}`) - view = dbClass.objectName(view) + view = base.dbClass.objectName(view) let query = `SELECT SCHEMA_NAME, VIEW_NAME, TO_NVARCHAR(VIEW_OID) AS VIEW_OID, COMMENTS from VIEWS WHERE SCHEMA_NAME LIKE ? AND VIEW_NAME LIKE ? ORDER BY VIEW_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } return await client.statementExecPromisified(await client.preparePromisified(query), [schema, view]) diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index cffa6b1..655b080 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,39 +1,37 @@ { "name": "hana-cli", - "version": "2.202201.7", + "version": "3.202201.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "hana-cli", - "version": "2.202201.7", + "version": "3.202201.1", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "@graphql-tools/schema": "^8.3.1", - "@sap/cds": "^5.7.4", - "@sap/hana-client": "2.11.14", - "@sap/hdbext": "7.5.0", + "@sap/cds": "^5.7.5", "@sap/textbundle": "^4.0", "@sap/xsenv": "^3.1.1", - "@types/showdown": "^1.9.4", "body-parser": "^1.19.1", "chalk": "^5.0.0", "check-node-version": "^4.2.1", "cli-highlight": "^2.1.11", "console.table": "~0.10", "debug": "^4.3.3", - "dotenv": "^10.0.0", + "dotenv": "^14.2.0", "easy-table": "1.2.0", "express": "^4.17.2", "express-graphql": "^0.12.0", "glob": "^7.1.7", "graphql": "^15.3.0", + "hdb": "0.19.1", "js-convert-case": "^4.2.0", "json-to-pretty-yaml": "^1.2.2", "json2csv": "^5.0.6", "latest-version": "^6.0", - "marked": "^4.0.9", + "marked": "^4.0.10", "marked-terminal": "^5.0", "node-xlsx": "^0.21", "node-zip": "^1.1", @@ -42,13 +40,13 @@ "ora": "^6.0", "prompt": "^1.2", "properties-to-json": "^0.2.1", - "sap-hdbext-promisfied": "2.202201.1", + "sap-hdb-promisfied": "2.202201.6", "showdown": "^1.9.1", "swagger-ui-express": "^4.3", "terminaltools": "^2.1", "update-notifier": "^5.1.0", "uuid": "^8.3", - "ws": "^8.4.0", + "ws": "^8.4.2", "yargonaut": "1.1", "yargs": "^17.3.1" }, @@ -56,8 +54,9 @@ "hana-cli": "bin/cli.js" }, "devDependencies": { + "@types/showdown": "^1.9.4", "@types/yargs": "^17.0.8", - "eslint": "^8.6.0", + "eslint": "^8.7.0", "stringify-changelog": "^0.2.1" }, "engines": { @@ -108,6 +107,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/@graphql-tools/merge": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz", @@ -610,22 +618,22 @@ } }, "node_modules/@sap-cloud-sdk/analytics": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/analytics/-/analytics-1.53.0.tgz", - "integrity": "sha512-319Op2FH/ZL6N7IyKXHs7spyC2ot4KbBPd/yuMe3VUrKlGW3/fEWfjsKbv+p8/dKq22oYHDyTtspTg65+BcUIA==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/analytics/-/analytics-1.53.1.tgz", + "integrity": "sha512-4Rls1nUwfDIxrkKpK8sr89mZlMhKo/pwxcLvclXX86+cgovqkYLoxh8uf8IVx5KGGi5mp//QhVvr0Sw6sIp4qw==", "dependencies": { - "@sap-cloud-sdk/util": "^1.53.0", + "@sap-cloud-sdk/util": "^1.53.1", "axios": "^0.21.1" } }, "node_modules/@sap-cloud-sdk/core": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/core/-/core-1.53.0.tgz", - "integrity": "sha512-xCiEYiGi7PAQNfzmYmOWRw6oBjIzmiv6Yag8haTRPqLo2Aox6pqEfhbKunzqi6wJPUSgJByW696nzx5CY6BCjQ==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/core/-/core-1.53.1.tgz", + "integrity": "sha512-hJH0DPnbYTO0PUh6MdZ6hfnEJqxorZtOL30DqcwOa/P+vZksVIEMgeFoE+gwdqEsk3ddBLRm6uGKHGmbMdDg4g==", "hasInstallScript": true, "dependencies": { - "@sap-cloud-sdk/analytics": "^1.53.0", - "@sap-cloud-sdk/util": "^1.53.0", + "@sap-cloud-sdk/analytics": "^1.53.1", + "@sap-cloud-sdk/util": "^1.53.1", "@sap/xsenv": "^3.0.0", "@sap/xssec": "^3.2.7", "@types/jsonwebtoken": "^8.3.8", @@ -641,9 +649,9 @@ } }, "node_modules/@sap-cloud-sdk/util": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.53.0.tgz", - "integrity": "sha512-pgaUGolB/0uRzPCaGRnvsAcl/PM8879FqYnLHeuKqii25heb3MEZz1ZcJXuZfKyRyTqMf0f45Xjm0xKBCneCKA==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.53.1.tgz", + "integrity": "sha512-zhaXZqo4pj0y0+29PQGPI++pZjXJFeAP97uXRyfAJNI02UNL6yy7hRTTiIzzGqRMcqIk4IveIIrjHDbU1SAFVg==", "dependencies": { "axios": "^0.21.1", "chalk": "^4.1.0", @@ -669,9 +677,9 @@ } }, "node_modules/@sap/cds": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.7.4.tgz", - "integrity": "sha512-NJltm7inH6PXxP9vV0dd40D/+vnuXT3qg/3act0dD+9xIa1PX50s7RmsmH+hH5Gpl67TGaOwhKkpORaHnJNY6g==", + "version": "5.7.5", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.7.5.tgz", + "integrity": "sha512-GAUJA6A8cWMuWX0XJp//44xADFkBX5x1pcJ+xySLoAUNGYZlPx2eTNN+KPYMqWAavr0U1lOAuPR8ckKOikDs8Q==", "dependencies": { "@sap-cloud-sdk/core": "^1.41", "@sap-cloud-sdk/util": "^1.41", @@ -703,9 +711,9 @@ } }, "node_modules/@sap/cds-dk": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-4.7.2.tgz", - "integrity": "sha512-Q2tgVnRlZz8UxOiqr5Q3h7+NbD41+xZd5s6ssdxxnFJZZ2FYO49UvsKyVkg1CuqAiM1Nej1/KuTeT8GqrVSayA==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-4.7.3.tgz", + "integrity": "sha512-0RZFe+yZ3fWZ6Gl1iVT7/lWOiJuARqAexevqWSevyKl7BoYz2B7huUXfUvUIHwY78xM0cjXrTvKgFL+7K8LFlA==", "hasShrinkwrap": true, "peer": true, "dependencies": { @@ -4395,8 +4403,8 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/follow-redirects": { - "version": "1.14.6", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "version": "1.14.7", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "funding": [ { "type": "individual", @@ -11229,135 +11237,6 @@ "node": ">= 6" } }, - "node_modules/@sap/hana-client": { - "version": "2.11.14", - "resolved": "https://registry.npmjs.org/@sap/hana-client/-/hana-client-2.11.14.tgz", - "integrity": "sha512-THQrPUXFtUV/PPfquzeVySpmfjksPAZpc/mqCgC7AW76IXBO/iPjeNLPI911BQsa2o3JOhTRYBjSjX3kwfzMqw==", - "hasInstallScript": true, - "hasShrinkwrap": true, - "dependencies": { - "debug": "3.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@sap/hana-client/node_modules/debug": { - "version": "3.1.0", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/hana-client/node_modules/ms": { - "version": "2.0.0", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/@sap/hdbext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@sap/hdbext/-/hdbext-7.5.0.tgz", - "integrity": "sha512-FxCyCuxw+uMMfHQSVbzvp1Tj9IAUPx4rGQpR5jhR2oFgYes9MeCQqIkInsaRLE61NCrK9/lzLIhLLqn/7jQa5A==", - "hasShrinkwrap": true, - "dependencies": { - "@sap/e2e-trace": "^3.0.0", - "@sap/hana-client": "2.11.14", - "accept-language": "2.0.16", - "async": "3.2.0", - "debug": "4.3.1", - "lodash": "4.17.21", - "verror": "1.10.0" - }, - "engines": { - "node": "^8.0.0 || ^10.0.0 || ^12.0.0 || ^14.0.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace": { - "version": "3.0.0", - "dependencies": { - "request-stats": "3.0.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/http-headers": { - "version": "3.0.2", - "dependencies": { - "next-line": "^1.1.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/next-line": { - "version": "1.1.0" - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/once": { - "version": "1.4.0", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/request-stats": { - "version": "3.0.0", - "dependencies": { - "http-headers": "^3.0.1", - "once": "^1.4.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/wrappy": { - "version": "1.0.2" - }, - "node_modules/@sap/hdbext/node_modules/@sap/hana-client": { - "version": "2.11.14", - "dependencies": { - "debug": "3.1.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/hana-client/node_modules/debug": { - "version": "3.1.0", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@sap/hdbext/node_modules/@sap/hana-client/node_modules/ms": { - "version": "2.0.0" - }, - "node_modules/@sap/hdbext/node_modules/accept-language": { - "version": "2.0.16", - "dependencies": { - "bcp47": "^1.1.2" - } - }, - "node_modules/@sap/hdbext/node_modules/assert-plus": { - "version": "1.0.0" - }, - "node_modules/@sap/hdbext/node_modules/async": { - "version": "3.2.0" - }, - "node_modules/@sap/hdbext/node_modules/bcp47": { - "version": "1.1.2" - }, - "node_modules/@sap/hdbext/node_modules/core-util-is": { - "version": "1.0.2" - }, - "node_modules/@sap/hdbext/node_modules/debug": { - "version": "4.3.1", - "dependencies": { - "ms": "2.1.2" - } - }, - "node_modules/@sap/hdbext/node_modules/extsprintf": { - "version": "1.4.1" - }, - "node_modules/@sap/hdbext/node_modules/lodash": { - "version": "4.17.21" - }, - "node_modules/@sap/hdbext/node_modules/ms": { - "version": "2.1.2" - }, - "node_modules/@sap/hdbext/node_modules/verror": { - "version": "1.10.0", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/@sap/textbundle": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sap/textbundle/-/textbundle-4.0.0.tgz", @@ -11407,11 +11286,11 @@ } }, "node_modules/@sap/xssec": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-3.2.11.tgz", - "integrity": "sha512-DJwydkN6gpmq1nJNwOopM5N6iqpV6ng5X7inqTTaGMn8OYJama0fwcN6m+VdjJzA2d/1lOiD63E+ubnqlU5LDQ==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-3.2.12.tgz", + "integrity": "sha512-Uhooyklldsft5aC0O/af9dc2qlqcO4Udm1wiPBB+XGSpNHwopb/o+7zJwoxWH3naziYsIHElBaGv6fm8sPG3cQ==", "dependencies": { - "axios": "^0.21.4", + "axios": "^0.25.0", "debug": "4.3.2", "jsonwebtoken": "^8.5.1", "lru-cache": "6.0.0", @@ -11422,6 +11301,14 @@ "node": ">=12.0.0" } }, + "node_modules/@sap/xssec/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, "node_modules/@sap/xssec/node_modules/debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -11439,9 +11326,9 @@ } }, "node_modules/@sindresorhus/is": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.1.tgz", - "integrity": "sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", + "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==", "engines": { "node": ">=10" }, @@ -11485,9 +11372,9 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "node_modules/@types/jsonwebtoken": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.6.tgz", - "integrity": "sha512-+P3O/xC7nzVizIi5VbF34YtqSonFsdnbXBnWUCYRiKOi1f9gA4sEFvXkrGr/QVV23IbMYvcoerI7nnhDUiWXRQ==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", + "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", "dependencies": { "@types/node": "*" } @@ -11501,9 +11388,9 @@ } }, "node_modules/@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==" }, "node_modules/@types/responselike": { "version": "1.0.0", @@ -11516,7 +11403,8 @@ "node_modules/@types/showdown": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-1.9.4.tgz", - "integrity": "sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w==" + "integrity": "sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w==", + "dev": true }, "node_modules/@types/yargs": { "version": "17.0.8", @@ -11616,15 +11504,6 @@ "string-width": "^4.1.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -12546,11 +12425,11 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.2.0.tgz", + "integrity": "sha512-05POuPJyPpO6jqzTNweQFfAyMSD4qa4lvsMOWyTRTdpHKy6nnnN+IYWaXF+lHivhBH/ufDKlR4IWCAN3oPnHuw==", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/duplexer3": { @@ -12608,18 +12487,6 @@ "once": "^1.4.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/es-abstract": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", @@ -12726,9 +12593,9 @@ } }, "node_modules/eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.0.5", @@ -12738,11 +12605,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -12751,7 +12617,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -12762,9 +12628,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -12821,9 +12685,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -12845,21 +12709,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/espree": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", @@ -13187,9 +13036,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "funding": [ { "type": "individual", @@ -13497,6 +13346,17 @@ "node": ">=8" } }, + "node_modules/hdb": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.1.tgz", + "integrity": "sha512-QqB7Srj/AaesB1bZPiKZMPXnjU4NRgP7ZheCHUWf4EKKqZXpWW2lJcb6BRnNfjxfCYIT+TR1wIaA0zLO1CeU6w==", + "dependencies": { + "iconv-lite": "^0.4.18" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -13593,9 +13453,9 @@ ] }, "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -14410,9 +14270,9 @@ "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=" }, "node_modules/marked": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.9.tgz", - "integrity": "sha512-HmoFvQwFLxNESeGupeOC+6CLb5WzcCWQmqvVetsErmrI3vrZ6gBumty5IP0ynLPR0zYSoVY7ITC1GffsYIGkog==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", "bin": { "marked": "bin/marked.js" }, @@ -14755,9 +14615,9 @@ } }, "node_modules/opossum": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/opossum/-/opossum-6.2.1.tgz", - "integrity": "sha512-oUdteFqFp8wGKqs44NILocJcmhjARwLp2MlXbIvznPtbdQCZcR0q8IYa0k3EqhpxEsWqZt+LNTudkFDHrSuqpQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/opossum/-/opossum-6.3.0.tgz", + "integrity": "sha512-youR7pMTpgnbPJEPruM8Ku1WKUXnjmsK99GC5fkGFrOK8jduY1hvMiooUa3QZg6Xdso03skr37q6Evpt9PZ2cA==", "engines": { "node": "^16 || ^14 || ^12" } @@ -15078,15 +14938,6 @@ "node": ">= 0.6.0" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise.allsettled": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.5.tgz", @@ -15489,22 +15340,22 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sap-hdbext-promisfied": { - "version": "2.202201.1", - "resolved": "https://registry.npmjs.org/sap-hdbext-promisfied/-/sap-hdbext-promisfied-2.202201.1.tgz", - "integrity": "sha512-+6Vv4ExbR1M1K45dZn7jno437Fm0EVuUMKQzcv5+ChgyeMpxVlZyRO/JTRtNp7AunLLdSyui8oqyIkdHVfTHcA==", + "node_modules/sap-hdb-promisfied": { + "version": "2.202201.6", + "resolved": "https://registry.npmjs.org/sap-hdb-promisfied/-/sap-hdb-promisfied-2.202201.6.tgz", + "integrity": "sha512-TWxwqPcVmIQbDEeKEJlzJd7MQbKy8D49pKijk1x2JBVGLukevu+1ZNJl6TJR9+2gv8dO4k5KFYCT6NKTLrRkhA==", "hasShrinkwrap": true, "dependencies": { - "@sap/hdbext": "^7.5.0", "@sap/xsenv": "^3.1.1", - "debug": "^4.3.3", - "dotenv": "^10.0" + "debug": "4.3.3", + "dotenv": "14.2.0", + "hdb": "0.19.1" }, "engines": { - "node": "^12.18.0 || ^14.0.0 || ^16.0.0" + "node": ">= 0.12" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@eslint/eslintrc": { + "node_modules/sap-hdb-promisfied/node_modules/@eslint/eslintrc": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", @@ -15524,7 +15375,16 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@humanwhocodes/config-array": { + "node_modules/sap-hdb-promisfied/node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "extraneous": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/sap-hdb-promisfied/node_modules/@humanwhocodes/config-array": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", @@ -15538,118 +15398,13 @@ "node": ">=10.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@humanwhocodes/object-schema": { + "node_modules/sap-hdb-promisfied/node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@sap/hdbext/-/hdbext-7.5.0.tgz", - "integrity": "sha512-FxCyCuxw+uMMfHQSVbzvp1Tj9IAUPx4rGQpR5jhR2oFgYes9MeCQqIkInsaRLE61NCrK9/lzLIhLLqn/7jQa5A==", - "hasShrinkwrap": true, - "dependencies": { - "@sap/e2e-trace": "^3.0.0", - "@sap/hana-client": "2.11.14", - "accept-language": "2.0.16", - "async": "3.2.0", - "debug": "4.3.1", - "lodash": "4.17.21", - "verror": "1.10.0" - }, - "engines": { - "node": "^8.0.0 || ^10.0.0 || ^12.0.0 || ^14.0.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace": { - "version": "3.0.0", - "dependencies": { - "request-stats": "3.0.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/http-headers": { - "version": "3.0.2", - "dependencies": { - "next-line": "^1.1.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/next-line": { - "version": "1.1.0" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/once": { - "version": "1.4.0", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/request-stats": { - "version": "3.0.0", - "dependencies": { - "http-headers": "^3.0.1", - "once": "^1.4.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/e2e-trace/node_modules/wrappy": { - "version": "1.0.2" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/hana-client": { - "version": "2.11.14", - "dependencies": { - "debug": "3.1.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/hana-client/node_modules/debug": { - "version": "3.1.0", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/@sap/hana-client/node_modules/ms": { - "version": "2.0.0" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/accept-language": { - "version": "2.0.16", - "dependencies": { - "bcp47": "^1.1.2" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/assert-plus": { - "version": "1.0.0" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/async": { - "version": "3.2.0" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/bcp47": { - "version": "1.1.2" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/core-util-is": { - "version": "1.0.2" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/debug": { - "version": "4.3.1", - "dependencies": { - "ms": "2.1.2" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/extsprintf": { - "version": "1.4.1" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/lodash": { - "version": "4.17.21" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/ms": { - "version": "2.1.2" - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/hdbext/node_modules/verror": { - "version": "1.10.0", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-3.1.1.tgz", "integrity": "sha512-7UOnJNRdvb6d+LqgLf0qZLtcG18Fo7ZquxaQ5Pk33wGtpB0pTDCuV7z7JgAv2QTLx4aqtxTI435YFwa4kCnWzA==", @@ -15662,25 +15417,25 @@ "node": "^8.0.0 || ^10.0.0 || ^12.0.0 || ^14.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/assert-plus": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/assert-plus": { "version": "1.0.0" }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/core-util-is": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/core-util-is": { "version": "1.0.2" }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/debug": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/debug": { "version": "4.2.0", "dependencies": { "ms": "2.1.2" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/extsprintf": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/extsprintf": { "version": "1.4.0" }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/ms": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/ms": { "version": "2.1.2" }, - "node_modules/sap-hdbext-promisfied/node_modules/@sap/xsenv/node_modules/verror": { + "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/verror": { "version": "1.10.0", "dependencies": { "assert-plus": "^1.0.0", @@ -15688,13 +15443,34 @@ "extsprintf": "^1.2.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/@types/node": { - "version": "16.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", - "integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng==", + "node_modules/sap-hdb-promisfied/node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "extraneous": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/sap-hdb-promisfied/node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/acorn": { + "node_modules/sap-hdb-promisfied/node_modules/@types/node": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", + "extraneous": true + }, + "node_modules/sap-hdb-promisfied/node_modules/@types/sap__xsenv": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/sap__xsenv/-/sap__xsenv-2.0.3.tgz", + "integrity": "sha512-w7J014voM+DPpz1JttkNj2zyfZiYZ0OORoH5KOHO3oOYD9IEwPCZqugqJPwyw6byvkOWSAujh3wVke0mEVu6kA==", + "extraneous": true + }, + "node_modules/sap-hdb-promisfied/node_modules/acorn": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", @@ -15706,7 +15482,7 @@ "node": ">=0.4.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/acorn-jsx": { + "node_modules/sap-hdb-promisfied/node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", @@ -15715,7 +15491,7 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/ajv": { + "node_modules/sap-hdb-promisfied/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", @@ -15731,16 +15507,7 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/sap-hdbext-promisfied/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "extraneous": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/ansi-regex": { + "node_modules/sap-hdb-promisfied/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", @@ -15749,7 +15516,7 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/ansi-styles": { + "node_modules/sap-hdb-promisfied/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -15764,13 +15531,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sap-hdbext-promisfied/node_modules/argparse": { + "node_modules/sap-hdb-promisfied/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/assertion-error": { + "node_modules/sap-hdb-promisfied/node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", @@ -15779,13 +15546,13 @@ "node": "*" } }, - "node_modules/sap-hdbext-promisfied/node_modules/balanced-match": { + "node_modules/sap-hdb-promisfied/node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/brace-expansion": { + "node_modules/sap-hdb-promisfied/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", @@ -15795,7 +15562,7 @@ "concat-map": "0.0.1" } }, - "node_modules/sap-hdbext-promisfied/node_modules/callsites": { + "node_modules/sap-hdb-promisfied/node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", @@ -15804,7 +15571,7 @@ "node": ">=6" } }, - "node_modules/sap-hdbext-promisfied/node_modules/chai": { + "node_modules/sap-hdb-promisfied/node_modules/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", @@ -15821,7 +15588,7 @@ "node": ">=4" } }, - "node_modules/sap-hdbext-promisfied/node_modules/chalk": { + "node_modules/sap-hdb-promisfied/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -15837,7 +15604,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sap-hdbext-promisfied/node_modules/check-error": { + "node_modules/sap-hdb-promisfied/node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", @@ -15846,7 +15613,7 @@ "node": "*" } }, - "node_modules/sap-hdbext-promisfied/node_modules/color-convert": { + "node_modules/sap-hdb-promisfied/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -15858,19 +15625,19 @@ "node": ">=7.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/color-name": { + "node_modules/sap-hdb-promisfied/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/concat-map": { + "node_modules/sap-hdb-promisfied/node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/cross-spawn": { + "node_modules/sap-hdb-promisfied/node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", @@ -15884,7 +15651,7 @@ "node": ">= 8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/debug": { + "node_modules/sap-hdb-promisfied/node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", @@ -15900,7 +15667,7 @@ } } }, - "node_modules/sap-hdbext-promisfied/node_modules/deep-eql": { + "node_modules/sap-hdb-promisfied/node_modules/deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", @@ -15912,13 +15679,13 @@ "node": ">=0.12" } }, - "node_modules/sap-hdbext-promisfied/node_modules/deep-is": { + "node_modules/sap-hdb-promisfied/node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/doctrine": { + "node_modules/sap-hdb-promisfied/node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", @@ -15930,27 +15697,15 @@ "node": ">=6.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "engines": { - "node": ">=10" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "extraneous": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, + "node_modules/sap-hdb-promisfied/node_modules/dotenv": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.2.0.tgz", + "integrity": "sha512-05POuPJyPpO6jqzTNweQFfAyMSD4qa4lvsMOWyTRTdpHKy6nnnN+IYWaXF+lHivhBH/ufDKlR4IWCAN3oPnHuw==", "engines": { - "node": ">=8.6" + "node": ">=12" } }, - "node_modules/sap-hdbext-promisfied/node_modules/escape-string-regexp": { + "node_modules/sap-hdb-promisfied/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", @@ -15962,10 +15717,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sap-hdbext-promisfied/node_modules/eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "node_modules/sap-hdb-promisfied/node_modules/eslint": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "extraneous": true, "dependencies": { "@eslint/eslintrc": "^1.0.5", @@ -15975,11 +15730,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -15988,7 +15742,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -15999,9 +15753,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -16017,7 +15769,7 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/sap-hdbext-promisfied/node_modules/eslint-scope": { + "node_modules/sap-hdb-promisfied/node_modules/eslint-scope": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz", "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==", @@ -16030,7 +15782,7 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/eslint-utils": { + "node_modules/sap-hdb-promisfied/node_modules/eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", @@ -16048,7 +15800,7 @@ "eslint": ">=5" } }, - "node_modules/sap-hdbext-promisfied/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "node_modules/sap-hdb-promisfied/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", @@ -16057,16 +15809,16 @@ "node": ">=10" } }, - "node_modules/sap-hdbext-promisfied/node_modules/eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "node_modules/sap-hdb-promisfied/node_modules/eslint-visitor-keys": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "extraneous": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/espree": { + "node_modules/sap-hdb-promisfied/node_modules/espree": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz", "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==", @@ -16080,7 +15832,7 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/esquery": { + "node_modules/sap-hdb-promisfied/node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", @@ -16092,7 +15844,7 @@ "node": ">=0.10" } }, - "node_modules/sap-hdbext-promisfied/node_modules/esrecurse": { + "node_modules/sap-hdb-promisfied/node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", @@ -16104,7 +15856,7 @@ "node": ">=4.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/estraverse": { + "node_modules/sap-hdb-promisfied/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -16113,7 +15865,7 @@ "node": ">=4.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/esutils": { + "node_modules/sap-hdb-promisfied/node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", @@ -16122,25 +15874,25 @@ "node": ">=0.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/fast-deep-equal": { + "node_modules/sap-hdb-promisfied/node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/fast-json-stable-stringify": { + "node_modules/sap-hdb-promisfied/node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/fast-levenshtein": { + "node_modules/sap-hdb-promisfied/node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/file-entry-cache": { + "node_modules/sap-hdb-promisfied/node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", @@ -16152,7 +15904,7 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/flat-cache": { + "node_modules/sap-hdb-promisfied/node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", @@ -16165,25 +15917,25 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/flatted": { + "node_modules/sap-hdb-promisfied/node_modules/flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/fs.realpath": { + "node_modules/sap-hdb-promisfied/node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/functional-red-black-tree": { + "node_modules/sap-hdb-promisfied/node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/get-func-name": { + "node_modules/sap-hdb-promisfied/node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", @@ -16192,7 +15944,7 @@ "node": "*" } }, - "node_modules/sap-hdbext-promisfied/node_modules/glob": { + "node_modules/sap-hdb-promisfied/node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", @@ -16212,7 +15964,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sap-hdbext-promisfied/node_modules/glob-parent": { + "node_modules/sap-hdb-promisfied/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", @@ -16224,7 +15976,7 @@ "node": ">=10.13.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/globals": { + "node_modules/sap-hdb-promisfied/node_modules/globals": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", @@ -16239,7 +15991,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sap-hdbext-promisfied/node_modules/has-flag": { + "node_modules/sap-hdb-promisfied/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -16248,16 +16000,38 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/sap-hdb-promisfied/node_modules/hdb": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.1.tgz", + "integrity": "sha512-QqB7Srj/AaesB1bZPiKZMPXnjU4NRgP7ZheCHUWf4EKKqZXpWW2lJcb6BRnNfjxfCYIT+TR1wIaA0zLO1CeU6w==", + "dependencies": { + "iconv-lite": "^0.4.18" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/sap-hdb-promisfied/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sap-hdb-promisfied/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "extraneous": true, "engines": { "node": ">= 4" } }, - "node_modules/sap-hdbext-promisfied/node_modules/import-fresh": { + "node_modules/sap-hdb-promisfied/node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", @@ -16273,7 +16047,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sap-hdbext-promisfied/node_modules/imurmurhash": { + "node_modules/sap-hdb-promisfied/node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", @@ -16282,7 +16056,7 @@ "node": ">=0.8.19" } }, - "node_modules/sap-hdbext-promisfied/node_modules/inflight": { + "node_modules/sap-hdb-promisfied/node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", @@ -16292,13 +16066,13 @@ "wrappy": "1" } }, - "node_modules/sap-hdbext-promisfied/node_modules/inherits": { + "node_modules/sap-hdb-promisfied/node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/is-extglob": { + "node_modules/sap-hdb-promisfied/node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", @@ -16307,7 +16081,7 @@ "node": ">=0.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/is-glob": { + "node_modules/sap-hdb-promisfied/node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", @@ -16319,13 +16093,13 @@ "node": ">=0.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/isexe": { + "node_modules/sap-hdb-promisfied/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/js-yaml": { + "node_modules/sap-hdb-promisfied/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", @@ -16337,19 +16111,19 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/sap-hdbext-promisfied/node_modules/json-schema-traverse": { + "node_modules/sap-hdb-promisfied/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/json-stable-stringify-without-jsonify": { + "node_modules/sap-hdb-promisfied/node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/levn": { + "node_modules/sap-hdb-promisfied/node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", @@ -16362,25 +16136,13 @@ "node": ">= 0.8.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/lodash.merge": { + "node_modules/sap-hdb-promisfied/node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "extraneous": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/minimatch": { + "node_modules/sap-hdb-promisfied/node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", @@ -16392,18 +16154,18 @@ "node": "*" } }, - "node_modules/sap-hdbext-promisfied/node_modules/ms": { + "node_modules/sap-hdb-promisfied/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/sap-hdbext-promisfied/node_modules/natural-compare": { + "node_modules/sap-hdb-promisfied/node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/once": { + "node_modules/sap-hdb-promisfied/node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", @@ -16412,7 +16174,7 @@ "wrappy": "1" } }, - "node_modules/sap-hdbext-promisfied/node_modules/optionator": { + "node_modules/sap-hdb-promisfied/node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", @@ -16429,7 +16191,7 @@ "node": ">= 0.8.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/parent-module": { + "node_modules/sap-hdb-promisfied/node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", @@ -16441,7 +16203,7 @@ "node": ">=6" } }, - "node_modules/sap-hdbext-promisfied/node_modules/path-is-absolute": { + "node_modules/sap-hdb-promisfied/node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", @@ -16450,7 +16212,7 @@ "node": ">=0.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/path-key": { + "node_modules/sap-hdb-promisfied/node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", @@ -16459,7 +16221,7 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/pathval": { + "node_modules/sap-hdb-promisfied/node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", @@ -16468,7 +16230,7 @@ "node": "*" } }, - "node_modules/sap-hdbext-promisfied/node_modules/prelude-ls": { + "node_modules/sap-hdb-promisfied/node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", @@ -16477,16 +16239,7 @@ "node": ">= 0.8.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "extraneous": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/sap-hdbext-promisfied/node_modules/punycode": { + "node_modules/sap-hdb-promisfied/node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", @@ -16495,7 +16248,7 @@ "node": ">=6" } }, - "node_modules/sap-hdbext-promisfied/node_modules/regexpp": { + "node_modules/sap-hdb-promisfied/node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", @@ -16507,7 +16260,7 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/sap-hdbext-promisfied/node_modules/resolve-from": { + "node_modules/sap-hdb-promisfied/node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", @@ -16516,7 +16269,7 @@ "node": ">=4" } }, - "node_modules/sap-hdbext-promisfied/node_modules/rimraf": { + "node_modules/sap-hdb-promisfied/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", @@ -16531,22 +16284,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sap-hdbext-promisfied/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "extraneous": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/sap-hdb-promisfied/node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sap-hdbext-promisfied/node_modules/shebang-command": { + "node_modules/sap-hdb-promisfied/node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", @@ -16558,7 +16301,7 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/shebang-regex": { + "node_modules/sap-hdb-promisfied/node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", @@ -16567,7 +16310,7 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/strip-ansi": { + "node_modules/sap-hdb-promisfied/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -16579,7 +16322,7 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/strip-json-comments": { + "node_modules/sap-hdb-promisfied/node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", @@ -16591,7 +16334,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sap-hdbext-promisfied/node_modules/supports-color": { + "node_modules/sap-hdb-promisfied/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -16603,13 +16346,13 @@ "node": ">=8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/text-table": { + "node_modules/sap-hdb-promisfied/node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/type-check": { + "node_modules/sap-hdb-promisfied/node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", @@ -16621,7 +16364,7 @@ "node": ">= 0.8.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/type-detect": { + "node_modules/sap-hdb-promisfied/node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", @@ -16630,7 +16373,7 @@ "node": ">=4" } }, - "node_modules/sap-hdbext-promisfied/node_modules/type-fest": { + "node_modules/sap-hdb-promisfied/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", @@ -16642,7 +16385,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sap-hdbext-promisfied/node_modules/uri-js": { + "node_modules/sap-hdb-promisfied/node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", @@ -16651,13 +16394,13 @@ "punycode": "^2.1.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/v8-compile-cache": { + "node_modules/sap-hdb-promisfied/node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/which": { + "node_modules/sap-hdb-promisfied/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", @@ -16672,7 +16415,7 @@ "node": ">= 8" } }, - "node_modules/sap-hdbext-promisfied/node_modules/word-wrap": { + "node_modules/sap-hdb-promisfied/node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", @@ -16681,18 +16424,12 @@ "node": ">=0.10.0" } }, - "node_modules/sap-hdbext-promisfied/node_modules/wrappy": { + "node_modules/sap-hdb-promisfied/node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "extraneous": true }, - "node_modules/sap-hdbext-promisfied/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "extraneous": true - }, "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -17093,9 +16830,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.1.3.tgz", - "integrity": "sha512-WvfPSfAAMlE/sKS6YkW47nX/hA7StmhYnAHc6wWCXNL0oclwLj6UXv0hQCkLnDgvebi0MEV40SJJpVjKUgH1IQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.2.1.tgz", + "integrity": "sha512-ZzUeNKIIMXmKI53iLscAVCpQ7jblYxI2XX5EBaoBr6UBEfxT3L0vlnE+fzPBbHc9g0sgdOMLZGhC5OW++9pqlw==" }, "node_modules/swagger-ui-express": { "version": "4.3.0", @@ -17663,9 +17400,9 @@ } }, "node_modules/winston": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz", - "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz", + "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==", "dependencies": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -17757,9 +17494,9 @@ } }, "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", "engines": { "node": ">=10.0.0" }, @@ -17796,9 +17533,9 @@ } }, "node_modules/xlsx": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.4.tgz", - "integrity": "sha512-9aKt8g9ZLP0CUdBX8L5xnoMDFwSiLI997eQnDThCaqQMYB9AEBIRzblSSNN/ICMGLYIHUO3VKaItcedZJ3ijIg==", + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.5.tgz", + "integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==", "dependencies": { "adler-32": "~1.2.0", "cfb": "^1.1.4", @@ -18000,6 +17737,14 @@ "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } } }, "@graphql-tools/merge": { @@ -18380,21 +18125,21 @@ } }, "@sap-cloud-sdk/analytics": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/analytics/-/analytics-1.53.0.tgz", - "integrity": "sha512-319Op2FH/ZL6N7IyKXHs7spyC2ot4KbBPd/yuMe3VUrKlGW3/fEWfjsKbv+p8/dKq22oYHDyTtspTg65+BcUIA==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/analytics/-/analytics-1.53.1.tgz", + "integrity": "sha512-4Rls1nUwfDIxrkKpK8sr89mZlMhKo/pwxcLvclXX86+cgovqkYLoxh8uf8IVx5KGGi5mp//QhVvr0Sw6sIp4qw==", "requires": { - "@sap-cloud-sdk/util": "^1.53.0", + "@sap-cloud-sdk/util": "^1.53.1", "axios": "^0.21.1" } }, "@sap-cloud-sdk/core": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/core/-/core-1.53.0.tgz", - "integrity": "sha512-xCiEYiGi7PAQNfzmYmOWRw6oBjIzmiv6Yag8haTRPqLo2Aox6pqEfhbKunzqi6wJPUSgJByW696nzx5CY6BCjQ==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/core/-/core-1.53.1.tgz", + "integrity": "sha512-hJH0DPnbYTO0PUh6MdZ6hfnEJqxorZtOL30DqcwOa/P+vZksVIEMgeFoE+gwdqEsk3ddBLRm6uGKHGmbMdDg4g==", "requires": { - "@sap-cloud-sdk/analytics": "^1.53.0", - "@sap-cloud-sdk/util": "^1.53.0", + "@sap-cloud-sdk/analytics": "^1.53.1", + "@sap-cloud-sdk/util": "^1.53.1", "@sap/xsenv": "^3.0.0", "@sap/xssec": "^3.2.7", "@types/jsonwebtoken": "^8.3.8", @@ -18410,9 +18155,9 @@ } }, "@sap-cloud-sdk/util": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.53.0.tgz", - "integrity": "sha512-pgaUGolB/0uRzPCaGRnvsAcl/PM8879FqYnLHeuKqii25heb3MEZz1ZcJXuZfKyRyTqMf0f45Xjm0xKBCneCKA==", + "version": "1.53.1", + "resolved": "https://registry.npmjs.org/@sap-cloud-sdk/util/-/util-1.53.1.tgz", + "integrity": "sha512-zhaXZqo4pj0y0+29PQGPI++pZjXJFeAP97uXRyfAJNI02UNL6yy7hRTTiIzzGqRMcqIk4IveIIrjHDbU1SAFVg==", "requires": { "axios": "^0.21.1", "chalk": "^4.1.0", @@ -18434,9 +18179,9 @@ } }, "@sap/cds": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.7.4.tgz", - "integrity": "sha512-NJltm7inH6PXxP9vV0dd40D/+vnuXT3qg/3act0dD+9xIa1PX50s7RmsmH+hH5Gpl67TGaOwhKkpORaHnJNY6g==", + "version": "5.7.5", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-5.7.5.tgz", + "integrity": "sha512-GAUJA6A8cWMuWX0XJp//44xADFkBX5x1pcJ+xySLoAUNGYZlPx2eTNN+KPYMqWAavr0U1lOAuPR8ckKOikDs8Q==", "requires": { "@sap-cloud-sdk/core": "^1.41", "@sap-cloud-sdk/util": "^1.41", @@ -18453,9 +18198,9 @@ } }, "@sap/cds-dk": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-4.7.2.tgz", - "integrity": "sha512-Q2tgVnRlZz8UxOiqr5Q3h7+NbD41+xZd5s6ssdxxnFJZZ2FYO49UvsKyVkg1CuqAiM1Nej1/KuTeT8GqrVSayA==", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-4.7.3.tgz", + "integrity": "sha512-0RZFe+yZ3fWZ6Gl1iVT7/lWOiJuARqAexevqWSevyKl7BoYz2B7huUXfUvUIHwY78xM0cjXrTvKgFL+7K8LFlA==", "peer": true, "requires": { "@sap/cds": "^5.6.4", @@ -21366,8 +21111,8 @@ "peer": true }, "follow-redirects": { - "version": "1.14.6", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "version": "1.14.7", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "peer": true }, "for-in": { @@ -26645,134 +26390,6 @@ } } }, - "@sap/hana-client": { - "version": "2.11.14", - "resolved": "https://registry.npmjs.org/@sap/hana-client/-/hana-client-2.11.14.tgz", - "integrity": "sha512-THQrPUXFtUV/PPfquzeVySpmfjksPAZpc/mqCgC7AW76IXBO/iPjeNLPI911BQsa2o3JOhTRYBjSjX3kwfzMqw==", - "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "@sap/hdbext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@sap/hdbext/-/hdbext-7.5.0.tgz", - "integrity": "sha512-FxCyCuxw+uMMfHQSVbzvp1Tj9IAUPx4rGQpR5jhR2oFgYes9MeCQqIkInsaRLE61NCrK9/lzLIhLLqn/7jQa5A==", - "requires": { - "@sap/e2e-trace": "^3.0.0", - "@sap/hana-client": "2.11.14", - "accept-language": "2.0.16", - "async": "3.2.0", - "debug": "4.3.1", - "lodash": "4.17.21", - "verror": "1.10.0" - }, - "dependencies": { - "@sap/e2e-trace": { - "version": "3.0.0", - "requires": { - "request-stats": "3.0.0" - }, - "dependencies": { - "http-headers": { - "version": "3.0.2", - "requires": { - "next-line": "^1.1.0" - } - }, - "next-line": { - "version": "1.1.0" - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, - "request-stats": { - "version": "3.0.0", - "requires": { - "http-headers": "^3.0.1", - "once": "^1.4.0" - } - }, - "wrappy": { - "version": "1.0.2" - } - } - }, - "@sap/hana-client": { - "version": "2.11.14", - "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "accept-language": { - "version": "2.0.16", - "requires": { - "bcp47": "^1.1.2" - } - }, - "assert-plus": { - "version": "1.0.0" - }, - "async": { - "version": "3.2.0" - }, - "bcp47": { - "version": "1.1.2" - }, - "core-util-is": { - "version": "1.0.2" - }, - "debug": { - "version": "4.3.1", - "requires": { - "ms": "2.1.2" - } - }, - "extsprintf": { - "version": "1.4.1" - }, - "lodash": { - "version": "4.17.21" - }, - "ms": { - "version": "2.1.2" - }, - "verror": { - "version": "1.10.0", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - } - } - }, "@sap/textbundle": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sap/textbundle/-/textbundle-4.0.0.tgz", @@ -26816,11 +26433,11 @@ } }, "@sap/xssec": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-3.2.11.tgz", - "integrity": "sha512-DJwydkN6gpmq1nJNwOopM5N6iqpV6ng5X7inqTTaGMn8OYJama0fwcN6m+VdjJzA2d/1lOiD63E+ubnqlU5LDQ==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@sap/xssec/-/xssec-3.2.12.tgz", + "integrity": "sha512-Uhooyklldsft5aC0O/af9dc2qlqcO4Udm1wiPBB+XGSpNHwopb/o+7zJwoxWH3naziYsIHElBaGv6fm8sPG3cQ==", "requires": { - "axios": "^0.21.4", + "axios": "^0.25.0", "debug": "4.3.2", "jsonwebtoken": "^8.5.1", "lru-cache": "6.0.0", @@ -26828,6 +26445,14 @@ "valid-url": "1.0.9" }, "dependencies": { + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "requires": { + "follow-redirects": "^1.14.7" + } + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -26839,9 +26464,9 @@ } }, "@sindresorhus/is": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.1.tgz", - "integrity": "sha512-BrzrgtaqEre0qfvI8sMTaEvx+bayuhPmfe2rfeUGPPHYr/PLxCOqkOe4TQTDPb+qcqgNcsAtXV/Ew74mcDIE8w==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", + "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==" }, "@szmarczak/http-timer": { "version": "4.0.6", @@ -26873,9 +26498,9 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "@types/jsonwebtoken": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.6.tgz", - "integrity": "sha512-+P3O/xC7nzVizIi5VbF34YtqSonFsdnbXBnWUCYRiKOi1f9gA4sEFvXkrGr/QVV23IbMYvcoerI7nnhDUiWXRQ==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz", + "integrity": "sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==", "requires": { "@types/node": "*" } @@ -26889,9 +26514,9 @@ } }, "@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==" }, "@types/responselike": { "version": "1.0.0", @@ -26904,7 +26529,8 @@ "@types/showdown": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-1.9.4.tgz", - "integrity": "sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w==" + "integrity": "sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w==", + "dev": true }, "@types/yargs": { "version": "17.0.8", @@ -26980,12 +26606,6 @@ "string-width": "^4.1.0" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -27663,9 +27283,9 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.2.0.tgz", + "integrity": "sha512-05POuPJyPpO6jqzTNweQFfAyMSD4qa4lvsMOWyTRTdpHKy6nnnN+IYWaXF+lHivhBH/ufDKlR4IWCAN3oPnHuw==" }, "duplexer3": { "version": "0.1.4", @@ -27717,15 +27337,6 @@ "once": "^1.4.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "es-abstract": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", @@ -27805,9 +27416,9 @@ "dev": true }, "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.5", @@ -27817,11 +27428,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -27830,7 +27440,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -27841,9 +27451,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -27859,15 +27467,6 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -27899,9 +27498,9 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "dev": true }, "espree": { @@ -28170,9 +27769,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" }, "forwarded": { "version": "0.2.0", @@ -28380,6 +27979,14 @@ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" }, + "hdb": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.1.tgz", + "integrity": "sha512-QqB7Srj/AaesB1bZPiKZMPXnjU4NRgP7ZheCHUWf4EKKqZXpWW2lJcb6BRnNfjxfCYIT+TR1wIaA0zLO1CeU6w==", + "requires": { + "iconv-lite": "^0.4.18" + } + }, "highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -28444,9 +28051,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "image-q": { @@ -29044,9 +28651,9 @@ "integrity": "sha1-douOecAJvytk/ugG4ip7HEGQyZA=" }, "marked": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.9.tgz", - "integrity": "sha512-HmoFvQwFLxNESeGupeOC+6CLb5WzcCWQmqvVetsErmrI3vrZ6gBumty5IP0ynLPR0zYSoVY7ITC1GffsYIGkog==" + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==" }, "marked-terminal": { "version": "5.0.0", @@ -29293,9 +28900,9 @@ } }, "opossum": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/opossum/-/opossum-6.2.1.tgz", - "integrity": "sha512-oUdteFqFp8wGKqs44NILocJcmhjARwLp2MlXbIvznPtbdQCZcR0q8IYa0k3EqhpxEsWqZt+LNTudkFDHrSuqpQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/opossum/-/opossum-6.3.0.tgz", + "integrity": "sha512-youR7pMTpgnbPJEPruM8Ku1WKUXnjmsK99GC5fkGFrOK8jduY1hvMiooUa3QZg6Xdso03skr37q6Evpt9PZ2cA==" }, "optionator": { "version": "0.9.1", @@ -29526,12 +29133,6 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "promise.allsettled": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.5.tgz", @@ -29808,15 +29409,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sap-hdbext-promisfied": { - "version": "2.202201.1", - "resolved": "https://registry.npmjs.org/sap-hdbext-promisfied/-/sap-hdbext-promisfied-2.202201.1.tgz", - "integrity": "sha512-+6Vv4ExbR1M1K45dZn7jno437Fm0EVuUMKQzcv5+ChgyeMpxVlZyRO/JTRtNp7AunLLdSyui8oqyIkdHVfTHcA==", + "sap-hdb-promisfied": { + "version": "2.202201.6", + "resolved": "https://registry.npmjs.org/sap-hdb-promisfied/-/sap-hdb-promisfied-2.202201.6.tgz", + "integrity": "sha512-TWxwqPcVmIQbDEeKEJlzJd7MQbKy8D49pKijk1x2JBVGLukevu+1ZNJl6TJR9+2gv8dO4k5KFYCT6NKTLrRkhA==", "requires": { - "@sap/hdbext": "^7.5.0", "@sap/xsenv": "^3.1.1", - "debug": "^4.3.3", - "dotenv": "^10.0" + "debug": "4.3.3", + "dotenv": "14.2.0", + "hdb": "0.19.1" }, "dependencies": { "@eslint/eslintrc": { @@ -29834,6 +29435,14 @@ "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "extraneous": true + } } }, "@humanwhocodes/config-array": { @@ -29853,113 +29462,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "extraneous": true }, - "@sap/hdbext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@sap/hdbext/-/hdbext-7.5.0.tgz", - "integrity": "sha512-FxCyCuxw+uMMfHQSVbzvp1Tj9IAUPx4rGQpR5jhR2oFgYes9MeCQqIkInsaRLE61NCrK9/lzLIhLLqn/7jQa5A==", - "requires": { - "@sap/e2e-trace": "^3.0.0", - "@sap/hana-client": "2.11.14", - "accept-language": "2.0.16", - "async": "3.2.0", - "debug": "4.3.1", - "lodash": "4.17.21", - "verror": "1.10.0" - }, - "dependencies": { - "@sap/e2e-trace": { - "version": "3.0.0", - "requires": { - "request-stats": "3.0.0" - }, - "dependencies": { - "http-headers": { - "version": "3.0.2", - "requires": { - "next-line": "^1.1.0" - } - }, - "next-line": { - "version": "1.1.0" - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, - "request-stats": { - "version": "3.0.0", - "requires": { - "http-headers": "^3.0.1", - "once": "^1.4.0" - } - }, - "wrappy": { - "version": "1.0.2" - } - } - }, - "@sap/hana-client": { - "version": "2.11.14", - "requires": { - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0" - } - } - }, - "accept-language": { - "version": "2.0.16", - "requires": { - "bcp47": "^1.1.2" - } - }, - "assert-plus": { - "version": "1.0.0" - }, - "async": { - "version": "3.2.0" - }, - "bcp47": { - "version": "1.1.2" - }, - "core-util-is": { - "version": "1.0.2" - }, - "debug": { - "version": "4.3.1", - "requires": { - "ms": "2.1.2" - } - }, - "extsprintf": { - "version": "1.4.1" - }, - "lodash": { - "version": "4.17.21" - }, - "ms": { - "version": "2.1.2" - }, - "verror": { - "version": "1.10.0", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - } - } - }, "@sap/xsenv": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-3.1.1.tgz", @@ -29997,9 +29499,28 @@ } } }, + "@types/debug": { + "version": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "extraneous": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "extraneous": true + }, "@types/node": { - "version": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", - "integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng==", + "version": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", + "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", + "extraneous": true + }, + "@types/sap__xsenv": { + "version": "https://registry.npmjs.org/@types/sap__xsenv/-/sap__xsenv-2.0.3.tgz", + "integrity": "sha512-w7J014voM+DPpz1JttkNj2zyfZiYZ0OORoH5KOHO3oOYD9IEwPCZqugqJPwyw6byvkOWSAujh3wVke0mEVu6kA==", "extraneous": true }, "acorn": { @@ -30027,12 +29548,6 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "extraneous": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -30176,18 +29691,9 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "extraneous": true, - "requires": { - "ansi-colors": "^4.1.1" - } + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.2.0.tgz", + "integrity": "sha512-05POuPJyPpO6jqzTNweQFfAyMSD4qa4lvsMOWyTRTdpHKy6nnnN+IYWaXF+lHivhBH/ufDKlR4IWCAN3oPnHuw==" }, "escape-string-regexp": { "version": "4.0.0", @@ -30196,9 +29702,9 @@ "extraneous": true }, "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "extraneous": true, "requires": { "@eslint/eslintrc": "^1.0.5", @@ -30208,11 +29714,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -30221,7 +29726,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -30232,9 +29737,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -30269,9 +29772,9 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "extraneous": true }, "espree": { @@ -30414,10 +29917,26 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "extraneous": true }, + "hdb": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/hdb/-/hdb-0.19.1.tgz", + "integrity": "sha512-QqB7Srj/AaesB1bZPiKZMPXnjU4NRgP7ZheCHUWf4EKKqZXpWW2lJcb6BRnNfjxfCYIT+TR1wIaA0zLO1CeU6w==", + "requires": { + "iconv-lite": "^0.4.18" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "extraneous": true }, "import-fresh": { @@ -30510,15 +30029,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "extraneous": true }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "extraneous": true, - "requires": { - "yallist": "^4.0.0" - } - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -30595,12 +30105,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "extraneous": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "extraneous": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -30628,14 +30132,10 @@ "glob": "^7.1.3" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "extraneous": true, - "requires": { - "lru-cache": "^6.0.0" - } + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "shebang-command": { "version": "2.0.0", @@ -30738,12 +30238,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "extraneous": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "extraneous": true } } }, @@ -31072,9 +30566,9 @@ } }, "swagger-ui-dist": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.1.3.tgz", - "integrity": "sha512-WvfPSfAAMlE/sKS6YkW47nX/hA7StmhYnAHc6wWCXNL0oclwLj6UXv0hQCkLnDgvebi0MEV40SJJpVjKUgH1IQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.2.1.tgz", + "integrity": "sha512-ZzUeNKIIMXmKI53iLscAVCpQ7jblYxI2XX5EBaoBr6UBEfxT3L0vlnE+fzPBbHc9g0sgdOMLZGhC5OW++9pqlw==" }, "swagger-ui-express": { "version": "4.3.0", @@ -31519,9 +31013,9 @@ } }, "winston": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz", - "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz", + "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -31594,9 +31088,9 @@ } }, "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", "requires": {} }, "xdg-basedir": { @@ -31616,9 +31110,9 @@ } }, "xlsx": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.4.tgz", - "integrity": "sha512-9aKt8g9ZLP0CUdBX8L5xnoMDFwSiLI997eQnDThCaqQMYB9AEBIRzblSSNN/ICMGLYIHUO3VKaItcedZJ3ijIg==", + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.5.tgz", + "integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==", "requires": { "adler-32": "~1.2.0", "cfb": "^1.1.4", diff --git a/package.json b/package.json index ad5caac..754d2fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hana-cli", - "version": "2.202201.9", + "version": "3.202201.1", "description": "HANA Developer Command Line Interface", "main": "index.js", "bin": { @@ -26,19 +26,17 @@ "types": "types/index.d.ts", "dependencies": { "@graphql-tools/schema": "^8.3.1", - "@sap/cds": "^5.7.4", - "@sap/hana-client": "2.11.14", - "@sap/hdbext": "7.5.0", + "hdb": "0.19.1", + "@sap/cds": "^5.7.5", "@sap/textbundle": "^4.0", - "@sap/xsenv": "^3.1.1", - "@types/showdown": "^1.9.4", + "@sap/xsenv": "^3.1.1", "body-parser": "^1.19.1", "check-node-version": "^4.2.1", "cli-highlight": "^2.1.11", "chalk": "^5.0.0", "console.table": "~0.10", "debug": "^4.3.3", - "dotenv": "^10.0.0", + "dotenv": "^14.2.0", "easy-table": "1.2.0", "express": "^4.17.2", "express-graphql": "^0.12.0", @@ -48,7 +46,7 @@ "json-to-pretty-yaml": "^1.2.2", "json2csv": "^5.0.6", "latest-version": "^6.0", - "marked": "^4.0.9", + "marked": "^4.0.10", "marked-terminal": "^5.0", "node-xlsx": "^0.21", "node-zip": "^1.1", @@ -57,13 +55,13 @@ "ora": "^6.0", "prompt": "^1.2", "properties-to-json": "^0.2.1", - "sap-hdbext-promisfied": "2.202201.1", + "sap-hdb-promisfied": "2.202201.6", "showdown": "^1.9.1", "swagger-ui-express": "^4.3", "terminaltools": "^2.1", "update-notifier": "^5.1.0", "uuid": "^8.3", - "ws": "^8.4.0", + "ws": "^8.4.2", "yargonaut": "1.1", "yargs": "^17.3.1" }, @@ -78,7 +76,8 @@ "homepage": "https://github.com/SAP-samples/hana-developer-cli-tool-example#readme", "devDependencies": { "@types/yargs": "^17.0.8", - "eslint": "^8.6.0", + "@types/showdown": "^1.9.4", + "eslint": "^8.7.0", "stringify-changelog": "^0.2.1" }, "cds": { diff --git a/types/app/dfa/help/utils/adapters/fiori/Component.d.ts b/types/app/dfa/help/utils/adapters/fiori/Component.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/types/app/resources/WebAssistant.d.ts b/types/app/resources/WebAssistant.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/types/utils/base.d.ts b/types/utils/base.d.ts index 057eee1..f8d283b 100644 --- a/types/utils/base.d.ts +++ b/types/utils/base.d.ts @@ -124,6 +124,14 @@ export function sendResults(res: any, results: any): void; * @returns lastResults */ export function getLastResults(): any; +/** + * - instance of sap-hdb-promisified module + */ +export type dbClass = dbClassDef; +/** @typedef {dbClassDef} dbClass - instance of sap-hdb-promisified module */ +export const dbClass: typeof dbClassDef; +export const sqlInjection: typeof sqlInjectionDef; +export const sqlInjectionUtils: typeof sqlInjectionDef; export const colors: import("chalk").ChalkInstance; export const debug: any; /** @type string */ @@ -135,6 +143,7 @@ export const bundle: TextBundle; */ export type hdbextPromiseInstance = dbClass; export type Ora = typeof import("ora"); +import dbClassDef from "sap-hdb-promisfied"; +import * as sqlInjectionDef from "../utils/sqlInjection.js"; import TextBundle_1 = require("@sap/textbundle"); import TextBundle = TextBundle_1.TextBundle; -import dbClass from "sap-hdbext-promisfied"; diff --git a/types/utils/connections.d.ts b/types/utils/connections.d.ts index 8d62e04..edf5ea4 100644 --- a/types/utils/connections.d.ts +++ b/types/utils/connections.d.ts @@ -45,6 +45,6 @@ export function getConnOptions(prompts: object): object; * Create Databse Connection * @param {object} prompts - input prompt values * @param {boolean} directConnect - Direct Connection parameters are supplied in prompts - * @returns {Promise} HANA DB conneciton of type sap/hdbext + * @returns {Promise} HANA DB conneciton of type hdb */ export function createConnection(prompts: object, directConnect?: boolean): Promise; diff --git a/types/utils/sqlInjection.d.ts b/types/utils/sqlInjection.d.ts new file mode 100644 index 0000000..4b03b1b --- /dev/null +++ b/types/utils/sqlInjection.d.ts @@ -0,0 +1,72 @@ +/** + * @param {string} [value] + * @returns {boolean} + */ +export function isAcceptableQuotedParameter(value?: string): boolean; +/** + * @param {any} [value] + * @param {any} [maxToken] + * @returns {any} + */ +export function isAcceptableParameter(value?: any, maxToken?: any): any; +/** + * Returns the value parameter with all double quotation marks escaped (i. e. doubled). + * @param {string} [value] + * @returns {string} - escaped value + */ +export function escapeDoubleQuotes(value?: string): string; +/** + * Returns the string parameter with all single quotation marks escaped (i. e. doubled). + * @param {string} [value] + * @returns {string} - escaped value + */ +export function escapeSingleQuotes(value?: string): string; +/** + * @module sqlInjection - SQL Injection Protection Utilities + */ +export const whitespaceTable: { + '\t': boolean; + '\n': boolean; + '\v': boolean; + '\f': boolean; + '\r': boolean; + ' ': boolean; + '\u0085': boolean; + '\u00A0': boolean; + '\u1680': boolean; + '\u2000': boolean; + '\u2001': boolean; + '\u2002': boolean; + '\u2003': boolean; + '\u2004': boolean; + '\u2005': boolean; + '\u2006': boolean; + '\u2007': boolean; + '\u2008': boolean; + '\u2009': boolean; + '\u200A': boolean; + '\u2028': boolean; + '\u2029': boolean; + '\u202F': boolean; + '\u205F': boolean; + '\u3000': boolean; +}; +export const separatorTable: { + ',': boolean; + '(': boolean; + ')': boolean; + '[': boolean; + ']': boolean; + '.': boolean; + ';': boolean; + ':': boolean; + '+': boolean; + '-': boolean; + '*': boolean; + '/': boolean; + '%': boolean; + '^': boolean; + '<': boolean; + '>': boolean; + '=': boolean; +}; diff --git a/utils/base.js b/utils/base.js index cb2bd6a..357edfc 100644 --- a/utils/base.js +++ b/utils/base.js @@ -12,9 +12,15 @@ const require = createRequire(import.meta.url) import * as path from 'path' -import dbClass from "sap-hdbext-promisfied" +import dbClassDef from "sap-hdb-promisfied" +/** @typedef {dbClassDef} dbClass - instance of sap-hdb-promisified module */ +export const dbClass = dbClassDef import * as conn from "../utils/connections.js" +import * as sqlInjectionDef from "../utils/sqlInjection.js" +export const sqlInjection = sqlInjectionDef +export const sqlInjectionUtils = sqlInjectionDef //alias for backwards compatibility with @sap/hdbext + /** @type Object - HANA Client DB Connection */ let dbConnection = null /** @typedef {dbClass} hdbextPromiseInstance - instance of sap-hdbext-promisified module */ diff --git a/utils/connections.js b/utils/connections.js index e3fed56..cca0d5f 100644 --- a/utils/connections.js +++ b/utils/connections.js @@ -7,10 +7,9 @@ import * as base from "./base.js" import * as fs from 'fs' import * as path from 'path' -import * as dotenv from 'dotenv' +import dotenv from 'dotenv' import { homedir } from 'os' import * as xsenv from '@sap/xsenv' -import * as hdbext from '@sap/hdbext' /** * Check parameter folders to see if the input file exists there @@ -189,27 +188,19 @@ export function getConnOptions(prompts) { * Create Databse Connection * @param {object} prompts - input prompt values * @param {boolean} directConnect - Direct Connection parameters are supplied in prompts - * @returns {Promise} HANA DB conneciton of type sap/hdbext + * @returns {Promise} HANA DB conneciton of type hdb */ export async function createConnection(prompts, directConnect = false) { base.debug('createConnection') - return new Promise((resolve, reject) => { - /** @type object */ - let options = [] - if (directConnect) { - options.hana = prompts - } else { - options = getConnOptions(prompts) - } - base.debug(`In Create Connection`) - hdbext.createConnection(options.hana, (error, client) => { - if (error) { - reject(error) - } else { - resolve(client) - } - }) + /** @type object */ + let options = [] + if (directConnect) { + options.hana = prompts + } else { + options = getConnOptions(prompts) } - ) + + base.debug(`In Create Connection`) + return base.dbClass.createConnection(options) } diff --git a/utils/dbInspect.js b/utils/dbInspect.js index 2b7e1f5..bdb2ef1 100644 --- a/utils/dbInspect.js +++ b/utils/dbInspect.js @@ -7,7 +7,6 @@ */ import * as base from "./base.js" const bundle = base.bundle -import * as hdbext from '@sap/hdbext' /** * Return the HANA DB Version @@ -75,7 +74,7 @@ export async function getDef(db, schema, Id) { OBJECT: `"${Id}"` } - let sp = await db.loadProcedurePromisified(hdbext, "SYS", "GET_OBJECT_DEFINITION") + let sp = await db.loadProcedurePromisified("SYS", "GET_OBJECT_DEFINITION") let object = await db.callProcedurePromisified(sp, inputParams) if (object.length < 1) { throw new Error(bundle.getText("errObj")) diff --git a/utils/massConvert.js b/utils/massConvert.js index 62dbeb8..e642c72 100644 --- a/utils/massConvert.js +++ b/utils/massConvert.js @@ -4,20 +4,17 @@ import * as base from './base.js' import { promises as fsp } from 'fs' import * as path from 'path' -import dbClass from 'sap-hdbext-promisfied' import cds from '@sap/cds' import * as dbInspect from '../utils/dbInspect.js' import * as fs from 'fs' import zipClass from 'node-zip' -import * as hdbext from '@sap/hdbext' - export async function convert(wss) { try { let prompts = base.getPrompts() const db = await base.createDBConnection() - let schema = await dbClass.schemaCalc(prompts, db) + let schema = await base.dbClass.schemaCalc(prompts, db) let targetMsg = `${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("table")}: ${prompts.table}` base.debug(targetMsg) broadcast(wss, targetMsg) @@ -179,14 +176,14 @@ export async function convert(wss) { */ async function getTablesInt(schema, table, client, limit) { base.debug(`getTablesInt ${schema} ${table} ${limit}`) - table = dbClass.objectName(table) + table = base.dbClass.objectName(table) let query = `SELECT SCHEMA_NAME, TABLE_NAME, TO_NVARCHAR(TABLE_OID) AS TABLE_OID, COMMENTS from TABLES WHERE SCHEMA_NAME LIKE ? AND TABLE_NAME LIKE ? AND IS_USER_DEFINED_TYPE = 'FALSE' ORDER BY SCHEMA_NAME, TABLE_NAME ` - if (limit | hdbext.sqlInjectionUtils.isAcceptableParameter(limit)) { + if (limit | base.sqlInjectionUtils.isAcceptableParameter(limit)) { query += `LIMIT ${limit.toString()}` } let results = await client.statementExecPromisified(await client.preparePromisified(query), [schema, table]) diff --git a/utils/sqlInjection.js b/utils/sqlInjection.js new file mode 100644 index 0000000..22a4d9d --- /dev/null +++ b/utils/sqlInjection.js @@ -0,0 +1,157 @@ +// @ts-check +/** + * @module sqlInjection - SQL Injection Protection Utilities + */ + + +export const whitespaceTable = { + '\t': true, // HORIZONTAL TABULATION + '\n': true, // NEW LINE + '\v': true, // VERTICAL TABULATION + '\f': true, // FORM FEED + '\r': true, // CARRIAGE RETURN + ' ': true, // SPACE + '\u0085': true, // NEL + '\u00A0': true, // NO-BREAK SPACE + '\u1680': true, // OGHAM SPACE MARK + '\u2000': true, // EN QUAD + '\u2001': true, // EM QUAD + '\u2002': true, // EN SPACE + '\u2003': true, // EM SPACE + '\u2004': true, // THREE-PER-EM SPACE + '\u2005': true, // FOUR-PER-EM SPACE + '\u2006': true, // SIX-PER-EM SPACE + '\u2007': true, // FIGURE SPACE + '\u2008': true, // PUNCTUATION SPACE + '\u2009': true, // THIN SPACE + '\u200A': true, // HAIR SPACE + '\u2028': true, // LINE SEPARATOR + '\u2029': true, // PARAGRAPH SEPARATOR + '\u202F': true, // NARROW NO-BREAK SPACE + '\u205F': true, // MEDIUM METHEMATICAL SPACE + '\u3000': true // IDEOGRAPHIC SPACE +} + +export const separatorTable = { + ',': true, + '(': true, + ')': true, + '[': true, + ']': true, + '.': true, + ';': true, + ':': true, + '+': true, + '-': true, + '*': true, + '/': true, + '%': true, + '^': true, + '<': true, + '>': true, + '=': true +} + +function isValidNonEmptyString(str) { + return !!(str && typeof str === 'string') +} + +function isSeparator(character) { + return !!separatorTable[character] +} + +function isWhitespaceCharacter(character) { + return !!whitespaceTable[character] +} + +/** + * @param {string} [value] + * @returns {boolean} + */ +export function isAcceptableQuotedParameter(value) { + return isValidNonEmptyString(value) && (value.search(/([^"]|^)"([^"]|$)/) === -1) +} + +/** + * @param {any} [value] + * @param {any} [maxToken] + * @returns {any} + */ +export function isAcceptableParameter(value, maxToken) { + if (!isValidNonEmptyString(value)) { + return false + } + if (!maxToken || typeof maxToken !== 'number') { + maxToken = 1 + } + var outside = true // outside of quotes + var lastCharWasWhitespace = true + var lastCharWasSeparator = false + var currentChar + var charAfterCurrent + var token = 0 + for (var i = 0; i < value.length; ++i) { + currentChar = value.charAt(i) + charAfterCurrent = value.charAt(i + 1) + if (currentChar === '"') { + if (!outside && charAfterCurrent === '"') { + ++i + continue + } + if (outside && !lastCharWasSeparator) { // opening " + ++token + } + outside = !outside + } else { + if (!outside) { + continue + } + // outside " + if (currentChar === '-' && charAfterCurrent === '-') { + return false // found comment + } + if (currentChar === '/' && charAfterCurrent === '*') { + return false // found comment + } + if (isSeparator(currentChar)) { + if (token === 0) { + token += 2 + } else { + ++token + } + lastCharWasSeparator = true + lastCharWasWhitespace = false + } else if (isWhitespaceCharacter(currentChar)) { + lastCharWasWhitespace = true + } else { + if (lastCharWasWhitespace && !lastCharWasSeparator) { + ++token + } + lastCharWasSeparator = false + lastCharWasWhitespace = false + } + } + } + return (outside && token <= maxToken) +} + + +/** + * Returns the value parameter with all double quotation marks escaped (i. e. doubled). + * @param {string} [value] + * @returns {string} - escaped value + */ +export function escapeDoubleQuotes(value) { + return value.replace(/"/g, '""') +} + + +/** + * Returns the string parameter with all single quotation marks escaped (i. e. doubled). + * @param {string} [value] + * @returns {string} - escaped value + */ +export function escapeSingleQuotes(value) { + return value.replace(/'/g, '\'\'') +} + From e2ec1999be4cd8ada774bd7dd62708aee63dea2f Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Tue, 25 Jan 2022 15:09:19 -0500 Subject: [PATCH 2/5] Fix but in hc commands (when CF not logged in) --- _i18n/messages.properties | 1 + bin/hanaCloudStart.js | 7 +++++-- utils/cf.js | 10 ++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/_i18n/messages.properties b/_i18n/messages.properties index 85b915f..fa9eeba 100644 --- a/_i18n/messages.properties +++ b/_i18n/messages.properties @@ -252,3 +252,4 @@ hc.updateProgress=Update in progress hc.running=Running hc.stopped=Stopped hc.unknown=Unknown +hc.error=No HANA Cloud Instances Found. Are you logged into CF cli? diff --git a/bin/hanaCloudStart.js b/bin/hanaCloudStart.js index 0aefa4e..ae28d39 100644 --- a/bin/hanaCloudStart.js +++ b/bin/hanaCloudStart.js @@ -46,10 +46,13 @@ export async function hcStart(prompts) { results = await cf.getHANAInstanceByName(prompts.name) } // @ts-ignore + if(!results || !results.resources){ + return base.error(new Error(base.bundle.getText("hc.error"))) + } + // @ts-ignore for (let item of results.resources) { const stdout = await cf.startHana(item.name) - - console.log(suggestHanaCli(stdout, item.name)); + console.log(suggestHanaCli(stdout, item.name)) } return base.end() } catch (error) { diff --git a/utils/cf.js b/utils/cf.js index ff3a801..ddd71ac 100644 --- a/utils/cf.js +++ b/utils/cf.js @@ -128,10 +128,16 @@ export async function getHANAInstances() { const { stdout, stderr } = await exec(script) if (stderr) { - console.log(stdout) throw new Error(`${bundle.getText("error")} ${stderr.toString()}`) } else { - return JSON.parse(stdout) + if(stdout){ + try { + return JSON.parse(stdout) + } catch(e) { + return + } + } + return } From 0763e87ca0485174bb2e064d54c7447873e1aa58 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Tue, 25 Jan 2022 15:26:56 -0500 Subject: [PATCH 3/5] Fix TablesUI parallel loading of multiple parts --- bin/inspectTable.js | 11 ++++++++--- bin/tables.js | 1 - 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bin/inspectTable.js b/bin/inspectTable.js index 2a8687c..f9afbf6 100644 --- a/bin/inspectTable.js +++ b/bin/inspectTable.js @@ -1,6 +1,8 @@ // @ts-check import * as base from '../utils/base.js' import * as dbInspect from '../utils/dbInspect.js' +import dbClass from "sap-hdb-promisfied" +import * as conn from "../utils/connections.js" import { highlight } from 'cli-highlight' import cds from '@sap/cds' // @ts-ignore @@ -74,9 +76,11 @@ export function handler(argv) { export async function tableInspect(prompts) { base.debug('tableInspect') try { - base.setPrompts(prompts) - const db = await base.createDBConnection() - let schema = await base.dbClass.schemaCalc(prompts, db) + // base.setPrompts(prompts) + // const db = await base.createDBConnection() + let dbConnection = await conn.createConnection(prompts, false) + const db = new dbClass(dbConnection) + let schema = await dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("table")}: ${prompts.table}`) dbInspect.options.useHanaTypes = prompts.useHanaTypes @@ -270,6 +274,7 @@ export async function tableInspect(prompts) { throw base.bundle.getText("unsupportedFormat") } } + db.destroyClient() await base.end() return results } catch (error) { diff --git a/bin/tables.js b/bin/tables.js index 76b34d7..323ca54 100644 --- a/bin/tables.js +++ b/bin/tables.js @@ -54,7 +54,6 @@ export async function getTables(prompts) { base.setPrompts(prompts) const db = await base.createDBConnection() - console.table(prompts) let schema = await base.dbClass.schemaCalc(prompts, db) base.debug(`${base.bundle.getText("schema")}: ${schema}, ${base.bundle.getText("table")}: ${prompts.table}`) From b541c694df8dc71efd46ca066c01f6783a2fcc8e Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Tue, 25 Jan 2022 17:30:22 -0500 Subject: [PATCH 4/5] Timing Issues --- bin/massConvert.js | 2 +- bin/matrix.js | 6 ++---- bin/querySimple.js | 3 +++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bin/massConvert.js b/bin/massConvert.js index 87072e2..cbc78be 100644 --- a/bin/massConvert.js +++ b/bin/massConvert.js @@ -16,7 +16,7 @@ export function handler (argv) { export async function getTables(prompts) { base.debug('getTables') base.setPrompts(prompts) - massConvertLib.convert() + await massConvertLib.convert() return base.end() } diff --git a/bin/matrix.js b/bin/matrix.js index ea0582a..c922152 100644 --- a/bin/matrix.js +++ b/bin/matrix.js @@ -1,14 +1,12 @@ // @ts-check import * as base from '../utils/base.js' import * as tools from 'terminaltools' - export const command = 'matrix' export const describe = base.bundle.getText("matrix") export const builder = base.getBuilder({}, false, false) -export async function handler () { +export async function handler() { try { - - tools.fun.matrix() + await tools.fun.matrix(`0123456789日ハミヒーウシナモニサワツオリアホテマケメエカキムユラセネスタヌヘçリク`) } catch (err) { return console.error(err) } diff --git a/bin/querySimple.js b/bin/querySimple.js index cb7b53c..cf2e786 100644 --- a/bin/querySimple.js +++ b/bin/querySimple.js @@ -117,6 +117,7 @@ export async function dbQuery(prompts) { }]) await toFile(prompts.folder, prompts.filename, 'xlsx', excelOutput) } else { + base.end() return base.error(base.bundle.getText("errExcel")) } break @@ -125,6 +126,7 @@ export async function dbQuery(prompts) { await toFile(prompts.folder, prompts.filename, 'json', JSON.stringify(results, null, 2)) } else { console.log(highlight(JSON.stringify(results, null, 2))) + base.end() return JSON.stringify(results, null, 2) } break @@ -133,6 +135,7 @@ export async function dbQuery(prompts) { await toFile(prompts.folder, prompts.filename, 'csv', parseToCsv(results, {delimiter : ";", transforms : [removeNewlineCharacter]})) } else { console.log(highlight(parseToCsv(results))) + base.end() return parseToCsv(results) } break From 3258a7ddbb3920988b262680cb0b7e324db73eae Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Tue, 25 Jan 2022 17:31:30 -0500 Subject: [PATCH 5/5] Update ChangeLog Date --- CHANGELOG.json | 2 +- CHANGELOG.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.json b/CHANGELOG.json index c355eab..0f0a7cf 100644 --- a/CHANGELOG.json +++ b/CHANGELOG.json @@ -1,6 +1,6 @@ [ { - "date": "2022-01-21", + "date": "2022-01-25", "version": "3.202201.1", "Changed": [ "Major New Version: Remove dependency upon @sap/hdbext and @sap/hana-client. Replaced with smaller footprint hdb module." diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c5b221..d0bf843 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/). -## [3.202201.1] - 2022-01-21 +## [3.202201.1] - 2022-01-25 **Changed** -- Major New Version: Remove dependency upon @sap/hdbext and @sap/hana-client. Replaced with smaller footprint hdb module +- Major New Version: Remove dependency upon @sap/hdbext and @sap/hana-client. Replaced with smaller footprint hdb module. ## [2.202201.9] - 2022-01-11