@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
@@ -44,6 +44,7 @@ __reExport(esm_exports, require("./lib/_Types.js"), module.exports);
44
44
  Upload,
45
45
  Vendor,
46
46
  dbConnectAsync,
47
- execute
47
+ execute,
48
+ ...require("./lib/_Types.js")
48
49
  });
49
50
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export { execute } from '@/lib/setup.js';\nexport { dbConnectAsync } from '@/lib/setup/dbConnection.js';\nexport { Vendor } from '@/lib/setup/setupVendor.js';\nexport { Upload } from '@/lib/setup/setupUpload.js';\nexport { Upgrade } from '@/lib/setup/setupUpgrade.js';\nexport { BackupRestore } from '@/lib/setup/setupBackup.js';\nexport { PacketManager, type UpgradePacket } from '@/lib/setup/setupPacketManager.js';\nexport * from '@/lib/_Types.js';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;mBAAwB;AACxB,0BAA+B;AAC/B,yBAAuB;AACvB,yBAAuB;AACvB,0BAAwB;AACxB,yBAA8B;AAC9B,gCAAkD;AAClD,wBAAc,4BAPd;",
4
+ "sourcesContent": ["/// <reference types=\"@iobroker/types-dev\" />\nexport { execute } from '@/lib/setup.js';\nexport { dbConnectAsync } from '@/lib/setup/dbConnection.js';\nexport { Vendor } from '@/lib/setup/setupVendor.js';\nexport { Upload } from '@/lib/setup/setupUpload.js';\nexport { Upgrade } from '@/lib/setup/setupUpgrade.js';\nexport { BackupRestore } from '@/lib/setup/setupBackup.js';\nexport { PacketManager, type UpgradePacket } from '@/lib/setup/setupPacketManager.js';\nexport * from '@/lib/_Types.js';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AACA,mBAAwB;AACxB,0BAA+B;AAC/B,yBAAuB;AACvB,yBAAuB;AACvB,0BAAwB;AACxB,yBAA8B;AAC9B,gCAAkD;AAClD,wBAAc,4BARd;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="@iobroker/types-dev" />
2
1
  import type { Client as StatesRedisClient } from '@iobroker/db-states-redis';
3
2
  import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
4
3
  export type ProcessExitCallback = (exitCode: number) => void;
@@ -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
  ));
