@iobroker/js-controller-cli 7.0.2 → 7.0.3

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/setupUsers.ts"],
4
4
  "sourcesContent": ["import { password, tools, EXIT_CODES } from '@iobroker/js-controller-common';\nimport type { ProcessExitCallback } from '../_Types.js';\nimport type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';\nimport prompt from 'prompt';\n\nexport interface CLIUsersOptions {\n processExit: ProcessExitCallback;\n objects: ObjectsRedisClient;\n}\n\n/** Map a prompt.Schema to properties of type string */\ntype SchemaPropsToString<TSchema extends prompt.Schema> = { [Property in keyof TSchema['properties']]: string };\n\nexport class Users {\n private readonly objects: ObjectsRedisClient;\n private readonly processExit: ProcessExitCallback;\n\n constructor(options: CLIUsersOptions) {\n if (!options.objects) {\n throw new Error('Invalid arguments: objects is missing');\n }\n if (!options.processExit) {\n throw new Error('Invalid arguments: processExit is missing');\n }\n\n this.objects = options.objects;\n this.processExit = options.processExit;\n }\n\n /**\n * Adds new user to system\n *\n * @param username name of the user which will be added\n * @param pw password\n * @param callback\n */\n addUser(username: string, pw: string, callback: ioBroker.ErrorCallback): void {\n // user id's should be case insensitive\n const _user = username.replace(/\\s/g, '_').toLowerCase();\n this.objects.getObject(`system.user.${_user}`, (err, obj) => {\n if (obj) {\n return tools.maybeCallbackWithError(callback, 'User yet exists');\n }\n this.objects.setObject(\n `system.user.${_user}`,\n {\n type: 'user',\n common: {\n name: username,\n enabled: true,\n password: '',\n },\n from: `system.host.${tools.getHostName()}.cli`,\n ts: Date.now(),\n native: {},\n },\n err => {\n if (!err) {\n this.setPassword(username, pw, callback);\n } else {\n return tools.maybeCallbackWithError(callback, err);\n }\n },\n );\n });\n }\n\n /**\n * Checks if user exists\n *\n * @param username name of the user to check existence of\n */\n async isUser(username: string): Promise<boolean> {\n const _user = username.replace(/\\s/g, '_').toLowerCase();\n let isExisting = false;\n try {\n isExisting = await this.objects.objectExists(`system.user.${_user}`);\n } catch {\n // ignore\n }\n\n return isExisting;\n }\n\n /**\n * Set password for specific user\n *\n * @param username name of the user to set password for\n * @param pw password\n * @param callback\n */\n setPassword(username: string, pw: string, callback: ioBroker.ErrorCallback): void {\n const _user = username.replace(/\\s/g, '_').toLowerCase();\n\n this.objects.getObject(`system.user.${_user}`, (err, obj) => {\n if (err || !obj) {\n return tools.maybeCallbackWithError(callback, 'User does not exist');\n }\n\n password(pw).hash(null, null, (err, res) => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n obj.common.password = res ?? '';\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n this.objects.setObject(`system.user.${_user}`, obj, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n });\n });\n }\n\n /**\n * Checks if password is correct for given user\n *\n * @param username name of the user to check password\n * @param pw password\n * @param callback\n */\n checkPassword(username: string, pw: string, callback: (err?: Error | null, isOk?: boolean) => void): void {\n const _user = username.replace(/\\s/g, '_').toLowerCase();\n\n this.objects.getObject(`system.user.${_user}`, (err, obj) => {\n if (err || !obj) {\n return tools.maybeCallbackWithError(callback, 'User does not exist');\n }\n\n password(pw).check(obj.common.password, (err, res) => {\n return tools.maybeCallbackWithError(callback, err, res);\n });\n });\n }\n\n /**\n * Deletes user from system\n *\n * @param username name of the user to delete\n * @param callback\n */\n delUser(username: string, callback: ioBroker.ErrorCallback): void {\n if (!username) {\n return tools.maybeCallbackWithError(callback, 'Please define user name, like: \"userdel user\"');\n }\n\n const _user = username.replace(/\\s/g, '_').toLowerCase();\n\n this.objects.getObject(`system.user.${_user}`, (err, obj) => {\n if (err || !obj) {\n return tools.maybeCallbackWithError(callback, 'User does not exist');\n }\n if (obj.common.dontDelete) {\n return tools.maybeCallbackWithError(callback, 'Cannot delete user, while is system user');\n }\n this.objects.delObject(`system.user.${_user}`, err => {\n // Remove this user from all groups\n if (!err) {\n this.objects.getObjectList(\n { startkey: 'system.group.', endkey: 'system.group.\\u9999' },\n (err, groups) => {\n if (!groups) {\n return tools.maybeCallback(callback);\n }\n\n let count = 0;\n for (let i = 0; i < groups.rows.length; i++) {\n if (groups.rows[i].value.type !== 'group') {\n continue;\n }\n // find all groups\n if (\n groups.rows[i].value.common.members &&\n groups.rows[i].value.common.members.indexOf(`system.user.${_user}`) !== -1\n ) {\n const pos = groups.rows[i].value.common.members.indexOf(`system.user.${_user}`);\n groups.rows[i].value.common.members.splice(pos, 1);\n count++;\n groups.rows[i].value.from = `system.host.${tools.getHostName()}.cli`;\n groups.rows[i].value.ts = Date.now();\n this.objects.setObject(groups.rows[i].value._id, groups.rows[i].value, err => {\n if (!--count) {\n return tools.maybeCallbackWithError(callback, err);\n }\n });\n }\n }\n if (!count) {\n return tools.maybeCallback(callback);\n }\n },\n );\n } else {\n return tools.maybeCallbackWithError(callback, err);\n }\n });\n });\n }\n\n /**\n * Adds user to given group\n *\n * @param username user which will be added to the group\n * @param groupName name of the group where the user will be added to\n * @param callback\n */\n addUserToGroup(username: string, groupName: string, callback: ioBroker.ErrorCallback): void {\n let _user = username.replace(/\\s/g, '_').toLowerCase();\n if (!groupName.startsWith('system.group.')) {\n groupName = `system.group.${groupName}`;\n }\n if (!_user.startsWith('system.user.')) {\n _user = `system.user.${_user}`;\n }\n\n this.objects.getObject(_user, (err, obj) => {\n if (err || !obj) {\n return tools.maybeCallbackWithError(callback, 'User does not exist');\n }\n this.objects.getObject(groupName, (err, obj) => {\n if (err || !obj) {\n return tools.maybeCallbackWithError(callback, 'Group does not exist');\n }\n obj.common = obj.common || {};\n obj.common.members = obj.common.members || [];\n\n if (obj.common.members.indexOf(_user) === -1) {\n obj.common.members.push(_user);\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n this.objects.setObject(groupName, obj, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n } else {\n return tools.maybeCallback(callback);\n }\n });\n });\n }\n\n /**\n * Add user via CLI prompt\n *\n * @param username user which sohuld be created\n * @param groupName default group for the new user\n * @param password user password\n * @param callback\n */\n addUserPrompt(username: string, groupName: string, password: string, callback: ioBroker.ErrorCallback): void {\n if (!username) {\n return tools.maybeCallbackWithError(callback, 'Please define user name, like: \"adduser newUser\"');\n }\n\n // Check group\n if (groupName.substring(0, 13) !== 'system.group.') {\n groupName = `system.group.${groupName}`;\n }\n\n this.objects.getObject(groupName, (err, obj) => {\n if (!obj) {\n return tools.maybeCallbackWithError(callback, `Unknown group: ${groupName}`);\n }\n if (!password) {\n prompt.message = '';\n prompt.delimiter = '';\n const schema = {\n properties: {\n password: {\n description: 'Enter your password:',\n pattern: /^[^'\"]+$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n repeatPassword: {\n description: 'Repeat your password:',\n pattern: /^[^'\"]+$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n },\n } as const satisfies prompt.Schema;\n prompt.start();\n\n prompt.get<SchemaPropsToString<typeof schema>>(schema, (err, result) => {\n if (result) {\n if (result.password !== result.repeatPassword) {\n console.log('Passwords are not identical!');\n return void this.processExit(EXIT_CODES.INVALID_PASSWORD);\n }\n\n this.addUser(username, result.password, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n this.addUserToGroup(username, groupName, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n return tools.maybeCallback(callback);\n });\n });\n } else {\n return tools.maybeCallbackWithError(callback, err);\n }\n });\n } else {\n this.addUser(username, password, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n this.addUserToGroup(username, groupName, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n return tools.maybeCallback(callback);\n });\n });\n }\n });\n }\n\n /**\n * Set password of user\n *\n * @param username name of the user to set password for\n * @param password password of user\n * @param callback\n */\n async setUserPassword(username: string, password: string, callback: ioBroker.ErrorCallback): Promise<void> {\n if (!username) {\n return tools.maybeCallbackWithError(callback, 'Please define user name, like: \"passwd username\"');\n }\n\n const isExisting = await this.isUser(username);\n if (!isExisting) {\n return tools.maybeCallbackWithError(callback, `User \"${username}\" does not exist.`);\n }\n // Check group\n if (!password) {\n prompt.message = '';\n prompt.delimiter = '';\n const schema = {\n properties: {\n password: {\n description: 'Enter your password:',\n pattern: /^[^'\"]*$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n repeatPassword: {\n description: 'Repeat your password:',\n pattern: /^[^'\"]*$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n },\n } as const satisfies prompt.Schema;\n prompt.start();\n\n prompt.get<SchemaPropsToString<typeof schema>>(schema, (err, result) => {\n if (result) {\n if (result.password !== result.repeatPassword) {\n return tools.maybeCallbackWithError(callback, 'Passwords are not identical!');\n }\n\n this.setPassword(username, result.password, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n return tools.maybeCallback(callback);\n });\n } else {\n return tools.maybeCallbackWithError(callback, 'No password entered!');\n }\n });\n } else {\n this.setPassword(username, password, err => {\n if (err) {\n return tools.maybeCallbackWithError(callback, err);\n }\n return tools.maybeCallback(callback);\n });\n }\n }\n\n /**\n * Enable user\n *\n * @param username name of the user which will be activated\n * @param enable true if it should be enabled else false\n * @param callback\n */\n enableUser(username: string, enable: boolean, callback: ioBroker.ErrorCallback): void {\n if (!username) {\n return tools.maybeCallbackWithError(callback, 'Please define user name, like: \"enable username\"');\n }\n if (username.startsWith('system.user.')) {\n username = username.substring('system.user.'.length);\n }\n\n if (username === 'admin' && !enable) {\n return tools.maybeCallbackWithError(callback, 'User admin cannot be disabled');\n }\n\n this.objects.getObject(`system.user.${username}`, (err, obj) => {\n if (err) {\n return tools.maybeCallbackWithError(callback, `Cannot read user: ${err.message}`);\n }\n if (!obj) {\n return tools.maybeCallbackWithError(callback, `User \"${username}\" not found`);\n }\n obj.common.enabled = enable;\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n this.objects.setObject(obj._id, obj, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n });\n }\n\n /**\n * Check if user password is valid\n *\n * @param username name of the user to check password for\n * @param password password to check\n * @param callback\n */\n checkUserPassword(username: string, password: string, callback: ioBroker.ErrorCallback): void {\n if (!username && !password) {\n prompt.message = '';\n prompt.delimiter = '';\n const schema = {\n properties: {\n username: {\n description: 'Enter username to check password:',\n pattern: /^[^'\"]+$/,\n message: 'No \" are allowed',\n hidden: false,\n },\n password: {\n description: 'Enter current password:',\n pattern: /^[^'\"]+$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n },\n } as const satisfies prompt.Schema;\n prompt.start();\n\n prompt.get<SchemaPropsToString<typeof schema>>(schema, (err, result) => {\n this.checkPassword(result.username, result.password, (err, res) => {\n if (err || !res) {\n return tools.maybeCallbackWithError(\n callback,\n `Password for user \"${result.username}\" does not match${err ? `: ${err.message}` : ''}`,\n );\n }\n return tools.maybeCallbackWithError(callback, null);\n });\n });\n } else if (!password) {\n prompt.message = '';\n prompt.delimiter = '';\n const schema = {\n properties: {\n password: {\n description: 'Enter current password:',\n pattern: /^[^'\"]+$/,\n message: 'No \" are allowed',\n hidden: true,\n },\n },\n } as const satisfies prompt.Schema;\n prompt.start();\n\n prompt.get<SchemaPropsToString<typeof schema>>(schema, (err, result) => {\n this.checkPassword(username, result.password, (err, res) => {\n if (err || !res) {\n return tools.maybeCallbackWithError(\n callback,\n `Password for user \"${username}\" does not match${err ? `: ${err.message}` : ''}`,\n );\n }\n return tools.maybeCallbackWithError(callback, null);\n });\n });\n } else {\n this.checkPassword(username, password, (err, res) => {\n if (err || !res) {\n return tools.maybeCallbackWithError(\n callback,\n `Password for user \"${username}\" does not match${err ? `: ${err.message}` : ''}`,\n );\n }\n return tools.maybeCallbackWithError(callback, null);\n });\n }\n }\n\n /**\n * Get user object\n *\n * @param username name of the user to get object of\n * @param callback\n */\n getUser(username: string, callback: (err?: Error | null, enabled?: boolean) => void): void {\n this.objects.getObject(`system.user.${username}`, (err, obj) => {\n if (err) {\n return tools.maybeCallbackWithError(callback, `Cannot read user: ${err.message}`);\n }\n if (!obj) {\n return tools.maybeCallbackWithError(callback, `User \"${username}\" not found`);\n }\n return tools.maybeCallbackWithError(callback, null, obj.common.enabled);\n });\n }\n\n /**\n * Get group object\n *\n * @param group groupname\n * @param callback\n */\n getGroup(group: string, callback: (err?: Error | null, enabled?: boolean, members?: string[]) => void): void {\n this.objects.getObject(`system.group.${group}`, (err, obj) => {\n if (err) {\n return tools.maybeCallbackWithError(callback, `Cannot read group: ${err.message}`);\n }\n if (!obj) {\n return tools.maybeCallbackWithError(callback, `Group \"${group}\" not found`);\n }\n return tools.maybeCallbackWithError(callback, null, obj.common.enabled, obj.common.members);\n });\n }\n\n /**\n * Enable or disable group by name\n *\n * @param group groupname\n * @param enable if enable or disable\n * @param callback\n */\n enableGroup(group: string, enable: boolean, callback: ioBroker.ErrorCallback): void {\n if (!group) {\n return tools.maybeCallbackWithError(callback, 'Please define group name, like: \"enable groupname\"');\n }\n if (group.startsWith('system.group.')) {\n group = group.substring('system.group.'.length);\n }\n\n if (group === 'administrator' && !enable) {\n return tools.maybeCallbackWithError(callback, 'Group \"administrator\" cannot be disabled');\n }\n\n this.objects.getObject(`system.group.${group}`, (err, obj) => {\n if (err) {\n return tools.maybeCallbackWithError(callback, `Cannot read group: ${err.message}`);\n }\n if (!obj) {\n return tools.maybeCallbackWithError(callback, `Group \"${group}\" not found`);\n }\n obj.common.enabled = enable;\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n this.objects.setObject(obj._id, obj, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n });\n }\n\n /**\n * Add new group\n *\n * @param group groupname\n */\n async addGroup(group: string): Promise<void> {\n const _group = group.replace(/\\s/g, '_');\n const obj = await this.objects.getObject(`system.group.${_group}`);\n if (obj) {\n throw new Error('Group yet exists');\n } else {\n // TODO: shoudln't it have some default acl? TS is worrying\n await this.objects.setObject(`system.group.${_group}`, {\n type: 'group',\n common: {\n name: group,\n enabled: true,\n members: [],\n },\n from: `system.host.${tools.getHostName()}.cli`,\n ts: Date.now(),\n native: {},\n } as any);\n }\n }\n\n /**\n * Remove group\n *\n * @param group groupname\n * @param callback\n */\n delGroup(group: string, callback: ioBroker.ErrorCallback): void {\n const _group = group.replace(/\\s/g, '_');\n\n if (group === 'administrator') {\n return tools.maybeCallbackWithError(callback, 'Group \"administrator\" cannot be deleted');\n }\n this.objects.getObject(`system.group.${_group}`, (err, obj) => {\n if (!obj) {\n return tools.maybeCallbackWithError(callback, 'Group does not exists');\n }\n this.objects.delObject(`system.group.${_group}`, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n });\n }\n\n /**\n * Remove user from given group\n *\n * @param username name of the user which will be removed from group\n * @param groupName name of the group user will be removed from\n * @param callback\n */\n removeUserFromGroup(username: string, groupName: string, callback: ioBroker.ErrorCallback): void {\n const _group = groupName.replace(/\\s/g, '_');\n this.objects.getObject(`system.group.${_group}`, (err, obj) => {\n if (!obj) {\n return tools.maybeCallbackWithError(callback, 'Group does not exists');\n }\n const pos = obj.common.members.indexOf(`system.user.${username}`);\n if (pos === -1) {\n return tools.maybeCallbackWithError(callback, 'User not in group');\n }\n obj.common.members.splice(pos, 1);\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = Date.now();\n this.objects.setObject(obj._id, obj, err => {\n return tools.maybeCallbackWithError(callback, err);\n });\n });\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["err", "obj", "password", "prompt"]
7
7
  }
