@iobroker/js-controller-cli 7.0.2 → 7.0.4-alpha.0-20241116-db3148f4f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/build/cjs/index.js +2 -1
  2. package/build/cjs/index.js.map +2 -2
  3. package/build/cjs/lib/_Types.d.ts +0 -1
  4. package/build/cjs/lib/cli/cliCert.js +17 -0
  5. package/build/cjs/lib/cli/cliCert.js.map +1 -1
  6. package/build/cjs/lib/cli/cliCommand.d.ts +0 -1
  7. package/build/cjs/lib/cli/cliCommand.js +6 -0
  8. package/build/cjs/lib/cli/cliCommand.js.map +1 -1
  9. package/build/cjs/lib/cli/cliCompact.js +30 -1
  10. package/build/cjs/lib/cli/cliCompact.js.map +1 -1
  11. package/build/cjs/lib/cli/cliDebug.js +16 -0
  12. package/build/cjs/lib/cli/cliDebug.js.map +1 -1
  13. package/build/cjs/lib/cli/cliHost.js +35 -0
  14. package/build/cjs/lib/cli/cliHost.js.map +1 -1
  15. package/build/cjs/lib/cli/cliLogs.js +33 -3
  16. package/build/cjs/lib/cli/cliLogs.js.map +3 -3
  17. package/build/cjs/lib/cli/cliMessage.js +10 -0
  18. package/build/cjs/lib/cli/cliMessage.js.map +1 -1
  19. package/build/cjs/lib/cli/cliObjects.d.ts +0 -1
  20. package/build/cjs/lib/cli/cliObjects.js +85 -0
  21. package/build/cjs/lib/cli/cliObjects.js.map +1 -1
  22. package/build/cjs/lib/cli/cliPlugin.js +23 -2
  23. package/build/cjs/lib/cli/cliPlugin.js.map +3 -3
  24. package/build/cjs/lib/cli/cliProcess.js +65 -2
  25. package/build/cjs/lib/cli/cliProcess.js.map +1 -1
  26. package/build/cjs/lib/cli/cliStates.d.ts +0 -1
  27. package/build/cjs/lib/cli/cliStates.js +38 -0
  28. package/build/cjs/lib/cli/cliStates.js.map +1 -1
  29. package/build/cjs/lib/cli/cliTools.js.map +1 -1
  30. package/build/cjs/lib/cli/messages.d.ts +27 -23
  31. package/build/cjs/lib/cli/messages.js.map +1 -1
  32. package/build/cjs/lib/setup/dbConnection.js +9 -0
  33. package/build/cjs/lib/setup/dbConnection.js.map +1 -1
  34. package/build/cjs/lib/setup/formatters.js.map +1 -1
  35. package/build/cjs/lib/setup/multihostClient.d.ts +0 -1
  36. package/build/cjs/lib/setup/multihostClient.js +36 -0
  37. package/build/cjs/lib/setup/multihostClient.js.map +1 -1
  38. package/build/cjs/lib/setup/setupBackup.js +112 -2
  39. package/build/cjs/lib/setup/setupBackup.js.map +1 -1
  40. package/build/cjs/lib/setup/setupInstall.d.ts +6 -6
  41. package/build/cjs/lib/setup/setupInstall.js +198 -57
  42. package/build/cjs/lib/setup/setupInstall.js.map +4 -4
  43. package/build/cjs/lib/setup/setupLicense.js +9 -0
  44. package/build/cjs/lib/setup/setupLicense.js.map +1 -1
  45. package/build/cjs/lib/setup/setupList.d.ts +0 -1
  46. package/build/cjs/lib/setup/setupList.js +4 -0
  47. package/build/cjs/lib/setup/setupList.js.map +1 -1
  48. package/build/cjs/lib/setup/setupMultihost.d.ts +2 -5
  49. package/build/cjs/lib/setup/setupMultihost.js +58 -33
  50. package/build/cjs/lib/setup/setupMultihost.js.map +3 -3
  51. package/build/cjs/lib/setup/setupPacketManager.js +41 -0
  52. package/build/cjs/lib/setup/setupPacketManager.js.map +1 -1
  53. package/build/cjs/lib/setup/setupRepo.js +60 -0
  54. package/build/cjs/lib/setup/setupRepo.js.map +1 -1
  55. package/build/cjs/lib/setup/setupSetup.d.ts +0 -1
  56. package/build/cjs/lib/setup/setupSetup.js +79 -5
  57. package/build/cjs/lib/setup/setupSetup.js.map +3 -3
  58. package/build/cjs/lib/setup/setupUpgrade.js +34 -0
  59. package/build/cjs/lib/setup/setupUpgrade.js.map +1 -1
  60. package/build/cjs/lib/setup/setupUpload.d.ts +0 -3
  61. package/build/cjs/lib/setup/setupUpload.js +43 -0
  62. package/build/cjs/lib/setup/setupUpload.js.map +1 -1
  63. package/build/cjs/lib/setup/setupUsers.d.ts +0 -1
  64. package/build/cjs/lib/setup/setupUsers.js +109 -0
  65. package/build/cjs/lib/setup/setupUsers.js.map +1 -1
  66. package/build/cjs/lib/setup/setupVendor.js +18 -1
  67. package/build/cjs/lib/setup/setupVendor.js.map +1 -1
  68. package/build/cjs/lib/setup/setupVisDebug.js +16 -0
  69. package/build/cjs/lib/setup/setupVisDebug.js.map +1 -1
  70. package/build/cjs/lib/setup/utils.d.ts +1 -1
  71. package/build/cjs/lib/setup/utils.js +8 -4
  72. package/build/cjs/lib/setup/utils.js.map +2 -2
  73. package/build/cjs/lib/setup.js +17 -6
  74. package/build/cjs/lib/setup.js.map +3 -3
  75. package/build/esm/index.d.ts.map +1 -1
  76. package/build/esm/index.js +1 -0
  77. package/build/esm/index.js.map +1 -1
  78. package/build/esm/lib/_Types.d.ts +0 -1
  79. package/build/esm/lib/_Types.d.ts.map +1 -1
  80. package/build/esm/lib/cli/cliCommand.d.ts +0 -1
  81. package/build/esm/lib/cli/cliCommand.d.ts.map +1 -1
  82. package/build/esm/lib/cli/cliObjects.d.ts +0 -1
  83. package/build/esm/lib/cli/cliObjects.d.ts.map +1 -1
  84. package/build/esm/lib/cli/cliStates.d.ts +0 -1
  85. package/build/esm/lib/cli/cliStates.d.ts.map +1 -1
  86. package/build/esm/lib/cli/messages.d.ts +27 -23
  87. package/build/esm/lib/cli/messages.d.ts.map +1 -1
  88. package/build/esm/lib/setup/multihostClient.d.ts +0 -1
  89. package/build/esm/lib/setup/multihostClient.d.ts.map +1 -1
  90. package/build/esm/lib/setup/setupInstall.d.ts +6 -6
  91. package/build/esm/lib/setup/setupInstall.d.ts.map +1 -1
  92. package/build/esm/lib/setup/setupInstall.js +37 -70
  93. package/build/esm/lib/setup/setupInstall.js.map +1 -1
  94. package/build/esm/lib/setup/setupList.d.ts +0 -1
  95. package/build/esm/lib/setup/setupList.d.ts.map +1 -1
  96. package/build/esm/lib/setup/setupMultihost.d.ts +2 -5
  97. package/build/esm/lib/setup/setupMultihost.d.ts.map +1 -1
  98. package/build/esm/lib/setup/setupMultihost.js +12 -37
  99. package/build/esm/lib/setup/setupMultihost.js.map +1 -1
  100. package/build/esm/lib/setup/setupSetup.d.ts +0 -1
  101. package/build/esm/lib/setup/setupSetup.d.ts.map +1 -1
  102. package/build/esm/lib/setup/setupUpload.d.ts +0 -3
  103. package/build/esm/lib/setup/setupUpload.d.ts.map +1 -1
  104. package/build/esm/lib/setup/setupUsers.d.ts +0 -1
  105. package/build/esm/lib/setup/setupUsers.d.ts.map +1 -1
  106. package/build/esm/lib/setup/utils.d.ts +1 -1
  107. package/build/esm/lib/setup/utils.d.ts.map +1 -1
  108. package/build/esm/lib/setup/utils.js +3 -3
  109. package/build/esm/lib/setup/utils.js.map +1 -1
  110. package/build/tsconfig.build.tsbuildinfo +1 -1
  111. package/package.json +4 -4
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/setup/setupUpgrade.ts"],
4
4
  "sourcesContent": ["import Debug from 'debug';\nimport fs from 'fs-extra';\nimport { tools, EXIT_CODES } from '@iobroker/js-controller-common';\nimport semver from 'semver';\nimport { Upload } from '@/lib/setup/setupUpload.js';\nimport { Install } from '@/lib/setup/setupInstall.js';\nimport rl from 'readline-sync';\nimport tty from 'node:tty';\nimport path from 'node:path';\nimport { getRepository, isVersionIgnored } from '@/lib/setup/utils.js';\nimport type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis';\nimport type { Client as StatesInRedisClient } from '@iobroker/db-states-redis';\nimport type { ProcessExitCallback } from '@/lib/_Types.js';\nimport { IoBrokerError } from '@/lib/setup/customError.js';\n\nconst debug = Debug('iobroker:cli');\n\ntype IoPackDependencies = string[] | Record<string, any>[] | Record<string, any>;\n\ninterface CLIUpgradeOptions {\n processExit: ProcessExitCallback;\n objects: ObjectsInRedisClient;\n states: StatesInRedisClient;\n params: Record<string, any>;\n}\n\nexport class Upgrade {\n private readonly hostname = tools.getHostName();\n private readonly upload: Upload;\n private readonly install: Install;\n private readonly objects: ObjectsInRedisClient;\n private readonly processExit: ProcessExitCallback;\n\n constructor(options: CLIUpgradeOptions) {\n options = options || {};\n\n if (!options.processExit) {\n throw new Error('Invalid arguments: processExit is missing');\n }\n\n this.processExit = options.processExit;\n this.objects = options.objects;\n\n this.upload = new Upload(options);\n this.install = new Install(options);\n }\n\n /**\n * Sorts the adapters by their dependencies and then upgrades multiple adapters from the given repository url\n *\n * @param repo the repository content\n * @param list list of adapters to upgrade\n * @param forceDowngrade flag to force downgrade\n * @param autoConfirm automatically confirm the tty questions (bypass)\n */\n async upgradeAdapterHelper(\n repo: Record<string, any>,\n list: string[],\n forceDowngrade: boolean,\n autoConfirm: boolean,\n ): Promise<void> {\n const relevantAdapters = [];\n // check which adapters are upgradeable and sort them according to their dependencies\n for (const adapter of list) {\n if (repo[adapter].controller) {\n // skip controller\n continue;\n }\n const adapterDir = tools.getAdapterDir(adapter);\n if (adapterDir && fs.existsSync(path.join(adapterDir, 'io-package.json'))) {\n const ioInstalled = fs.readJsonSync(path.join(adapterDir, 'io-package.json'));\n if (!tools.upToDate(repo[adapter].version, ioInstalled.common.version)) {\n // not up to date, we need to put it into account for our dependency check\n relevantAdapters.push(adapter);\n }\n }\n }\n\n if (relevantAdapters.length) {\n const sortedAdapters = [];\n\n while (relevantAdapters.length) {\n let oneAdapterAdded = false;\n // create an ordered list for upgrades\n for (let i = relevantAdapters.length - 1; i >= 0; i--) {\n const relAdapter = relevantAdapters[i];\n // if a new version has no dependencies, we can upgrade\n if (!repo[relAdapter].dependencies && !repo[relAdapter].globalDependencies) {\n // no deps, simply add it\n sortedAdapters.push(relAdapter);\n relevantAdapters.splice(relevantAdapters.indexOf(relAdapter), 1);\n oneAdapterAdded = true;\n } else {\n const allDeps: Record<string, string> = {\n ...tools.parseDependencies(repo[relAdapter].dependencies),\n ...tools.parseDependencies(repo[relAdapter].globalDependencies),\n };\n\n // we have to check if the deps are there\n let conflict = false;\n for (const [depName, version] of Object.entries(allDeps)) {\n debug(`adapter \"${relAdapter}\" has dependency \"${depName}\": \"${version}\"`);\n if (version !== '*') {\n // dependency is important because it affects the version range\n if (relevantAdapters.includes(depName)) {\n // the dependency is also in the upgrade list and not previously added, we should add the dependency first\n debug(`conflict for dependency \"${depName}\" at adapter \"${relAdapter}\"`);\n conflict = true;\n break;\n }\n }\n }\n // we reached here and no conflict, so every dep is satisfied\n if (!conflict) {\n sortedAdapters.push(relAdapter);\n relevantAdapters.splice(relevantAdapters.indexOf(relAdapter), 1);\n oneAdapterAdded = true;\n }\n }\n }\n\n if (!oneAdapterAdded) {\n // no adapter during this loop -> circular dependency\n console.warn(`Circular dependency detected between adapters \"${relevantAdapters.join(', ')}\"`);\n sortedAdapters.concat(relevantAdapters);\n break; // however, break and try to update\n }\n }\n\n debug(`upgrade order is \"${sortedAdapters.join(', ')}\"`);\n\n for (const sortedAdapter of sortedAdapters) {\n if (repo[sortedAdapter]?.controller) {\n continue;\n }\n await this.upgradeAdapter(repo, sortedAdapter, forceDowngrade, autoConfirm, true);\n }\n } else {\n console.log('All adapters are up to date');\n }\n }\n\n /**\n * Checks that local and global deps are fulfilled else rejects promise\n *\n * @param deps local dependencies - required on this host\n * @param globalDeps global dependencies - required on one of the hosts\n */\n private async _checkDependencies(deps: IoPackDependencies, globalDeps: IoPackDependencies): Promise<void> {\n if (!deps && !globalDeps) {\n return Promise.resolve();\n }\n\n deps = tools.parseDependencies(deps);\n globalDeps = tools.parseDependencies(globalDeps);\n // combine both dependencies\n const allDeps = { ...deps, ...globalDeps };\n\n // Get all installed adapters\n const objs = await this.objects.getObjectViewAsync(\n 'system',\n 'instance',\n {\n startkey: 'system.adapter.',\n endkey: 'system.adapter.\\u9999',\n },\n undefined,\n );\n\n if (objs?.rows?.length) {\n for (const dName in allDeps) {\n if (dName === 'js-controller') {\n const version = allDeps[dName];\n // Check only if version not *, else we don't have to read io-pack unnecessarily\n if (version !== '*') {\n const iopkg_ = fs.readJSONSync(`${tools.getControllerDir()}/package.json`);\n try {\n if (!semver.satisfies(iopkg_.version, version, { includePrerelease: true })) {\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${iopkg_.version}\", required \"${version}`,\n ),\n );\n }\n } catch (e) {\n console.log(`Can not check js-controller dependency requirement: ${e.message}`);\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${iopkg_.version}\", required \"${version}`,\n ),\n );\n }\n }\n } else {\n let gInstances: ioBroker.GetObjectViewItem<ioBroker.InstanceObject>[] = [];\n let locInstances: ioBroker.GetObjectViewItem<ioBroker.InstanceObject>[] = [];\n // if global dep get all instances of adapter\n if (globalDeps[dName] !== undefined) {\n gInstances = objs.rows.filter(obj => obj.value.common && obj.value.common.name === dName);\n }\n if (deps[dName] !== undefined) {\n // local dependencies: get all instances on the same host\n locInstances = objs.rows.filter(\n obj =>\n obj.value.common &&\n obj.value.common.name === dName &&\n obj.value.common.host === this.hostname,\n );\n if (locInstances.length === 0) {\n return Promise.reject(new Error(`Required dependency \"${dName}\" not found on this host.`));\n }\n }\n\n let isFound = false;\n // we check that all instances match - respect different local and global dep versions\n for (const instance of locInstances) {\n const instanceVersion = instance.value.common.version;\n try {\n if (\n !semver.satisfies(instanceVersion, deps[dName], {\n includePrerelease: true,\n })\n ) {\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${instanceVersion}\", required \"${deps[dName]}`,\n ),\n );\n }\n } catch (e) {\n console.log(`Can not check dependency requirement: ${e.message}`);\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${instanceVersion}\", required \"${deps[dName]}`,\n ),\n );\n }\n isFound = true;\n }\n\n for (const instance of gInstances) {\n const instanceVersion = instance.value.common.version;\n try {\n if (\n !semver.satisfies(instanceVersion, globalDeps[dName], {\n includePrerelease: true,\n })\n ) {\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${instanceVersion}\", required \"${globalDeps[dName]}`,\n ),\n );\n }\n } catch (e) {\n console.log(`Can not check dependency requirement: ${e.message}`);\n return Promise.reject(\n new Error(\n `Invalid version of \"${dName}\". Installed \"${instanceVersion}\", required \"${globalDeps[dName]}`,\n ),\n );\n }\n isFound = true;\n }\n\n if (isFound === false) {\n return Promise.reject(new Error(`Required dependency \"${dName}\" not found.`));\n }\n }\n }\n }\n }\n\n /**\n * Try to async upgrade adapter from a given source with some checks\n *\n * @param repoUrlOrObject url of the selected repository or parsed repo, if undefined, use current active repository\n * @param adapter name of the adapter (can also include version like web@3.0.0)\n * @param forceDowngrade flag to force downgrade\n * @param autoConfirm automatically confirm the tty questions (bypass)\n * @param upgradeAll if true, this is an upgrade all call, we don't do major upgrades if no tty\n */\n async upgradeAdapter(\n repoUrlOrObject: string | Record<string, any> | undefined,\n adapter: string,\n forceDowngrade: boolean,\n autoConfirm: boolean,\n upgradeAll: boolean,\n ): Promise<void> {\n let sources: Record<string, any>;\n if (!repoUrlOrObject || !tools.isObject(repoUrlOrObject)) {\n try {\n sources = await getRepository({ repoName: repoUrlOrObject, objects: this.objects });\n } catch (e) {\n console.error(e.message);\n return this.processExit(e instanceof IoBrokerError ? e.code : e);\n }\n } else {\n sources = repoUrlOrObject;\n }\n\n let version: string;\n if (adapter.includes('@')) {\n const parts = adapter.split('@');\n adapter = parts[0];\n version = parts[1];\n } else {\n version = '';\n }\n if (version) {\n forceDowngrade = true;\n }\n\n /** Repository entry of this adapter */\n const repoAdapter: Record<string, any> = sources[adapter];\n\n // TODO: not really adapter object but close enough\n const finishUpgrade = async (name: string, ioPack?: ioBroker.AdapterObject): Promise<void> => {\n if (!ioPack) {\n const adapterDir = tools.getAdapterDir(name);\n\n if (!adapterDir) {\n console.error(`Cannot find io-package.json in ${adapterDir}`);\n return this.processExit(EXIT_CODES.MISSING_ADAPTER_FILES);\n }\n\n try {\n // close enough to an AdapterObject\n ioPack = fs.readJSONSync(path.join(adapterDir, 'io-package.json')) as ioBroker.AdapterObject;\n } catch {\n console.error(`Cannot find io-package.json in ${adapterDir}`);\n return this.processExit(EXIT_CODES.MISSING_ADAPTER_FILES);\n }\n }\n\n if (ioPack.common.osDependencies) {\n // install linux/osx libraries\n await this.install.installOSPackages(ioPack.common.osDependencies);\n }\n\n // Upload www and admin files of adapter\n await this.upload.uploadAdapter(name, false, true);\n // extend all adapter instance default configs with current config\n // (introduce potentially new attributes while keeping current settings)\n await this.upload.upgradeAdapterObjects(name, ioPack);\n await this.upload.uploadAdapter(name, true, true);\n };\n\n const adapterDir = tools.getAdapterDir(adapter);\n\n // Read the actual description of installed adapter with a version\n if (!adapterDir || (!version && !fs.existsSync(path.join(adapterDir, 'io-package.json')))) {\n return console.log(\n `Adapter \"${adapter}\"${\n adapter.length < 15 ? new Array(15 - adapter.length).join(' ') : ''\n } is not installed.`,\n );\n }\n // Get the url of io-package.json or direct the version\n if (!repoAdapter) {\n console.log(`Adapter \"${adapter}\" is not in the repository and cannot be updated.`);\n return this.processExit(EXIT_CODES.ADAPTER_NOT_FOUND);\n }\n if (repoAdapter.controller) {\n return console.log(\n `Cannot update ${adapter} using this command. Please use \"iobroker upgrade self\" instead!`,\n );\n }\n\n // TODO: not 100 % true but should be correct enough\n let ioInstalled: Pick<ioBroker.AdapterObject, 'common'>;\n if (adapterDir && fs.existsSync(path.join(adapterDir, 'io-package.json'))) {\n ioInstalled = fs.readJsonSync(`${adapterDir}/io-package.json`);\n } else {\n // @ts-expect-error https://github.com/ioBroker/adapter-core/issues/455\n ioInstalled = { common: { version: '0.0.0' } };\n }\n\n const installedVersion = ioInstalled.common.version;\n\n /**\n * We show changelog (news) and ask user if he really wants to upgrade but only if fd is associated with a tty, returns true if upgrade desired\n *\n * @param installedVersion - installed version of adapter\n * @param targetVersion - target version of adapter\n * @param adapterName - name of the adapter\n */\n const showUpgradeDialog = (installedVersion: string, targetVersion: string, adapterName: string): boolean => {\n // major upgrade or downgrade\n const isMajor = semver.major(installedVersion) !== semver.major(targetVersion);\n\n if (autoConfirm || (!tty.isatty(process.stdout.fd) && (!isMajor || !upgradeAll))) {\n // force flag or script on non-major or single adapter upgrade -> always upgrade\n return true;\n }\n\n if (!tty.isatty(process.stdout.fd) && isMajor && upgradeAll) {\n // no tty and not forced and multiple adapters, do not upgrade\n console.log(`Skip major upgrade of ${adapterName} from ${installedVersion} to ${targetVersion}`);\n return false;\n }\n\n const isUpgrade = semver.gt(targetVersion, installedVersion);\n const isDowngrade = semver.lt(targetVersion, installedVersion);\n\n // if information in repo files -> show news\n if (repoAdapter?.news) {\n const news = repoAdapter.news;\n\n let first = true;\n // check if upgrade or downgrade\n if (isUpgrade) {\n for (const version in news) {\n try {\n if (semver.lte(version, targetVersion) && semver.gt(version, installedVersion)) {\n if (first === true) {\n const noMissingNews = news[targetVersion] && news[installedVersion];\n console.log(\n `\\nThis upgrade of \"${adapter}\" will ${\n noMissingNews ? '' : 'at least '\n }introduce the following changes:`,\n );\n console.log(\n '==========================================================================',\n );\n first = false;\n } else if (first === false) {\n console.log();\n }\n console.log(`-> ${version}:`);\n console.log(news[version].en);\n }\n } catch {\n // ignore\n }\n }\n } else if (isDowngrade) {\n for (const version in news) {\n try {\n if (semver.gt(version, targetVersion) && semver.lte(version, installedVersion)) {\n if (first === true) {\n const noMissingNews = news[targetVersion] && news[installedVersion];\n console.log(\n `\\nThis downgrade of \"${adapter}\" will ${\n noMissingNews ? '' : 'at least '\n }remove the following changes:`,\n );\n console.log(\n '==========================================================================',\n );\n first = false;\n } else if (first === false) {\n console.log();\n }\n console.log(`-> ${version}`);\n console.log(news[version].en);\n }\n } catch {\n // ignore\n }\n }\n }\n if (first === false) {\n console.log('==========================================================================\\n');\n }\n }\n\n let answer;\n\n // ask user if he really wants to upgrade/downgrade/reinstall - repeat until (y)es or (n)o given\n do {\n if (isUpgrade || isDowngrade) {\n if (isMajor) {\n console.log(\n `BE CAREFUL: THIS IS A MAJOR ${\n isUpgrade ? 'UPGRADE' : 'DOWNGRADE'\n }, WHICH WILL MOST LIKELY INTRODUCE BREAKING CHANGES!`,\n );\n }\n answer = rl.question(\n `Would you like to ${\n isUpgrade ? 'upgrade' : 'downgrade'\n } ${adapter} from @${installedVersion} to @${\n version || repoAdapter.version\n } now? [(y)es, (n)o]: `,\n {\n defaultInput: 'n',\n },\n );\n } else {\n answer = rl.question(\n `Would you like to reinstall version ${\n version || repoAdapter.version\n } of ${adapter} now? [(y)es, (n)o]: `,\n {\n defaultInput: 'n',\n },\n );\n }\n\n answer = answer.toLowerCase();\n\n if (answer === 'n' || answer === 'no') {\n return false;\n }\n } while (answer !== 'y' && answer !== 'yes');\n return true;\n };\n\n // If a version is included in the repository\n if (repoAdapter.version) {\n if (!forceDowngrade) {\n try {\n await this._checkDependencies(repoAdapter.dependencies, repoAdapter.globalDependencies);\n } catch (e) {\n return console.error(`Cannot check dependencies: ${e.message}`);\n }\n }\n\n if (\n !forceDowngrade &&\n (repoAdapter.version === installedVersion || tools.upToDate(repoAdapter.version, installedVersion))\n ) {\n return console.log(\n `Adapter \"${adapter}\"${\n adapter.length < 15 ? new Array(15 - adapter.length).join(' ') : ''\n } is up to date.`,\n );\n }\n const targetVersion = version || repoAdapter.version;\n\n const isIgnored = await isVersionIgnored({\n adapterName: adapter,\n version: targetVersion,\n objects: this.objects,\n });\n\n if (isIgnored) {\n console.log(\n `No upgrade of \"${adapter}\" desired, because version \"${targetVersion}\" is configured to be ignored by the user. Run \"${tools.appNameLowerCase} version ${adapter} --recognize\" to allow this upgrade!`,\n );\n return;\n }\n\n try {\n if (!showUpgradeDialog(installedVersion, targetVersion, adapter)) {\n console.log(`No upgrade of \"${adapter}\" desired.`);\n return;\n }\n } catch (e) {\n console.log(`Can not check version information to display upgrade infos: ${e.message}`);\n }\n console.log(`Update ${adapter} from @${installedVersion} to @${targetVersion}`);\n const npmPacketName = `${tools.appNameLowerCase}.${adapter}`;\n\n try {\n if (!semver.diff(installedVersion, targetVersion)) {\n console.log(`Uninstall npm packet \"${npmPacketName}\" for a clean re-installation`);\n await tools.uninstallNodeModule(npmPacketName, { debug: process.argv.includes('--debug') });\n }\n } catch (e) {\n console.warn(`Could not uninstall npm packet \"${npmPacketName}\": ${e.message}`);\n }\n\n // Get the adapter from website\n const { packetName, stoppedList } = await this.install.downloadPacket(\n sources,\n `${adapter}@${targetVersion}`,\n );\n await finishUpgrade(packetName);\n await this.install.enableInstances(stoppedList, true);\n } else if (repoAdapter.meta) {\n // Read repository from url or file\n const ioPack = (await tools.getJsonAsync(repoAdapter.meta)) as ioBroker.AdapterObject;\n if (!ioPack) {\n console.error(`Cannot parse file${repoAdapter.meta}`);\n return;\n }\n\n if (!forceDowngrade) {\n try {\n // @ts-expect-error https://github.com/ioBroker/adapter-core/issues/455\n await this._checkDependencies(ioPack.common.dependencies, ioPack.common.globalDependencies);\n } catch (e) {\n console.error(`Cannot check dependencies: ${e.message}`);\n return;\n }\n }\n\n if (\n !version &&\n (ioPack.common.version === installedVersion ||\n (!forceDowngrade && tools.upToDate(ioPack.common.version, installedVersion)))\n ) {\n console.log(\n `Adapter \"${adapter}\"${\n adapter.length < 15 ? new Array(15 - adapter.length).join(' ') : ''\n } is up to date.`,\n );\n } else {\n // Get the adapter from website\n const targetVersion = version || ioPack.common.version;\n\n const isIgnored = await isVersionIgnored({\n adapterName: adapter,\n version: targetVersion,\n objects: this.objects,\n });\n\n if (isIgnored) {\n console.log(\n `No upgrade of \"${adapter}\" desired, because version \"${targetVersion}\" is configured to be ignored by the user. Run \"${tools.appNameLowerCase} version ${adapter} --recognize\" to allow this upgrade!`,\n );\n return;\n }\n\n try {\n if (!showUpgradeDialog(installedVersion, targetVersion, adapter)) {\n console.log(`No upgrade of \"${adapter}\" desired.`);\n return;\n }\n } catch (e) {\n console.log(`Can not check version information to display upgrade infos: ${e.message}`);\n }\n console.log(`Update ${adapter} from @${installedVersion} to @${targetVersion}`);\n const { packetName, stoppedList } = await this.install.downloadPacket(\n sources,\n `${adapter}@${targetVersion}`,\n );\n await finishUpgrade(packetName, ioPack);\n await this.install.enableInstances(stoppedList, true);\n }\n } else if (forceDowngrade) {\n try {\n if (!showUpgradeDialog(installedVersion, version, adapter)) {\n return console.log(`No upgrade of \"${adapter}\" desired.`);\n }\n } catch (e) {\n console.log(`Can not check version information to display upgrade infos: ${e.message}`);\n }\n console.warn(`Unable to get version for \"${adapter}\". Update anyway.`);\n console.log(`Update ${adapter} from @${installedVersion} to @${version}`);\n // Get the adapter from website\n const { packetName, stoppedList } = await this.install.downloadPacket(sources, `${adapter}@${version}`);\n await finishUpgrade(packetName);\n await this.install.enableInstances(stoppedList, true);\n } else {\n return console.error(`Unable to get version for \"${adapter}\".`);\n }\n }\n\n /**\n * Upgrade the js-controller\n *\n * @param repoUrl the repo or url\n * @param forceDowngrade if downgrades are allowed\n * @param controllerRunning if controller is currently running\n */\n async upgradeController(repoUrl: string, forceDowngrade: boolean, controllerRunning: boolean): Promise<void> {\n let sources: Record<string, any>;\n\n try {\n const result = await getRepository({ repoName: repoUrl, objects: this.objects });\n if (!result) {\n return console.warn(`Cannot get repository under \"${repoUrl}\"`);\n }\n sources = result;\n } catch (e) {\n console.error(e.message);\n return this.processExit(e instanceof IoBrokerError ? e.code : e);\n }\n\n const installed = fs.readJSONSync(`${tools.getControllerDir()}/io-package.json`);\n if (!installed || !installed.common || !installed.common.version) {\n return console.error(\n `Host \"${this.hostname}\"${\n this.hostname.length < 15 ? ''.padStart(15 - this.hostname.length) : ''\n } is not installed.`,\n );\n }\n\n const controllerName = installed.common.name;\n /** Repository entry of the controller */\n const repoController = sources[controllerName];\n\n if (!repoController) {\n // no info for controller\n return console.error(`Cannot find this controller \"${controllerName}\" in repository.`);\n }\n\n if (repoController.version) {\n if (\n !forceDowngrade &&\n (repoController.version === installed.common.version ||\n tools.upToDate(repoController.version, installed.common.version))\n ) {\n console.log(\n `Host \"${this.hostname}\"${\n this.hostname.length < 15 ? new Array(15 - this.hostname.length).join(' ') : ''\n } is up to date.`,\n );\n } else if (controllerRunning) {\n console.warn(`Controller is running. Please stop ioBroker first.`);\n } else {\n console.log(`Update ${controllerName} from @${installed.common.version} to @${repoController.version}`);\n // Get the controller from website\n await this.install.downloadPacket(sources, `${controllerName}@${repoController.version}`, {\n stopDb: true,\n });\n }\n } else {\n const ioPack = await tools.getJsonAsync(repoController.meta);\n if ((!ioPack || !ioPack.common) && !forceDowngrade) {\n return console.warn(\n `Cannot read version. Write \"${tools.appName} upgrade self --force\" to upgrade controller anyway.`,\n );\n }\n let version = ioPack?.common ? ioPack.common.version : '';\n if (version) {\n version = `@${version}`;\n }\n\n if (\n (ioPack?.common && ioPack.common.version === installed.common.version) ||\n (!forceDowngrade && ioPack?.common && tools.upToDate(ioPack.common.version, installed.common.version))\n ) {\n console.log(\n `Host \"${this.hostname}\"${\n this.hostname.length < 15 ? new Array(15 - this.hostname.length).join(' ') : ''\n } is up to date.`,\n );\n } else if (controllerRunning) {\n console.warn(`Controller is running. Please stop ioBroker first.`);\n } else {\n const name = ioPack?.common?.name || controllerName;\n console.log(`Update ${name} from @${installed.common.version} to ${version}`);\n // Get the controller from website\n await this.install.downloadPacket(sources, name + version, { stopDb: true });\n }\n }\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["Debug", "fs", "path", "semver", "adapterDir", "installedVersion", "tty", "version", "rl"]
7
7
  }