@@ -35,6 +39,11 @@ class CLICert extends import_cliCommand.CLICommand {
35
39
  constructor(options) {
36
40
  super(options);
37
41
  }
42
+ /**
43
+ * Executes a command
44
+ *
45
+ * @param args
46
+ */
38
47
  execute(args) {
39
48
  const { callback, showHelp } = this.options;
40
49
  const command = args[0];
@@ -50,6 +59,9 @@ class CLICert extends import_cliCommand.CLICommand {
50
59
  return void callback(3);
51
60
  }
52
61
  }
62
+ /**
63
+ * Create new private certificate
64
+ */
53
65
  async create() {
54
66
  const id = "system.certificates";
55
67
  const certPropPath = "native.certificates";
@@ -67,6 +79,11 @@ class CLICert extends import_cliCommand.CLICommand {
67
79
  }
68
80
  this.options.callback(import_js_controller_common.EXIT_CODES.NO_ERROR);
69
81
  }
82
+ /**
83
+ * View the certificates on CLI
84
+ *
85
+ * @param _args
86
+ */
70
87
  view(_args) {
71
88
  let certName = _args[1];
72
89
  if (certName === void 0) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/cli/cliCert.ts"],
4
4
  "sourcesContent": ["import { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport { CLIObjects } from './cliObjects.js';\nimport * as messages from './messages.js';\nimport { tools, EXIT_CODES } from '@iobroker/js-controller-common';\n\n/** Command ioBroker cert ... */\nexport class CLICert extends CLICommand {\n constructor(options: CLICommandOptions) {\n super(options);\n }\n\n /**\n * Executes a command\n *\n * @param args\n */\n execute(args: any[]): void | Promise<void> {\n const { callback, showHelp } = this.options;\n const command = args[0];\n\n switch (command) {\n case 'renew':\n case 'create':\n return this.create();\n case 'view':\n return this.view(args);\n default:\n messages.error.unknownCommand('cert', command);\n showHelp();\n return void callback(3);\n }\n }\n\n /**\n * Create new private certificate\n */\n async create(): Promise<void> {\n const id = 'system.certificates';\n const certPropPath = 'native.certificates';\n\n const certificates = tools.generateDefaultCertificates();\n if (certificates) {\n console.log(JSON.stringify(certificates, null, 2));\n for (const [certName, cert] of Object.entries(certificates)) {\n // use the command `iobroker object set ...` to update the certificate\n console.log(`Update certificate ${certName}`);\n\n const objectsCommandArgs = ['set', id, `${certPropPath}.${certName}=${cert as string}`];\n await new Promise(resolve => {\n const objectsCommand = new CLIObjects({ ...this.options, callback: resolve });\n objectsCommand.execute(objectsCommandArgs);\n });\n }\n }\n\n this.options.callback(EXIT_CODES.NO_ERROR);\n }\n\n /**\n * View the certificates on CLI\n *\n * @param _args\n */\n view(_args: any[]): void {\n let certName = _args[1];\n if (certName === undefined) {\n certName = 'defaultPublic';\n }\n const { callback, dbConnect } = this.options;\n dbConnect(params => {\n const { objects } = params;\n\n objects.getObject('system.certificates', (err, certs) => {\n if (!err && certs?.native?.certificates?.[certName]) {\n const certInfo = tools.getCertificateInfo(certs.native.certificates[certName]);\n if (certInfo) {\n console.log(JSON.stringify(certInfo, null, 2));\n return void callback(EXIT_CODES.NO_ERROR);\n }\n messages.error.cert(certName);\n return void callback(3);\n }\n messages.error.cert(certName);\n return void callback(3);\n });\n });\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;wBAAmD;AACnD,wBAA2B;AAC3B,eAA0B;AAC1B,kCAAkC;AAG5B,MAAO,gBAAgB,6BAAU;EACnC,YAAY,SAA0B;AAClC,UAAM,OAAO;EACjB;EAOA,QAAQ,MAAW;AACf,UAAM,EAAE,UAAU,SAAQ,IAAK,KAAK;AACpC,UAAM,UAAU,KAAK;AAErB,YAAQ,SAAS;MACb,KAAK;MACL,KAAK;AACD,eAAO,KAAK,OAAM;MACtB,KAAK;AACD,eAAO,KAAK,KAAK,IAAI;MACzB;AACI,iBAAS,MAAM,eAAe,QAAQ,OAAO;AAC7C,iBAAQ;AACR,eAAO,KAAK,SAAS,CAAC;IAC9B;EACJ;EAKA,MAAM,SAAM;AACR,UAAM,KAAK;AACX,UAAM,eAAe;AAErB,UAAM,eAAe,kCAAM,4BAA2B;AACtD,QAAI,cAAc;AACd,cAAQ,IAAI,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AACjD,iBAAW,CAAC,UAAU,IAAI,KAAK,OAAO,QAAQ,YAAY,GAAG;AAEzD,gBAAQ,IAAI,sBAAsB,UAAU;AAE5C,cAAM,qBAAqB,CAAC,OAAO,IAAI,GAAG,gBAAgB,YAAY,MAAgB;AACtF,cAAM,IAAI,QAAQ,aAAU;AACxB,gBAAM,iBAAiB,IAAI,6BAAW,EAAE,GAAG,KAAK,SAAS,UAAU,QAAO,CAAE;AAC5E,yBAAe,QAAQ,kBAAkB;QAC7C,CAAC;MACL;IACJ;AAEA,SAAK,QAAQ,SAAS,uCAAW,QAAQ;EAC7C;EAOA,KAAK,OAAY;AACb,QAAI,WAAW,MAAM;AACrB,QAAI,aAAa,QAAW;AACxB,iBAAW;IACf;AACA,UAAM,EAAE,UAAU,UAAS,IAAK,KAAK;AACrC,cAAU,YAAS;AACf,YAAM,EAAE,QAAO,IAAK;AAEpB,cAAQ,UAAU,uBAAuB,CAAC,KAAK,UAAS;AACpD,YAAI,CAAC,OAAO,OAAO,QAAQ,eAAe,WAAW;AACjD,gBAAM,WAAW,kCAAM,mBAAmB,MAAM,OAAO,aAAa,SAAS;AAC7E,cAAI,UAAU;AACV,oBAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,mBAAO,KAAK,SAAS,uCAAW,QAAQ;UAC5C;AACA,mBAAS,MAAM,KAAK,QAAQ;AAC5B,iBAAO,KAAK,SAAS,CAAC;QAC1B;AACA,iBAAS,MAAM,KAAK,QAAQ;AAC5B,eAAO,KAAK,SAAS,CAAC;MAC1B,CAAC;IACL,CAAC;EACL;;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,wBAAmD;AACnD,wBAA2B;AAC3B,eAA0B;AAC1B,kCAAkC;AAG5B,MAAO,gBAAgB,6BAAU;EACnC,YAAY,SAA0B;AAClC,UAAM,OAAO;EACjB;;;;;;EAOA,QAAQ,MAAW;AACf,UAAM,EAAE,UAAU,SAAQ,IAAK,KAAK;AACpC,UAAM,UAAU,KAAK,CAAC;AAEtB,YAAQ,SAAS;MACb,KAAK;MACL,KAAK;AACD,eAAO,KAAK,OAAM;MACtB,KAAK;AACD,eAAO,KAAK,KAAK,IAAI;MACzB;AACI,iBAAS,MAAM,eAAe,QAAQ,OAAO;AAC7C,iBAAQ;AACR,eAAO,KAAK,SAAS,CAAC;IAC9B;EACJ;;;;EAKA,MAAM,SAAM;AACR,UAAM,KAAK;AACX,UAAM,eAAe;AAErB,UAAM,eAAe,kCAAM,4BAA2B;AACtD,QAAI,cAAc;AACd,cAAQ,IAAI,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AACjD,iBAAW,CAAC,UAAU,IAAI,KAAK,OAAO,QAAQ,YAAY,GAAG;AAEzD,gBAAQ,IAAI,sBAAsB,QAAQ,EAAE;AAE5C,cAAM,qBAAqB,CAAC,OAAO,IAAI,GAAG,YAAY,IAAI,QAAQ,IAAI,IAAc,EAAE;AACtF,cAAM,IAAI,QAAQ,aAAU;AACxB,gBAAM,iBAAiB,IAAI,6BAAW,EAAE,GAAG,KAAK,SAAS,UAAU,QAAO,CAAE;AAC5E,yBAAe,QAAQ,kBAAkB;QAC7C,CAAC;MACL;IACJ;AAEA,SAAK,QAAQ,SAAS,uCAAW,QAAQ;EAC7C;;;;;;EAOA,KAAK,OAAY;AACb,QAAI,WAAW,MAAM,CAAC;AACtB,QAAI,aAAa,QAAW;AACxB,iBAAW;IACf;AACA,UAAM,EAAE,UAAU,UAAS,IAAK,KAAK;AACrC,cAAU,YAAS;AACf,YAAM,EAAE,QAAO,IAAK;AAEpB,cAAQ,UAAU,uBAAuB,CAAC,KAAK,UAAS;AACpD,YAAI,CAAC,OAAO,OAAO,QAAQ,eAAe,QAAQ,GAAG;AACjD,gBAAM,WAAW,kCAAM,mBAAmB,MAAM,OAAO,aAAa,QAAQ,CAAC;AAC7E,cAAI,UAAU;AACV,oBAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,mBAAO,KAAK,SAAS,uCAAW,QAAQ;UAC5C;AACA,mBAAS,MAAM,KAAK,QAAQ;AAC5B,iBAAO,KAAK,SAAS,CAAC;QAC1B;AACA,iBAAS,MAAM,KAAK,QAAQ;AAC5B,eAAO,KAAK,SAAS,CAAC;MAC1B,CAAC;IACL,CAAC;EACL;;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { DbConnectCallback } from '../_Types.js';
3
2
  export interface CLICommandContext {
4
3
  /** Invoke this before doing anything in the database */
@@ -31,6 +31,12 @@ class CLICommand {
31
31
  this.requireOption("callback");
32
32
  this.requireOption("dbConnect");
33
33
  }
34
+ /**
35
+ * Ensures that an argument was passed in the options.
36
+ * Throws otherwise
37
+ *
38
+ * @param arg
39
+ */
34
40
  requireOption(arg) {
35
41
  if (this.options[arg] === void 0) {
36
42
  throw new Error(`Invalid arguments: ${arg} is missing`);
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/cli/cliCommand.ts"],
4
4
  "sourcesContent": ["import type { DbConnectCallback } from '../_Types.js';\n\nexport interface CLICommandContext {\n /** Invoke this before doing anything in the database */\n dbConnect: (callback: DbConnectCallback) => void;\n callback: (code?: number) => void;\n showHelp: (yargs?: any) => void;\n}\n\nexport interface CLICommandParams {\n encoding?: BufferEncoding;\n pretty?: boolean;\n force?: boolean;\n password?: any;\n ingroup?: any;\n v?: any;\n version?: any;\n timeout?: any;\n enabled?: any;\n disabled?: any;\n port?: any;\n ssl?: any;\n ip?: any;\n updatable?: any;\n host?: any;\n cert?: any;\n cwd?: string;\n path?: string;\n module?: string;\n wait?: boolean;\n yes?: boolean;\n f?: boolean;\n y?: boolean;\n all?: boolean;\n}\n\nexport type CLICommandOptions = CLICommandContext & CLICommandParams;\n\n/** The base class for any CLI command */\nexport class CLICommand<TCommandOptions extends CLICommandOptions = CLICommandOptions> {\n protected readonly options: TCommandOptions;\n\n constructor(options: TCommandOptions) {\n if (options === null || options === undefined) {\n throw new Error(`No options given`);\n }\n\n this.options = options;\n // Always require the callback and a wrapper for DB actions\n this.requireOption('callback');\n this.requireOption('dbConnect');\n }\n\n /**\n * Ensures that an argument was passed in the options.\n * Throws otherwise\n *\n * @param arg\n */\n requireOption(arg: keyof CLICommandOptions): void {\n if (this.options[arg] === undefined) {\n throw new Error(`Invalid arguments: ${arg} is missing`);\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAsCA;;;;;AACM,MAAO,WAAU;EACA;EAEnB,YAAY,SAAwB;AAChC,QAAI,YAAY,QAAQ,YAAY,QAAW;AAC3C,YAAM,IAAI,MAAM,kBAAkB;IACtC;AAEA,SAAK,UAAU;AAEf,SAAK,cAAc,UAAU;AAC7B,SAAK,cAAc,WAAW;EAClC;EAQA,cAAc,KAA4B;AACtC,QAAI,KAAK,QAAQ,SAAS,QAAW;AACjC,YAAM,IAAI,MAAM,sBAAsB,gBAAgB;IAC1D;EACJ;;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAsCA;;;;;AACM,MAAO,WAAU;EACA;EAEnB,YAAY,SAAwB;AAChC,QAAI,YAAY,QAAQ,YAAY,QAAW;AAC3C,YAAM,IAAI,MAAM,kBAAkB;IACtC;AAEA,SAAK,UAAU;AAEf,SAAK,cAAc,UAAU;AAC7B,SAAK,cAAc,WAAW;EAClC;;;;;;;EAQA,cAAc,KAA4B;AACtC,QAAI,KAAK,QAAQ,GAAG,MAAM,QAAW;AACjC,YAAM,IAAI,MAAM,sBAAsB,GAAG,aAAa;IAC1D;EACJ;;",
6
6
  "names": []
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
  ));
@@ -36,6 +40,11 @@ class CLICompact extends import_cliCommand.CLICommand {
36
40
  constructor(options) {
37
41
  super(options);
38
42
  }
43
+ /**
44
+ * Executes a command
45
+ *
46
+ * @param args
47
+ */
39
48
  execute(args) {
40
49
  const { callback, showHelp } = this.options;
41
50
  const command = args[0];
@@ -70,12 +79,20 @@ class CLICompact extends import_cliCommand.CLICommand {
70
79
  return void callback(3);
71
80
  }
72
81
  }
82
+ /**
83
+ * Output status of compact mode for host
84
+ */
73
85
  statusCompactModeHost() {
74
86
  const { callback } = this.options;
75
87
  const compactMode = !!this.config?.system?.compact;
76
88
  console.log(`Compact mode for this host is currently ${compactMode ? "enabled" : "disabled"}`);
77
89
  return void callback();
78
90
  }
91
+ /**
92
+ * Set compact mode for this host
93
+ *
94
+ * @param targetState enable or disable compact mode for host
95
+ */
79
96
  setCompactModeHost(targetState) {
80
97
  const { callback, dbConnect } = this.options;
81
98
  dbConnect((params) => {
@@ -98,6 +115,11 @@ class CLICompact extends import_cliCommand.CLICommand {
98
115
  return void callback();
99
116
  });
100
117
  }
118
+ /**
119
+ * Output the compact mode status for a defined adapter instance
120
+ *
121
+ * @param instance instance to output status for
122
+ */
101
123
  statusCompactModeInstance(instance) {
102
124
  const { callback, dbConnect } = this.options;
103
125
  dbConnect((params) => {
@@ -123,6 +145,13 @@ class CLICompact extends import_cliCommand.CLICommand {
123
145
  });
124
146
  });
125
147
  }
148
+ /**
149
+ * Put given instance in compact mode group
150
+ *
151
+ * @param instance instance to put in group
152
+ * @param targetState if compact mode should be enabled for instance, if undefined `instance.common.runAsCompact` will not be updated
153
+ * @param groupId the compact group id, if not given, it will be put in controller group
154
+ */
126
155
  setCompactModeInstance(instance, targetState, groupId) {
127
156
  const { callback, dbConnect } = this.options;
128
157
  dbConnect(async (params) => {
@@ -171,7 +200,7 @@ class CLICompact extends import_cliCommand.CLICommand {
171
200
  obj.common.runAsCompactMode = newRunAsCompactMode;
172
201
  }
173
202
  obj.from = `system.host.${import_js_controller_common.tools.getHostName()}.cli`;
174
- obj.ts = new Date().getTime();
203
+ obj.ts = (/* @__PURE__ */ new Date()).getTime();
175
204
  objects.setObject(`system.adapter.${instance}`, obj, (err) => {
176
205
  if (err) {
177
206
  console.log(err);
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/cli/cliCompact.ts"],
4
4
  "sourcesContent": ["import * as CLI from './messages.js';\nimport { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport { tools } from '@iobroker/js-controller-common';\nimport fs from 'fs-extra';\n\n/** Command ioBroker compact ... */\nexport class CLICompact extends CLICommand {\n private readonly config: ioBroker.IoBrokerJson = fs.readJSONSync(tools.getConfigFileName());\n\n constructor(options: CLICommandOptions) {\n super(options);\n }\n /**\n * Executes a command\n *\n * @param args\n */\n execute(args: any[]): void {\n const { callback, showHelp } = this.options;\n const command = args[0];\n switch (command) {\n case 'status':\n return this.statusCompactModeHost();\n case 'enable':\n case 'on':\n return this.setCompactModeHost(true);\n case 'disable':\n case 'off':\n return this.setCompactModeHost(false);\n default:\n if (command && command.includes('.')) {\n if (args[1]) {\n switch (args[1]) {\n case 'status':\n return this.statusCompactModeInstance(command);\n case 'enable':\n case 'on':\n return this.setCompactModeInstance(command, true, args[2]);\n case 'disable':\n case 'off':\n return this.setCompactModeInstance(command, false);\n case 'group':\n return this.setCompactModeInstance(command, undefined, args[2]);\n }\n }\n }\n\n CLI.error.unknownCommand('compact', command);\n showHelp();\n return void callback(3);\n }\n }\n\n /**\n * Output status of compact mode for host\n */\n statusCompactModeHost(): void {\n const { callback } = this.options;\n\n const compactMode = !!this.config?.system?.compact;\n console.log(`Compact mode for this host is currently ${compactMode ? 'enabled' : 'disabled'}`);\n\n return void callback();\n }\n\n /**\n * Set compact mode for this host\n *\n * @param targetState enable or disable compact mode for host\n */\n setCompactModeHost(targetState: boolean): void {\n const { callback, dbConnect } = this.options;\n\n dbConnect(params => {\n const { isOffline } = params;\n\n const currentState = !!this.config?.system?.compact;\n\n if (targetState === currentState) {\n console.log(`Compact mode for this host is already ${currentState ? 'enabled' : 'disabled'}`);\n return void callback();\n }\n\n this.config.system = this.config.system || {};\n this.config.system.compact = targetState;\n const configFileName = tools.getConfigFileName();\n fs.writeFileSync(configFileName, JSON.stringify(this.config, null, 4), 'utf8');\n\n console.log();\n console.log(`Compact mode for this host is now ${targetState ? 'enabled' : 'disabled'}`);\n\n if (!isOffline) {\n console.log();\n console.log('Please restart ioBroker for this change to take effect!');\n }\n return void callback();\n });\n }\n\n /**\n * Output the compact mode status for a defined adapter instance\n *\n * @param instance instance to output status for\n */\n statusCompactModeInstance(instance: `${string}.${number}`): void {\n const { callback, dbConnect } = this.options;\n\n dbConnect(params => {\n const { objects } = params;\n\n if (!this.config.system?.compact) {\n console.log('Compact mode is disabled for this host. All compact mode settings will have no effect!');\n console.log();\n }\n objects.getObject(`system.adapter.${instance}`, (err, obj) => {\n if (!err && obj) {\n if (!obj.common.compact) {\n console.log(\n 'This adapter does not support compact mode. The below settings will have no effect!',\n );\n console.log();\n } else {\n console.log(`Adapter supports compact mode: ${!!obj.common.compact}`);\n }\n console.log(`Compact mode enabled for instance: ${!!obj.common.runAsCompactMode}`);\n console.log(\n `Compact group: ${\n obj.common.compactGroup !== undefined ? obj.common.compactGroup : 1\n }`,\n );\n return void callback();\n }\n CLI.error.invalidInstance(instance);\n return void callback(24);\n });\n });\n }\n\n /**\n * Put given instance in compact mode group\n *\n * @param instance instance to put in group\n * @param targetState if compact mode should be enabled for instance, if undefined `instance.common.runAsCompact` will not be updated\n * @param groupId the compact group id, if not given, it will be put in controller group\n */\n setCompactModeInstance(instance: `${string}.${number}`, targetState?: boolean, groupId?: string | number): void {\n const { callback, dbConnect } = this.options;\n\n dbConnect(async params => {\n const { objects } = params;\n\n if (!this.config.system?.compact) {\n console.log('Compact mode is disabled on this host. This setting will have no effect!');\n console.log();\n }\n\n let obj: ioBroker.InstanceObject | undefined | null;\n try {\n obj = await objects.getObject(`system.adapter.${instance}`);\n } catch {\n // ignore\n }\n\n if (!obj) {\n CLI.error.invalidInstance(instance);\n return void callback(24);\n }\n\n if (!obj.common.compact) {\n console.log('This adapter does not support compact mode. The below settings will have no effect!');\n console.log();\n } else {\n console.log(`Adapter supports compact mode : ${!!obj.common.compact}`);\n }\n let newRunAsCompactMode;\n if (targetState !== undefined && targetState !== !!obj.common.runAsCompactMode) {\n newRunAsCompactMode = targetState;\n }\n let newCompactGroup;\n if (obj.common.compactGroup === undefined) {\n obj.common.compactGroup = 1;\n newCompactGroup = obj.common.compactGroup;\n }\n if (groupId !== undefined) {\n groupId = typeof groupId === 'string' ? parseInt(groupId, 10) : groupId;\n if (groupId !== obj.common.compactGroup) {\n newCompactGroup = groupId;\n }\n }\n console.log(\n `Compact mode enabled for instance: ${\n newRunAsCompactMode !== undefined ? `--> ${newRunAsCompactMode}` : !!obj.common.runAsCompactMode\n }`,\n );\n console.log(\n `Compact group: ${\n newCompactGroup !== undefined && obj.common.compactGroup !== newCompactGroup\n ? `--> ${newCompactGroup}`\n : obj.common.compactGroup\n }`,\n );\n if (newRunAsCompactMode !== undefined || newCompactGroup !== undefined) {\n if (newCompactGroup !== undefined) {\n obj.common.compactGroup = newCompactGroup;\n }\n if (newRunAsCompactMode !== undefined) {\n obj.common.runAsCompactMode = newRunAsCompactMode;\n }\n\n obj.from = `system.host.${tools.getHostName()}.cli`;\n obj.ts = new Date().getTime();\n objects.setObject(`system.adapter.${instance}`, obj, err => {\n if (err) {\n console.log(err);\n }\n console.log(`Instance settings for \"${instance}\" are changed.`);\n callback();\n });\n } else {\n console.log('No settings changed.');\n return void callback();\n }\n });\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["fs"]
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
  ));
@@ -36,6 +40,12 @@ class CLIDebug extends import_cliCommand.CLICommand {
36
40
  constructor(options) {
37
41
  super(options);
38
42
  }
43
+ /**
44
+ * Checks if the adapter instance is running
45
+ *
46
+ * @param adapter adapter name
47
+ * @param instance instance id
48
+ */
39
49
  _isInstanceRunning(adapter, instance) {
40
50
  const { dbConnect } = this.options;
41
51
  return new Promise((resolve) => {
@@ -52,6 +62,11 @@ class CLIDebug extends import_cliCommand.CLICommand {
52
62
  });
53
63
  });
54
64
  }
65
+ /**
66
+ * Executes a command
67
+ *
68
+ * @param args
69
+ */
55
70
  async execute(args) {
56
71
  const { callback, ...params } = this.options;
57
72
  const adapter = args[0];
@@ -79,6 +94,7 @@ class CLIDebug extends import_cliCommand.CLICommand {
79
94
  const adapterArgs = [instance || "0", "--debug"];
80
95
  const nodeArgs = [
81
96
  ...import_js_controller_common.tools.getDefaultNodeArgs(mainFile),
97
+ // --inspect[-brk][=[ip]:[port]]
82
98
  `--inspect${params.wait ? "-brk" : ""}${!!params.ip || !!params.port ? "=" : ""}${params.ip || ""}${!!params.ip && !!params.port ? ":" : ""}${params.port || ""}`
83
99
  ];
84
100
  const cp = (0, import_node_child_process.fork)(mainFile, adapterArgs, {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/cli/cliDebug.ts"],
4
4
  "sourcesContent": ["import * as CLI from './messages.js';\nimport { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport * as CLITools from './cliTools.js';\nimport { tools, EXIT_CODES } from '@iobroker/js-controller-common';\nimport { fork } from 'node:child_process';\n\n/** Command ioBroker debug ... */\nexport class CLIDebug extends CLICommand {\n constructor(options: CLICommandOptions) {\n super(options);\n }\n\n /**\n * Checks if the adapter instance is running\n *\n * @param adapter adapter name\n * @param instance instance id\n */\n private _isInstanceRunning(adapter: string, instance: string): Promise<boolean> {\n const { dbConnect } = this.options;\n return new Promise(resolve => {\n dbConnect(async ({ states }) => {\n try {\n const state = await states.getStateAsync(`system.adapter.${adapter}.${instance}.alive`);\n if (state?.val) {\n resolve(true);\n return;\n }\n } catch {\n // ignore\n }\n resolve(false);\n });\n });\n }\n\n /**\n * Executes a command\n *\n * @param args\n */\n async execute(args: any[]): Promise<void> {\n const { callback, ...params } = this.options;\n const adapter = args[0];\n if (!adapter) {\n CLI.error.requiredArgumentMissing('adaptername', 'debug <adaptername>');\n return void callback(34);\n }\n\n const { name, instance } = CLITools.splitAdapterOrInstanceIdentifierWithVersion(adapter)!;\n\n if (await this._isInstanceRunning(name, instance || '0')) {\n CLI.error.instanceAlreadyRunning(`${name}.${instance || '0'}`);\n return void callback(EXIT_CODES.ADAPTER_ALREADY_RUNNING);\n }\n\n const adapterDir = tools.getAdapterDir(adapter);\n if (!adapterDir) {\n CLI.error.adapterDirNotFound(adapter);\n return void callback(34);\n }\n\n let mainFile;\n try {\n mainFile = await tools.resolveAdapterMainFile(adapter);\n } catch {\n CLI.error.mainFileNotFound(adapter);\n return callback(1);\n }\n\n // Start the adapter with force and console logs\n const adapterArgs = [instance || '0', '--debug'];\n // Tell node to attach a debugger\n const nodeArgs = [\n ...tools.getDefaultNodeArgs(mainFile),\n // --inspect[-brk][=[ip]:[port]]\n `--inspect${params.wait ? '-brk' : ''}${!!params.ip || !!params.port ? '=' : ''}${params.ip || ''}${\n !!params.ip && !!params.port ? ':' : ''\n }${params.port || ''}`,\n ];\n // And wait until the sub process has finished\n const cp = fork(mainFile, adapterArgs, {\n cwd: adapterDir,\n execArgv: nodeArgs,\n });\n cp.on('exit', code => callback(code || 0));\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;UAAqB;AACrB,wBAAmD;AACnD,eAA0B;AAC1B,kCAAkC;AAClC,gCAAqB;AAGf,MAAO,iBAAiB,6BAAU;EACpC,YAAY,SAA0B;AAClC,UAAM,OAAO;EACjB;EAQQ,mBAAmB,SAAiB,UAAgB;AACxD,UAAM,EAAE,UAAS,IAAK,KAAK;AAC3B,WAAO,IAAI,QAAQ,aAAU;AACzB,gBAAU,OAAO,EAAE,OAAM,MAAM;AAC3B,YAAI;AACA,gBAAM,QAAQ,MAAM,OAAO,cAAc,kBAAkB,WAAW,gBAAgB;AACtF,cAAI,OAAO,KAAK;AACZ,oBAAQ,IAAI;AACZ;UACJ;QACJ,QAAE;QAEF;AACA,gBAAQ,KAAK;MACjB,CAAC;IACL,CAAC;EACL;EAOA,MAAM,QAAQ,MAAW;AACrB,UAAM,EAAE,aAAa,OAAM,IAAK,KAAK;AACrC,UAAM,UAAU,KAAK;AACrB,QAAI,CAAC,SAAS;AACV,UAAI,MAAM,wBAAwB,eAAe,qBAAqB;AACtE,aAAO,KAAK,SAAS,EAAE;IAC3B;AAEA,UAAM,EAAE,MAAM,SAAQ,IAAK,SAAS,4CAA4C,OAAO;AAEvF,QAAI,MAAM,KAAK,mBAAmB,MAAM,YAAY,GAAG,GAAG;AACtD,UAAI,MAAM,uBAAuB,GAAG,QAAQ,YAAY,KAAK;AAC7D,aAAO,KAAK,SAAS,uCAAW,uBAAuB;IAC3D;AAEA,UAAM,aAAa,kCAAM,cAAc,OAAO;AAC9C,QAAI,CAAC,YAAY;AACb,UAAI,MAAM,mBAAmB,OAAO;AACpC,aAAO,KAAK,SAAS,EAAE;IAC3B;AAEA,QAAI;AACJ,QAAI;AACA,iBAAW,MAAM,kCAAM,uBAAuB,OAAO;IACzD,QAAE;AACE,UAAI,MAAM,iBAAiB,OAAO;AAClC,aAAO,SAAS,CAAC;IACrB;AAGA,UAAM,cAAc,CAAC,YAAY,KAAK,SAAS;AAE/C,UAAM,WAAW;MACb,GAAG,kCAAM,mBAAmB,QAAQ;MAEpC,YAAY,OAAO,OAAO,SAAS,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,OAAO,MAAM,KAAK,OAAO,MAAM,KAC3F,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,OAAO,MAAM,KACtC,OAAO,QAAQ;;AAGtB,UAAM,SAAK,gCAAK,UAAU,aAAa;MACnC,KAAK;MACL,UAAU;KACb;AACD,OAAG,GAAG,QAAQ,UAAQ,SAAS,QAAQ,CAAC,CAAC;EAC7C;;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,UAAqB;AACrB,wBAAmD;AACnD,eAA0B;AAC1B,kCAAkC;AAClC,gCAAqB;AAGf,MAAO,iBAAiB,6BAAU;EACpC,YAAY,SAA0B;AAClC,UAAM,OAAO;EACjB;;;;;;;EAQQ,mBAAmB,SAAiB,UAAgB;AACxD,UAAM,EAAE,UAAS,IAAK,KAAK;AAC3B,WAAO,IAAI,QAAQ,aAAU;AACzB,gBAAU,OAAO,EAAE,OAAM,MAAM;AAC3B,YAAI;AACA,gBAAM,QAAQ,MAAM,OAAO,cAAc,kBAAkB,OAAO,IAAI,QAAQ,QAAQ;AACtF,cAAI,OAAO,KAAK;AACZ,oBAAQ,IAAI;AACZ;UACJ;QACJ,QAAQ;QAER;AACA,gBAAQ,KAAK;MACjB,CAAC;IACL,CAAC;EACL;;;;;;EAOA,MAAM,QAAQ,MAAW;AACrB,UAAM,EAAE,UAAU,GAAG,OAAM,IAAK,KAAK;AACrC,UAAM,UAAU,KAAK,CAAC;AACtB,QAAI,CAAC,SAAS;AACV,UAAI,MAAM,wBAAwB,eAAe,qBAAqB;AACtE,aAAO,KAAK,SAAS,EAAE;IAC3B;AAEA,UAAM,EAAE,MAAM,SAAQ,IAAK,SAAS,4CAA4C,OAAO;AAEvF,QAAI,MAAM,KAAK,mBAAmB,MAAM,YAAY,GAAG,GAAG;AACtD,UAAI,MAAM,uBAAuB,GAAG,IAAI,IAAI,YAAY,GAAG,EAAE;AAC7D,aAAO,KAAK,SAAS,uCAAW,uBAAuB;IAC3D;AAEA,UAAM,aAAa,kCAAM,cAAc,OAAO;AAC9C,QAAI,CAAC,YAAY;AACb,UAAI,MAAM,mBAAmB,OAAO;AACpC,aAAO,KAAK,SAAS,EAAE;IAC3B;AAEA,QAAI;AACJ,QAAI;AACA,iBAAW,MAAM,kCAAM,uBAAuB,OAAO;IACzD,QAAQ;AACJ,UAAI,MAAM,iBAAiB,OAAO;AAClC,aAAO,SAAS,CAAC;IACrB;AAGA,UAAM,cAAc,CAAC,YAAY,KAAK,SAAS;AAE/C,UAAM,WAAW;MACb,GAAG,kCAAM,mBAAmB,QAAQ;;MAEpC,YAAY,OAAO,OAAO,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,OAAO,MAAM,EAAE,GAAG,OAAO,MAAM,EAAE,GAC7F,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,OAAO,MAAM,EACzC,GAAG,OAAO,QAAQ,EAAE;;AAGxB,UAAM,SAAK,gCAAK,UAAU,aAAa;MACnC,KAAK;MACL,UAAU;KACb;AACD,OAAG,GAAG,QAAQ,UAAQ,SAAS,QAAQ,CAAC,CAAC;EAC7C;;",
6
6
  "names": []
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,11 @@ class CLIHost extends import_cliCommand.CLICommand {
37
41
  constructor(options) {
38
42
  super(options);
39
43
  }
44
+ /**
45
+ * Executes a command
46
+ *
47
+ * @param args
48
+ */
40
49
  execute(args) {
41
50
  const command = args[0];
42
51
  switch (command) {
@@ -51,9 +60,19 @@ class CLIHost extends import_cliCommand.CLICommand {
51
60
  return this.rename(args);
52
61
  }
53
62
  }
63
+ /**
64
+ * When in single-host mode, changes the hostname of the host and all instances to the current one
65
+ *
66
+ * @param _args
67
+ */
54
68
  self(_args) {
55
69
  this.renameHost(void 0, import_node_os.default.hostname());
56
70
  }
71
+ /**
72
+ * Changes the current host's hostname to the given one
73
+ *
74
+ * @param args
75
+ */
57
76
  set(args) {
58
77
  const { callback } = this.options;
59
78
  const newHostname = args[1];
@@ -63,6 +82,11 @@ class CLIHost extends import_cliCommand.CLICommand {
63
82
  }
64
83
  this.renameHost(import_js_controller_common.tools.getHostName(), newHostname);
65
84
  }
85
+ /**
86
+ * Removes the host with the given name
87
+ *
88
+ * @param args
89
+ */
66
90
  remove(args) {
67
91
  const { callback, dbConnect } = this.options;
68
92
  const hostname = args[1];
@@ -116,6 +140,11 @@ class CLIHost extends import_cliCommand.CLICommand {
116
140
  }
117
141
  });
118
142
  }
143
+ /**
144
+ * Renames the host with the given name to the current one (opposite of `set()`)
145
+ *
146
+ * @param args
147
+ */
119
148
  rename(args) {
120
149
  const { callback } = this.options;
121
150
  const oldHostname = args[0];
@@ -125,6 +154,12 @@ class CLIHost extends import_cliCommand.CLICommand {
125
154
  }
126
155
  this.renameHost(oldHostname, import_node_os.default.hostname());
127
156
  }
157
+ /**
158
+ * Renames the host with the hostname `oldHostname` to the hostname `newHostname`
159
+ *
160
+ * @param oldHostname The hostname to rename from or `undefined` to rename all hosts (single-host mode only!)
161
+ * @param newHostname The hostname to rename to
162
+ */
128
163
  renameHost(oldHostname, newHostname) {
129
164
  const { callback, dbConnect, showHelp } = this.options;
130
165
  dbConnect(async (params) => {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/lib/cli/cliHost.ts"],
4
4
  "sourcesContent": ["import * as CLI from './messages.js';\nimport { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport { enumHosts, enumObjects, getObjectFrom, enumInstances } from './cliTools.js';\nimport { tools, EXIT_CODES } from '@iobroker/js-controller-common';\nimport type { Client as ObjectsClient } from '@iobroker/db-objects-redis';\nimport os from 'node:os';\nimport fs from 'fs-extra';\n\n/** Command iobroker host ... */\nexport class CLIHost extends CLICommand {\n constructor(options: CLICommandOptions) {\n super(options);\n }\n\n /**\n * Executes a command\n *\n * @param args\n */\n execute(args: any[]): void {\n const command = args[0];\n\n switch (command) {\n case 'this':\n case 'self':\n return this.self(args);\n case 'set':\n return this.set(args);\n case 'remove':\n return this.remove(args);\n default:\n return this.rename(args);\n }\n }\n\n /**\n * When in single-host mode, changes the hostname of the host and all instances to the current one\n *\n * @param _args\n */\n self(_args: any[]): void {\n this.renameHost(undefined, os.hostname());\n }\n\n /**\n * Changes the current host's hostname to the given one\n *\n * @param args\n */\n set(args: any[]): void {\n const { callback } = this.options;\n\n const newHostname: string = args[1];\n if (!newHostname) {\n CLI.error.requiredArgumentMissing('newHostname', 'host set newHostname');\n return void callback(34);\n }\n\n this.renameHost(tools.getHostName(), newHostname);\n }\n\n /**\n * Removes the host with the given name\n *\n * @param args\n */\n remove(args: any[]): void {\n const { callback, dbConnect } = this.options;\n\n const hostname: string = args[1];\n if (!hostname) {\n CLI.error.requiredArgumentMissing('hostname', 'host remove hostname');\n return void callback(34);\n }\n\n const newHostname = tools.getHostName();\n\n if (hostname === newHostname) {\n // avoid object deletion when target host is same host\n CLI.error.dontRemoveCurrentHost(hostname);\n return void callback(35);\n }\n\n dbConnect(async params => {\n const { objects, isOffline } = params;\n\n try {\n if (!isOffline) {\n CLI.error.cannotChangeRunningSystem();\n return void callback(EXIT_CODES.CONTROLLER_RUNNING);\n }\n\n // Find the requested host object\n const hosts = await enumHosts(objects);\n const hostToDelete = hosts.find(host => host?.common.hostname === hostname);\n if (!hostToDelete) {\n CLI.error.hostDoesNotExist(hostname);\n return void callback(30);\n }\n\n // Delete it\n try {\n await objects.delObjectAsync(hostToDelete._id);\n } catch (err) {\n CLI.error.cannotDeleteObject(hostToDelete._id, err.message);\n return void callback(30);\n }\n\n // Also delete its states\n const hostStates = await enumObjects(objects, 'state', `system.host.${hostname}.`);\n for (const state of hostStates) {\n // Therefore delete the old one because we will recreate it under a new name\n try {\n await objects.delObjectAsync(state._id);\n CLI.success.stateDeleted(state._id);\n } catch (err) {\n CLI.error.cannotDeleteObject(state._id, err.message);\n }\n }\n\n // Move all instances from the deleted host to the current one\n const instances = await enumInstances(objects);\n const instancesToRename = instances.filter(i => i?.common.host === hostname);\n for (const instance of instancesToRename) {\n await changeInstanceHost(objects, instance, newHostname);\n }\n\n // Notify the user that we are done\n CLI.success.hostDeleted(hostname);\n return void callback(EXIT_CODES.NO_ERROR);\n } catch (err) {\n CLI.error.unknown(err.message);\n return void callback(1);\n }\n });\n }\n\n /**\n * Renames the host with the given name to the current one (opposite of `set()`)\n *\n * @param args\n */\n rename(args: any[]): void {\n const { callback } = this.options;\n\n const oldHostname: string = args[0];\n\n if (!oldHostname) {\n CLI.error.requiredArgumentMissing('oldHostname', 'host oldHostname');\n return void callback(34);\n }\n\n this.renameHost(oldHostname, os.hostname());\n }\n\n /**\n * Renames the host with the hostname `oldHostname` to the hostname `newHostname`\n *\n * @param oldHostname The hostname to rename from or `undefined` to rename all hosts (single-host mode only!)\n * @param newHostname The hostname to rename to\n */\n renameHost(oldHostname: string | undefined, newHostname: string): void {\n const { callback, dbConnect, showHelp } = this.options;\n dbConnect(async params => {\n const { isOffline, objects } = params;\n\n try {\n if (!isOffline) {\n CLI.error.cannotChangeRunningSystem();\n return void callback(EXIT_CODES.CONTROLLER_RUNNING);\n }\n\n const hosts = await enumHosts(objects);\n if (hosts.length > 1 && oldHostname === undefined) {\n // iobroker host this/self in multihost is not allowed\n CLI.error.noHostThisInMultihost();\n showHelp();\n return void callback(30);\n }\n\n // Does another host with the target name exist?\n const hostExists = !!hosts.find(obj => obj?.common.hostname === newHostname);\n if (hostExists) {\n // This prevents migration of instances if host already exists, but we need it to prevent\n // multiple hosts with same name. Thus we only allow if no instances are on the host\n // Note: this is only a heuristic, if problems occur we need a `force` flag\n const instances = await enumInstances(objects);\n const hasExistingInstances = !!instances.find(instance => instance?.common.host === newHostname);\n\n if (hasExistingInstances) {\n CLI.error.hostAlreadyExists(newHostname);\n return void callback(EXIT_CODES.INSTANCE_ALREADY_EXISTS);\n }\n }\n\n // Remember the new hostname in the system settings\n const configFileName = tools.getConfigFileName();\n const configData = fs.readJSONSync(configFileName);\n if (configData.system && configData.system.hostname !== newHostname) {\n configData.system.hostname = newHostname;\n fs.writeFileSync(configFileName, JSON.stringify(configData, null, 2), 'utf8');\n }\n\n // Rename the host(s)\n for (const host of hosts) {\n // Remember the current hostname of this object because we need it later\n const prevHostname = host.common.hostname;\n\n // Rename only the hostname we're supposed to rename!\n if (oldHostname && prevHostname !== oldHostname) {\n continue;\n }\n\n // Rename the host object\n // Therefore delete the old one because we will recreate it under a new name\n try {\n await objects.delObjectAsync(host._id);\n } catch (err) {\n CLI.error.cannotDeleteObject(host._id, err.message);\n continue;\n }\n\n // Now update the object\n Object.assign(host, {\n _id: `system.host.${newHostname}`,\n from: getObjectFrom(),\n ts: Date.now(),\n });\n Object.assign(host.common, {\n name: host._id,\n hostname: newHostname,\n address: [],\n cmd: '',\n native: { process: {}, os: {}, hardware: {} },\n });\n // And save it\n try {\n await objects.setObjectAsync(host._id, host);\n } catch (err) {\n CLI.error.cannotChangeObject(host._id, err.message);\n continue;\n }\n\n // Rename its states\n const hostStateObjects = await enumObjects(objects, 'state', `system.host.${prevHostname}.`);\n const hostFolders = await enumObjects(objects, 'folder', `system.host.${prevHostname}.`);\n for (const object of [...hostStateObjects, ...hostFolders]) {\n // Therefore delete the old one because we will recreate it under a new name\n try {\n await objects.delObjectAsync(object._id);\n } catch (err) {\n CLI.error.cannotDeleteObject(object._id, err.message);\n continue;\n }\n\n // Now update the object\n Object.assign(object, {\n _id: object._id.replace(`system.host.${prevHostname}`, `system.host.${newHostname}`),\n from: getObjectFrom(),\n ts: Date.now(),\n });\n\n // And save it\n try {\n await objects.setObjectAsync(object._id, object);\n } catch (err) {\n CLI.error.cannotChangeObject(object._id, err.message);\n }\n }\n\n CLI.success.hostRenamed(prevHostname, newHostname);\n }\n\n // Also rename all instances\n const instances = await enumInstances(objects);\n const instancesToRename =\n oldHostname === undefined ? instances : instances.filter(i => i.common.host === oldHostname);\n if (instancesToRename.length > 0) {\n for (const instance of instancesToRename) {\n // Update each instance object\n await changeInstanceHost(objects, instance, newHostname);\n }\n } else {\n CLI.warn.noInstancesFoundOnHost(oldHostname);\n }\n return void callback(EXIT_CODES.NO_ERROR);\n } catch (err) {\n CLI.error.unknown(err.message);\n return void callback(1);\n }\n });\n }\n}\n\n/**\n * Changes the host an instance is running on\n *\n * @param objects The objects DB to use\n * @param instance The instance object\n * @param newHostname The new hostname the instance should be running on\n */\nasync function changeInstanceHost(\n objects: ObjectsClient,\n instance: ioBroker.InstanceObject,\n newHostname: string,\n): Promise<void> {\n const oldInstanceHost = instance.common.host;\n instance.from = getObjectFrom();\n instance.ts = Date.now();\n instance.common.host = newHostname;\n // and save it\n try {\n await objects.setObjectAsync(instance._id, instance);\n CLI.success.instanceHostChanged(instance._id, oldInstanceHost, newHostname);\n } catch (e) {\n CLI.error.cannotChangeObject(instance._id, e.message);\n // resolve anyways, we don't want to cause errors\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["os", "instances", "fs"]
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(cliLogs_exports, {
27
31
  CLILogs: () => CLILogs
28
32
  });
29
33
  module.exports = __toCommonJS(cliLogs_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_cliCommand = require("./cliCommand.js");
31
36
  var import_js_controller_common = require("@iobroker/js-controller-common");
32
37
  var import_chokidar = __toESM(require("chokidar"), 1);
@@ -34,8 +39,7 @@ var import_fs_extra = __toESM(require("fs-extra"), 1);
34
39
  var import_node_os = __toESM(require("node:os"), 1);
35
40
  var import_event_stream = __toESM(require("event-stream"), 1);
36
41
  var import_node_module = require("node:module");
37
- const import_meta = {};
38
- const require2 = (0, import_node_module.createRequire)(import_meta.url || `file://${__filename}`);
42
+ const require2 = (0, import_node_module.createRequire)(__import_meta_url || `file://${__filename}`);
39
43
  const { getConfigFileName } = import_js_controller_common.tools;
40
44
  class CLILogs extends import_cliCommand.CLICommand {
41
45
  fileSizes = /* @__PURE__ */ new Map();
@@ -43,6 +47,12 @@ class CLILogs extends import_cliCommand.CLICommand {
43
47
  constructor(options) {
44
48
  super(options);
45
49
  }
50
+ /**
51
+ * Executes a command
52
+ *
53
+ * @param args
54
+ * @param params additional parsed CLI parameters
55
+ */
46
56
  execute(args, params) {
47
57
  const adapterName = args[0];
48
58
  const watch = params.watch || params.w;
@@ -83,6 +93,14 @@ class CLILogs extends import_cliCommand.CLICommand {
83
93
  console.log("No log file found");
84
94
  }
85
95
  }
96
+ /**
97
+ * Called by chokidar when watched files change
98
+ *
99
+ * @param options some options
100
+ * @param event The type of change
101
+ * @param path Which path has changed
102
+ * @param stats Information about the file
103
+ */
86
104
  watchHandler(options, event, path, stats) {
87
105
  if (event === "add" || !this.fileSizes.has(path)) {
88
106
  this.fileSizes.set(path, stats.size);
@@ -99,10 +117,22 @@ class CLILogs extends import_cliCommand.CLICommand {
99
117
  this.fileSizes.delete(path);
100
118
  }
101
119
  }
120
+ /**
121
+ * If the log file belongs to today
122
+ *
123
+ * @param path The log file path
124
+ */
102
125
  isTodaysLogfile(path) {
103
- const YYYYMMDDDate = new Date().toJSON().slice(0, 10);
126
+ const YYYYMMDDDate = (/* @__PURE__ */ new Date()).toJSON().slice(0, 10);
104
127
  return path.includes(YYYYMMDDDate);
105
128
  }
129
+ /**
130
+ * Streams a portion of a file to the console
131
+ *
132
+ * @param path The file to stream
133
+ * @param start The offset in bytes where to start
134
+ * @param options some options
135
+ */
106
136
  streamChange(path, start, options) {
107
137
  const input = import_fs_extra.default.createReadStream(path, {
108
138
  encoding: "utf8",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/lib/cli/cliLogs.ts"],
4
- "sourcesContent": ["import { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport { tools, logger as toolsLogger } from '@iobroker/js-controller-common';\nimport chokidar from 'chokidar';\nimport fs from 'fs-extra';\nimport os from 'node:os';\nimport es from 'event-stream';\nimport { createRequire } from 'node:module';\n// eslint-disable-next-line unicorn/prefer-module\nconst require = createRequire(import.meta.url || `file://${__filename}`);\n\nconst { getConfigFileName } = tools;\n\ninterface CLILogsOptions {\n /** Whether to show today's full log */\n complete?: boolean;\n /** An optional RegExp to filter by */\n regex?: RegExp;\n}\n\n/** Command ioBroker state ... */\nexport class CLILogs extends CLICommand {\n private readonly fileSizes = new Map<string, number>();\n private isReady = false;\n\n constructor(options: CLICommandOptions) {\n super(options);\n }\n\n /**\n * Executes a command\n *\n * @param args\n * @param params additional parsed CLI parameters\n */\n execute(args: any[], params: Record<string, any>): void {\n const adapterName = args[0];\n const watch = params.watch || params.w;\n const count = params.lines || 1_000;\n\n const options: CLILogsOptions = {\n complete: this.options.all,\n };\n\n const config = fs.readJSONSync(require.resolve(getConfigFileName()));\n const logger = toolsLogger(config.log);\n /** @ts-expect-error todo adjust logger type */\n let fileName = logger.getFileName();\n if (fileName) {\n let lines = fs.readFileSync(fileName).toString('utf-8').split('\\n');\n lines = lines.filter(line => line);\n if (lines.length > count) {\n lines.splice(0, lines.length - count);\n }\n let regex: RegExp;\n if (adapterName) {\n //2019-03-02 13:26:54.698 - debug: iot.0 [ALEXA] Created ALEXA device: Bad.Hauptlicht.Aktor.STATE [\"turnOn\",\"turnOff\"]\n regex = new RegExp(`: ${adapterName}\\\\.`);\n options.regex = regex;\n }\n lines.forEach(line => {\n if (regex && !regex.test(line)) {\n return;\n }\n console.log(line);\n });\n\n if (watch) {\n fileName = fileName.replace(/\\\\/g, '/');\n const parts = fileName.split('/');\n parts.pop();\n chokidar\n .watch(`${parts.join('/')}/iobroker*`, {\n awaitWriteFinish: { stabilityThreshold: 500 },\n followSymlinks: false,\n })\n .on('all', this.watchHandler.bind(this, options))\n .on('ready', () => (this.isReady = true));\n }\n } else {\n console.log('No log file found');\n }\n }\n\n /**\n * Called by chokidar when watched files change\n *\n * @param options some options\n * @param event The type of change\n * @param path Which path has changed\n * @param stats Information about the file\n */\n watchHandler(options: CLILogsOptions, event: string, path: string, stats: Record<string, any>): void {\n if (event === 'add' || !this.fileSizes.has(path)) {\n this.fileSizes.set(path, stats.size);\n if (stats.size > 0 && (this.isReady || (options.complete && this.isTodaysLogfile(path)))) {\n this.streamChange(path, 0, options);\n }\n } else if (event === 'change') {\n const oldFileSize = this.fileSizes.get(path)!;\n this.fileSizes.set(path, stats.size);\n if (this.isReady && stats.size > oldFileSize) {\n this.streamChange(path, oldFileSize, options);\n }\n } else if (event === 'unlink') {\n this.fileSizes.delete(path);\n }\n }\n\n /**\n * If the log file belongs to today\n *\n * @param path The log file path\n */\n isTodaysLogfile(path: string): boolean {\n const YYYYMMDDDate = new Date().toJSON().slice(0, 10);\n return path.includes(YYYYMMDDDate);\n }\n\n /**\n * Streams a portion of a file to the console\n *\n * @param path The file to stream\n * @param start The offset in bytes where to start\n * @param options some options\n */\n streamChange(path: string, start: number, options: CLILogsOptions): void {\n const input = fs.createReadStream(path, {\n encoding: 'utf8',\n start,\n autoClose: true,\n });\n if (options.regex) {\n // Read the input line by line and only include the lines matching the filter\n input\n .pipe(es.split())\n .pipe(es.filterSync(line => options.regex!.test(line)))\n .pipe(es.mapSync((line: string) => line + os.EOL))\n .pipe(process.stdout);\n } else {\n // just pipe the input through\n tools.pipeLinewise(input, process.stdout);\n }\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../../src/lib/cli/cliLogs.ts", "../../../../../../node_modules/@alcalzone/esm2cjs/shims/import.meta.url/shim.js"],
4
+ "sourcesContent": ["import { CLICommand, type CLICommandOptions } from './cliCommand.js';\nimport { tools, logger as toolsLogger } from '@iobroker/js-controller-common';\nimport chokidar from 'chokidar';\nimport fs from 'fs-extra';\nimport os from 'node:os';\nimport es from 'event-stream';\nimport { createRequire } from 'node:module';\n// eslint-disable-next-line unicorn/prefer-module\nconst require = createRequire(import.meta.url || `file://${__filename}`);\n\nconst { getConfigFileName } = tools;\n\ninterface CLILogsOptions {\n /** Whether to show today's full log */\n complete?: boolean;\n /** An optional RegExp to filter by */\n regex?: RegExp;\n}\n\n/** Command ioBroker state ... */\nexport class CLILogs extends CLICommand {\n private readonly fileSizes = new Map<string, number>();\n private isReady = false;\n\n constructor(options: CLICommandOptions) {\n super(options);\n }\n\n /**\n * Executes a command\n *\n * @param args\n * @param params additional parsed CLI parameters\n */\n execute(args: any[], params: Record<string, any>): void {\n const adapterName = args[0];\n const watch = params.watch || params.w;\n const count = params.lines || 1_000;\n\n const options: CLILogsOptions = {\n complete: this.options.all,\n };\n\n const config = fs.readJSONSync(require.resolve(getConfigFileName()));\n const logger = toolsLogger(config.log);\n /** @ts-expect-error todo adjust logger type */\n let fileName = logger.getFileName();\n if (fileName) {\n let lines = fs.readFileSync(fileName).toString('utf-8').split('\\n');\n lines = lines.filter(line => line);\n if (lines.length > count) {\n lines.splice(0, lines.length - count);\n }\n let regex: RegExp;\n if (adapterName) {\n //2019-03-02 13:26:54.698 - debug: iot.0 [ALEXA] Created ALEXA device: Bad.Hauptlicht.Aktor.STATE [\"turnOn\",\"turnOff\"]\n regex = new RegExp(`: ${adapterName}\\\\.`);\n options.regex = regex;\n }\n lines.forEach(line => {\n if (regex && !regex.test(line)) {\n return;\n }\n console.log(line);\n });\n\n if (watch) {\n fileName = fileName.replace(/\\\\/g, '/');\n const parts = fileName.split('/');\n parts.pop();\n chokidar\n .watch(`${parts.join('/')}/iobroker*`, {\n awaitWriteFinish: { stabilityThreshold: 500 },\n followSymlinks: false,\n })\n .on('all', this.watchHandler.bind(this, options))\n .on('ready', () => (this.isReady = true));\n }\n } else {\n console.log('No log file found');\n }\n }\n\n /**\n * Called by chokidar when watched files change\n *\n * @param options some options\n * @param event The type of change\n * @param path Which path has changed\n * @param stats Information about the file\n */\n watchHandler(options: CLILogsOptions, event: string, path: string, stats: Record<string, any>): void {\n if (event === 'add' || !this.fileSizes.has(path)) {\n this.fileSizes.set(path, stats.size);\n if (stats.size > 0 && (this.isReady || (options.complete && this.isTodaysLogfile(path)))) {\n this.streamChange(path, 0, options);\n }\n } else if (event === 'change') {\n const oldFileSize = this.fileSizes.get(path)!;\n this.fileSizes.set(path, stats.size);\n if (this.isReady && stats.size > oldFileSize) {\n this.streamChange(path, oldFileSize, options);\n }\n } else if (event === 'unlink') {\n this.fileSizes.delete(path);\n }\n }\n\n /**\n * If the log file belongs to today\n *\n * @param path The log file path\n */\n isTodaysLogfile(path: string): boolean {\n const YYYYMMDDDate = new Date().toJSON().slice(0, 10);\n return path.includes(YYYYMMDDDate);\n }\n\n /**\n * Streams a portion of a file to the console\n *\n * @param path The file to stream\n * @param start The offset in bytes where to start\n * @param options some options\n */\n streamChange(path: string, start: number, options: CLILogsOptions): void {\n const input = fs.createReadStream(path, {\n encoding: 'utf8',\n start,\n autoClose: true,\n });\n if (options.regex) {\n // Read the input line by line and only include the lines matching the filter\n input\n .pipe(es.split())\n .pipe(es.filterSync(line => options.regex!.test(line)))\n .pipe(es.mapSync((line: string) => line + os.EOL))\n .pipe(process.stdout);\n } else {\n // just pipe the input through\n tools.pipeLinewise(input, process.stdout);\n }\n }\n}\n", "export const __import_meta_url =\n typeof document === 'undefined' ? new (require('url'.replace('', '')).URL)('file:' + __filename).href :\n (document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href)\n"],
5
+ "mappings": "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",
6
6
  "names": ["require", "fs", "toolsLogger", "chokidar", "es", "os"]
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
  ));
@@ -31,9 +35,15 @@ var CLI = __toESM(require("./messages.js"), 1);
31
35
  var import_cliCommand = require("./cliCommand.js");
32
36
  var import_cliTools = require("./cliTools.js");
33
37
  class CLIMessage extends import_cliCommand.CLICommand {
38
+ /** @param options The CLI Message options */
34
39
  constructor(options) {
35
40
  super(options);
36
41
  }
42
+ /**
43
+ * Executes a command
44
+ *
45
+ * @param args parsed arguments
46
+ */
37
47
  execute(args) {
38
48
  const { callback, dbConnect, showHelp } = this.options;
39
49
  let [adapter, command, message] = args;