@@ -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
  ));
@@ -37,6 +41,12 @@ class Vendor {
37
41
  constructor(options) {
38
42
  this.objects = options.objects;
39
43
  }
44
+ /**
45
+ * Deep merge of source into target object
46
+ *
47
+ * @param target target obj
48
+ * @param source source obj
49
+ */
40
50
  deepMerge(target, source) {
41
51
  Object.keys(source).forEach((attr) => {
42
52
  if (typeof source[attr] === "object" && !(source[attr] instanceof Array)) {
@@ -50,6 +60,13 @@ class Vendor {
50
60
  }
51
61
  });
52
62
  }
63
+ /**
64
+ * Read info from '/etc/iob_vendor.json' and executes instructions stored there
65
+ *
66
+ * @param file file path if not given, default path is used
67
+ * @param password vendor password
68
+ * @param logger
69
+ */
53
70
  async checkVendor(file, password, logger) {
54
71
  logger = logger || {
55
72
  debug: (text) => console.log(text),
@@ -95,7 +112,7 @@ class Vendor {
95
112
  name: "uuid",
96
113
  type: "uuid"
97
114
  },
98
- ts: new Date().getTime(),
115
+ ts: (/* @__PURE__ */ new Date()).getTime(),
99
116
  from: `system.host.${import_js_controller_common.tools.getHostName()}.tools`,
100
117
  native: {
101
118
  uuid
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/setup/setupVendor.ts"],
4
4
  "sourcesContent": ["import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';\nimport { tools } from '@iobroker/js-controller-common';\nimport fs from 'fs-extra';\nimport deepClone from 'deep-clone';\nimport { isDeepStrictEqual } from 'node:util';\n\nexport interface CLIVendorOptions {\n objects: ObjectsRedisClient;\n}\n\nconst VENDOR_FILE = '/etc/iob-vendor.json';\n\nexport class Vendor {\n private readonly objects: ObjectsRedisClient;\n\n constructor(options: CLIVendorOptions) {\n this.objects = options.objects;\n }\n\n /**\n * Deep merge of source into target object\n *\n * @param target target obj\n * @param source source obj\n */\n private deepMerge(target: Record<string, any>, source: Record<string, any>): void {\n Object.keys(source).forEach(attr => {\n if (typeof source[attr] === 'object' && !(source[attr] instanceof Array)) {\n if (target[attr] && typeof target[attr] !== 'object') {\n target[attr] = {};\n }\n target[attr] = target[attr] || {};\n this.deepMerge(target[attr], source[attr]);\n } else {\n target[attr] = source[attr];\n }\n });\n }\n\n /**\n * Read info from '/etc/iob_vendor.json' and executes instructions stored there\n *\n * @param file file path if not given, default path is used\n * @param password vendor password\n * @param logger\n */\n async checkVendor(file: string | undefined, password: string, logger?: any): Promise<void> {\n logger = logger || {\n debug: (text: string) => console.log(text),\n info: (text: string) => console.log(text),\n error: (text: string) => console.error(text),\n warn: (text: string) => console.warn(text),\n };\n\n file = file || VENDOR_FILE;\n let data: Record<string, any>;\n if (fs.existsSync(file)) {\n try {\n data = fs.readJSONSync(file);\n } catch (err) {\n logger.error(`cannot read or parse \"${file}\": ${err.message}`);\n throw new Error(`cannot read or parse \"${file}\": ${err.message}`);\n }\n } else {\n logger.error(`\"${file}\" does not exist`);\n throw new Error(`\"${file}\" does not exist`);\n }\n\n if (data.uuid) {\n const uuid = data.uuid;\n data.uuid = null;\n\n // check UUID\n const obj = await this.objects.getObject('system.meta.uuid');\n if (obj?.native) {\n if (obj.native.uuid !== uuid) {\n obj.native.uuid = uuid;\n\n logger.info(`Update \"system.meta.uuid:native.uuid\" = \"${obj.native.uuid}\"`);\n\n obj.nonEdit = obj.nonEdit || {};\n obj.nonEdit.password = password;\n try {\n await this.objects.setObjectAsync('system.meta.uuid', obj);\n logger.info(`object system.meta.uuid updated: ${uuid}`);\n } catch (e) {\n logger.error(`Cannot update system.meta.uuid: ${e.message}`);\n }\n }\n } else {\n try {\n // @ts-expect-error type uuid is not allowed TODO: allow it for meta?\n await this.objects.setObjectAsync('system.meta.uuid', {\n type: 'meta',\n common: {\n name: 'uuid',\n type: 'uuid',\n },\n ts: new Date().getTime(),\n from: `system.host.${tools.getHostName()}.tools`,\n native: {\n uuid: uuid,\n },\n });\n logger.info(`object system.meta.uuid created: ${uuid}`);\n } catch (e) {\n logger.error(`Cannot create system.meta.uuid: ${e.message}`);\n }\n }\n }\n\n // patch iobroker.json file\n if (data.iobroker) {\n const settings = fs.readJSONSync(tools.getConfigFileName());\n logger.info('Update iobroker.json file');\n this.deepMerge(settings, data.iobroker);\n fs.writeFileSync(tools.getConfigFileName(), JSON.stringify(settings, null, 2));\n }\n\n if (data.vendor) {\n const vendor = deepClone(data.vendor);\n data._vendor = deepClone(vendor);\n data.vendor = null;\n\n // store vendor\n try {\n const obj = await this.objects.getObject('system.config');\n if (obj && obj.native) {\n if (!isDeepStrictEqual(obj.native.vendor, vendor)) {\n obj.native.vendor = vendor;\n obj.nonEdit = obj.nonEdit || {};\n obj.nonEdit.password = password;\n await this.objects.setObjectAsync(obj._id, obj);\n logger.info('object system.config updated');\n }\n }\n } catch (e) {\n logger.error(`Cannot update system.config: ${e.message}`);\n }\n }\n\n // update all existing objects according to vendor\n if (data.objects) {\n for (let id of Object.keys(data.objects)) {\n if (!id.includes('*')) {\n const _newObj = data.objects[id];\n const obj = await this.objects.getObject(id);\n if (obj) {\n obj.nonEdit = obj.nonEdit || {};\n const originalObj = deepClone(obj);\n _newObj.nonEdit = _newObj.nonEdit || {};\n _newObj.nonEdit.passHash = obj.nonEdit.passHash;\n // merge objects\n tools.copyAttributes(_newObj, obj);\n\n if (!isDeepStrictEqual(originalObj, obj)) {\n delete obj.nonEdit.passHash;\n obj.nonEdit.password = password;\n logger.info(`Update \"${obj._id}\"`);\n try {\n await this.objects.setObjectAsync(obj._id, obj);\n logger.info(`object \"${obj._id}\" updated`);\n } catch (e) {\n logger.error(`Cannot update \"${obj._id}\": ${e.message}`);\n }\n }\n } else {\n try {\n await this.objects.setObjectAsync(id, _newObj);\n logger.info(`object \"${_newObj._id}\" updated`);\n } catch (e) {\n logger.error(`Cannot update ${id} \"${JSON.stringify(_newObj)}\": ${e.message}`);\n }\n }\n } else {\n id = id.replace(/\\*/g, '');\n const _obj = data.objects[id];\n const arr = await this.objects.getObjectListAsync(\n {\n startkey: id,\n endkey: `${id}\\u9999`,\n },\n { checked: true },\n );\n\n if (arr && arr.rows && arr.rows.length) {\n for (const row of arr.rows) {\n const obj = row.value;\n if (obj) {\n obj.nonEdit = obj.nonEdit || {};\n const originalObj = deepClone(obj);\n _obj.nonEdit = _obj.nonEdit || {};\n _obj.nonEdit.passHash = obj.nonEdit.passHash;\n // merge objects\n tools.copyAttributes(_obj, obj);\n\n if (!isDeepStrictEqual(originalObj, obj)) {\n delete obj.nonEdit.passHash;\n obj.nonEdit.password = password;\n logger.info(`Update \"${obj._id}\"`);\n try {\n await this.objects.setObjectAsync(obj._id, obj);\n logger.info(`object \"${obj._id}\" updated`);\n } catch (e) {\n logger.error(`Cannot update \"${obj._id}\": ${e.message}`);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // update host as last\n if (data.model) {\n const model = data.model;\n data.model = null;\n const hostname = tools.getHostName();\n const obj = await this.objects.getObject(`system.host.${hostname}`);\n if (obj && obj.common) {\n if (\n (model.name && model.name !== 'JS controller' && obj.common.title === 'JS controller') ||\n (model.icon && !obj.common.icon) ||\n (model.color && !obj.common.color)\n ) {\n if (model.name) {\n obj.common.title = model.name;\n }\n if (model.icon) {\n obj.common.icon = model.icon;\n }\n if (model.color) {\n obj.common.color = model.color;\n }\n\n obj.nonEdit = obj.nonEdit || {};\n obj.nonEdit.password = password;\n\n obj.common.title &&\n logger.info(`Update \"system.host.${hostname}:common.title\" = \"${obj.common.title}\"`);\n obj.common.icon &&\n logger.info(`Update \"system.host.${hostname}:common.icon\" = \"${!!obj.common.icon}\"`);\n obj.common.color &&\n logger.info(`Update \"system.host.${hostname}:common.color\" = \"${obj.common.color}\"`);\n\n try {\n await this.objects.setObjectAsync(obj._id, obj);\n logger.info(`object \"system.host.${hostname}\" updated`);\n } catch (e) {\n logger.error(`Cannot update \"system.host.${hostname}\": ${e.message}`);\n }\n }\n }\n }\n\n // restart ioBroker\n setTimeout(() => {\n logger.warn('RESTART!');\n process.exit(-1);\n }, 2_000);\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["fs", "deepClone"]
7
7
  }
@@ -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
  ));
@@ -38,6 +42,13 @@ class VisDebug {
38
42
  this.objects = options.objects;
39
43
  this.processExit = options.processExit;
40
44
  }
45
+ /**
46
+ * Upload widget directory to vis directory
47
+ *
48
+ * @param widgetDir directory of widgets
49
+ * @param adapter name of the adapter
50
+ * @param pathW widgets path
51
+ */
41
52
  async uploadWidgets(widgetDir, adapter, pathW) {
42
53
  if (!import_fs_extra.default.existsSync(widgetDir)) {
43
54
  console.error(`Cannot upload widgets, because folder "${widgetDir}" does not exist`);
@@ -54,6 +65,11 @@ class VisDebug {
54
65
  }
55
66
  }
56
67
  }
68
+ /**
69
+ * Activates vis debug for given widget
70
+ *
71
+ * @param widgetset widget to activate vis debug for
72
+ */
57
73
  async enableDebug(widgetset) {
58
74
  let adapterDir;
59
75
  if (widgetset) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/setup/setupVisDebug.ts"],
4
4
  "sourcesContent": ["import fs from 'fs-extra';\nimport { tools } from '@iobroker/js-controller-common';\nimport path from 'node:path';\nimport { EXIT_CODES } from '@iobroker/js-controller-common';\n\nimport type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';\nimport type { ProcessExitCallback } from '../_Types.js';\n\nexport interface CLIVisDebugOptions {\n objects: ObjectsRedisClient;\n processExit: ProcessExitCallback;\n}\n\nexport class VisDebug {\n private readonly objects: ObjectsRedisClient;\n private readonly processExit: ProcessExitCallback;\n\n constructor(options: CLIVisDebugOptions) {\n this.objects = options.objects;\n this.processExit = options.processExit;\n }\n\n /**\n * Upload widget directory to vis directory\n *\n * @param widgetDir directory of widgets\n * @param adapter name of the adapter\n * @param pathW widgets path\n */\n private async uploadWidgets(widgetDir: string, adapter: string, pathW: string): Promise<void> {\n if (!fs.existsSync(widgetDir)) {\n console.error(`Cannot upload widgets, because folder \"${widgetDir}\" does not exist`);\n return;\n }\n const dirs = fs.readdirSync(widgetDir);\n\n for (const dir of dirs) {\n const stat = fs.statSync(`${widgetDir}/${dir}`);\n if (stat.isDirectory()) {\n await this.uploadWidgets(`${widgetDir}/${dir}`, adapter, `${pathW}/${dir}`);\n } else {\n console.log(`Upload \"${widgetDir}/${dir}\"`);\n await this.objects.writeFile(adapter, `${pathW}/${dir}`, fs.readFileSync(`${widgetDir}/${dir}`));\n }\n }\n }\n\n /**\n * Activates vis debug for given widget\n *\n * @param widgetset widget to activate vis debug for\n */\n async enableDebug(widgetset: string): Promise<void> {\n let adapterDir: string | undefined;\n\n if (widgetset) {\n // Try to find out the adapter directory out of a list of options\n const adapterNames2Try = [`vis-${widgetset}`, widgetset];\n if (adapterNames2Try[0] === adapterNames2Try[1]) {\n adapterNames2Try.splice(1, 1);\n }\n for (const adapterName of adapterNames2Try) {\n try {\n const adapterDir2Try = tools.getAdapterDir(adapterName)!;\n // Query the entry\n const stats = fs.statSync(adapterDir2Try);\n\n // Is it a directory?\n if (stats.isDirectory()) {\n //found it!\n adapterDir = adapterDir2Try;\n break;\n }\n } catch {\n // OK\n }\n }\n\n if (!adapterDir) {\n console.error(`Adapter not found. Tried: ${adapterNames2Try.join(', ')}`);\n return void this.processExit(EXIT_CODES.MISSING_ADAPTER_FILES);\n }\n }\n\n // copy index.html.original to index.html\n // copy edit.html.original to edit.html\n // correct appName.json\n // correct config.js\n const controllerDir = tools.getControllerDir();\n let visDir = `${controllerDir}/node_modules/${tools.appName.toLowerCase()}.vis`;\n if (!fs.existsSync(visDir)) {\n visDir = `${controllerDir}/node_modules/${tools.appName.toLowerCase()}.vis`;\n if (!fs.existsSync(visDir)) {\n visDir = `${controllerDir}/../${tools.appName.toLowerCase()}.vis`;\n if (!fs.existsSync(visDir)) {\n visDir = `${controllerDir}/../${tools.appName.toLowerCase()}.vis`;\n if (!fs.existsSync(visDir)) {\n console.error(`Cannot find ${tools.appName.toLowerCase()}.vis`);\n return void this.processExit(EXIT_CODES.MISSING_ADAPTER_FILES);\n }\n }\n }\n }\n\n if (fs.existsSync(`${visDir}/www/index.html.original`)) {\n console.log(`Upload \"${path.normalize(`${visDir}/www/index.html.original`)}\"`);\n const file = fs.readFileSync(`${visDir}/www/index.html.original`, 'utf8');\n try {\n await this.objects.writeFile('vis', 'index.html', file);\n } catch (e) {\n console.error(`Cannot save ${visDir}/vis/index.html: ${e.message}`);\n }\n }\n\n if (fs.existsSync(`${visDir}/www/edit.html.original`)) {\n console.log(`Upload \"${path.normalize(`${visDir}/www/edit.html.original`)}\"`);\n const file = fs.readFileSync(`${visDir}/www/edit.html.original`, 'utf8');\n try {\n await this.objects.writeFile('vis', 'edit.html', file);\n } catch (e) {\n console.error(`Cannot save ${visDir}/vis/index.html: ${e.message}`);\n }\n }\n\n if (fs.existsSync(`${visDir}/www/cache.manifest`)) {\n console.log(`Modify \"${path.normalize(`${visDir}/www/cache.manifest`)}\"`);\n let file = fs.readFileSync(`${visDir}/www/cache.manifest`, 'utf-8');\n // if file does not exists\n if (!file.toString().trim()) {\n const version = fs.readJSONSync(`${visDir}/package.json`).version;\n file = `CACHE MANIFEST\n#\n# vis Version ${version}\n# dev build 2\n\n\n\nNETWORK:\n *\n\n\nCACHE:\n ./img/disconnect.png\n\nFALLBACK:\n ./index.html ./offline.html\n ./edit.html ./offline.html\n`;\n }\n const n = file.match(/# dev build (\\d+)/)![1];\n file = file.replace(`# dev build ${n}`, `# dev build ${parseInt(n, 10) + 1}`);\n // also update it in the vis npm dir like vis does it by itself\n fs.writeFileSync(`${visDir}/www/cache.manifest`, file);\n try {\n await this.objects.writeFile('vis', 'cache.manifest', file);\n } catch (e) {\n console.error(`Cannot save ${visDir}/www/cache.manifest: ${e.message}`);\n }\n }\n\n const file = fs.readJSONSync(tools.getConfigFileName(), 'utf8');\n\n if (!file.objects.noFileCache) {\n file.objects.noFileCache = true;\n fs.writeFileSync(tools.getConfigFileName(), JSON.stringify(file, null, 2));\n await this.objects.enableFileCacheAsync(false);\n console.log('Disable cache. ioBroker restart required! Execute \"iobroker restart\"');\n }\n\n if (widgetset) {\n const { file } = await this.objects.readFile('vis', 'js/config.js', null);\n let content = typeof file === 'string' ? file : file.toString();\n\n content = content.replace(/[\\r\\n]/g, '');\n const json: Record<string, any> = JSON.parse(content.match(/\"widgetSets\":\\s(.*)};/)![1]);\n let found = false;\n for (const widget of Object.values(json)) {\n if (widget === widgetset || widget.name === widgetset) {\n found = true;\n break;\n }\n }\n // if widget-set not found in config.js\n if (!found) {\n console.log('Modify config.js');\n const pckg = fs.readJSONSync(`${adapterDir}/io-package.json`);\n if (pckg.native && pckg.native.dependencies && pckg.native.dependencies.length) {\n json.push({\n name: widgetset,\n depends: pckg.native.dependencies,\n });\n } else {\n json.push(widgetset);\n }\n\n content = content.replace(/\"widgetSets\":\\s+.*};/, `\"widgetSets\": ${JSON.stringify(json, null, 2)}};`);\n\n await this.objects.writeFile('vis', 'js/config.js', content);\n // upload all files into vis\n console.log(`Upload ${adapterDir}/widgets`);\n await this.uploadWidgets(`${adapterDir}/widgets`, 'vis', 'widgets');\n } else {\n // upload all files into vis\n console.log(`Upload \"${adapterDir}/widgets\"`);\n await this.uploadWidgets(`${adapterDir}/widgets`, 'vis', 'widgets');\n }\n }\n\n this.processExit(EXIT_CODES.NO_ERROR);\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_js_controller_common", "fs", "path", "file"]
7
7
  }
@@ -10,7 +10,7 @@ interface GetRepositoryOptions {
10
10
  *
11
11
  * @param options Repository specific options
12
12
  */
13
- export declare function getRepository(options: GetRepositoryOptions): Promise<Record<string, any>>;
13
+ export declare function getRepository(options: GetRepositoryOptions): Promise<Record<string, ioBroker.RepositoryJsonAdapterContent>>;
14
14
  interface VersionOptions {
15
15
  /** The adapter name to check the version for */
16
16
  adapterName: string;
@@ -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
  ));
@@ -39,11 +43,11 @@ async function getRepository(options) {
39
43
  const { repoName } = options;
40
44
  let repoNameOrArray = repoName;
41
45
  if (!repoName || repoName === "auto") {
42
- const systemConfig = await objects.getObjectAsync("system.config");
46
+ const systemConfig = await objects.getObject("system.config");
43
47
  repoNameOrArray = systemConfig.common.activeRepo;
44
48
  }
45
49
  const repoArr = !Array.isArray(repoNameOrArray) ? [repoNameOrArray] : repoNameOrArray;
46
- const systemRepos = await objects.getObjectAsync("system.repositories");
50
+ const systemRepos = await objects.getObject("system.repositories");
47
51
  const allSources = {};
48
52
  let changed = false;
49
53
  let anyFound = false;
@@ -63,7 +67,7 @@ async function getRepository(options) {
63
67
  systemRepos.native.repositories[repoUrl].json = data.json;
64
68
  systemRepos.native.repositories[repoUrl].hash = data.hash;
65
69
  systemRepos.from = `system.host.${import_js_controller_common2.tools.getHostName()}.cli`;
66
- systemRepos.ts = new Date().getTime();
70
+ systemRepos.ts = (/* @__PURE__ */ new Date()).getTime();
67
71
  changed = true;
68
72
  }
69
73
  if (systemRepos.native.repositories[repoUrl].json) {
@@ -72,7 +76,7 @@ async function getRepository(options) {
72
76
  }
73
77
  }
74
78
  if (changed) {
75
- await objects.setObjectAsync("system.repositories", systemRepos);
79
+ await objects.setObject("system.repositories", systemRepos);
76
80
  }
77
81
  }
78
82
  if (!anyFound) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/setup/utils.ts"],
4
- "sourcesContent": ["import { EXIT_CODES } from '@iobroker/js-controller-common';\nimport { tools } from '@iobroker/js-controller-common';\nimport type { Client as ObjectsClient } from '@iobroker/db-objects-redis';\nimport semver from 'semver';\nimport { IoBrokerError } from '@/lib/setup/customError.js';\n\ninterface GetRepositoryOptions {\n /** The objects DB client */\n objects: ObjectsClient;\n /** Name of the repository */\n repoName?: string;\n}\n\n/**\n * Get JSON of the given repository\n *\n * @param options Repository specific options\n */\nexport async function getRepository(options: GetRepositoryOptions): Promise<Record<string, any>> {\n const { objects } = options;\n const { repoName } = options;\n\n let repoNameOrArray: string | string[] | undefined = repoName;\n if (!repoName || repoName === 'auto') {\n const systemConfig = await objects.getObjectAsync('system.config');\n repoNameOrArray = systemConfig!.common.activeRepo;\n }\n\n const repoArr = !Array.isArray(repoNameOrArray) ? [repoNameOrArray!] : repoNameOrArray;\n\n const systemRepos = (await objects.getObjectAsync('system.repositories'))!;\n\n const allSources = {};\n let changed = false;\n let anyFound = false;\n for (const repoUrl of repoArr) {\n const repo = systemRepos.native.repositories[repoUrl];\n if (repo) {\n if (typeof repo === 'string') {\n systemRepos.native.repositories[repo] = {\n link: repo,\n json: null,\n };\n changed = true;\n }\n\n // If repo is not yet loaded\n if (!systemRepos.native.repositories[repoUrl].json) {\n console.log(`Update repository \"${repoUrl}\" under \"${systemRepos.native.repositories[repoUrl].link}\"`);\n const data = await tools.getRepositoryFileAsync(systemRepos.native.repositories[repoUrl].link);\n systemRepos.native.repositories[repoUrl].json = data.json;\n systemRepos.native.repositories[repoUrl].hash = data.hash;\n systemRepos.from = `system.host.${tools.getHostName()}.cli`;\n systemRepos.ts = new Date().getTime();\n changed = true;\n }\n\n if (systemRepos.native.repositories[repoUrl].json) {\n Object.assign(allSources, systemRepos.native.repositories[repoUrl].json);\n anyFound = true;\n }\n }\n\n if (changed) {\n await objects.setObjectAsync('system.repositories', systemRepos);\n }\n }\n\n if (!anyFound) {\n let message: string;\n if (repoArr.length) {\n message = `ERROR: No repositories defined matching \"${repoArr.join(\n ' | ',\n )}\". Please use one of ${Object.keys(systemRepos.native.repositories)\n .map(repo => `\"${repo}\"`)\n .join(', ')}.`;\n } else {\n message = `ERROR: No repositories defined. Please define one repository as active: \"iob repo set <${Object.keys(\n systemRepos.native.repositories,\n ).join(' | ')}>\"`;\n }\n\n throw new IoBrokerError({ message, code: EXIT_CODES.INVALID_REPO });\n } else {\n return allSources;\n }\n}\n\ninterface VersionOptions {\n /** The adapter name to check the version for */\n adapterName: string;\n /** The objects DB instance */\n objects: ObjectsClient;\n}\n\ninterface IgnoreVersionOptions extends VersionOptions {\n /** The version which will be checked */\n version: string;\n}\n\n/**\n * Get info if a specific version should be ignored of this adapter\n *\n * @param options name and target version of the adapter\n */\nexport async function isVersionIgnored(options: IgnoreVersionOptions): Promise<boolean> {\n const { adapterName, version, objects } = options;\n const obj = await objects.getObject(`system.host.${tools.getHostName()}.adapter.${adapterName}`);\n\n if (obj?.common.ignoreVersion === undefined) {\n return false;\n }\n\n return semver.satisfies(version, obj?.common.ignoreVersion);\n}\n\n/**\n * Ignore a specific version of an adapter\n *\n * @param options name and target version of the adapter\n */\nexport async function ignoreVersion(options: IgnoreVersionOptions): Promise<void> {\n const { adapterName, version, objects } = options;\n const id = `system.host.${tools.getHostName()}.adapter.${adapterName}`;\n const obj = await objects.getObject(id);\n\n if (!obj) {\n throw new IoBrokerError({ code: EXIT_CODES.CANNOT_SET_OBJECT, message: `Object \"${id}\" does not exist` });\n }\n\n obj.common.ignoreVersion = version;\n\n await objects.setObject(id, obj);\n}\n\n/**\n * Recognize all updates of adapter again\n *\n * @param options name of the adapter\n */\nexport async function recognizeVersion(options: VersionOptions): Promise<void> {\n const { adapterName, objects } = options;\n const id = `system.host.${tools.getHostName()}.adapter.${adapterName}`;\n const obj = await objects.getObject(id);\n\n if (!obj) {\n throw new IoBrokerError({ code: EXIT_CODES.CANNOT_SET_OBJECT, message: `Object \"${id}\" does not exist` });\n }\n\n delete obj.common.ignoreVersion;\n\n await objects.setObject(id, obj);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { EXIT_CODES } from '@iobroker/js-controller-common';\nimport { tools } from '@iobroker/js-controller-common';\nimport type { Client as ObjectsClient } from '@iobroker/db-objects-redis';\nimport semver from 'semver';\nimport { IoBrokerError } from '@/lib/setup/customError.js';\n\ninterface GetRepositoryOptions {\n /** The objects DB client */\n objects: ObjectsClient;\n /** Name of the repository */\n repoName?: string;\n}\n\n/**\n * Get JSON of the given repository\n *\n * @param options Repository specific options\n */\nexport async function getRepository(\n options: GetRepositoryOptions,\n): Promise<Record<string, ioBroker.RepositoryJsonAdapterContent>> {\n const { objects } = options;\n const { repoName } = options;\n\n let repoNameOrArray: string | string[] | undefined = repoName;\n if (!repoName || repoName === 'auto') {\n const systemConfig = await objects.getObject('system.config');\n repoNameOrArray = systemConfig!.common.activeRepo;\n }\n\n const repoArr = !Array.isArray(repoNameOrArray) ? [repoNameOrArray!] : repoNameOrArray;\n\n const systemRepos = (await objects.getObject('system.repositories'))!;\n\n const allSources: Record<string, ioBroker.RepositoryJsonAdapterContent> = {};\n let changed = false;\n let anyFound = false;\n for (const repoUrl of repoArr) {\n const repo = systemRepos.native.repositories[repoUrl];\n if (repo) {\n if (typeof repo === 'string') {\n systemRepos.native.repositories[repo] = {\n link: repo,\n json: null,\n };\n changed = true;\n }\n\n // If repo is not yet loaded\n if (!systemRepos.native.repositories[repoUrl].json) {\n console.log(`Update repository \"${repoUrl}\" under \"${systemRepos.native.repositories[repoUrl].link}\"`);\n const data = await tools.getRepositoryFileAsync(systemRepos.native.repositories[repoUrl].link);\n systemRepos.native.repositories[repoUrl].json = data.json;\n systemRepos.native.repositories[repoUrl].hash = data.hash;\n systemRepos.from = `system.host.${tools.getHostName()}.cli`;\n systemRepos.ts = new Date().getTime();\n changed = true;\n }\n\n if (systemRepos.native.repositories[repoUrl].json) {\n Object.assign(allSources, systemRepos.native.repositories[repoUrl].json);\n anyFound = true;\n }\n }\n\n if (changed) {\n await objects.setObject('system.repositories', systemRepos);\n }\n }\n\n if (!anyFound) {\n let message: string;\n if (repoArr.length) {\n message = `ERROR: No repositories defined matching \"${repoArr.join(\n ' | ',\n )}\". Please use one of ${Object.keys(systemRepos.native.repositories)\n .map(repo => `\"${repo}\"`)\n .join(', ')}.`;\n } else {\n message = `ERROR: No repositories defined. Please define one repository as active: \"iob repo set <${Object.keys(\n systemRepos.native.repositories,\n ).join(' | ')}>\"`;\n }\n\n throw new IoBrokerError({ message, code: EXIT_CODES.INVALID_REPO });\n } else {\n return allSources;\n }\n}\n\ninterface VersionOptions {\n /** The adapter name to check the version for */\n adapterName: string;\n /** The objects DB instance */\n objects: ObjectsClient;\n}\n\ninterface IgnoreVersionOptions extends VersionOptions {\n /** The version which will be checked */\n version: string;\n}\n\n/**\n * Get info if a specific version should be ignored of this adapter\n *\n * @param options name and target version of the adapter\n */\nexport async function isVersionIgnored(options: IgnoreVersionOptions): Promise<boolean> {\n const { adapterName, version, objects } = options;\n const obj = await objects.getObject(`system.host.${tools.getHostName()}.adapter.${adapterName}`);\n\n if (obj?.common.ignoreVersion === undefined) {\n return false;\n }\n\n return semver.satisfies(version, obj?.common.ignoreVersion);\n}\n\n/**\n * Ignore a specific version of an adapter\n *\n * @param options name and target version of the adapter\n */\nexport async function ignoreVersion(options: IgnoreVersionOptions): Promise<void> {\n const { adapterName, version, objects } = options;\n const id = `system.host.${tools.getHostName()}.adapter.${adapterName}`;\n const obj = await objects.getObject(id);\n\n if (!obj) {\n throw new IoBrokerError({ code: EXIT_CODES.CANNOT_SET_OBJECT, message: `Object \"${id}\" does not exist` });\n }\n\n obj.common.ignoreVersion = version;\n\n await objects.setObject(id, obj);\n}\n\n/**\n * Recognize all updates of adapter again\n *\n * @param options name of the adapter\n */\nexport async function recognizeVersion(options: VersionOptions): Promise<void> {\n const { adapterName, objects } = options;\n const id = `system.host.${tools.getHostName()}.adapter.${adapterName}`;\n const obj = await objects.getObject(id);\n\n if (!obj) {\n throw new IoBrokerError({ code: EXIT_CODES.CANNOT_SET_OBJECT, message: `Object \"${id}\" does not exist` });\n }\n\n delete obj.common.ignoreVersion;\n\n await objects.setObject(id, obj);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_js_controller_common", "semver"]
7
7
  }
@@ -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
  ));