@@ -6,9 +6,6 @@
6
6
  * MIT License
7
7
  *
8
8
  */
9
- /// <reference types="@iobroker/types-dev" />
10
- /// <reference types="node" resolution-mode="require"/>
11
- /// <reference types="node" resolution-mode="require"/>
12
9
  import type { Client as StatesRedisClient } from '@iobroker/db-states-redis';
13
10
  import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
14
11
  import type { InternalLogger } from '@iobroker/js-controller-common-db/tools';
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -90,6 +94,7 @@ class Upload {
90
94
  }
91
95
  return hosts;
92
96
  }
97
+ // Check if some adapters must be restarted and restart them
93
98
  async checkRestartOther(adapter) {
94
99
  const adapterDir = import_js_controller_common.tools.getAdapterDir(adapter);
95
100
  if (!adapterDir) {
@@ -206,6 +211,12 @@ class Upload {
206
211
  }
207
212
  }
208
213
  }
214
+ /**
215
+ * Uploads a file
216
+ *
217
+ * @param source source path
218
+ * @param target target path
219
+ */
209
220
  async uploadFile(source, target) {
210
221
  target = target.replace(/\\/g, "/");
211
222
  source = source.replace(/\\/g, "/");
@@ -269,6 +280,13 @@ class Upload {
269
280
  }
270
281
  }
