From 70773b09a6e865d42a144de3e3215acf1ddd2028 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Fri, 3 Feb 2023 16:56:14 -0500 Subject: [PATCH] Feb Update --- CHANGELOG.json | 13 + CHANGELOG.md | 12 + README.md | 50 ++ _i18n/messages.properties | 10 +- bin/btp.js | 16 +- bin/btpInfo.js | 63 ++ bin/btpSubs.js | 40 + bin/cds.js | 21 +- bin/changeLog.js | 13 +- bin/cli.js | 15 +- bin/connect.js | 2 +- bin/connectViaServiceKey.js | 13 +- bin/createContainer.js | 4 +- bin/createContainerUsers.js | 4 +- bin/index.js | 22 +- bin/inspectFunction.js | 2 +- bin/inspectLibMember.js | 2 +- bin/inspectLibrary.js | 2 +- bin/inspectProcedure.js | 2 +- bin/inspectTable.js | 19 +- bin/inspectTrigger.js | 2 +- bin/inspectView.js | 16 +- bin/issue.js | 35 + bin/massConvert.js | 2 +- bin/massRename.js | 5 +- bin/matrix.js | 3 +- bin/openBAS.js | 9 +- bin/openChangeLog.js | 2 +- bin/openDBExplorer.js | 6 +- bin/openReadMe.js | 2 +- bin/querySimple.js | 36 +- bin/readMe.js | 18 +- bin/rick.js | 11 +- bin/version.js | 50 +- index.js | 4 +- npm-shrinkwrap.json => package-lock.json | 1010 +++++++++------------- package.json | 24 +- types/bin/btpInfo.d.ts | 6 + types/bin/btpSubs.d.ts | 6 + types/bin/cds.d.ts | 2 +- types/bin/changeLog.d.ts | 2 +- types/bin/index.d.ts | 2 +- types/bin/issue.d.ts | 6 + types/bin/version.d.ts | 2 +- types/utils/base.d.ts | 11 +- types/utils/btp.d.ts | 5 + types/utils/cf.d.ts | 5 + utils/base.js | 16 +- utils/btp.js | 25 + utils/cf.js | 31 + 50 files changed, 953 insertions(+), 726 deletions(-) create mode 100644 bin/btpInfo.js create mode 100644 bin/btpSubs.js create mode 100644 bin/issue.js rename npm-shrinkwrap.json => package-lock.json (94%) create mode 100644 types/bin/btpInfo.d.ts create mode 100644 types/bin/btpSubs.d.ts create mode 100644 types/bin/issue.d.ts diff --git a/CHANGELOG.json b/CHANGELOG.json index 08f4606..fe4c74c 100644 --- a/CHANGELOG.json +++ b/CHANGELOG.json @@ -1,4 +1,17 @@ [ + { + "date": "2023-02-03", + "version": "3.202302.1", + "Changed": [ + "Lazy Load dependent modules to reduce initial command processor boot time - 10x performance improvement", + "CAP Upgrade to Jan 2023 - 6.5.0 version", + "Switch to @json2csv/node as json2csv is abandoned", + "New 'sub' command to list all active BTP Subscriptions and their URLs", + "New 'btpInfo' command to list detailed information about th btp CLI target", + "New 'issue' command to create GitHub issue preloaded with technical details", + "version command now returns information about @sap/cds-dk, the cf cli, and the btp cli" + ] + }, { "date": "2023-01-17", "version": "3.202301.1", diff --git a/CHANGELOG.md b/CHANGELOG.md index 54a1060..63d7672 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/). +## [3.202302.1] - 2023-02-03 + +**Changed** + +- Lazy Load dependent modules to reduce initial command processor boot time - 10x performance improvement +- CAP Upgrade to Jan 2023 - 6.5.0 version +- Switch to @json2csv/node as json2csv is abandoned +- New 'sub' command to list all active BTP Subscriptions and their URLs +- New 'btpInfo' command to list detailed information about th btp CLI target +- New 'issue' command to create GitHub issue preloaded with technical details +- version command now returns information about @sap/cds-dk, the cf cli, and the btp cli + ## [3.202301.1] - 2023-01-17 **Changed** diff --git a/README.md b/README.md index 8b96a73..573976e 100644 --- a/README.md +++ b/README.md @@ -273,6 +273,25 @@ Options: ![bas example](https://raw.githubusercontent.com/wiki/SAP-samples/hana-developer-cli-tool-example/images/btp.gif) +### btpInfo + +```shell +Detailed Information about btp CLI target + +Troubleshooting: + --disableVerbose, --quiet Disable Verbose output - removes all extra outp + ut that is only helpful to human readable inter + face. Useful for scripting commands. + [boolean] [default: false] + --debug, --Debug Debug hana-cli itself by adding output of LOTS + of intermediate details + [boolean] [default: false] + +Options: + -o, --output, --Output Output Format for inspection + [string] [choices: "tbl", "json"] [default: "tbl"] +``` + ### callProcedure ```shell @@ -1478,6 +1497,20 @@ Options: ifiers ier] [boolean] [default: false] ``` +### issue + +```shell +Report an Issue with the hana-cli + +Troubleshooting: + --disableVerbose, --quiet Disable Verbose output - removes all extra output t + hat is only helpful to human readable interface. Us + eful for scripting commands. + [boolean] [default: false] + --debug, --Debug Debug hana-cli itself by adding output of LOTS of i + ntermediate details [boolean] [default: false] +``` + ### libraries ```shell @@ -1960,6 +1993,7 @@ Options: ![roles example](https://raw.githubusercontent.com/wiki/SAP-samples/hana-developer-cli-tool-example/images/roles.gif) ### sbss + ```shell hana-cli sbss List all SAP HANA Cloud SBSS service instances in your target Space @@ -2005,6 +2039,7 @@ Options: --all, --al, --allSchemas Show all schemas regardless of permissions [boolean] [default: false] ``` + ![schemas example](https://raw.githubusercontent.com/wiki/SAP-samples/hana-developer-cli-tool-example/images/schemas.gif) ### schemasUI @@ -2034,6 +2069,7 @@ Options: --all, --al, --allSchemas Show all schemas regardless of permissions [boolean] [default: false] ``` + ### schemaInstances ```shell @@ -2160,6 +2196,20 @@ Options: ![status example](https://raw.githubusercontent.com/wiki/SAP-samples/hana-developer-cli-tool-example/images/status.gif) +### sub + +```shell +BTP Active Subscriptions and their URL + +Troubleshooting: + --disableVerbose, --quiet Disable Verbose output - removes all extra output t + hat is only helpful to human readable interface. Us + eful for scripting commands. + [boolean] [default: false] + --debug, --Debug Debug hana-cli itself by adding output of LOTS of i + ntermediate details [boolean] [default: false] +``` + ### synonyms ```shell diff --git a/_i18n/messages.properties b/_i18n/messages.properties index 16df669..6c55ea0 100644 --- a/_i18n/messages.properties +++ b/_i18n/messages.properties @@ -215,7 +215,9 @@ errorUndefinedAction=Error: Undefined Action btpCmd=Set the target for commands for the btp CLI to the global account, a directory, or a subaccount. Commands are executed in the specified target, unless you override it using a parameter. If the specified target is part of an account hierarchy, its parents are also targeted, so that if a command is only available on a higher level, it will be executed there. btpDir=The ID of the directory to be targeted btpSa=The ID of the subaccount to be targeted +btpSub=BTP Active Subscriptions and their URL btpGlobal=Global Account +btpInfo=Detailed Information about btp CLI target log=Processing Log gui.conn=Connection Parameters gui.refreshConn=Refresh Connection @@ -280,4 +282,10 @@ err.BTPNoTarget=No BTP cli Target found - are you logged in? err.BTPNoGlobalAccount=No BTP cli Global Account Target Found err.BTPNoSubAccount=No BTP cli Subaccount Target Found hc.BTPCheck=Checking at the BTP Level -hc.CFCheck=Checking at the CF Level \ No newline at end of file +hc.CFCheck=Checking at the CF Level +btp.ServerURL=btp CLI server URL +btp.globalaccount=🗺️Global Account +btp.folder=📂Folder +btp.subaccount=🧾Sub Account +btp.version=btp CLI version +issue=Report an Issue with the hana-cli \ No newline at end of file diff --git a/bin/btp.js b/bin/btp.js index 13f55b0..9e33d9c 100644 --- a/bin/btp.js +++ b/bin/btp.js @@ -2,11 +2,6 @@ import * as base from '../utils/base.js' import * as btp from '../utils/btp.js' const colors = base.colors -import { createRequire } from 'module' -const require = createRequire(import.meta.url) -const inquirer = require('inquirer') -const TreePrompt = require('inquirer-tree-prompt') - export const command = 'btp [directory] [subaccount]' export const aliases = ['btpTarget', 'btptarget', 'btp'] @@ -30,13 +25,20 @@ export async function handler(argv) { } } + base.debug(`build inquirer prompts`) + const inquirer = base.require('inquirer') + const TreePrompt = base.require('inquirer-tree-prompt') try { + base.debug(`GetBTPGlobalAccount`) + base.startSpinnerInt() var account = await btp.getBTPGlobalAccount() + base.debug(account) try { - console.log(`${base.bundle.getText("btpGlobal")}: ${colors.green(account.DisplayName)}`) let hierarchy = await btp.getBTPHierarchy() base.debug(hierarchy) + base.stopSpinnerInt() + console.log(`${base.bundle.getText("btpGlobal")}: ${colors.green(account.DisplayName)}`) inquirer.registerPrompt('tree', TreePrompt) let tree = [] @@ -96,10 +98,12 @@ export async function handler(argv) { export async function callBTP(prompts) { base.debug('callBTP') + base.startSpinnerInt() base.debug(prompts) try { base.setPrompts(prompts) let targetOutput = await btp.setBTPSubAccount(prompts.subaccount) + base.stopSpinnerInt() console.log(targetOutput) return base.end() diff --git a/bin/btpInfo.js b/bin/btpInfo.js new file mode 100644 index 0000000..9fd3eb7 --- /dev/null +++ b/bin/btpInfo.js @@ -0,0 +1,63 @@ +// @ts-check +import * as base from '../utils/base.js' +import * as btp from '../utils/btp.js' +const colors = base.colors + +export const command = 'btpInfo' +export const aliases = ['btpinfo'] +export const describe = base.bundle.getText("btpInfo") + +export const builder = base.getBuilder({ + output: { + alias: ['o', 'Output'], + choices: ["tbl", "json"], + default: "tbl", + type: 'string', + desc: base.bundle.getText("outputType") + } +}, false) + + +export async function handler(argv) { + base.promptHandler(argv, getBTPInfo, { + output: { + description: base.bundle.getText("outputType"), + type: 'string', + // validator: /t[bl]*|s[ql]*|c[ds]?/, + required: true + } + }) +} + +export async function getBTPInfo(prompts) { + base.debug('getBTPInfo') + base.startSpinnerInt() + base.debug(prompts) + try { + base.setPrompts(prompts) + + let data = await btp.getBTPConfig() + base.stopSpinnerInt() + if(prompts.output === 'json'){ + console.log(data) + }else{ + console.log(`${base.bundle.getText("dbx.user")}: ${colors.green(data.UserName)}`) + console.log(`${base.bundle.getText("btp.ServerURL")}: ${colors.blue(data.ServerURL)}`) + console.log(`${base.bundle.getText("btp.version")}: ${colors.green(data.Version)}`) + for (let item of data.TargetHierarchy) { + let output = '' + if(item.Type === 'globalaccount'){ + output = base.bundle.getText("btp.globalaccount") + }else if(item.Type === 'directory'){ + output = base.bundle.getText("btp.folder") + }else if(item.Type === 'subaccount'){ + output = base.bundle.getText("btp.subaccount") + } + console.log(`${output}: ${colors.green(item.DisplayName)} ${colors.red(item.ID)}`) + } + } + return base.end() + } catch (error) { + base.error(error) + } +} \ No newline at end of file diff --git a/bin/btpSubs.js b/bin/btpSubs.js new file mode 100644 index 0000000..5eea7b0 --- /dev/null +++ b/bin/btpSubs.js @@ -0,0 +1,40 @@ +// @ts-check +import * as base from '../utils/base.js' +import * as btp from '../utils/btp.js' +const colors = base.colors + +export const command = 'sub' +export const aliases = ['subs', 'Sub', 'Subs', 'btpsub', 'btpsubs', 'btpSub', 'btpSubs', 'btpsubscriptions', 'btpSubscriptions'] +export const describe = base.bundle.getText("btpSub") + +export const builder = base.getBuilder({}, false) + + +export async function handler(argv) { + base.promptHandler(argv, getSubs, {}) +} + +export async function getSubs(prompts) { + base.debug('getSubs') + base.startSpinnerInt() + base.debug(prompts) + try { + base.setPrompts(prompts) + + let subs = await btp.getBTPSubscriptions() + base.stopSpinnerInt() + const subscribed = 'SUBSCRIBED' + for (let item of subs.applications) { + if (item.state === subscribed) { + console.log(item.displayName) + if (item.subscriptionUrl) { + console.log(colors.blue(item.subscriptionUrl)) + } + } + } + + return base.end() + } catch (error) { + base.error(error) + } +} \ No newline at end of file diff --git a/bin/cds.js b/bin/cds.js index cdefdb7..3a6fa57 100644 --- a/bin/cds.js +++ b/bin/cds.js @@ -1,17 +1,11 @@ // @ts-check import * as base from '../utils/base.js' import * as dbInspect from '../utils/dbInspect.js' -import * as swaggerUi from 'swagger-ui-express' -import open from 'open' import * as conn from '../utils/connections.js' -import * as Server from 'http' -import express from 'express' + // @ts-ignore import cds from '@sap/cds' -import { createRequire } from 'module' -const require = createRequire(import.meta.url) - global.__xRef = [] export const command = 'cds [schema] [table]' @@ -56,7 +50,7 @@ export const builder = base.getBuilder({ } }) -export function handler(argv) { +export async function handler(argv) { base.promptHandler(argv, cdsBuild, { table: { description: base.bundle.getText("table"), @@ -201,6 +195,7 @@ export async function cdsBuild(prompts) { async function cdsServerSetup(prompts, cdsSource) { base.debug('cdsServerSetup') + const {default:Server} = await import('http') const port = process.env.PORT || prompts.port || 3010 if (!(/^[1-9]\d*$/.test(port) && 1 <= 1 * port && 1 * port <= 65535)) { @@ -208,6 +203,7 @@ async function cdsServerSetup(prompts, cdsSource) { } const server = Server.createServer() + const express = base.require('express') var app = express() //CDS OData Service @@ -336,7 +332,7 @@ async function cdsServerSetup(prompts, cdsSource) { //Swagger UI - Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => require('@sap/cds-dk/lib/compile/openapi') }) + Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => base.require('@sap/cds-dk/lib/compile/openapi') }) try { // @ts-ignore let metadata = await cds.compile.to.openapi(cds.parse(cdsSource), { @@ -349,6 +345,7 @@ async function cdsServerSetup(prompts, cdsSource) { let serveOptions = { explorer: true } + const swaggerUi = await import('swagger-ui-express') app.use('/api/api-docs', swaggerUi.serve, swaggerUi.setup(metadata, serveOptions)) app.get('/', (_, res) => res.send(getIndex(odataURL, entity))) @@ -370,18 +367,18 @@ async function cdsServerSetup(prompts, cdsSource) { //Start the Server server.on("request", app) - server.listen(port, function () { + server.listen(port, async () => { // @ts-ignore let serverAddr = `http://localhost:${server.address().port}` console.info(`HTTP Server: ${serverAddr}`) //GraphQL - const GraphQLAdapter = require('@cap-js/graphql/lib') //require('@sap/cds-graphql/lib') + const GraphQLAdapter = base.require('@cap-js/graphql/lib') //require('@sap/cds-graphql/lib') const adapter = new GraphQLAdapter (cds.services, { graphiql: true, path: '/graphql' }) app.use('/graphql', adapter) // app.use(new GraphQLAdapter(cds.services, { graphiql: true })) console.log("serving GraphQL endpoint for all services { at: '/graphql' }") - + const { default:open } = await import('open') open(serverAddr) }) } diff --git a/bin/changeLog.js b/bin/changeLog.js index 24b85ff..244f5cf 100644 --- a/bin/changeLog.js +++ b/bin/changeLog.js @@ -2,9 +2,6 @@ import * as base from '../utils/base.js' import * as fs from 'fs' import * as path from 'path' -import { marked } from 'marked' -import TerminalRenderer from 'marked-terminal' - import { fileURLToPath } from 'url' // @ts-ignore const __dirname = fileURLToPath(new URL('.', import.meta.url)) @@ -13,11 +10,17 @@ export const command = 'changes' export const aliases = ['chg', 'changeLog', 'changelog'] export const describe = base.bundle.getText("changes") -export function handler () { +export function handler() { getChangeLog() } -export function getChangeLog() { +export async function getChangeLog() { + const [{ marked }, { default: TerminalRenderer }] = await + Promise.all([ + import('marked'), + import('marked-terminal') + ]) + marked.setOptions({ // Define custom renderer renderer: new TerminalRenderer({ diff --git a/bin/cli.js b/bin/cli.js index 503dbd4..7416ad3 100644 --- a/bin/cli.js +++ b/bin/cli.js @@ -7,10 +7,10 @@ import * as base from '../utils/base.js' import * as versionCheck from '../utils/versionCheck.js' // @ts-ignore import updateNotifier from 'update-notifier' -import { createRequire } from 'module' -const require = createRequire(import.meta.url) import 'console.table' -require('yargonaut') +//import setDebug from 'debug' + +base.require('yargonaut') .style('blue') .helpStyle('green') .errorsStyle('red') @@ -22,8 +22,10 @@ import * as index from './index.js' //{ commands } from './index.js' versionCheck.checkVersion().then(async () => { // @ts-ignore - const pkg = require('../package.json') - await updateNotifier({ pkg }).notify({ isGlobal: true }) + const pkg = base.require('../package.json') + const notifier = updateNotifier({ pkg }).notify({ isGlobal: true }) + base.debug(notifier.update) + /** * Custom error handler catch all @@ -36,6 +38,8 @@ versionCheck.checkVersion().then(async () => { process.on('uncaughtException', errorHandler) process.on('unhandledRejection', errorHandler) + //setDebug.enable('hana-cli, *') + base.debug(`Before Yargs`) // @ts-ignore yargs(hideBin(process.argv)) .scriptName('hana-cli') @@ -53,4 +57,5 @@ versionCheck.checkVersion().then(async () => { .version(false) .completion() .argv + base.debug(`After Yargs`) }) \ No newline at end of file diff --git a/bin/connect.js b/bin/connect.js index 7892f6e..485f4cb 100644 --- a/bin/connect.js +++ b/bin/connect.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as fs from 'fs' export const command = 'connect [user] [password]' export const aliases = ['c', 'login'] export const describe = base.bundle.getText("connect") @@ -165,6 +164,7 @@ export async function saveEnv(options) { defaultEnv.VCAP_SERVICES.hana[0].credentials.sslCryptoProvider = 'openssl' defaultEnv.VCAP_SERVICES.hana[0].credentials.sslValidateCertificate = true } + const {default:fs} = await import('fs') fs.writeFileSync("default-env-admin.json", JSON.stringify(defaultEnv, null, '\t')) console.log(base.bundle.getText("adminSaved")) diff --git a/bin/connectViaServiceKey.js b/bin/connectViaServiceKey.js index 4c6d037..455521a 100644 --- a/bin/connectViaServiceKey.js +++ b/bin/connectViaServiceKey.js @@ -1,8 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as fs from 'fs' -import * as child_process from 'child_process' -let child = child_process.exec export const command = 'serviceKey [instance] [key]' export const aliases = ['key', 'servicekey', 'service-key'] @@ -82,7 +79,8 @@ export function handler (argv) { export async function setKeyDetails(input) { base.debug('setKeyDetails') base.debug(input) - + const { default:child_process } = await import('child_process') + let child = child_process.exec //create serviceKey try { @@ -174,12 +172,15 @@ export async function saveEnv(options, input) { } if (input.save) { + const { default:fs } = await import('fs') fs.writeFile("default-env.json", JSON.stringify(defaultEnv, null, '\t'), (err) => { if (err) { throw new Error(`${base.bundle.getText("errConn")} ${JSON.stringify(err)}`) } - console.log(base.bundle.getText("saved")); - + console.log(base.bundle.getText("saved")) + base.end() }) + } else { + base.end() } } \ No newline at end of file diff --git a/bin/createContainer.js b/bin/createContainer.js index d10f75c..a5688ba 100644 --- a/bin/createContainer.js +++ b/bin/createContainer.js @@ -1,8 +1,6 @@ // @ts-check import * as base from '../utils/base.js' import * as conn from "../utils/connections.js" -import { v4 as uuidv4 } from 'uuid' -import * as fs from 'fs' import * as xsenv from '@sap/xsenv' export const command = 'createContainer [container] [group]' @@ -60,6 +58,7 @@ export function handler (argv) { export async function activate(prompts) { base.debug('activate') + const { v4: uuidv4 } = base.require('uuid') try { base.setPrompts(prompts) const db = await base.createDBConnection() @@ -215,6 +214,7 @@ export async function saveEnv(options, container, userDT, userRT, passwordDT, pa }] base.debug(defaultEnv) + const {default:fs} = await import('fs') fs.writeFile("default-env.json", JSON.stringify(defaultEnv, null, '\t'), (err) => { if (err) { throw new Error(`${base.bundle.getText('errDefaultEnv')}: ${JSON.stringify(err)}`) diff --git a/bin/createContainerUsers.js b/bin/createContainerUsers.js index c6e8224..f18c854 100644 --- a/bin/createContainerUsers.js +++ b/bin/createContainerUsers.js @@ -1,8 +1,6 @@ // @ts-check import * as base from '../utils/base.js' -import { v4 as uuidv4 } from 'uuid' import * as conn from "../utils/connections.js" -import * as fs from 'fs' import * as xsenv from '@sap/xsenv' export const command = 'createContainerUsers [container]' @@ -50,6 +48,7 @@ export function handler (argv) { export async function activate(prompts) { base.debug('activate') + const { v4: uuidv4 } = base.require('uuid') try { base.setPrompts(prompts) const db = await base.createDBConnection() @@ -180,6 +179,7 @@ async function saveEnv(options, container, userDT, userRT, passwordDT, passwordR }] base.debug(defaultEnv) + const {default:fs} = await import('fs') fs.writeFile("default-env.json", JSON.stringify(defaultEnv, null, '\t'), (err) => { if (err) { throw new Error(`${base.bundle.getText('errDefaultEnv')}: ${JSON.stringify(err)}`) diff --git a/bin/index.js b/bin/index.js index 80230ab..f90a407 100644 --- a/bin/index.js +++ b/bin/index.js @@ -1,9 +1,9 @@ // @ts-check - +import * as base from '../utils/base.js' export async function init() { - - const [ - activateHDI, adminHDI, adminHDIGroup, btp, callProcedure, certificates, cds, openChangeLog, + base.debug(`Command Init`) + const [ + activateHDI, adminHDI, adminHDIGroup, callProcedure, certificates, cds, openChangeLog, changeLog, changeLogUI, connect, containers, containersUI, copy2DefaultEnv, copy2Env, copy2Secrets, createGroup, createContainer, createContainerUsers, createJWT, createModule, createXSAAdmin, dataTypes, dataTypesUI, dataVolumes, disks, dropGroup, dropContainer, features, @@ -19,7 +19,7 @@ export async function init() { hanaCloudSecureStoreInstances, hanaCloudSecureStoreInstancesUI, connectViaServiceKey, sequences, status, synonyms, systemInfo, systemInfoUI, tables, tablesUI, //test, traces, traceContents, triggers, UI, hanaCloudUPSInstances, hanaCloudUPSInstancesUI, - users, version, views + users, version, views, btp, btpSubs, btpInfo, issue ] = await Promise.all([ import('./activateHDI.js'), import('./adminHDI.js'), @@ -122,10 +122,14 @@ export async function init() { import('./users.js'), import('./version.js'), import('./views.js'), - import('./btp.js') + import('./btp.js'), + import('./btpSubs.js'), + import('./btpInfo.js'), + import('./issue.js') ]) + base.debug(`Command Init End`) return [ - activateHDI, adminHDI, adminHDIGroup, btp, callProcedure, certificates, cds, openChangeLog, + activateHDI, adminHDI, adminHDIGroup, btp, btpSubs, btpInfo, callProcedure, certificates, cds, openChangeLog, changeLog, changeLogUI, connect, containers, containersUI, copy2DefaultEnv, copy2Env, copy2Secrets, createGroup, createContainer, createContainerUsers, createJWT, createModule, createXSAAdmin, dataTypes, dataTypesUI, dataVolumes, disks, dropGroup, dropContainer, features, @@ -134,7 +138,7 @@ export async function init() { hostInformation, indexes, indexesUI, iniContents, iniFiles, inspectFunction, inspectIndex, inspectJWT, inspectLibMember, inspectLibrary, inspectProcedure, inspectTable, inspectTableUI, inspectTrigger, inspectUser, inspectView, - libraries, massConvert, massConvertUI, massRename, massUsers, matrix, objects, + issue, libraries, massConvert, massConvertUI, massRename, massUsers, matrix, objects, openBAS, openDBExplorer, ports, privilegeError, procedures, querySimple, querySimpleUI, readMe, readMeUI, openReadMe, reclaim, rick, roles, hanaCloudSBSSInstances, hanaCloudSBSSInstancesUI, schemas, schemasUI, hanaCloudSchemaInstances, hanaCloudSchemaInstancesUI, @@ -142,5 +146,5 @@ export async function init() { sequences, status, synonyms, systemInfo, systemInfoUI, tables, tablesUI, //test, traces, traceContents, triggers, UI, hanaCloudUPSInstances, hanaCloudUPSInstancesUI, users, version, views - ] + ] } \ No newline at end of file diff --git a/bin/inspectFunction.js b/bin/inspectFunction.js index ff28204..3a9acdf 100644 --- a/bin/inspectFunction.js +++ b/bin/inspectFunction.js @@ -1,7 +1,6 @@ // @ts-check import * as base from '../utils/base.js' import * as dbInspect from '../utils/dbInspect.js' -import {highlight} from 'cli-highlight' export const command = 'inspectFunction [schema] [function]' export const aliases = ['if', 'function', 'insFunc', 'inspectfunction'] @@ -51,6 +50,7 @@ export function handler (argv) { export async function functionInspect(prompts) { base.debug('functionInspect') + const { highlight } = await import('cli-highlight') try { base.setPrompts(prompts) const db = await base.createDBConnection() diff --git a/bin/inspectLibMember.js b/bin/inspectLibMember.js index cf58a40..591121a 100644 --- a/bin/inspectLibMember.js +++ b/bin/inspectLibMember.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import {highlight} from 'cli-highlight' export const command = 'inspectLibMember [schema] [library] [libraryMem]' export const aliases = ['ilm', 'libraryMember', 'librarymember', 'insLibMem', 'inspectlibrarymember'] @@ -60,6 +59,7 @@ export function handler (argv) { export async function libraryMemInspect(prompts) { base.debug('libraryMemInspect') + const { highlight } = await import('cli-highlight') try { base.setPrompts(prompts) const db = await base.createDBConnection() diff --git a/bin/inspectLibrary.js b/bin/inspectLibrary.js index 88ec334..77992cf 100644 --- a/bin/inspectLibrary.js +++ b/bin/inspectLibrary.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import {highlight} from 'cli-highlight' export const command = 'inspectLibrary [schema] [library]' export const aliases = ['il', 'library', 'insLib', 'inspectlibrary'] @@ -52,6 +51,7 @@ export function handler (argv) { export async function libraryInspect(prompts) { base.debug('libraryInspect') + const { highlight } = await import('cli-highlight') try { base.setPrompts(prompts) const db = await base.createDBConnection() diff --git a/bin/inspectProcedure.js b/bin/inspectProcedure.js index a5a6a7c..666f969 100644 --- a/bin/inspectProcedure.js +++ b/bin/inspectProcedure.js @@ -1,7 +1,6 @@ // @ts-check import * as base from '../utils/base.js' import * as dbInspect from '../utils/dbInspect.js' -import {highlight} from 'cli-highlight' export const command = 'inspectProcedure [schema] [procedure]' export const aliases = ['ip', 'procedure', 'insProc', 'inspectprocedure', 'inspectsp'] @@ -51,6 +50,7 @@ export function handler (argv) { export async function procedureInspect(prompts) { base.debug('procedureInspect') + const { highlight } = await import('cli-highlight') try { base.setPrompts(prompts) const db = await base.createDBConnection() diff --git a/bin/inspectTable.js b/bin/inspectTable.js index da83baa..f86a08b 100644 --- a/bin/inspectTable.js +++ b/bin/inspectTable.js @@ -3,17 +3,8 @@ 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' // @ts-ignore import cds from '@sap/cds' -// @ts-ignore -import YAML from 'json-to-pretty-yaml' -import { - parse, - convert -} from 'odata2openapi' -import { createRequire } from 'module' -const require = createRequire(import.meta.url) global.__xRef = [] export const command = 'inspectTable [schema] [table]' @@ -96,9 +87,13 @@ export function handler(argv) { export async function tableInspect(prompts) { base.debug('tableInspect') + const [{ highlight }, YAML, { parse, convert }] = await Promise.all([ + import('cli-highlight'), + import('json-to-pretty-yaml'), + import('odata2openapi') + ]) + 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) @@ -113,7 +108,7 @@ export async function tableInspect(prompts) { let constraints = await dbInspect.getConstraints(db, object) // @ts-ignore - Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => require('@sap/cds-dk/lib/compile/openapi') }) + Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => base.require('@sap/cds-dk/lib/compile/openapi') }) var results = {} switch (prompts.output) { diff --git a/bin/inspectTrigger.js b/bin/inspectTrigger.js index b11cc1b..a62c475 100644 --- a/bin/inspectTrigger.js +++ b/bin/inspectTrigger.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import {highlight} from 'cli-highlight' export const command = 'inspectTrigger [schema] [trigger]' export const aliases = ['itrig', 'trigger', 'insTrig', 'inspecttrigger', 'inspectrigger'] @@ -51,6 +50,7 @@ export function handler (argv) { export async function triggerInspect(prompts) { base.debug('triggerInspect') + const { highlight } = await import('cli-highlight') try { base.setPrompts(prompts) const db = await base.createDBConnection() diff --git a/bin/inspectView.js b/bin/inspectView.js index 92188b3..d4c9e23 100644 --- a/bin/inspectView.js +++ b/bin/inspectView.js @@ -1,15 +1,7 @@ // @ts-check import * as base from '../utils/base.js' import * as dbInspect from '../utils/dbInspect.js' -import { highlight } from 'cli-highlight' import cds from '@sap/cds' -import YAML from 'json-to-pretty-yaml' -import { - parse, - convert -} from 'odata2openapi' -import { createRequire } from 'module' -const require = createRequire(import.meta.url) global.__xRef = [] export const command = 'inspectView [schema] [view]' @@ -90,6 +82,11 @@ export function handler(argv) { export async function viewInspect(prompts) { base.debug('viewInspect') + const [{ highlight }, YAML, { parse, convert }] = await Promise.all([ + import('cli-highlight'), + import('json-to-pretty-yaml'), + import('odata2openapi') + ]) try { base.setPrompts(prompts) const db = await base.createDBConnection() @@ -109,7 +106,7 @@ export async function viewInspect(prompts) { } // @ts-ignore - Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => require('@sap/cds-dk/lib/compile/openapi') }) + Object.defineProperty(cds.compile.to, 'openapi', { configurable: true, get: () => base.require('@sap/cds-dk/lib/compile/openapi') }) switch (prompts.output) { case 'tbl': @@ -158,6 +155,7 @@ export async function viewInspect(prompts) { } case 'hdbview': { let cdsSource = await dbInspect.formatCDS(db, object, fields, null, "hdbview", schema) + base.debug(cdsSource) let all = cds.compile.to.hdbtable(cds.parse(cdsSource)) for (let [src] of all) // @ts-ignore diff --git a/bin/issue.js b/bin/issue.js new file mode 100644 index 0000000..69012db --- /dev/null +++ b/bin/issue.js @@ -0,0 +1,35 @@ +// @ts-check +import * as base from '../utils/base.js' + +export const command = 'issue' +export const aliases = ['Issue', 'openIssue', 'openissue', 'reportIssue', 'reportissue'] +export const describe = base.bundle.getText("issue") +export const builder = base.getBuilder({}, false) +export function handler(argv) { + base.promptHandler(argv, createIssue, {}) +} + +export async function createIssue() { + base.debug('createIssue') + base.startSpinnerInt() + const { default: open } = await import('open') + const { getVersion } = await import('./version.js') + try { + const ver = await getVersion() + let verString = `` + Object.keys(ver).forEach(key => verString += `${key}: ${ver[key]}\n`) + const encoded = encodeURI(verString) + let issueURL = + `https://github.com/SAP-samples/hana-developer-cli-tool-example/issues/new?` + + `title=` + + `&labels=bug` + + `&body=${encoded}` + base.debug(issueURL) + open(issueURL) + base.stopSpinnerInt() + return base.end() + } catch (error) { + base.error(error) + } +} + diff --git a/bin/massConvert.js b/bin/massConvert.js index cbc78be..e58ba9c 100644 --- a/bin/massConvert.js +++ b/bin/massConvert.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as massConvertLib from '../utils/massConvert.js' global.__xRef = [] export const command = 'massConvert [schema] [table]' @@ -15,6 +14,7 @@ export function handler (argv) { export async function getTables(prompts) { base.debug('getTables') + const massConvertLib = await import('../utils/massConvert.js') base.setPrompts(prompts) await massConvertLib.convert() return base.end() diff --git a/bin/massRename.js b/bin/massRename.js index 54af39a..fb9fad8 100644 --- a/bin/massRename.js +++ b/bin/massRename.js @@ -1,8 +1,6 @@ // @ts-check import * as base from '../utils/base.js' import cds from '@sap/cds' -import { promises as fs } from 'fs' -import * as convert from 'js-convert-case' export const command = 'massRename' export const aliases = ['mr', 'massrename', 'massRN', 'massrn'] @@ -56,6 +54,8 @@ export function handler (argv) { export async function rename(result) { base.debug('rename') + const convert = await import('js-convert-case') + try { base.setPrompts(result) const csn = await cds.load(result.schema) @@ -142,6 +142,7 @@ export async function rename(result) { break } }) + const {promises:fs} = await import('fs') if (result.prefix) { fs.writeFile(`${result.prefix}.cds`, model) } else { diff --git a/bin/matrix.js b/bin/matrix.js index c922152..cc80df9 100644 --- a/bin/matrix.js +++ b/bin/matrix.js @@ -1,10 +1,11 @@ // @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() { + const tools = await import('terminaltools') try { await tools.fun.matrix(`0123456789日ハミヒーウシナモニサワツオリアホテマケメエカキムユラセネスタヌヘçリク`) } catch (err) { diff --git a/bin/openBAS.js b/bin/openBAS.js index 8e096fa..3e92c76 100644 --- a/bin/openBAS.js +++ b/bin/openBAS.js @@ -2,8 +2,6 @@ import * as base from '../utils/base.js' import * as btp from '../utils/btp.js' -import open from 'open' - export const command = 'openbas' export const aliases = ['openBAS', 'openBas', 'openBusinessApplicationStudio', 'bas', 'BAS'] export const describe = base.bundle.getText("openbas") @@ -13,11 +11,14 @@ export function handler (argv) { } export async function getBAS() { + base.startSpinnerInt() base.debug('openBAS') + const { default:open } = await import('open') try { - let basURL = await btp.getBASSubURL() - console.log(basURL) + let basURL = await btp.getBASSubURL() open(basURL) + base.stopSpinnerInt() + console.log(basURL) return base.end() } catch (error) { base.error(error) diff --git a/bin/openChangeLog.js b/bin/openChangeLog.js index 79b941b..67f653c 100644 --- a/bin/openChangeLog.js +++ b/bin/openChangeLog.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import open from 'open' export const command = 'changelog' export const aliases = ['openrchangelog', 'openChangeLog', 'openChangelog', 'ChangeLog', 'Changelog', 'changes', 'Changes'] @@ -12,6 +11,7 @@ export function handler (argv) { export async function getChangeLog() { base.debug('getChangeLog') + const { default:open } = await import('open') let dbxReadmeURL = 'https://github.com/SAP-samples/hana-developer-cli-tool-example/blob/main/CHANGELOG.md' console.log(dbxReadmeURL) open(dbxReadmeURL) diff --git a/bin/openDBExplorer.js b/bin/openDBExplorer.js index 6931f0c..1ee5370 100644 --- a/bin/openDBExplorer.js +++ b/bin/openDBExplorer.js @@ -1,7 +1,6 @@ // @ts-check import * as base from '../utils/base.js' import * as conn from '../utils/connections.js' -import open from 'open' export const command = 'opendbx' export const aliases = ['open', 'openDBX', 'opendb', 'openDBExplorer', 'opendbexplorer', 'dbx', 'DBX'] @@ -13,6 +12,7 @@ export function handler (argv) { export async function getDBX(prompts) { base.debug('getDBX') + const { default:open } = await import('open') try { let options = await conn.getConnOptions(prompts) @@ -47,9 +47,9 @@ export async function getDBX(prompts) { await console.log(`${base.bundle.getText("errDBX")}: ${host}`) return } - } - console.log(dbxURL) + } open(dbxURL) + console.log(dbxURL) return base.end() } catch (error) { base.error(error) diff --git a/bin/openReadMe.js b/bin/openReadMe.js index b58ace8..ade81f6 100644 --- a/bin/openReadMe.js +++ b/bin/openReadMe.js @@ -1,6 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import open from 'open' export const command = 'readme' export const aliases = ['openreadme', 'openReadme', 'openReadMe', 'openHelp', 'openhelp'] @@ -12,6 +11,7 @@ export function handler (argv) { export async function getReadMe() { base.debug('getReadMe') + const { default:open } = await import('open') let dbxReadmeURL = 'https://github.com/SAP-samples/hana-developer-cli-tool-example/blob/main/README.md' console.log(dbxReadmeURL) open(dbxReadmeURL) diff --git a/bin/querySimple.js b/bin/querySimple.js index cf2e786..f8a7de0 100644 --- a/bin/querySimple.js +++ b/bin/querySimple.js @@ -1,12 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import { parse as parseToCsv } from 'json2csv' -import * as fs from 'fs' -import * as path from 'path' -import {highlight} from 'cli-highlight' -import * as excel from 'node-xlsx' -// @ts-ignore -import * as Table from 'easy-table' export const command = 'querySimple' export const aliases = ['qs', "querysimple"] @@ -64,12 +57,12 @@ export let inputPrompts = { } } -export function handler (argv) { +export function handler(argv) { base.promptHandler(argv, dbQuery, inputPrompts) } export function removeNewlineCharacter(dataRow) { - + let newDataRow = {} Object.keys(dataRow).forEach((key) => { if (typeof dataRow[key] === "string") { @@ -83,6 +76,17 @@ export function removeNewlineCharacter(dataRow) { export async function dbQuery(prompts) { base.debug('dbQuery') + const [{ highlight }, { AsyncParser }, { default: excel }, { default: Table }] = await Promise.all([ + import('cli-highlight'), + import('@json2csv/node'), + import('node-xlsx'), + import('easy-table') + ]) + + const opts = { delimiter: ";", transforms: [removeNewlineCharacter] } + const transformOpts = {} + const asyncOpts = {} + const parser = new AsyncParser(opts, transformOpts, asyncOpts) try { base.setPrompts(prompts) const db = await base.createDBConnection() @@ -130,13 +134,15 @@ export async function dbQuery(prompts) { return JSON.stringify(results, null, 2) } break - case 'csv': + case 'csv': if (prompts.filename) { - await toFile(prompts.folder, prompts.filename, 'csv', parseToCsv(results, {delimiter : ";", transforms : [removeNewlineCharacter]})) + const csv = await parser.parse(results).promise() + await toFile(prompts.folder, prompts.filename, 'csv', csv) } else { - console.log(highlight(parseToCsv(results))) + const csv = await parser.parse(results).promise() + console.log(highlight(csv)) base.end() - return parseToCsv(results) + return csv } break default: @@ -156,6 +162,10 @@ export async function dbQuery(prompts) { async function toFile(folder, file, ext, content) { base.debug('toFile') + const [{ default: fs }, { default: path }] = await Promise.all([ + import('fs'), + import('path') + ]) let dir = folder !fs.existsSync(dir) && fs.mkdirSync(dir) file = `${file}.${ext}` diff --git a/bin/readMe.js b/bin/readMe.js index 467c6a8..b2d07cb 100644 --- a/bin/readMe.js +++ b/bin/readMe.js @@ -1,12 +1,5 @@ // @ts-check import * as base from '../utils/base.js' -import * as fs from 'fs' -import * as path from 'path' -import { marked } from 'marked' -import TerminalRenderer from 'marked-terminal' -import { fileURLToPath } from 'url' -import { URL } from 'url' -const __dirname = fileURLToPath(new URL('.', import.meta.url)) export const command = 'readMe' export const aliases = ['readme'] @@ -14,6 +7,17 @@ export const describe = base.bundle.getText("readMe") export const builder = base.getBuilder({}, false) export const handler = async function () { + + const [{ marked }, { default: fs }, { default: path }, { fileURLToPath }, { URL }] = await Promise.all([ + import('marked'), + import('fs'), + import('path'), + import('url'), + import('url') + ]) + const TerminalRenderer = base.require('marked-terminal') + const __dirname = fileURLToPath(new URL('.', import.meta.url)) + marked.setOptions({ // Define custom renderer renderer: new TerminalRenderer({ diff --git a/bin/rick.js b/bin/rick.js index c7d67c8..9f15e9c 100644 --- a/bin/rick.js +++ b/bin/rick.js @@ -1,13 +1,11 @@ // @ts-check import * as base from '../utils/base.js' -import prompt from 'prompt' export const command = 'rick' -import open from 'open' export const describe = base.bundle.getText("rick") export const builder = base.getBuilder({}, false, false) -export const handler = async function () { - +export const handler = async () => { + const { default:prompt } = await import('prompt') prompt.start() var property = { name: 'yesno', @@ -16,7 +14,7 @@ export const handler = async function () { warning: 'Must respond yes or no', default: 'no' } - prompt.get(property, function (err, result) { + prompt.get(property, (err, result) => { if (result.yesno === `yes`) { prompt.start() @@ -27,8 +25,9 @@ export const handler = async function () { warning: 'Must respond yes or no', default: 'no' } - prompt.get(property2, function (err, result) { + prompt.get(property2, async (err, result) => { if (result.yesno === `yes`) { + const { default:open } = await import('open') try { const helpVideoURL = `https://www.youtube.com/watch?v=j5a0jTc9S10&list=PL3KnTfyhrIlcudeMemKd6rZFGDWy` open(helpVideoURL) diff --git a/bin/version.js b/bin/version.js index 40166af..efac3a1 100644 --- a/bin/version.js +++ b/bin/version.js @@ -1,14 +1,7 @@ // @ts-check import * as base from '../utils/base.js' - -import {highlight} from 'cli-highlight' -import latestVersion from 'latest-version' -import { createRequire } from 'module' -// @ts-ignore -const require = createRequire(import.meta.url) -import { URL } from 'url' -import { fileURLToPath } from 'url' -const __dirname = fileURLToPath(new URL('.', import.meta.url)) +import * as cf from '../utils/cf.js' +import * as btp from '../utils/btp.js' export const command = 'version' export const aliases = 'ver' @@ -20,10 +13,17 @@ export let handler = function (argv) { export async function verOutput() { base.debug('verOutput') + base.startSpinnerInt() + const [{ highlight }, { default: latestVersion }] = + await Promise.all([ + import('cli-highlight'), + import('latest-version') + ]) const colors = base.colors const log = console.log - const info = getVersion() + const info = await getVersion() + base.stopSpinnerInt() Object.keys(info).forEach(key => log(highlight(`${key}: ${info[key]}`))) console.log(`Node.js: ${colors.green(process.version)}`) console.log(`Change Log: ${colors.blue('https://github.com/SAP-samples/hana-developer-cli-tool-example/blob/main/CHANGELOG.md')}`) @@ -40,14 +40,17 @@ export async function verOutput() { export function version4(pkgPath = '..', info = {}, parentPath) { base.debug('version4') try { - const pkj = require(pkgPath + '/package.json') + const pkj = base.require(pkgPath + '/package.json') const name = pkj.name || pkgPath 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 === 'sap-hdb-promisfied' || dep === 'hdb' || dep.startsWith('@cap-js') - ) version4(dep, info, pkgPath) + ) version4(dep, info, pkgPath) + for (let dep in pkj.peerDependencies) if ( + dep.startsWith('@sap/') || dep === 'sap-hdb-promisfied' || dep === 'hdb' || dep.startsWith('@cap-js') + ) 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) @@ -55,12 +58,33 @@ export function version4(pkgPath = '..', info = {}, parentPath) { return info } -export function getVersion() { +export async function getVersion() { base.debug('version') + const [{ URL }, { fileURLToPath }] = await Promise.all([ + import('url'), + import('url') + ]) + + const __dirname = fileURLToPath(new URL('.', import.meta.url)) const info = version4() + try { + let cfVer = await cf.getVersion() + cfVer = cfVer.replace(/(\r\n|\n|\r)/gm, "") + info['cf-cli'] = cfVer + } catch (error) { + info['cf-cli'] = `Cloud Foundry CLI not installed` + } + try { + let btpVer = await btp.getVersion() + btpVer = btpVer.replace(/(\r\n|\n|\r)/gm, "") + info['btp-cli'] = btpVer + } catch (error) { + info['btp-cli'] = `btp CLI not installed` + } Object.defineProperty(info, 'home', { value: __dirname }) info['hana-cli home'] = info.home Object.defineProperty(info, 'initialHome', { value: base.hanaBin ? base.hanaBin : '' }) if (process.env.DEBUG) info['hana-cli initial home'] = info.initialHome + return info } diff --git a/index.js b/index.js index c05b33d..5a664dd 100644 --- a/index.js +++ b/index.js @@ -3,10 +3,12 @@ // @ts-check import * as btp from "./utils/btp.js" +//import * as cf from "./utils/cf.js" export async function init(){ - let data = await btp.getBTPConfig() + // let data = await btp.getBTPConfig() + let data = await btp.getVersion() console.log(data) /* let data = await cf.getHANAInstanceByName('HANA_CLOUD_2') diff --git a/npm-shrinkwrap.json b/package-lock.json similarity index 94% rename from npm-shrinkwrap.json rename to package-lock.json index 8afdcbf..bae2511 100644 --- a/npm-shrinkwrap.json +++ b/package-lock.json @@ -1,17 +1,18 @@ { "name": "hana-cli", - "version": "3.202212.2", + "version": "3.202302.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "hana-cli", - "version": "3.202212.2", + "version": "3.202302.1", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@cap-js/graphql": "0.1.0", - "@sap/cds": "^6.4.0", + "@cap-js/graphql": "0.2.0", + "@json2csv/node": "6.1.2", + "@sap/cds": "^6.5.0", "@sap/cds-common-content": "^1.0.1", "@sap/textbundle": "^4.1", "@sap/xsenv": "^3.4.0", @@ -24,15 +25,14 @@ "dotenv": "^16.0.3", "easy-table": "1.2.0", "express": "^4.18.2", - "glob": "^8.0.3", + "glob": "^8.1.0", "hdb": "0.19.5", - "inquirer": "8.2.4", + "inquirer": "8.2.5", "inquirer-tree-prompt": "^1.1.2", "js-convert-case": "^4.2.0", "json-to-pretty-yaml": "^1.2.2", - "json2csv": "^5.0.7", "latest-version": "^7.0", - "marked": "^4.2.4", + "marked": "^4.2.12", "marked-terminal": "^5.1.1", "node-xlsx": "^0.21", "node-zip": "^1.1.1", @@ -41,14 +41,14 @@ "ora": "^6.1.2", "prompt": "^1.3.0", "properties-to-json": "^0.2.1", - "sap-hdb-promisfied": "2.202208.2", + "sap-hdb-promisfied": "2.202301.1", "showdown": "^2.1.0", "swagger-ui-express": "^4.6.0", "terminaltools": "^2.1", "upath": "^2.0.1", "update-notifier": "^6.0.2", "uuid": "^9.0.0", - "ws": "^8.11.0", + "ws": "^8.12.0", "yargonaut": "1.1.4", "yargs": "^17.6.2" }, @@ -57,8 +57,8 @@ }, "devDependencies": { "@types/showdown": "^2.0.0", - "@types/yargs": "^17.0.15", - "eslint": "^8.30.0", + "@types/yargs": "^17.0.22", + "eslint": "^8.33.0", "stringify-changelog": "^0.2.1" }, "engines": { @@ -69,9 +69,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", - "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -80,9 +80,9 @@ } }, "node_modules/@cap-js/graphql": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@cap-js/graphql/-/graphql-0.1.0.tgz", - "integrity": "sha512-78Nne8JHomOpfdmflmqxeyUwLEYGmODFimjnli0NRQUS37f1+ntwvrM8VygWmwFS23DFwwlhT8GiPqcXpBPzAg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@cap-js/graphql/-/graphql-0.2.0.tgz", + "integrity": "sha512-DkOdYL3CF2wSoWCAhmbi3l8ISl6UsDP+RDDd/Gf/EZ+u12M5qzVTdUG0PnElIqE4GbyrzQh54lt44MEggfyMkg==", "dependencies": { "express-graphql": ">=0.12.0", "graphql": "^15" @@ -103,9 +103,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", - "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -602,6 +602,29 @@ "regenerator-runtime": "^0.13.3" } }, + "node_modules/@json2csv/formatters": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@json2csv/formatters/-/formatters-6.1.2.tgz", + "integrity": "sha512-l8i5EdQvHZHrtSgRFEXMkRnIn8CBopT/ecZSIyPKuee9+pm/Sxcb/r/N2jQWARnOQc7uyqQWAtpPpxU7HhZ2tg==" + }, + "node_modules/@json2csv/node": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@json2csv/node/-/node-6.1.2.tgz", + "integrity": "sha512-obe0WcHlAjbRSJ5LdCTy0s598vhNMlRLw66lEqtNSqcqtGBM7FwLXw/4roTZjrTaaMlup7XTBrK2zcoW1DkG5Q==", + "dependencies": { + "@json2csv/plainjs": "^6.1.2" + } + }, + "node_modules/@json2csv/plainjs": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@json2csv/plainjs/-/plainjs-6.1.2.tgz", + "integrity": "sha512-XNcBd6W4G5mlP6ZL13idEx21diQAM5AJgIe78RxRfZctWRppaZrtpiGTzhc/sNv7UM1FpfO/aa5wel4+aQW7MQ==", + "dependencies": { + "@json2csv/formatters": "^6.1.2", + "@streamparser/json": "^0.0.10", + "lodash.get": "^4.4.2" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -661,9 +684,9 @@ } }, "node_modules/@sap/cds": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.4.0.tgz", - "integrity": "sha512-Z19veNd0lf+W3Q97Xzxi7cJ50NsYx42wiiRs+44Xp7DArQuose4XkrN3iZ7DdX+FxcJSYojPnuDdN22QnZPZbA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@sap/cds/-/cds-6.5.0.tgz", + "integrity": "sha512-xzlFEgm2On2/iztS5rj6200cN+6GrszlKGEOnFXDicJYk9SjDOjWgkWX+1j75c9t7qOSi7vidRSKAKjFyALRXg==", "dependencies": { "@sap/cds-compiler": "^3.2.0", "@sap/cds-foss": "^4" @@ -681,9 +704,9 @@ "integrity": "sha512-zexqhIKYcmm1sg5/iqYsJw0918E9N6vUukqG5OjAM9tHipLDAOpkCsNGd1ohaQhsVBykGiZfaKn8bhrmXxYDnA==" }, "node_modules/@sap/cds-compiler": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-3.5.0.tgz", - "integrity": "sha512-gRtOQGuGInuB4oaO4HqE70BDkgMsuJHRq3N305/LVAA1p93j91Bpsqk1DUtd4tcyYgx4HF4xbzoZUr5u1+vIuw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@sap/cds-compiler/-/cds-compiler-3.6.0.tgz", + "integrity": "sha512-swsB8bkV629Mt8f5zFBauJcg0e3zBgAbBDg00vMAkeINx69y0ABoFmzA96Zvh8lta63Vd3MT9J31kscP6UssHw==", "dependencies": { "antlr4": "4.9.3" }, @@ -697,21 +720,19 @@ } }, "node_modules/@sap/cds-dk": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-6.4.0.tgz", - "integrity": "sha512-vlOLvCdpF7k9dVEwxAk9Vu+iflDL5Dl5umpI6kpyJx/QVNp9SmVqN1hdZDP3BpvftmOphaAWxSZLMDz6JiduJw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@sap/cds-dk/-/cds-dk-6.5.0.tgz", + "integrity": "sha512-+BD9KycW28ghjAcqP9/hgCJM32K64619H2jS6fYN7JM7TxvktBOWbP3N58qNb1o/dQtA1s3DzOhZyjLFBUFH1A==", "hasShrinkwrap": true, "peer": true, "dependencies": { "@sap/cds": "^6.4.0", "@sap/cds-foss": "^4", + "@sap/cds-mtxs": "^1.4.3", "@sap/eslint-plugin-cds": "^2.6.0", "axios": ">=0.21", - "connect-livereload": "^0.6.1", "eslint": "^8", "express": "^4.17.1", - "glob": "^8.0.3", - "htmlparser2": "^8.0.0", "livereload-js": "^3.3.1", "md5": "^2.3.0", "mustache": "^4.0.1", @@ -725,19 +746,18 @@ "cds-ts": "bin/cds-ts.js" }, "optionalDependencies": { - "@sap/cds-mtxs": "^1.4.0", "sqlite3": "^5.0.4" } }, "node_modules/@sap/cds-dk/node_modules/@eslint/eslintrc": { - "version": "1.3.3", + "version": "1.4.1", "license": "MIT", "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -905,7 +925,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds": { - "version": "6.4.0", + "version": "6.5.0", "license": "SEE LICENSE IN LICENSE", "peer": true, "dependencies": { @@ -920,7 +940,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-compiler": { - "version": "3.5.0", + "version": "3.6.0", "license": "SEE LICENSE IN LICENSE", "peer": true, "dependencies": { @@ -951,9 +971,8 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/cds-mtxs": { - "version": "1.4.0", + "version": "1.5.0", "license": "SEE LICENSE IN LICENSE", - "optional": true, "peer": true, "dependencies": { "@sap/hdi-deploy": "^4", @@ -964,11 +983,11 @@ "cds-mtx-migrate": "bin/cds-mtx-migrate.js" }, "peerDependencies": { - "@sap/cds": ">=6.2.0" + "@sap/cds": ">=6" } }, "node_modules/@sap/cds-dk/node_modules/@sap/eslint-plugin-cds": { - "version": "2.6.0", + "version": "2.6.1", "license": "See LICENSE file", "peer": true, "dependencies": { @@ -983,10 +1002,9 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/hana-client": { - "version": "2.14.22", + "version": "2.15.19", "hasInstallScript": true, "license": "SEE LICENSE IN developer-license-3_1.txt", - "optional": true, "peer": true, "dependencies": { "debug": "3.1.0" @@ -998,7 +1016,6 @@ "node_modules/@sap/cds-dk/node_modules/@sap/hdi": { "version": "4.4.0", "license": "See LICENSE file", - "optional": true, "peer": true, "dependencies": { "async": "3.2.3" @@ -1020,14 +1037,13 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/hdi-deploy": { - "version": "4.5.1", + "version": "4.5.3", "license": "See LICENSE file", - "optional": true, "peer": true, "dependencies": { - "@sap/hana-client": "2.14.22", + "@sap/hana-client": "2.15.19", "@sap/hdi": "4.4.0", - "@sap/xsenv": "3.3.2", + "@sap/xsenv": "3.4.0", "async": "3.2.3", "dotenv": "10.0.0", "handlebars": "4.7.7", @@ -1039,9 +1055,8 @@ } }, "node_modules/@sap/cds-dk/node_modules/@sap/xsenv": { - "version": "3.3.2", + "version": "3.4.0", "license": "SEE LICENSE IN LICENSE file", - "optional": true, "peer": true, "dependencies": { "debug": "4.3.3", @@ -1049,13 +1064,12 @@ "verror": "1.10.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || ^16.0.0" + "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || ^16.0.0 || ^18.0.0" } }, "node_modules/@sap/cds-dk/node_modules/@sap/xsenv/node_modules/debug": { "version": "4.3.3", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "ms": "2.1.2" @@ -1072,7 +1086,6 @@ "node_modules/@sap/cds-dk/node_modules/@sap/xsenv/node_modules/ms": { "version": "2.1.2", "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/@tootallnate/once": { @@ -1103,7 +1116,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/acorn": { - "version": "8.8.1", + "version": "8.8.2", "license": "MIT", "peer": true, "bin": { @@ -1292,7 +1305,6 @@ "node_modules/@sap/cds-dk/node_modules/assert-plus": { "version": "1.0.0", "license": "MIT", - "optional": true, "peer": true, "engines": { "node": ">=0.8" @@ -1301,7 +1313,6 @@ "node_modules/@sap/cds-dk/node_modules/async": { "version": "3.2.3", "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/asynckit": { @@ -1310,7 +1321,7 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/axios": { - "version": "1.2.1", + "version": "1.2.5", "license": "MIT", "peer": true, "dependencies": { @@ -1379,7 +1390,6 @@ "node_modules/@sap/cds-dk/node_modules/braces": { "version": "3.0.2", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "fill-range": "^7.0.1" @@ -1425,26 +1435,24 @@ "node": ">= 10" } }, - "node_modules/@sap/cds-dk/node_modules/cacache/node_modules/glob": { - "version": "7.2.3", + "node_modules/@sap/cds-dk/node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", "license": "ISC", "optional": true, "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, + "node_modules/@sap/cds-dk/node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "optional": true, + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/call-bind": { "version": "1.0.2", "license": "MIT", @@ -1509,7 +1517,6 @@ "node_modules/@sap/cds-dk/node_modules/clone": { "version": "2.1.2", "license": "MIT", - "optional": true, "peer": true, "engines": { "node": ">=0.8" @@ -1556,14 +1563,6 @@ "license": "MIT", "peer": true }, - "node_modules/@sap/cds-dk/node_modules/connect-livereload": { - "version": "0.6.1", - "license": "MIT", - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/@sap/cds-dk/node_modules/console-control-strings": { "version": "1.1.0", "license": "ISC", @@ -1605,7 +1604,6 @@ "node_modules/@sap/cds-dk/node_modules/core-util-is": { "version": "1.0.2", "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/cross-spawn": { @@ -1632,7 +1630,6 @@ "node_modules/@sap/cds-dk/node_modules/debug": { "version": "3.1.0", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "ms": "2.0.0" @@ -1694,61 +1691,9 @@ "node": ">=6.0.0" } }, - "node_modules/@sap/cds-dk/node_modules/dom-serializer": { - "version": "2.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/domelementtype": { - "version": "2.3.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause", - "peer": true - }, - "node_modules/@sap/cds-dk/node_modules/domhandler": { - "version": "5.0.3", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/@sap/cds-dk/node_modules/domutils": { - "version": "3.0.1", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/@sap/cds-dk/node_modules/dotenv": { "version": "10.0.0", "license": "BSD-2-Clause", - "optional": true, "peer": true, "engines": { "node": ">=10" @@ -1794,17 +1739,6 @@ "node": ">=0.10.0" } }, - "node_modules/@sap/cds-dk/node_modules/entities": { - "version": "4.4.0", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@sap/cds-dk/node_modules/env-paths": { "version": "2.2.1", "license": "MIT", @@ -1837,12 +1771,12 @@ } }, "node_modules/@sap/cds-dk/node_modules/eslint": { - "version": "8.29.0", + "version": "8.32.0", "license": "MIT", "peer": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -1861,7 +1795,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -2074,7 +2008,6 @@ "node >=0.6.0" ], "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/fast-deep-equal": { @@ -2093,7 +2026,7 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/fastq": { - "version": "1.14.0", + "version": "1.15.0", "license": "ISC", "peer": true, "dependencies": { @@ -2114,7 +2047,6 @@ "node_modules/@sap/cds-dk/node_modules/fill-range": { "version": "7.0.1", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -2279,7 +2211,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/get-intrinsic": { - "version": "1.1.3", + "version": "1.2.0", "license": "MIT", "peer": true, "dependencies": { @@ -2292,18 +2224,19 @@ } }, "node_modules/@sap/cds-dk/node_modules/glob": { - "version": "8.0.3", + "version": "7.2.3", "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2320,27 +2253,8 @@ "node": ">=10.13.0" } }, - "node_modules/@sap/cds-dk/node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@sap/cds-dk/node_modules/glob/node_modules/minimatch": { - "version": "5.1.1", - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@sap/cds-dk/node_modules/globals": { - "version": "13.19.0", + "version": "13.20.0", "license": "MIT", "peer": true, "dependencies": { @@ -2367,7 +2281,6 @@ "node_modules/@sap/cds-dk/node_modules/handlebars": { "version": "4.7.7", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "minimist": "^1.2.5", @@ -2424,7 +2337,6 @@ "node_modules/@sap/cds-dk/node_modules/hdb": { "version": "0.19.3", "license": "Apache-2.0", - "optional": true, "peer": true, "dependencies": { "iconv-lite": "^0.4.18" @@ -2433,26 +2345,8 @@ "node": ">= 0.12" } }, - "node_modules/@sap/cds-dk/node_modules/htmlparser2": { - "version": "8.0.1", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, "node_modules/@sap/cds-dk/node_modules/http-cache-semantics": { - "version": "4.1.0", + "version": "4.1.1", "license": "BSD-2-Clause", "optional": true, "peer": true @@ -2566,7 +2460,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/ignore": { - "version": "5.2.1", + "version": "5.2.4", "license": "MIT", "peer": true, "engines": { @@ -2681,7 +2575,6 @@ "node_modules/@sap/cds-dk/node_modules/is-number": { "version": "7.0.0", "license": "MIT", - "optional": true, "peer": true, "engines": { "node": ">=0.12.0" @@ -2701,7 +2594,7 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/js-sdsl": { - "version": "4.2.0", + "version": "4.3.0", "license": "MIT", "peer": true, "funding": { @@ -2766,17 +2659,6 @@ "license": "MIT", "peer": true }, - "node_modules/@sap/cds-dk/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@sap/cds-dk/node_modules/make-dir": { "version": "3.1.0", "license": "MIT", @@ -2828,6 +2710,24 @@ "node": ">= 10" } }, + "node_modules/@sap/cds-dk/node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sap/cds-dk/node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "optional": true, + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/md5": { "version": "2.3.0", "license": "BSD-3-Clause", @@ -2862,7 +2762,6 @@ "node_modules/@sap/cds-dk/node_modules/micromatch": { "version": "4.0.4", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "braces": "^3.0.1", @@ -2916,7 +2815,6 @@ "node_modules/@sap/cds-dk/node_modules/minimist": { "version": "1.2.7", "license": "MIT", - "optional": true, "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2999,6 +2897,12 @@ "node": ">=8" } }, + "node_modules/@sap/cds-dk/node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "optional": true, + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/minizlib": { "version": "2.1.2", "license": "MIT", @@ -3012,6 +2916,12 @@ "node": ">= 8" } }, + "node_modules/@sap/cds-dk/node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "optional": true, + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/mkdirp": { "version": "1.0.4", "license": "MIT", @@ -3053,7 +2963,6 @@ "node_modules/@sap/cds-dk/node_modules/neo-async": { "version": "2.6.2", "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/node-addon-api": { @@ -3065,7 +2974,6 @@ "node_modules/@sap/cds-dk/node_modules/node-cache": { "version": "5.1.2", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "clone": "2.x" @@ -3075,7 +2983,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/node-fetch": { - "version": "2.6.7", + "version": "2.6.8", "license": "MIT", "optional": true, "peer": true, @@ -3150,26 +3058,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@sap/cds-dk/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sap/cds-dk/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", "license": "ISC", @@ -3230,7 +3118,7 @@ } }, "node_modules/@sap/cds-dk/node_modules/object-inspect": { - "version": "1.12.2", + "version": "1.12.3", "license": "MIT", "peer": true, "funding": { @@ -3366,7 +3254,6 @@ "node_modules/@sap/cds-dk/node_modules/picomatch": { "version": "2.3.1", "license": "MIT", - "optional": true, "peer": true, "engines": { "node": ">=8.6" @@ -3428,7 +3315,7 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/punycode": { - "version": "2.1.1", + "version": "2.3.0", "license": "MIT", "peer": true, "engines": { @@ -3555,25 +3442,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sap/cds-dk/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sap/cds-dk/node_modules/run-parallel": { "version": "1.2.0", "funding": [ @@ -3639,6 +3507,22 @@ "node": ">=10" } }, + "node_modules/@sap/cds-dk/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@sap/cds-dk/node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/send": { "version": "0.18.0", "license": "MIT", @@ -3807,7 +3691,6 @@ "node_modules/@sap/cds-dk/node_modules/source-map": { "version": "0.6.1", "license": "BSD-3-Clause", - "optional": true, "peer": true, "engines": { "node": ">=0.10.0" @@ -3941,6 +3824,12 @@ "node": ">=8" } }, + "node_modules/@sap/cds-dk/node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC", + "optional": true, + "peer": true + }, "node_modules/@sap/cds-dk/node_modules/text-table": { "version": "0.2.0", "license": "MIT", @@ -3949,7 +3838,6 @@ "node_modules/@sap/cds-dk/node_modules/to-regex-range": { "version": "5.0.1", "license": "MIT", - "optional": true, "peer": true, "dependencies": { "is-number": "^7.0.0" @@ -4088,7 +3976,6 @@ "node >=0.6.0" ], "license": "MIT", - "optional": true, "peer": true, "dependencies": { "assert-plus": "^1.0.0", @@ -4146,7 +4033,6 @@ "node_modules/@sap/cds-dk/node_modules/wordwrap": { "version": "1.0.0", "license": "MIT", - "optional": true, "peer": true }, "node_modules/@sap/cds-dk/node_modules/wrappy": { @@ -4155,7 +4041,7 @@ "peer": true }, "node_modules/@sap/cds-dk/node_modules/ws": { - "version": "8.11.0", + "version": "8.12.0", "license": "MIT", "peer": true, "engines": { @@ -4163,7 +4049,7 @@ }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -4193,13 +4079,8 @@ "node": ">=8.0" } }, - "node_modules/@sap/cds-dk/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC", - "peer": true - }, "node_modules/@sap/cds-dk/node_modules/yaml": { - "version": "2.1.3", + "version": "2.2.1", "license": "ISC", "peer": true, "engines": { @@ -4309,6 +4190,11 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@streamparser/json": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.10.tgz", + "integrity": "sha512-juqNFdqqmY/nvsODq1Vba7PWIaqr01VcqICIrxbws97QKSQhQUMml8FqdHLmevwVpqH39H5mVXKFWiWCi1ke0w==" + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -4337,9 +4223,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.17", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.17.tgz", - "integrity": "sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==", + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -4364,9 +4250,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4423,24 +4309,42 @@ "string-width": "^4.1.0" } }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "type-fest": "^1.0.2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { "node": ">=10" }, @@ -4594,9 +4498,9 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz", + "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.0", @@ -4614,52 +4518,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/boxen/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -4729,9 +4587,9 @@ } }, "node_modules/cacheable-request": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.3.tgz", - "integrity": "sha512-6BehRBOs7iurNjAYN9iPazTwFDaMQavJO8W1MEm3s2pH8q/tkPTtLDRUZaweWK87WFGf2Y5wLAlaCJlR5kOz3w==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.6.tgz", + "integrity": "sha512-fhVLoXIFHvTizxQkAVohKPToSzdwzjrhL5SsjHT0umeSCxWeqJOS0oPqHg+yO1FPFST3VE5rxaqUvseyH9JHtg==", "dependencies": { "@types/http-cache-semantics": "^4.0.1", "get-stream": "^6.0.1", @@ -4871,9 +4729,15 @@ } }, "node_modules/ci-info": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.0.tgz", - "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz", + "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } @@ -4962,6 +4826,24 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-highlight/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cli-highlight/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5028,6 +4910,24 @@ "@colors/colors": "1.5.0" } }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -5063,6 +4963,24 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5120,11 +5038,11 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "engines": { - "node": ">= 6" + "node": "^12.20.0 || >=14" } }, "node_modules/concat-map": { @@ -5191,9 +5109,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } @@ -5429,9 +5347,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -5478,12 +5396,12 @@ } }, "node_modules/eslint": { - "version": "8.30.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", - "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.4.0", + "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5867,9 +5785,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", - "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -6057,9 +5975,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -6090,9 +6008,9 @@ } }, "node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6128,9 +6046,9 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6170,9 +6088,9 @@ } }, "node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6307,9 +6225,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-errors": { "version": "2.0.0", @@ -6437,9 +6355,9 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -6576,20 +6494,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6663,6 +6567,11 @@ "node": ">=8" } }, + "node_modules/inquirer/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/inquirer/node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -6731,15 +6640,17 @@ "node": ">=8" } }, - "node_modules/inquirer/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, "node_modules/inquirer/node_modules/wrap-ansi": { @@ -6974,9 +6885,9 @@ "integrity": "sha512-i4mHCxiBNj6ajjMnZnC70qAOMA8gb+YgYipy2VR7a+Q5EBgEQ2/SgSAUBdNEyObk++B4AIUiFWeDEX2ggOd8cQ==" }, "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", "dev": true, "funding": { "type": "opencollective", @@ -7033,31 +6944,6 @@ "node": ">= 0.2.0" } }, - "node_modules/json2csv": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", - "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", - "dependencies": { - "commander": "^6.1.0", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - }, - "bin": { - "json2csv": "bin/json2csv.js" - }, - "engines": { - "node": ">= 10", - "npm": ">= 6.13.0" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, "node_modules/jszip": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", @@ -7190,9 +7076,9 @@ "integrity": "sha512-BbShUnr5OartXJe1GeccAWtfro11hhgNJg6G9/UtWKjVGvV5U4C09cg5nk8JUevhXODaXY+hQ3xxMUKSs62ONQ==" }, "node_modules/marked": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.4.tgz", - "integrity": "sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", "bin": { "marked": "bin/marked.js" }, @@ -7219,6 +7105,31 @@ "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7432,9 +7343,9 @@ "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==" }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7839,9 +7750,9 @@ } }, "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==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -8203,14 +8114,14 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sap-hdb-promisfied": { - "version": "2.202208.2", - "resolved": "https://registry.npmjs.org/sap-hdb-promisfied/-/sap-hdb-promisfied-2.202208.2.tgz", - "integrity": "sha512-5YaWfqlRdf4HAZdiPDPFN58V1OmoAboyYpMoo71J4Cqa24toxauUxT9B9FB98DF7lI/HNkEOYkh6tqg/kY7j3w==", + "version": "2.202301.1", + "resolved": "https://registry.npmjs.org/sap-hdb-promisfied/-/sap-hdb-promisfied-2.202301.1.tgz", + "integrity": "sha512-Z8yvvK3io7bjC9CvsAFoJIp+50plvhb0OilEvKatoWZhRxoUlSyGvwiGEutX8wPAnKpxcaUAhQPKfl/pcFMCvw==", "hasShrinkwrap": true, "dependencies": { - "@sap/xsenv": "^3.3.2", + "@sap/xsenv": "^3.4.0", "debug": "4.3.4", - "dotenv": "^16.0.1", + "dotenv": "^16.0.3", "hdb": "0.19.5" }, "engines": { @@ -8218,9 +8129,9 @@ } }, "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-3.3.2.tgz", - "integrity": "sha512-PRxzoNEB0wMCuQOOC7q7QIkCYyLgxgHY1vIHFcPorajLLskqhqJNPfycWAfhUgDn6WryGluUVxnQVeTQncY6dg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@sap/xsenv/-/xsenv-3.4.0.tgz", + "integrity": "sha512-bZ/NFhS+wZI0JlMO1OOBEThfyOTmf2x5oQ+wToJGkZ2T5+gLUE3emZiC4iHA+BuSmUtO+vYoe29Q1qiE4qaiJQ==", "hasShrinkwrap": true, "dependencies": { "debug": "4.3.3", @@ -8228,7 +8139,7 @@ "verror": "1.10.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || ^16.0.0" + "node": "^10.0.0 || ^12.0.0 || ^14.0.0 || ^16.0.0 || ^18.0.0" } }, "node_modules/sap-hdb-promisfied/node_modules/@sap/xsenv/node_modules/assert-plus": { @@ -8282,15 +8193,15 @@ "extraneous": true }, "node_modules/sap-hdb-promisfied/node_modules/@types/node": { - "version": "18.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz", - "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==", + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", "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==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@types/sap__xsenv/-/sap__xsenv-3.3.0.tgz", + "integrity": "sha512-oqFdRzqP82X0IIUAoYmbymeyTEvP24ff1F9UzaF/BkVRVD6cgifCsMy72mcPKDTzLcPl1i0NwAH7D0/2CmkSiQ==", "extraneous": true }, "node_modules/sap-hdb-promisfied/node_modules/debug": { @@ -8310,9 +8221,9 @@ } }, "node_modules/sap-hdb-promisfied/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "engines": { "node": ">=12" } @@ -8486,14 +8397,6 @@ "url": "https://www.paypal.me/tiviesantos" } }, - "node_modules/showdown/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -8548,16 +8451,44 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/stringify-changelog": { @@ -8650,31 +8581,6 @@ "jimp": "^0.16.1" } }, - "node_modules/terminaltools/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminaltools/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -8711,12 +8617,9 @@ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" }, "node_modules/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", - "engines": { - "node": "*" - } + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.5.2.tgz", + "integrity": "sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==" }, "node_modules/tmp": { "version": "0.0.33", @@ -8738,9 +8641,9 @@ } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/type-check": { "version": "0.4.0", @@ -8951,52 +8854,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/winston": { "version": "2.4.7", "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz", @@ -9047,9 +8904,9 @@ } }, "node_modules/wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -9073,27 +8930,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", @@ -9125,15 +8961,15 @@ } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9252,9 +9088,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz", - "integrity": "sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", "engines": { "node": ">= 14" } @@ -9352,6 +9188,24 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index f014320..bddd963 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hana-cli", - "version": "3.202301.1", + "version": "3.202302.1", "description": "HANA Developer Command Line Interface", "main": "index.js", "bin": { @@ -8,7 +8,7 @@ }, "type": "module", "engines": { - "node": ">=14.18.0" + "node": ">14.18.0" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", @@ -25,8 +25,8 @@ ], "types": "types/index.d.ts", "dependencies": { - "@cap-js/graphql": "0.1.0", - "@sap/cds": "^6.4.0", + "@cap-js/graphql": "0.2.0", + "@sap/cds": "^6.5.0", "@sap/cds-common-content": "^1.0.1", "@sap/textbundle": "^4.1", "@sap/xsenv": "^3.4.0", @@ -39,15 +39,15 @@ "dotenv": "^16.0.3", "easy-table": "1.2.0", "express": "^4.18.2", - "glob": "^8.0.3", + "glob": "^8.1.0", "hdb": "0.19.5", - "inquirer": "8.2.4", + "inquirer": "8.2.5", "inquirer-tree-prompt": "^1.1.2", "js-convert-case": "^4.2.0", "json-to-pretty-yaml": "^1.2.2", - "json2csv": "^5.0.7", + "@json2csv/node": "6.1.2", "latest-version": "^7.0", - "marked": "^4.2.4", + "marked": "^4.2.12", "marked-terminal": "^5.1.1", "node-xlsx": "^0.21", "node-zip": "^1.1.1", @@ -56,14 +56,14 @@ "ora": "^6.1.2", "prompt": "^1.3.0", "properties-to-json": "^0.2.1", - "sap-hdb-promisfied": "2.202208.2", + "sap-hdb-promisfied": "2.202301.1", "showdown": "^2.1.0", "swagger-ui-express": "^4.6.0", "terminaltools": "^2.1", "upath": "^2.0.1", "update-notifier": "^6.0.2", "uuid": "^9.0.0", - "ws": "^8.11.0", + "ws": "^8.12.0", "yargonaut": "1.1.4", "yargs": "^17.6.2" }, @@ -78,8 +78,8 @@ "homepage": "https://github.com/SAP-samples/hana-developer-cli-tool-example#readme", "devDependencies": { "@types/showdown": "^2.0.0", - "@types/yargs": "^17.0.15", - "eslint": "^8.30.0", + "@types/yargs": "^17.0.22", + "eslint": "^8.33.0", "stringify-changelog": "^0.2.1" }, "cds": { diff --git a/types/bin/btpInfo.d.ts b/types/bin/btpInfo.d.ts new file mode 100644 index 0000000..ceca9db --- /dev/null +++ b/types/bin/btpInfo.d.ts @@ -0,0 +1,6 @@ +export function handler(argv: any): Promise; +export function getBTPInfo(prompts: any): Promise; +export const command: "btpInfo"; +export const aliases: string[]; +export const describe: string; +export const builder: import("yargs").CommandBuilder<{}, {}>; diff --git a/types/bin/btpSubs.d.ts b/types/bin/btpSubs.d.ts new file mode 100644 index 0000000..ecce047 --- /dev/null +++ b/types/bin/btpSubs.d.ts @@ -0,0 +1,6 @@ +export function handler(argv: any): Promise; +export function getSubs(prompts: any): Promise; +export const command: "sub"; +export const aliases: string[]; +export const describe: string; +export const builder: import("yargs").CommandBuilder<{}, {}>; diff --git a/types/bin/cds.d.ts b/types/bin/cds.d.ts index 2e580ea..2fbf735 100644 --- a/types/bin/cds.d.ts +++ b/types/bin/cds.d.ts @@ -1,4 +1,4 @@ -export function handler(argv: any): void; +export function handler(argv: any): Promise; export function cdsBuild(prompts: any): Promise; export function getIndex(odataURL: any, entity: any): string; export function _manifest(odataURL: any, entity: any, table: any): { diff --git a/types/bin/changeLog.d.ts b/types/bin/changeLog.d.ts index 384d6e4..332087c 100644 --- a/types/bin/changeLog.d.ts +++ b/types/bin/changeLog.d.ts @@ -1,5 +1,5 @@ export function handler(): void; -export function getChangeLog(): void; +export function getChangeLog(): Promise; export const command: "changes"; export const aliases: string[]; export const describe: string; diff --git a/types/bin/index.d.ts b/types/bin/index.d.ts index 330548e..e1c0bc2 100644 --- a/types/bin/index.d.ts +++ b/types/bin/index.d.ts @@ -1 +1 @@ -export function init(): Promise<(typeof import("./containers.js") | typeof import("./dataTypes.js") | typeof import("./featureUsage.js") | typeof import("./functions.js") | typeof import("./hanaCloudHDIInstances.js") | typeof import("./indexes.js") | typeof import("./inspectTable.js") | typeof import("./querySimple.js") | typeof import("./hanaCloudSBSSInstances.js") | typeof import("./schemas.js") | typeof import("./hanaCloudSchemaInstances.js") | typeof import("./hanaCloudSecureStoreInstances.js") | typeof import("./tables.js") | typeof import("./hanaCloudUPSInstances.js") | typeof import("./activateHDI.js") | typeof import("./adminHDI.js") | typeof import("./adminHDIGroup.js") | typeof import("./callProcedure.js") | typeof import("./certificates.js") | typeof import("./cds.js") | typeof import("./openChangeLog.js") | typeof import("./changeLog.js") | typeof import("./changeLogUI.js") | typeof import("./connect.js") | typeof import("./containersUI.js") | typeof import("./copy2DefaultEnv.js") | typeof import("./copy2Env.js") | typeof import("./copy2Secrets.js") | typeof import("./createContainer.js") | typeof import("./createGroup.js") | typeof import("./createContainerUsers.js") | typeof import("./createJWT.js") | typeof import("./createModule.js") | typeof import("./createXSAAdmin.js") | typeof import("./dataTypesUI.js") | typeof import("./dataVolumes.js") | typeof import("./disks.js") | typeof import("./dropContainer.js") | typeof import("./dropGroup.js") | typeof import("./features.js") | typeof import("./featuresUI.js") | typeof import("./featureUsageUI.js") | typeof import("./functionsUI.js") | typeof import("./hanaCloudHDIInstancesUI.js") | typeof import("./hanaCloudInstances.js") | typeof import("./hanaCloudStart.js") | typeof import("./hanaCloudStop.js") | typeof import("./hdbsql.js") | typeof import("./hostInformation.js") | typeof import("./indexesUI.js") | typeof import("./iniContents.js") | typeof import("./iniFiles.js") | typeof import("./inspectFunction.js") | typeof import("./inspectIndex.js") | typeof import("./inspectJWT.js") | typeof import("./inspectLibMember.js") | typeof import("./inspectLibrary.js") | typeof import("./inspectProcedure.js") | typeof import("./inspectTableUI.js") | typeof import("./inspectTrigger.js") | typeof import("./inspectUser.js") | typeof import("./inspectView.js") | typeof import("./libraries.js") | typeof import("./massConvert.js") | typeof import("./massConvertUI.js") | typeof import("./massRename.js") | typeof import("./massUsers.js") | typeof import("./matrix.js") | typeof import("./objects.js") | typeof import("./openBAS.js") | typeof import("./openDBExplorer.js") | typeof import("./ports.js") | typeof import("./privilegeError.js") | typeof import("./procedures.js") | typeof import("./querySimpleUI.js") | typeof import("./readMe.js") | typeof import("./readMeUI.js") | typeof import("./openReadMe.js") | typeof import("./reclaim.js") | typeof import("./rick.js") | typeof import("./roles.js") | typeof import("./hanaCloudSBSSInstancesUI.js") | typeof import("./schemasUI.js") | typeof import("./hanaCloudSchemaInstancesUI.js") | typeof import("./hanaCloudSecureStoreInstancesUI.js") | typeof import("./connectViaServiceKey.js") | typeof import("./sequences.js") | typeof import("./status.js") | typeof import("./synonyms.js") | typeof import("./systemInfo.js") | typeof import("./systemInfoUI.js") | typeof import("./tablesUI.js") | typeof import("./traces.js") | typeof import("./traceContents.js") | typeof import("./triggers.js") | typeof import("./UI.js") | typeof import("./hanaCloudUPSInstancesUI.js") | typeof import("./users.js") | typeof import("./version.js") | typeof import("./views.js") | typeof import("./btp.js"))[]>; +export function init(): Promise<(typeof import("./containers.js") | typeof import("./dataTypes.js") | typeof import("./featureUsage.js") | typeof import("./functions.js") | typeof import("./hanaCloudHDIInstances.js") | typeof import("./indexes.js") | typeof import("./inspectTable.js") | typeof import("./querySimple.js") | typeof import("./hanaCloudSBSSInstances.js") | typeof import("./schemas.js") | typeof import("./hanaCloudSchemaInstances.js") | typeof import("./hanaCloudSecureStoreInstances.js") | typeof import("./tables.js") | typeof import("./hanaCloudUPSInstances.js") | typeof import("./version.js") | typeof import("./activateHDI.js") | typeof import("./adminHDI.js") | typeof import("./adminHDIGroup.js") | typeof import("./callProcedure.js") | typeof import("./certificates.js") | typeof import("./cds.js") | typeof import("./openChangeLog.js") | typeof import("./changeLog.js") | typeof import("./changeLogUI.js") | typeof import("./connect.js") | typeof import("./containersUI.js") | typeof import("./copy2DefaultEnv.js") | typeof import("./copy2Env.js") | typeof import("./copy2Secrets.js") | typeof import("./createContainer.js") | typeof import("./createGroup.js") | typeof import("./createContainerUsers.js") | typeof import("./createJWT.js") | typeof import("./createModule.js") | typeof import("./createXSAAdmin.js") | typeof import("./dataTypesUI.js") | typeof import("./dataVolumes.js") | typeof import("./disks.js") | typeof import("./dropContainer.js") | typeof import("./dropGroup.js") | typeof import("./features.js") | typeof import("./featuresUI.js") | typeof import("./featureUsageUI.js") | typeof import("./functionsUI.js") | typeof import("./hanaCloudHDIInstancesUI.js") | typeof import("./hanaCloudInstances.js") | typeof import("./hanaCloudStart.js") | typeof import("./hanaCloudStop.js") | typeof import("./hdbsql.js") | typeof import("./hostInformation.js") | typeof import("./indexesUI.js") | typeof import("./iniContents.js") | typeof import("./iniFiles.js") | typeof import("./inspectFunction.js") | typeof import("./inspectIndex.js") | typeof import("./inspectJWT.js") | typeof import("./inspectLibMember.js") | typeof import("./inspectLibrary.js") | typeof import("./inspectProcedure.js") | typeof import("./inspectTableUI.js") | typeof import("./inspectTrigger.js") | typeof import("./inspectUser.js") | typeof import("./inspectView.js") | typeof import("./libraries.js") | typeof import("./massConvert.js") | typeof import("./massConvertUI.js") | typeof import("./massRename.js") | typeof import("./massUsers.js") | typeof import("./matrix.js") | typeof import("./objects.js") | typeof import("./openBAS.js") | typeof import("./openDBExplorer.js") | typeof import("./ports.js") | typeof import("./privilegeError.js") | typeof import("./procedures.js") | typeof import("./querySimpleUI.js") | typeof import("./readMe.js") | typeof import("./readMeUI.js") | typeof import("./openReadMe.js") | typeof import("./reclaim.js") | typeof import("./rick.js") | typeof import("./roles.js") | typeof import("./hanaCloudSBSSInstancesUI.js") | typeof import("./schemasUI.js") | typeof import("./hanaCloudSchemaInstancesUI.js") | typeof import("./hanaCloudSecureStoreInstancesUI.js") | typeof import("./connectViaServiceKey.js") | typeof import("./sequences.js") | typeof import("./status.js") | typeof import("./synonyms.js") | typeof import("./systemInfo.js") | typeof import("./systemInfoUI.js") | typeof import("./tablesUI.js") | typeof import("./traces.js") | typeof import("./traceContents.js") | typeof import("./triggers.js") | typeof import("./UI.js") | typeof import("./hanaCloudUPSInstancesUI.js") | typeof import("./users.js") | typeof import("./views.js") | typeof import("./btp.js") | typeof import("./btpSubs.js") | typeof import("./btpInfo.js") | typeof import("./issue.js"))[]>; diff --git a/types/bin/issue.d.ts b/types/bin/issue.d.ts new file mode 100644 index 0000000..3f28b3b --- /dev/null +++ b/types/bin/issue.d.ts @@ -0,0 +1,6 @@ +export function handler(argv: any): void; +export function createIssue(): Promise; +export const command: "issue"; +export const aliases: string[]; +export const describe: string; +export const builder: import("yargs").CommandBuilder<{}, {}>; diff --git a/types/bin/version.d.ts b/types/bin/version.d.ts index 3c1cfa1..29b9e5c 100644 --- a/types/bin/version.d.ts +++ b/types/bin/version.d.ts @@ -1,6 +1,6 @@ export function verOutput(): Promise; export function version4(pkgPath: string, info: {}, parentPath: any): {}; -export function getVersion(): {}; +export function getVersion(): Promise<{}>; export const command: "version"; export const aliases: "ver"; export const describe: string; diff --git a/types/utils/base.d.ts b/types/utils/base.d.ts index e359621..c4a9a8b 100644 --- a/types/utils/base.d.ts +++ b/types/utils/base.d.ts @@ -1,3 +1,11 @@ +/** + * Start the Terminal Spinner + */ +export function startSpinnerInt(): void; +/** + * Stop the Terminal Spinner + */ +export function stopSpinnerInt(): void; /** * * @param {object} newPrompts - processed input prompts @@ -68,7 +76,7 @@ export function promptHandler(argv: import("yargs").CommandBuilder, processingFu */ export function error(error: any): void; /** - * Normal processing end and cleanup for single comand + * Normal processing end and cleanup for single command */ export function end(): Promise; /** @@ -129,6 +137,7 @@ export function getLastResults(): any; * @returns userName */ export function getUserName(): string; +export const require: NodeRequire; /** * - instance of sap-hdb-promisified module */ diff --git a/types/utils/btp.d.ts b/types/utils/btp.d.ts index 08be30c..e01e619 100644 --- a/types/utils/btp.d.ts +++ b/types/utils/btp.d.ts @@ -1,3 +1,8 @@ +/** + * Get btp CLI version + * @returns {Promise} + */ +export function getVersion(): Promise; /** * Read central configuration file for BTP CLI * @returns {Promise} diff --git a/types/utils/cf.d.ts b/types/utils/cf.d.ts index 1bfd2be..aea5f12 100644 --- a/types/utils/cf.d.ts +++ b/types/utils/cf.d.ts @@ -1,3 +1,8 @@ +/** + * Get cf cli version + * @returns {Promise} + */ +export function getVersion(): Promise; /** * Read central configuration file for CF CLI * @returns {Promise} diff --git a/utils/base.js b/utils/base.js index f739c99..e5787e1 100644 --- a/utils/base.js +++ b/utils/base.js @@ -9,7 +9,8 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url)) import upath from 'upath' import { createRequire } from 'module' // @ts-ignore -const require = createRequire(import.meta.url) +export const require = createRequire(import.meta.url) + import * as path from 'path' import dbClassDef from "sap-hdb-promisfied" @@ -74,9 +75,17 @@ let spinner = null /** * Start the Terminal Spinner */ -function startSpinnerInt() { +export function startSpinnerInt() { spinner = ora(oraOptions).start() } +/** + * Stop the Terminal Spinner + */ +export function stopSpinnerInt(){ + if (spinner) { + spinner.stop() + } +} /** type {object} - processed input prompts*/ let prompts = [] @@ -529,7 +538,7 @@ export function error(error) { } /** - * Normal processing end and cleanup for single comand + * Normal processing end and cleanup for single command */ export async function end() { debug(`Natural End`) @@ -668,6 +677,7 @@ export async function webServerSetup(urlPath) { let serverAddr = `http://localhost:${server.address().port}${urlPath}` debug(serverAddr) console.info(`HTTP Server: ${serverAddr}`) + startSpinnerInt() open(serverAddr) }) diff --git a/utils/btp.js b/utils/btp.js index 2b27efa..1f36ca8 100644 --- a/utils/btp.js +++ b/utils/btp.js @@ -17,6 +17,31 @@ import * as fs from 'fs' import { promisify } from 'util' import * as child_process from 'child_process' +/** + * Get btp CLI version + * @returns {Promise} + */ +export async function getVersion() { + base.debug('getVersion') + try { + const exec = promisify(child_process.exec) + let script = `btp --version` + + const { stdout } = await exec(script) + if (stdout) { + try { + return stdout + } catch (e) { + return + } + } + return + + } catch (error) { + base.debug(error) + throw (error) + } +} /** * Read central configuration file for BTP CLI diff --git a/utils/cf.js b/utils/cf.js index 3ad22c5..053f7ea 100644 --- a/utils/cf.js +++ b/utils/cf.js @@ -11,6 +11,37 @@ import { homedir } from 'os' import { promisify } from 'util' import * as child_process from 'child_process' +/** + * Get cf cli version + * @returns {Promise} + */ +export async function getVersion() { + base.debug('getVersion') + + try { + const exec = promisify(child_process.exec) + let script = `cf -v` + + const { stdout, stderr } = await exec(script) + + if (stderr) { + throw new Error(`${bundle.getText("error")} ${stderr.toString()}`) + } else { + if(stdout){ + try { + return stdout + } catch(e) { + return + } + } + return + } + } catch (error) { + base.debug(error) + throw (error) + } +} + /** * Read central configuration file for CF CLI * @returns {Promise}