@@ -27,6 +31,7 @@ __export(setup_exports, {
27
31
  execute: () => execute
28
32
  });
29
33
  module.exports = __toCommonJS(setup_exports);
34
+ var __import_meta_url = typeof document === "undefined" ? new (require("url".replace("", ""))).URL("file:" + __filename).href : document.currentScript && document.currentScript.src || new URL("main.js", document.baseURI).href;
30
35
  var import_fs_extra = __toESM(require("fs-extra"), 1);
31
36
  var import_js_controller_common = require("@iobroker/js-controller-common");
32
37
  var import_js_controller_common2 = require("@iobroker/js-controller-common");
@@ -54,9 +59,8 @@ var import_customError = require("../lib/setup/customError.js");
54
59
  var url = __toESM(require("node:url"), 1);
55
60
  var events = __toESM(require("node:events"), 1);
56
61
  var import_node_module = require("node:module");
57
- const import_meta = {};
58
- const thisDir = url.fileURLToPath(new URL(".", import_meta.url || `file://${__filename}`));
59
- const require2 = (0, import_node_module.createRequire)(import_meta.url || `file://${__filename}`);
62
+ const thisDir = url.fileURLToPath(new URL(".", __import_meta_url || `file://${__filename}`));
63
+ const require2 = (0, import_node_module.createRequire)(__import_meta_url || `file://${__filename}`);
60
64
  import_js_controller_common.tools.ensureDNSOrder();