271
282
  }
283
+ /**
284
+ * Collect Files of an adapter specific directory from the ioBroker storage
285
+ *
286
+ * @param adapter Adapter name
287
+ * @param path path in the adapter specific storage space
288
+ * @param logger Logger instance
289
+ */
272
290
  async collectExistingFilesToDelete(adapter, path, logger) {
273
291
  let _files = [];
274
292
  let _dirs = [];
@@ -351,6 +369,7 @@ class Upload {
351
369
  }
352
370
  return adapter;
353
371
  }
372
+ // Read synchronous all files recursively from local directory
354
373
  walk(dir, _results) {
355
374
  const results = _results || [];
356
375
  try {
@@ -372,6 +391,15 @@ class Upload {
372
391
  }
373
392
  return results;
374
393
  }
394
+ /**
395
+ * Upload given adapter
396
+ *
397
+ * @param adapter adapter name
398
+ * @param isAdmin if admin folder should be uploaded too
399
+ * @param forceUpload if upload should be forced
400
+ * @param subTree subtree path to upload
401
+ * @param _logger logger instance
402
+ */
375
403
  async uploadAdapter(adapter, isAdmin, forceUpload, subTree, _logger) {
376
404
  const id = adapter + (isAdmin ? ".admin" : "");
377
405
  const adapterDir = import_js_controller_common.tools.getAdapterDir(adapter);
@@ -521,6 +549,14 @@ class Upload {
521
549
  }
522
550
  return target;
523
551
  }
552
+ /**
553
+ * Extends the `system.instance.adapter.<instanceNumber>` objects with the native properties from adapters io-package.json
554
+ *
555
+ * @param name name of the adapter
556
+ * @param ioPack parsed io-package content
557
+ * @param hostname name of the host where the adapter is installed on
558
+ * @param logger instance of logger
559
+ */
524
560
  async _upgradeAdapterObjectsHelper(name, ioPack, hostname2, logger) {
525
561
  const res = await this.objects.getObjectViewAsync("system", "instance", {
526
562
  startkey: `system.adapter.${name}.`,
@@ -579,6 +615,13 @@ class Upload {
579
615
  }
580
616
  return name;
581
617
  }
618
+ /**
619
+ * Create object from io-package json
620
+ *
621
+ * @param name adapter name
622
+ * @param ioPack IoPack content
623
+ * @param logger logger instance
624
+ */
582
625
  async upgradeAdapterObjects(name, ioPack, logger = console) {
583
626
  const adapterDir = import_js_controller_common.tools.getAdapterDir(name);
584
627
  let ioPackFile;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/setup/setupUpload.ts"],
4
4
  "sourcesContent": ["/**\n * Upload adapter files into DB\n *\n * Copyright 2013-2024 bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n\nimport fs from 'fs-extra';\nimport { tools } from '@iobroker/js-controller-common';\nimport deepClone from 'deep-clone';\nimport { isDeepStrictEqual } from 'node:util';\nimport axios from 'axios';\nimport mime from 'mime-types';\nimport { join } from 'node:path';\nimport type { Client as StatesRedisClient } from '@iobroker/db-states-redis';\nimport type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';\nimport type { InternalLogger } from '@iobroker/js-controller-common-db/tools';\n\nconst hostname = tools.getHostName();\n\nexport interface CLIUploadOptions {\n states: StatesRedisClient;\n objects: ObjectsRedisClient;\n}\n\ninterface File {\n adapter: string;\n path: string;\n}\n\ninterface Logger extends InternalLogger {\n log(message: string): void;\n}\n\n/** Logger without noisy levels */\ntype MinimalLogger = Omit<Logger, 'info' | 'silly' | 'debug'>;\n\nexport class Upload {\n private readonly states: StatesRedisClient;\n private readonly objects: ObjectsRedisClient;\n private readonly regApp = new RegExp(`/${tools.appName.replace(/\\./g, '\\\\.')}\\\\.`, 'i');\n private callbackId = 1;\n private readonly sendToHostFromCliAsync: (...args: any[]) => Promise<any>;\n private callbacks: Record<string, any> = {};\n private lastProgressUpdate = Date.now();\n\n constructor(_options: CLIUploadOptions) {\n const options = _options || {};\n\n if (!options.states) {\n throw new Error('Invalid arguments: states is missing');\n }\n if (!options.objects) {\n throw new Error('Invalid arguments: objects is missing');\n }\n\n this.states = options.states;\n this.objects = options.objects;\n this.sendToHostFromCliAsync = tools.promisifyNoError(this.sendToHostFromCli);\n }\n\n async checkHostsIfAlive(hosts: string[]): Promise<string[]> {\n const result = [];\n if (hosts) {\n for (const host of hosts) {\n const state = await this.states.getStateAsync(`${host}.alive`);\n if (state?.val) {\n result.push(host);\n }\n }\n }\n return result;\n }\n\n async getHosts(onlyAlive: boolean): Promise<string[]> {\n const hosts = [];\n try {\n const arr = await this.objects.getObjectListAsync({\n startkey: 'system.host.',\n endkey: 'system.host.\\u9999',\n });\n if (arr?.rows) {\n for (const row of arr.rows) {\n if (row.value.type !== 'host') {\n continue;\n }\n hosts.push(row.value._id);\n }\n }\n } catch (e) {\n // ignore\n console.warn(`Cannot read hosts: ${e.message}`);\n }\n\n if (onlyAlive) {\n return this.checkHostsIfAlive(hosts);\n }\n return hosts;\n }\n\n // Check if some adapters must be restarted and restart them\n async checkRestartOther(adapter: string): Promise<void> {\n const adapterDir = tools.getAdapterDir(adapter);\n\n if (!adapterDir) {\n console.error(`Adapter directory of adapter \"${adapter}\" not found`);\n return;\n }\n\n try {\n const adapterConf = await fs.readJSON(join(adapterDir, 'io-package.json'));\n if (adapterConf.common.restartAdapters) {\n if (!Array.isArray(adapterConf.common.restartAdapters)) {\n // it's not an array, now it can only be a single adapter as string\n if (typeof adapterConf.common.restartAdapters !== 'string') {\n return;\n }\n adapterConf.common.restartAdapters = [adapterConf.common.restartAdapters];\n }\n\n if (adapterConf.common.restartAdapters.length && adapterConf.common.restartAdapters[0]) {\n const instances = await tools.getAllInstances(adapterConf.common.restartAdapters, this.objects);\n if (instances?.length) {\n for (const instance of instances) {\n try {\n const obj = await this.objects.getObjectAsync(instance);\n // if instance is enabled\n if (obj?.common?.enabled) {\n obj.common.enabled = false; // disable instance\n\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n\n await this.objects.setObjectAsync(obj._id, obj);\n\n obj.common.enabled = true; // enable instance\n obj.ts = Date.now();\n\n await this.objects.setObjectAsync(obj._id, obj);\n console.log(`Adapter \"${obj._id}\" restarted.`);\n }\n } catch (e) {\n console.error(`Cannot restart adapter \"${instance}\": ${e.message}`);\n }\n }\n }\n }\n }\n } catch (e) {\n console.error(`Cannot parse ${adapterDir}/io-package.json: ${e.message}`);\n }\n }\n\n sendToHostFromCli(\n host: string,\n command: string,\n message: ioBroker.MessagePayload,\n callback: ioBroker.MessageCallback | null,\n ): void {\n const time = Date.now();\n const from = `system.host.${hostname}_cli_${time}`;\n\n const timeout = setTimeout(() => {\n if (callback) {\n callback();\n }\n callback = null;\n this.states.unsubscribeMessage(from);\n // @ts-expect-error todo: I don't think this works\n this.states.onChange = null;\n }, 60_000);\n\n // @ts-expect-error todo: I don't think this works\n this.states.onChange = (id, msg) => {\n if (id.endsWith(from)) {\n if (msg.command === 'log' || msg.command === 'error' || msg.command === 'warn') {\n // @ts-expect-error\n console[msg.command](`${host} -> ${msg.text}`);\n } else if (callback) {\n callback(msg && msg.message);\n callback = null;\n clearTimeout(timeout);\n this.states.unsubscribeMessage(from);\n // @ts-expect-error\n this.states.onChange = null;\n }\n }\n };\n\n this.states.subscribeMessage(from, () => {\n const obj = {\n command,\n message: message,\n from: `system.host.${hostname}_cli_${time}`,\n callback: {\n message,\n id: this.callbackId++,\n ack: false,\n time,\n },\n } as const;\n\n if (this.callbackId > 0xffffffff) {\n this.callbackId = 1;\n }\n\n this.callbacks[`_${obj.callback.id}`] = { cb: callback };\n\n // we cannot receive answers from hosts in CLI, so this command is \"fire and forget\"\n this.states.pushMessage(host, obj);\n });\n }\n\n async uploadAdapterFullAsync(adapters: string[]): Promise<void> {\n if (adapters?.length) {\n const liveHosts = await this.getHosts(true);\n for (const adapter of adapters) {\n // Find the host which has this adapter\n const instances = await tools.getInstances(adapter, this.objects, true);\n // try to find instance on this host\n let instance = instances.find(obj => obj?.common?.host === hostname);\n\n // try to find enabled instance on live host\n instance =\n instance || instances.find(obj => obj?.common?.enabled && liveHosts.includes(obj.common.host));\n\n // try to find any instance\n instance = instance || instances.find(obj => obj?.common && liveHosts.includes(obj.common.host));\n\n if (instance && instance.common.host !== hostname) {\n console.log(`Send upload command to host \"${instance.common.host}\"... `);\n // send upload message to the host\n const response = await this.sendToHostFromCliAsync(instance.common.host, 'upload', adapter);\n if (response) {\n console.log(`Upload result: ${response.result}`);\n } else {\n console.error(`No answer from ${instance.common.host}`);\n }\n } else {\n if (!instance) {\n // no one alive instance found\n const adapterDir = tools.getAdapterDir(adapter);\n if (!adapterDir || !fs.existsSync(adapterDir)) {\n console.warn(\n `No alive host found which has the adapter ${adapter} installed! No upload possible. Skipped.`,\n );\n continue;\n }\n }\n\n // try to upload on this host. It will print an error if the adapter directory not found\n await this.uploadAdapter(adapter, true, true);\n await this.upgradeAdapterObjects(adapter);\n await this.uploadAdapter(adapter, false, true);\n }\n }\n }\n }\n\n /**\n * Uploads a file\n *\n * @param source source path\n * @param target target path\n */\n async uploadFile(source: string, target: string): Promise<string> {\n target = target.replace(/\\\\/g, '/');\n source = source.replace(/\\\\/g, '/');\n if (target[0] === '/') {\n target = target.substring(1);\n }\n if (target[target.length - 1] === '/') {\n let name = source.split('/').pop()!;\n name = name.split('?')[0];\n if (!name.includes('.')) {\n name = 'index.html';\n }\n target += name;\n }\n const parts = target.split('/');\n const adapter = parts[0];\n parts.splice(0, 1);\n target = parts.join('/');\n\n if (source.match(/^http:\\/\\/|^https:\\/\\//)) {\n try {\n const result = await axios(source, {\n responseType: 'arraybuffer',\n validateStatus: status => status === 200,\n });\n if (result?.data) {\n await this.objects.writeFileAsync(adapter, target, result.data);\n } else {\n console.error(`Empty response from URL \"${source}\"`);\n throw new Error(`Empty response from URL \"${source}\"`);\n }\n } catch (e) {\n let result;\n if (e.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n result = e.response.data || e.response.status;\n } else if (e.request) {\n // The request was made but no response was received\n // `err.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n result = e.request;\n } else {\n // Something happened in setting up the request that triggered an Error\n result = e.message;\n }\n console.error(`Cannot get URL \"${source}\": ${result}`);\n throw new Error(result);\n }\n } else {\n try {\n await this.objects.writeFileAsync(adapter, target, fs.readFileSync(source));\n } catch (e) {\n console.error(`Cannot read file \"${source}\": ${e.message}`);\n throw e;\n }\n }\n\n return `${adapter}/${target}`;\n }\n\n async eraseFiles(files: any[], logger: MinimalLogger | typeof console): Promise<void> {\n if (files && files.length) {\n for (const file of files) {\n try {\n await this.objects.unlinkAsync(file.adapter, file.path);\n } catch (e) {\n logger.error(`Cannot delete file \"${file.path}\": ${e}`);\n }\n }\n }\n }\n\n /**\n * Collect Files of an adapter specific directory from the ioBroker storage\n *\n * @param adapter Adapter name\n * @param path path in the adapter specific storage space\n * @param logger Logger instance\n */\n async collectExistingFilesToDelete(\n adapter: string,\n path: string,\n logger: MinimalLogger | typeof console,\n ): Promise<{\n filesToDelete: File[];\n dirs: File[];\n }> {\n let _files: File[] = [];\n let _dirs: File[] = [];\n let files: ioBroker.ReadDirResult[];\n try {\n files = await this.objects.readDirAsync(adapter, path);\n } catch {\n // ignore err\n files = [];\n }\n\n if (files?.length) {\n for (const file of files) {\n if (file.file === '.' || file.file === '..') {\n continue;\n }\n const newPath = path + file.file;\n if (file.isDir) {\n if (!_dirs.find(e => e.path === newPath)) {\n _dirs.push({ adapter, path: newPath });\n }\n try {\n const result = await this.collectExistingFilesToDelete(adapter, `${newPath}/`, logger);\n if (result.filesToDelete) {\n _files = _files.concat(result.filesToDelete);\n }\n\n _dirs = _dirs.concat(result.dirs);\n } catch (e) {\n logger.warn(`Cannot delete folder \"${adapter}${newPath}/\": ${e.message}`);\n }\n } else if (!_files.find(e => e.path === newPath)) {\n _files.push({ adapter, path: newPath });\n }\n }\n }\n\n return { filesToDelete: _files, dirs: _dirs };\n }\n\n async upload(\n adapter: string,\n isAdmin: boolean,\n files: string[],\n id: string,\n logger: MinimalLogger | typeof console,\n ): Promise<string> {\n const uploadID = `system.adapter.${adapter}.upload`;\n\n await this.states.setState(uploadID, { val: 0, ack: true });\n\n for (let f = 0; f < files.length; f++) {\n const file = files[f];\n // do not upload '.gitignore' files. Todo: add other exceptions\n if (file === '.gitignore') {\n continue;\n }\n\n const mimeType = mime.lookup(file);\n let attNameArr = file.split(this.regApp);\n // try to find anyway if adapter is not lower case\n if (attNameArr.length === 1 && file.toLowerCase().includes(tools.appName.toLowerCase())) {\n attNameArr = ['', file.substring(tools.appName.length + 2)];\n }\n\n let attName = attNameArr.pop()!;\n attName = attName.split('/').slice(2).join('/');\n\n const remainingFiles = files.length - f - 1;\n\n if (remainingFiles >= 100) {\n (!f || !(remainingFiles % 50)) &&\n logger.log(`upload [${remainingFiles}] ${id} ${file} ${attName} ${mimeType}`);\n } else if (remainingFiles > 20) {\n if (!f || !(remainingFiles % 10)) {\n logger.log(`upload [${remainingFiles}] ${id} ${file} ${attName} ${mimeType}`);\n }\n } else {\n logger.log(`upload [${remainingFiles}] ${id} ${file} ${attName} ${mimeType}`);\n }\n\n // Update upload indicator\n if (!isAdmin) {\n const now = Date.now();\n if (now - this.lastProgressUpdate > 1_000) {\n this.lastProgressUpdate = now;\n await this.states.setState(uploadID, {\n val: Math.round((1_000 * (files.length - f)) / files.length) / 10,\n ack: true,\n });\n }\n }\n\n try {\n const content = await fs.readFile(file);\n await this.objects.writeFileAsync(id, attName, content, { mimeType: mimeType || undefined });\n } catch (e) {\n console.error(`Error: Cannot upload ${file}: ${e.message}`);\n }\n }\n\n // Set upload progress to 0;\n if (!isAdmin && files.length) {\n await this.states.setState(uploadID, { val: 0, ack: true });\n }\n\n return adapter;\n }\n\n // Read synchronous all files recursively from local directory\n walk(dir: string, _results?: string[]): string[] {\n const results = _results || [];\n try {\n if (fs.existsSync(dir)) {\n const list = fs.readdirSync(dir);\n list.map(file => {\n const stat = fs.statSync(`${dir}/${file}`);\n if (stat.isDirectory()) {\n this.walk(`${dir}/${file}`, results);\n } else {\n if (!file.endsWith('.npmignore') && !file.endsWith('.gitignore')) {\n results.push(`${dir}/${file}`);\n }\n }\n });\n }\n } catch (e) {\n console.error(e);\n }\n\n return results;\n }\n\n /**\n * Upload given adapter\n *\n * @param adapter adapter name\n * @param isAdmin if admin folder should be uploaded too\n * @param forceUpload if upload should be forced\n * @param subTree subtree path to upload\n * @param _logger logger instance\n */\n async uploadAdapter(\n adapter: string,\n isAdmin: boolean,\n forceUpload: boolean,\n subTree?: string,\n _logger?: MinimalLogger,\n ): Promise<string> {\n const id = adapter + (isAdmin ? '.admin' : '');\n const adapterDir = tools.getAdapterDir(adapter);\n let dir = adapterDir ? adapterDir + (isAdmin ? '/admin' : '/www') : '';\n\n const logger = _logger || console;\n\n if (subTree && dir) {\n dir += `/${subTree}`;\n }\n if (adapterDir === null || !fs.existsSync(adapterDir)) {\n console.log(\n `INFO: Directory \"${\n adapterDir || `for ${adapter}${isAdmin ? '.admin' : ''}`\n }\" does not exist. Nothing was uploaded or deleted.`,\n );\n return adapter;\n }\n\n let cfg;\n try {\n cfg = await fs.readJSON(`${adapterDir}/io-package.json`);\n } catch (e) {\n // file not parsable or does not exist\n console.error(`Could not read io-package.json: ${e.message}`);\n }\n\n if (!fs.existsSync(dir)) {\n // www folder have not all adapters. So show warning only for admin folder\n // widgets do not have www folder, but they have onlyWWW flag\n (isAdmin || (cfg?.common?.onlyWWW && !cfg.common.visWidgets)) &&\n console.log(\n `INFO: Directory \"${\n dir || `for ${adapter}${isAdmin ? '.admin' : ''}`\n }\" was not found! Nothing was uploaded or deleted.`,\n );\n\n if (isAdmin) {\n return adapter;\n }\n await this.checkRestartOther(adapter);\n return adapter;\n }\n\n // check for common.wwwDontUpload (required for legacy adapters and admin)\n if (!isAdmin && cfg?.common?.wwwDontUpload) {\n return adapter;\n }\n\n // Create \"upload progress\" object if not exists\n if (!isAdmin) {\n let obj;\n const uploadID = `system.adapter.${adapter}.upload`;\n try {\n obj = await this.objects.getObject(uploadID);\n } catch {\n // ignore\n }\n if (!obj) {\n await this.objects.setObject(uploadID, {\n _id: uploadID,\n type: 'state',\n common: {\n name: `${adapter}.upload`,\n type: 'number',\n role: 'indicator.state',\n unit: '%',\n min: 0,\n max: 100,\n def: 0,\n desc: 'Upload process indicator',\n read: true,\n write: false,\n },\n from: `system.host.${tools.getHostName()}.cli`,\n ts: Date.now(),\n native: {},\n });\n }\n // Set indicator to 0\n await this.states.setState(uploadID, { val: 0, ack: true });\n }\n\n let result;\n try {\n result = await this.objects.getObjectAsync(id);\n } catch {\n // ignore\n }\n // Read all names with subtrees from local directory\n const files = this.walk(dir);\n if (!result) {\n // @ts-expect-error types needed admin is not allowed for meta, but it should be allowed\n await this.objects.setObjectAsync(id, {\n type: 'meta',\n common: {\n name: id.split('.').pop()!,\n type: isAdmin ? 'admin' : 'www',\n },\n from: `system.host.${tools.getHostName()}.cli`,\n ts: Date.now(),\n native: {},\n });\n forceUpload = true;\n }\n\n if (forceUpload) {\n // only skip if explicitly opted out\n // The visualization check is needed as user of legacy systems often stored files inside adapter directories like `vis`\n // in the long term, such adapters should explicitly opt out, so we can hopefully remove this line in 2-3 versions (current 5.0)\n if (\n cfg?.common?.eraseOnUpload !== false &&\n !(cfg?.common?.eraseOnUpload === undefined && cfg?.common?.type === 'visualization')\n ) {\n const { filesToDelete } = await this.collectExistingFilesToDelete(\n isAdmin ? `${adapter}.admin` : adapter,\n '/',\n logger,\n );\n // delete old files, before upload of new\n await this.eraseFiles(filesToDelete, logger);\n }\n if (!isAdmin) {\n await this.checkRestartOther(adapter);\n await new Promise<void>(resolve => setTimeout(() => resolve(), 25));\n await this.upload(adapter, isAdmin, files, id, logger);\n } else {\n await this.upload(adapter, isAdmin, files, id, logger);\n }\n }\n return adapter;\n }\n\n extendNative(target: Record<string, any>, additional: Record<string, unknown>): Record<string, any> {\n if (tools.isObject(additional)) {\n for (const [attr, attrData] of Object.entries(additional)) {\n if (target[attr] === undefined) {\n target[attr] = attrData;\n } else if (tools.isObject(attrData)) {\n try {\n target[attr] = target[attr] || {};\n } catch {\n console.warn(`Cannot update attribute ${attr} of native`);\n }\n if (typeof target[attr] === 'object' && target[attr] !== null) {\n this.extendNative(target[attr], attrData);\n }\n }\n }\n }\n return target;\n }\n\n extendCommon(\n target: Record<string, any>,\n additional: Record<string, any>,\n instance: string,\n ): ioBroker.InstanceCommon {\n if (tools.isObject(additional)) {\n const preserveAttributes = [\n 'title',\n 'schedule',\n 'restartSchedule',\n 'mode',\n 'loglevel',\n 'enabled',\n 'custom',\n 'tier',\n ];\n\n for (const [attr, attrData] of Object.entries(additional)) {\n // preserve these attributes, except, they were undefined before and preserve titleLang if current titleLang is of type string (changed by user)\n if (preserveAttributes.includes(attr) || (attr === 'titleLang' && typeof target[attr] === 'string')) {\n if (target[attr] === undefined) {\n target[attr] = attrData;\n }\n } else if (typeof attrData !== 'object' || attrData instanceof Array) {\n try {\n target[attr] = attrData;\n\n // dataFolder can have wildcards\n if (attr === 'dataFolder' && target.dataFolder && target.dataFolder.includes('%INSTANCE%')) {\n target.dataFolder = target.dataFolder.replace(/%INSTANCE%/g, instance);\n }\n } catch {\n console.warn(`Cannot update attribute ${attr} of common`);\n }\n } else {\n target[attr] = target[attr] || {};\n if (typeof target[attr] !== 'object') {\n target[attr] = {}; // here we clean the simple value with object\n }\n\n this.extendCommon(target[attr], attrData, instance);\n }\n }\n }\n return target as ioBroker.InstanceCommon;\n }\n\n /**\n * Extends the `system.instance.adapter.<instanceNumber>` objects with the native properties from adapters io-package.json\n *\n * @param name name of the adapter\n * @param ioPack parsed io-package content\n * @param hostname name of the host where the adapter is installed on\n * @param logger instance of logger\n */\n async _upgradeAdapterObjectsHelper(\n name: string,\n ioPack: ioBroker.AdapterObject,\n hostname: string,\n logger: MinimalLogger | typeof console,\n ): Promise<string> {\n // Update all instances of this host\n const res = await this.objects.getObjectViewAsync('system', 'instance', {\n startkey: `system.adapter.${name}.`,\n endkey: `system.adapter.${name}.\\u9999`,\n });\n\n if (res) {\n for (const row of res.rows) {\n if (row.value?.common.host === hostname) {\n const _obj = await this.objects.getObject(row.id);\n const newObject = deepClone(_obj) as ioBroker.InstanceObject;\n\n // TODO: refactor the following assignments into a method, where we can define which attributes need a real override and their defaults\n\n // all common settings should be taken from new one\n newObject.common = this.extendCommon(\n newObject.common,\n ioPack.common,\n newObject._id.split('.').pop()!,\n );\n newObject.native = this.extendNative(newObject.native, ioPack.native);\n\n // protected/encryptedNative and notifications also need to be updated\n newObject.protectedNative = ioPack.protectedNative || [];\n newObject.encryptedNative = ioPack.encryptedNative || [];\n newObject.notifications = ioPack.notifications || [];\n // update instanceObjects and objects\n newObject.instanceObjects = ioPack.instanceObjects || [];\n newObject.objects = ioPack.objects || [];\n\n newObject.common.version = ioPack.common.version;\n newObject.common.installedVersion = ioPack.common.version;\n newObject.common.installedFrom = ioPack.common.installedFrom;\n\n // do not merge visWidgets and localLinks\n if (ioPack.common.visWidgets) {\n newObject.common.visWidgets = ioPack.common.visWidgets;\n } else {\n delete newObject.common.visWidgets;\n }\n\n if (ioPack.common.localLinks) {\n newObject.common.localLinks = ioPack.common.localLinks;\n } else {\n delete newObject.common.localLinks;\n }\n\n if (!ioPack.common.compact && newObject.common.compact) {\n newObject.common.compact = ioPack.common.compact;\n }\n\n // Compare objects to reduce restarts of instances\n if (!isDeepStrictEqual(newObject, _obj)) {\n logger.log(`Update \"${newObject._id}\"`);\n\n newObject.from = `system.host.${tools.getHostName()}.cli`;\n newObject.ts = Date.now();\n\n await this.objects.setObjectAsync(newObject._id, newObject);\n }\n }\n }\n }\n\n // updates only \"_design/system\" and co \"_design/*\"\n if (Array.isArray(ioPack.objects)) {\n for (const obj of ioPack.objects) {\n if (name === 'js-controller' && !obj._id.startsWith('_design/')) {\n continue;\n }\n\n obj.from = `system.host.${hostname}.cli`;\n obj.ts = Date.now();\n\n try {\n await this.objects.setObjectAsync(obj._id, obj);\n } catch (e) {\n logger.error(`Cannot update object: ${e}`);\n }\n }\n }\n\n return name;\n }\n\n /**\n * Create object from io-package json\n *\n * @param name adapter name\n * @param ioPack IoPack content\n * @param logger logger instance\n */\n async upgradeAdapterObjects(\n name: string,\n ioPack?: ioBroker.AdapterObject,\n logger: MinimalLogger | typeof console = console,\n ): Promise<string> {\n const adapterDir = tools.getAdapterDir(name);\n let ioPackFile;\n try {\n ioPackFile = fs.readJSONSync(`${adapterDir}/io-package.json`);\n } catch {\n if (adapterDir) {\n logger.error(`Cannot find io-package.json in ${adapterDir}`);\n } else {\n logger.error(`Cannot find io-package.json for \"${name}\"`);\n }\n ioPackFile = null;\n }\n\n ioPack = ioPack || ioPackFile;\n\n if (ioPack) {\n logger.log(\n `Updating objects from io-package.json for adapter \"${name}\" with version \"${ioPack.common.version}\"`,\n );\n // Always update installedFrom from File on disk if exists and set\n if (ioPackFile?.common?.installedFrom) {\n ioPack.common = ioPack.common || {};\n ioPack.common.installedFrom = ioPackFile.common.installedFrom;\n }\n // Not existing? Why ever ... we recreate\n let _obj;\n try {\n _obj = await this.objects.getObject(`system.adapter.${name}`);\n } catch {\n // ignore err\n }\n const obj: Omit<ioBroker.AdapterObject, '_id'> = _obj || {\n common: ioPack.common,\n native: ioPack.native,\n type: 'adapter',\n instanceObjects: [],\n objects: [],\n };\n\n obj.common = ioPack.common || {};\n obj.native = ioPack.native || {};\n // protected/encryptedNative and notifications also need to be updated\n obj.protectedNative = ioPack.protectedNative || [];\n obj.encryptedNative = ioPack.encryptedNative || [];\n obj.notifications = ioPack.notifications || [];\n // update instanceObjects and objects\n obj.instanceObjects = ioPack.instanceObjects || [];\n obj.objects = ioPack.objects || [];\n\n obj.type = 'adapter';\n\n obj.common.installedVersion = ioPack.common.version;\n\n if (obj.common.news) {\n delete obj.common.news; // remove this information as it could be big, but it will be taken from repo\n }\n\n const hostname = tools.getHostName();\n\n obj.from = `system.host.${hostname}.cli`;\n obj.ts = Date.now();\n\n try {\n await this.objects.setObject(`system.adapter.${name}`, obj);\n await this.objects.setObject(`system.host.${hostname}.adapter.${name}`, obj);\n } catch (e) {\n logger.error(\n `Cannot set \"system.adapter.${name}\" and \"system.host.${hostname}.adapters.${name}\": ${e.message}`,\n );\n }\n\n await this._upgradeAdapterObjectsHelper(name, ioPack, hostname, logger);\n }\n\n return name;\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["fs", "axios", "mime", "hostname", "deepClone"]
7
7
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="@iobroker/types-dev" />
2
1
  import type { ProcessExitCallback } from '../_Types.js';
3
2
  import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
4
3
  export interface CLIUsersOptions {
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  return to;
19
19
  };
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -42,6 +46,13 @@ class Users {
42
46
  this.objects = options.objects;
43
47
  this.processExit = options.processExit;
44
48
  }
49
+ /**
50
+ * Adds new user to system
51
+ *
52
+ * @param username name of the user which will be added
53
+ * @param pw password
54
+ * @param callback
55
+ */
45
56
  addUser(username, pw, callback) {
46
57
  const _user = username.replace(/\s/g, "_").toLowerCase();
47
58
  this.objects.getObject(`system.user.${_user}`, (err, obj) => {
@@ -67,6 +78,11 @@ class Users {
67
78
  });
68
79
  });
69
80
  }
81
+ /**
82
+ * Checks if user exists
83
+ *
84
+ * @param username name of the user to check existence of
85
+ */
70
86
  async isUser(username) {
71
87
  const _user = username.replace(/\s/g, "_").toLowerCase();
72
88
  let isExisting = false;
@@ -76,6 +92,13 @@ class Users {
76
92
  }
77
93
  return isExisting;
78
94
  }
95
+ /**
96
+ * Set password for specific user
97
+ *
98
+ * @param username name of the user to set password for
99
+ * @param pw password
100
+ * @param callback
101
+ */
79
102
  setPassword(username, pw, callback) {
80
103
  const _user = username.replace(/\s/g, "_").toLowerCase();
81
104
  this.objects.getObject(`system.user.${_user}`, (err, obj) => {
@@ -95,6 +118,13 @@ class Users {
95
118
  });
96
119
  });
97
120
  }
121
+ /**
122
+ * Checks if password is correct for given user
123
+ *
124
+ * @param username name of the user to check password
125
+ * @param pw password
126
+ * @param callback
127
+ */
98
128
  checkPassword(username, pw, callback) {
99
129
  const _user = username.replace(/\s/g, "_").toLowerCase();
100
130
  this.objects.getObject(`system.user.${_user}`, (err, obj) => {
@@ -106,6 +136,12 @@ class Users {
106
136
  });
107
137
  });
108
138
  }
139
+ /**
140
+ * Deletes user from system
141
+ *
142
+ * @param username name of the user to delete
143
+ * @param callback
144
+ */
109
145
  delUser(username, callback) {
110
146
  if (!username) {
111
147
  return import_js_controller_common.tools.maybeCallbackWithError(callback, 'Please define user name, like: "userdel user"');
@@ -152,6 +188,13 @@ class Users {
152
188
  });
153
189
  });
154
190
  }
