Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18,296 changes: 4,855 additions & 13,441 deletions package-lock.json

Large diffs are not rendered by default.

53 changes: 28 additions & 25 deletions packages/adapter/src/lib/adapter/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@ import fs from 'fs-extra';
import os from 'node:os';
import jwt from 'jsonwebtoken';
import { EventEmitter } from 'node:events';
import { tools, EXIT_CODES, password, logger } from '@iobroker/js-controller-common';
import pidUsage from 'pidusage';
import deepClone from 'deep-clone';
import { PluginHandler } from '@iobroker/plugin-base';
import semver from 'semver';
import path from 'node:path';
import { getObjectsConstructor, getStatesConstructor } from '@iobroker/js-controller-common-db';
import {
getObjectsConstructor,
getStatesConstructor,
tools,
EXIT_CODES,
password,
logger
} from '@iobroker/js-controller-common';
import {
decryptArray,
encryptArray,
Expand Down Expand Up @@ -127,7 +133,7 @@ import type {
InternalStopParameters
} from '@/lib/_Types.js';
import { UserInterfaceMessagingController } from '@/lib/adapter/userInterfaceMessagingController.js';
import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common/constants';
import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common-db/constants';
import type { CommandResult } from '@alcalzone/pak';

import * as url from 'node:url';
Expand Down Expand Up @@ -847,8 +853,8 @@ export class AdapterClass extends EventEmitter {
this._options.compactInstance !== undefined
? this._options.compactInstance
: this._options.instance !== undefined
? this._options.instance
: this._config.instance || 0,
? this._options.instance
: this._config.instance || 0,
10
);

Expand Down Expand Up @@ -2270,27 +2276,24 @@ export class AdapterClass extends EventEmitter {

// Even if the developer forgets to call the unload callback, we need to stop the process.
// Therefore, wait a short while and then force the unload procedure
setTimeout(
() => {
if (this.#states) {
finishUnload();
setTimeout(() => {
if (this.#states) {
finishUnload();

// Give 1 second to write the value
setTimeout(() => {
if (!isPause) {
this._logger.info(`${this.namespaceLog} terminating with timeout`);
}
this.terminate(exitCode);
}, 1_000);
} else {
// Give 1 second to write the value
setTimeout(() => {
if (!isPause) {
this._logger.info(`${this.namespaceLog} terminating`);
this._logger.info(`${this.namespaceLog} terminating with timeout`);
}
this.terminate(exitCode);
}, 1_000);
} else {
if (!isPause) {
this._logger.info(`${this.namespaceLog} terminating`);
}
},
this.common?.stopTimeout || 500
);
this.terminate(exitCode);
}
}, this.common?.stopTimeout || 500);
}
}

Expand Down Expand Up @@ -7004,8 +7007,8 @@ export class AdapterClass extends EventEmitter {
? this.isFloatComma === undefined
? '.,'
: this.isFloatComma
? '.,'
: ',.'
? '.,'
: ',.'
: _format;

if (typeof value !== 'number') {
Expand Down Expand Up @@ -11612,8 +11615,8 @@ export class AdapterClass extends EventEmitter {
this.version = this.pack?.version
? this.pack.version
: this.ioPack?.common
? this.ioPack.common.version
: 'unknown';
? this.ioPack.common.version
: 'unknown';
// display if it's a non-official version - only if installedFrom is explicitly given and differs it's not npm
const isNpmVersion =
!this.ioPack ||
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter/src/lib/adapter/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
decrypt,
appNameLowerCase,
getRootDir
} from '@iobroker/js-controller-common/tools';
} from '@iobroker/js-controller-common-db/tools';
import { SUPPORTED_FEATURES, type SupportedFeature } from '@/lib/adapter/constants.js';
import path from 'node:path';
import fs from 'fs-extra';
Expand Down
8 changes: 6 additions & 2 deletions packages/cli/src/lib/cli/cliProcess.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import { spawn } from 'node:child_process';
import deepClone from 'deep-clone';
import { setTimeout as wait } from 'node:timers/promises';

import { isLocalStatesDbServer, isLocalObjectsDbServer } from '@iobroker/js-controller-common-db';
import {
isLocalStatesDbServer,
isLocalObjectsDbServer,
getInstancesOrderedByStartPrio
} from '@iobroker/js-controller-common';
import { tools, EXIT_CODES } from '@iobroker/js-controller-common';
import * as CLI from '@/lib/cli/messages.js';
import { CLICommand } from '@/lib/cli/cliCommand.js';
Expand Down Expand Up @@ -94,7 +98,7 @@ export class CLIProcess extends CLICommand {
dbConnect(async params => {
const { objects } = params;
// Enumerate all adapter instances
const instances = await tools.getInstancesOrderedByStartPrio(objects, console);
const instances = await getInstancesOrderedByStartPrio(objects, console);
// Create a promise for each. setInstanceEnabled only starts/stops when necessary
const instancePromises = instances
.filter(obj => obj.common.enabled !== enabled)
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/lib/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { EXIT_CODES } from '@iobroker/js-controller-common';
import deepClone from 'deep-clone';
import { isDeepStrictEqual } from 'node:util';
import Debug from 'debug';
import { objectsDbHasServer, isLocalObjectsDbServer, isLocalStatesDbServer } from '@iobroker/js-controller-common-db';
import { objectsDbHasServer, isLocalObjectsDbServer, isLocalStatesDbServer } from '@iobroker/js-controller-common';
import path from 'node:path';
import yargs from 'yargs/yargs';
import * as CLITools from '@/lib/cli/cliTools.js';
Expand Down Expand Up @@ -735,7 +735,7 @@ async function processCommand(
}

if (migrated) {
const { NotificationHandler } = await import('@iobroker/js-controller-common-db');
const { NotificationHandler } = await import('@iobroker/js-controller-common');

const hostname = tools.getHostName();

Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/setup/dbConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
getStatesConstructor,
objectsDbHasServer,
statesDbHasServer
} from '@iobroker/js-controller-common-db';
} from '@iobroker/js-controller-common';
import { EXIT_CODES } from '@iobroker/js-controller-common';
import { tools } from '@iobroker/js-controller-common';
import { setTimeout as wait } from 'node:timers/promises';
Expand Down
6 changes: 3 additions & 3 deletions packages/cli/src/lib/setup/setupInstall.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
import type { ProcessExitCallback } from '@/lib/_Types.js';
import { IoBrokerError } from '@/lib/setup/customError.js';
import type { CommandResult } from '@alcalzone/pak';
import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common/constants';
import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common-db/constants';
import { createRequire } from 'node:module';

// eslint-disable-next-line unicorn/prefer-module
Expand Down Expand Up @@ -906,8 +906,8 @@ export class Install {
options.enabled === true || options.enabled === false
? options.enabled
: instanceObj.common.enabled === true || instanceObj.common.enabled === false
? instanceObj.common.enabled
: false;
? instanceObj.common.enabled
: false;

if (options.port) {
instanceObj.native = instanceObj.native || {};
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/setup/setupMultihost.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import fs from 'fs-extra';
import path from 'node:path';
import { tools } from '@iobroker/js-controller-common';
import { isLocalObjectsDbServer, isLocalStatesDbServer } from '@iobroker/js-controller-common-db';
import { isLocalObjectsDbServer, isLocalStatesDbServer } from '@iobroker/js-controller-common';
import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
import { MHClient, type BrowseResultEntry } from './multihostClient.js';
import readline from 'node:readline';
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/setup/setupPacketManager.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { execAsync, type InternalLogger } from '@iobroker/js-controller-common/tools';
import { execAsync, type InternalLogger } from '@iobroker/js-controller-common-db/tools';

enum LOG_LEVELS {
silly = 5,
Expand Down
10 changes: 5 additions & 5 deletions packages/cli/src/lib/setup/setupSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@ import {
objectsDbHasServer,
performObjectsInterview,
performStatesInterview
} from '@iobroker/js-controller-common-db';
} from '@iobroker/js-controller-common';
import { resetDbConnect, dbConnectAsync } from '@/lib/setup/dbConnection.js';
import { BackupRestore } from '@/lib/setup/setupBackup.js';
import crypto from 'node:crypto';
import deepClone from 'deep-clone';
import * as pluginInfos from '@/lib/setup/pluginInfos.js';
import rl from 'readline-sync';
import { FORBIDDEN_CHARS, getHostObject } from '@iobroker/js-controller-common/tools';
import { FORBIDDEN_CHARS, getHostObject } from '@iobroker/js-controller-common-db/tools';
import os from 'node:os';
import { SYSTEM_ADAPTER_PREFIX, SYSTEM_HOST_PREFIX } from '@iobroker/js-controller-common/constants';
import { SYSTEM_ADAPTER_PREFIX, SYSTEM_HOST_PREFIX } from '@iobroker/js-controller-common-db/constants';
import { Upload } from '@/lib/setup/setupUpload.js';
import { createRequire } from 'node:module';
import * as url from 'node:url';
Expand Down Expand Up @@ -962,8 +962,8 @@ Please DO NOT copy files manually into ioBroker storage directories!`
const defaultSentinelName = originalConfig.states.sentinelName
? originalConfig.states.sentinelName
: oSentinelName && oPort === sPort
? oSentinelName
: 'mymaster';
? oSentinelName
: 'mymaster';
sSentinelName = rl.question(`States Redis Sentinel Master Name [${defaultSentinelName}]: `, {
defaultInput: defaultSentinelName
});
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/lib/setup/setupUpload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import mime from 'mime-types';
import { join } from 'node:path';
import type { Client as StatesRedisClient } from '@iobroker/db-states-redis';
import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis';
import type { InternalLogger } from '@iobroker/js-controller-common/tools';
import type { InternalLogger } from '@iobroker/js-controller-common-db/tools';

const hostname = tools.getHostName();

Expand Down
4 changes: 2 additions & 2 deletions packages/common-db/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Common class for ioBroker
# Common DB class for ioBroker
The Library contains the common utils of ioBroker which use the DB directly and thus cannot be required by the DB itself (cirular dependencies).
It makes sense to place methods here too, which require typings from the database if they are surely not used by the database.
It makes sense to place methods here too, which require typings from the database if they are surely not used by the database.

## License
MIT
Expand Down
47 changes: 33 additions & 14 deletions packages/common-db/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,30 @@
"type": "module",
"version": "6.0.1-alpha.0-20240525-56d9e4a2e",
"engines": {
"node": ">=12.0.0"
"node": ">=18.0.0"
},
"optionalDependencies": {
"winston-seq-updated": "^1.0.4",
"@datalust/winston-seq": "^1.0.0",
"diskusage": "^1.1.3",
"winston-syslog": "^2.6.0"
},
"dependencies": {
"@iobroker/db-objects-file": "file:../db-objects-file",
"@iobroker/db-objects-jsonl": "file:../db-objects-jsonl",
"@iobroker/db-objects-redis": "file:../db-objects-redis",
"@iobroker/db-states-file": "file:../db-states-file",
"@iobroker/db-states-jsonl": "file:../db-states-jsonl",
"@iobroker/db-states-redis": "file:../db-states-redis",
"@iobroker/js-controller-common": "file:../common",
"fs-extra": "^11.1.0"
"@alcalzone/pak": "^0.8.1",
"axios": "^1.6.3",
"ci-info": "^3.8.0",
"deep-clone": "^3.0.3",
"event-stream": "^4.0.1",
"fs-extra": "^11.1.0",
"jsonwebtoken": "^9.0.0",
"node-forge": "^1.3.0",
"node.extend": "^2.0.2",
"promisify-child-process": "^4.1.2",
"readline": "^1.3.0",
"semver": "^7.5.2",
"triple-beam": "^1.3.0",
"winston": "^3.7.2",
"winston-daily-rotate-file": "^5.0.0",
"winston-transport": "^4.5.0"
},
"keywords": [
"ioBroker"
Expand All @@ -39,17 +48,27 @@
"main": "build/cjs/index.js",
"module": "build/esm/index.js",
"types": "build/esm/index.d.ts",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"exports": {
".": {
"import": "./build/esm/index.js",
"require": "./build/cjs/index.js",
"types": "./build/esm/index.d.ts"
},
"./tools": {
"import": "./build/esm/lib/common/tools.js",
"require": "./build/cjs/lib/common/tools.js",
"types": "./build/esm/lib/common/tools.d.ts"
},
"./constants": {
"import": "./build/esm/lib/common/constants.js",
"require": "./build/cjs/lib/common/constants.js",
"types": "./build/esm/lib/common/constants.d.ts"
}
},
"license": "MIT",
"publishConfig": {
"access": "public"
},
"files": [
"build/"
]
Expand Down
21 changes: 8 additions & 13 deletions packages/common-db/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
export {
getStatesConstructor,
statesDbHasServer,
isLocalStatesDbServer,
performStatesInterview
} from '@/lib/common/states.js';
export {
getObjectsConstructor,
objectsDbHasServer,
isLocalObjectsDbServer,
performObjectsInterview
} from '@/lib/common/objects.js';
export { NotificationHandler } from '@/lib/common/notificationHandler.js';
/// <reference types="@iobroker/types-dev" />
export * as tools from '@/lib/common/tools.js';
export { EXIT_CODES } from '@/lib/common/exitCodes.js';
export { password } from '@/lib/common/password.js';
export { logger } from '@/lib/common/logger.js';
export { defaultRedisInterview } from '@/lib/common/interview.js';
export { createAdapterStore as session } from '@/lib/common/session.js';
export * as constants from '@/lib/common/constants.js';
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,8 @@ export function logger(
transport.localTime !== undefined
? transport.localTime
: userOptions.localTime === undefined
? true
: userOptions.localTime;
? true
: userOptions.localTime;
transport.datePattern = 'YYYY-MM-DD';
transport.format = winston.format.combine(winston.format.printf(formatter));
/*transport.logException = function (message, info, next, err) {
Expand All @@ -246,8 +246,8 @@ export function logger(
transport.zippedArchive = isWindows
? false
: transport.zippedArchive !== undefined
? transport.zippedArchive
: true;
? transport.zippedArchive
: true;

if (transport.maxFiles === null && userOptions.maxDays) {
transport.maxFiles = `${userOptions.maxDays}d`;
Expand Down
Loading