61
65
  const debug = (0, import_debug.default)("iobroker:cli");
62
66
  events.EventEmitter.setMaxListeners(100);
@@ -112,6 +116,7 @@ function initYargs() {
112
116
  }
113
117
  }).command("info", "Shows the host info", {}).command("logs [<adapter>]", "Monitor log", {
114
118
  "lines=1000": {
119
+ // TODO: it's the only place we use = we should avoid this
115
120
  describe: "Number of lines",
116
121
  type: "string"
117
122
  },
@@ -555,7 +560,8 @@ async function processCommand(command, args, params, callback) {
555
560
  "Disk free": formatters.formatBytes
556
561
  };
557
562
  for (const attr of Object.keys(data)) {
558
- console.log(`${attr}${attr.length < 16 ? new Array(16 - attr.length).join(" ") : ""}: ${formatInfo[attr] ? formatInfo[attr](data[attr]) : data[attr] || ""}`);
563
+ console.log(`${attr}${attr.length < 16 ? new Array(16 - attr.length).join(" ") : ""}: ${// @ts-expect-error todo would need checks
564
+ formatInfo[attr] ? formatInfo[attr](data[attr]) : data[attr] || ""}`);
559
565
  }
560
566
  } catch (err) {
561
567
  console.error(`Cannot read host info: ${typeof err === "object" ? JSON.stringify(err) : err}`);
@@ -1008,6 +1014,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1008
1014
  row.value.common.name,
1009
1015
  "*",
1010
1016
  { user: "system.user.admin" },
1017
+ // @ts-expect-error todo this looks wrong, we have no cb args other than err
1011
1018
  async (err2, processed, _id) => {
1012
1019
  if (!err2 && processed) {
1013
1020
  files.push({ id: _id, processed });
@@ -1090,6 +1097,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1090
1097
  row.value.common.name,
1091
1098
  "*",
1092
1099
  { user: "system.user.admin" },
1100
+ // @ts-expect-error todo id should not exist according to types check it
1093
1101
  async (err2, processed, _id) => {
1094
1102
  if (!err2 && processed) {
1095
1103
  files.push({ id: _id, processed });
@@ -1183,6 +1191,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1183
1191
  user: "system.user.admin",
1184
1192
  mode
1185
1193
  },
1194
+ // @ts-expect-error todo _id should not exist how to handle
1186
1195
  async (err2, processed, _id) => {
1187
1196
  if (!err2 && processed) {
1188
1197
  files.push({ id: _id, processed });
@@ -1286,6 +1295,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1286
1295
  owner: user,
1287
1296
  ownerGroup: group
1288
1297
  },
1298
+ // @ts-expect-error todo _id should not exist how to handle
1289
1299
  async (err2, processed, _id) => {
1290
1300
  if (!err2 && processed) {
1291
1301
  files.push({ id: _id, processed });
@@ -1609,6 +1619,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1609
1619
  });
1610
1620
  break;
1611
1621
  }
1622
+ // Create package.json in /opt/' + tools.appName + '
1612
1623
  case "package": {
1613
1624
  const json = {
1614
1625
  name: import_js_controller_common.tools.appName,
@@ -1697,7 +1708,7 @@ ${import_js_controller_common.tools.appName} upload /file/picture.png /vis-2.0/m
1697
1708
  }
1698
1709
  if (changed) {
1699
1710
  obj.from = `system.host.${import_js_controller_common.tools.getHostName()}.cli`;
1700
- obj.ts = new Date().getTime();
1711
+ obj.ts = (/* @__PURE__ */ new Date()).getTime();
1701
1712
  objects.setObject(`system.adapter.${instance}`, obj, () => {
1702
1713
  console.log(`Instance settings for "${instance}" are changed.`);
1703
1714
  return void callback();
@@ -2275,7 +2286,7 @@ function unsetup(params, callback) {
2275
2286
  obj.native && delete obj.native.secret;
2276
2287
  }
2277
2288
  obj.from = `system.host.${import_js_controller_common.tools.getHostName()}.cli`;
2278
- obj.ts = new Date().getTime();
2289
+ obj.ts = (/* @__PURE__ */ new Date()).getTime();
2279
2290
  objects.setObject("system.config", obj, (err2) => {
2280
2291
  if (err2) {
2281
2292
  console.log(`not found: ${err2.message}`);