191
+ /**
192
+ * Adds user to given group
193
+ *
194
+ * @param username user which will be added to the group
195
+ * @param groupName name of the group where the user will be added to
196
+ * @param callback
197
+ */
155
198
  addUserToGroup(username, groupName, callback) {
156
199
  let _user = username.replace(/\s/g, "_").toLowerCase();
157
200
  if (!groupName.startsWith("system.group.")) {
@@ -183,6 +226,14 @@ class Users {
183
226
  });
184
227
  });
185
228
  }
229
+ /**
230
+ * Add user via CLI prompt
231
+ *
232
+ * @param username user which sohuld be created
233
+ * @param groupName default group for the new user
234
+ * @param password user password
235
+ * @param callback
236
+ */
186
237
  addUserPrompt(username, groupName, password2, callback) {
187
238
  if (!username) {
188
239
  return import_js_controller_common.tools.maybeCallbackWithError(callback, 'Please define user name, like: "adduser newUser"');
@@ -250,6 +301,13 @@ class Users {
250
301
  }
251
302
  });
252
303
  }
304
+ /**
305
+ * Set password of user
306
+ *
307
+ * @param username name of the user to set password for
308
+ * @param password password of user
309
+ * @param callback
310
+ */
253
311
  async setUserPassword(username, password2, callback) {
254
312
  if (!username) {
255
313
  return import_js_controller_common.tools.maybeCallbackWithError(callback, 'Please define user name, like: "passwd username"');
@@ -302,6 +360,13 @@ class Users {
302
360
  });
303
361
  }
304
362
  }
363
+ /**
364
+ * Enable user
365
+ *
366
+ * @param username name of the user which will be activated
367
+ * @param enable true if it should be enabled else false
368
+ * @param callback
369
+ */
305
370
  enableUser(username, enable, callback) {
306
371
  if (!username) {
307
372
  return import_js_controller_common.tools.maybeCallbackWithError(callback, 'Please define user name, like: "enable username"');
@@ -327,6 +392,13 @@ class Users {
327
392
  });
328
393
  });
329
394
  }
395
+ /**
396
+ * Check if user password is valid
397
+ *
398
+ * @param username name of the user to check password for
399
+ * @param password password to check
400
+ * @param callback
401
+ */
330
402
  checkUserPassword(username, password2, callback) {
331
403
  if (!username && !password2) {
332
404
  import_prompt.default.message = "";
@@ -387,6 +459,12 @@ class Users {
387
459
  });
388
460
  }
389
461
  }
462
+ /**
463
+ * Get user object
464
+ *
465
+ * @param username name of the user to get object of
466
+ * @param callback
467
+ */
390
468
  getUser(username, callback) {
391
469
  this.objects.getObject(`system.user.${username}`, (err, obj) => {
392
470
  if (err) {
@@ -398,6 +476,12 @@ class Users {
398
476
  return import_js_controller_common.tools.maybeCallbackWithError(callback, null, obj.common.enabled);
399
477
  });
400
478
  }
479
+ /**
480
+ * Get group object
481
+ *
482
+ * @param group groupname
483
+ * @param callback
484
+ */
401
485
  getGroup(group, callback) {
402
486
  this.objects.getObject(`system.group.${group}`, (err, obj) => {
403
487
  if (err) {
@@ -409,6 +493,13 @@ class Users {
409
493
  return import_js_controller_common.tools.maybeCallbackWithError(callback, null, obj.common.enabled, obj.common.members);
410
494
  });
411
495
  }
496
+ /**
497
+ * Enable or disable group by name
498
+ *
499
+ * @param group groupname
500
+ * @param enable if enable or disable
501
+ * @param callback
502
+ */
412
503
  enableGroup(group, enable, callback) {
413
504
  if (!group) {
414
505
  return import_js_controller_common.tools.maybeCallbackWithError(callback, 'Please define group name, like: "enable groupname"');
@@ -434,6 +525,11 @@ class Users {
434
525
  });
435
526
  });
436
527
  }
528
+ /**
529
+ * Add new group
530
+ *
531
+ * @param group groupname
532
+ */
437
533
  async addGroup(group) {
438
534
  const _group = group.replace(/\s/g, "_");
439
535
  const obj = await this.objects.getObject(`system.group.${_group}`);
@@ -453,6 +549,12 @@ class Users {
453
549
  });
454
550
  }
455
551
  }
552
+ /**
553
+ * Remove group
554
+ *
555
+ * @param group groupname
556
+ * @param callback
557
+ */
456
558
  delGroup(group, callback) {
457
559
  const _group = group.replace(/\s/g, "_");
458
560
  if (group === "administrator") {
@@ -467,6 +569,13 @@ class Users {
467
569
  });
468
570
  });
469
571
  }
572
+ /**
573
+ * Remove user from given group
574
+ *
575
+ * @param username name of the user which will be removed from group
576
+ * @param groupName name of the group user will be removed from
577
+ * @param callback
578
+ */
470
579
  removeUserFromGroup(username, groupName, callback) {
471
580
  const _group = groupName.replace(/\s/g, "_");
472
581
  this.objects.getObject(`system.group.${_group}`, (err, obj) => {