@twin.org/node-core 0.9.4-next.5 → 0.9.5-next.1
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.
- package/dist/es/builders/engineEnvBuilder.js +8 -9
- package/dist/es/builders/engineEnvBuilder.js.map +1 -1
- package/dist/es/builders/helper/envHelpers.js +12 -20
- package/dist/es/builders/helper/envHelpers.js.map +1 -1
- package/dist/es/defaults.js +17 -0
- package/dist/es/defaults.js.map +1 -1
- package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
- package/dist/es/models/engineEnvironmentVariableKeys.js +5 -2
- package/dist/es/models/engineEnvironmentVariableKeys.js.map +1 -1
- package/dist/es/node.js +1 -1
- package/dist/es/node.js.map +1 -1
- package/dist/types/builders/helper/envHelpers.d.ts +31 -4
- package/dist/types/defaults.d.ts +8 -0
- package/dist/types/models/IEngineEnvironmentVariables.d.ts +29 -6
- package/docs/changelog.md +45 -39
- package/docs/reference/index.md +1 -0
- package/docs/reference/interfaces/IEngineEnvironmentVariables.md +66 -11
- package/docs/reference/variables/DEFAULT_HEALTH_EXCLUDE_CLONE_COMPONENTS.md +9 -0
- package/package.json +1 -1
|
@@ -119,7 +119,7 @@ export function envSecToMs(envVars, key, defaultValue) {
|
|
|
119
119
|
if (Is.empty(n)) {
|
|
120
120
|
throw new GeneralError("node", "invalidEnvVarValue", { key, value, type: "integer" });
|
|
121
121
|
}
|
|
122
|
-
return n * 1000;
|
|
122
|
+
return n <= 0 ? n : n * 1000;
|
|
123
123
|
}
|
|
124
124
|
export function envMinToMs(envVars, key, defaultValue) {
|
|
125
125
|
const value = envVars[key];
|
|
@@ -130,20 +130,15 @@ export function envMinToMs(envVars, key, defaultValue) {
|
|
|
130
130
|
if (Is.empty(n)) {
|
|
131
131
|
throw new GeneralError("node", "invalidEnvVarValue", { key, value, type: "integer" });
|
|
132
132
|
}
|
|
133
|
-
return n * 60_000;
|
|
133
|
+
return n <= 0 ? n : n * 60_000;
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
* Converts a comma separated list to an array.
|
|
137
|
-
* @param envVars The environment variables object.
|
|
138
|
-
* @param key The property name of the env var.
|
|
139
|
-
* @param expectedValues An optional array of expected values.
|
|
140
|
-
* @param defaultValue The default value to return when the list is empty or undefined.
|
|
141
|
-
* @throws GeneralError if the list contains a value not in the expected values.
|
|
142
|
-
* @returns The array.
|
|
143
|
-
*/
|
|
144
|
-
export function envListToArray(envVars, key, expectedValues, defaultValue = []) {
|
|
135
|
+
export function envListToArray(envVars, key, expectedValues, defaultValue) {
|
|
145
136
|
const value = envVars[key];
|
|
146
|
-
const
|
|
137
|
+
const resolvedDefaultValue = arguments.length >= 4 ? defaultValue : [];
|
|
138
|
+
const values = commaSeparatedListToArray(value, resolvedDefaultValue);
|
|
139
|
+
if (values === undefined) {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
147
142
|
if (Is.arrayValue(expectedValues) && !values.every(item => expectedValues.includes(item))) {
|
|
148
143
|
throw new GeneralError("node", "invalidEnvVarValue", {
|
|
149
144
|
key,
|
|
@@ -153,14 +148,11 @@ export function envListToArray(envVars, key, expectedValues, defaultValue = [])
|
|
|
153
148
|
}
|
|
154
149
|
return values;
|
|
155
150
|
}
|
|
156
|
-
|
|
157
|
-
* Converts a comma separated list to an array.
|
|
158
|
-
* @param value The comma separated list.
|
|
159
|
-
* @param defaultValue The default value to return when the list is empty or undefined.
|
|
160
|
-
* @returns The array.
|
|
161
|
-
*/
|
|
162
|
-
export function commaSeparatedListToArray(value, defaultValue = []) {
|
|
151
|
+
export function commaSeparatedListToArray(value, defaultValue) {
|
|
163
152
|
if (!Is.stringValue(value)) {
|
|
153
|
+
if (arguments.length < 2) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
164
156
|
return defaultValue;
|
|
165
157
|
}
|
|
166
158
|
return value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envHelpers.js","sourceRoot":"","sources":["../../../../src/builders/helper/envHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { Coerce, GeneralError, Is } from \"@twin.org/core\";\n\n/**\n * Returns an env var as a string when it holds a non-empty value, falling back to the supplied default.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @param defaultValue The value to return when the env var is absent or empty. Omit to return undefined when absent.\n * @returns The string value, the default, or undefined when absent and no default given.\n */\nexport function envString<T>(envVars: T, key: keyof T, defaultValue: string): string;\nexport function envString<T>(envVars: T, key: keyof T): string | undefined;\nexport function envString<T>(envVars: T, key: keyof T, defaultValue?: string): string | undefined {\n\tconst value = envVars[key];\n\treturn Is.stringValue(value) ? value : defaultValue;\n}\n\n/**\n * Returns an env var constrained to one of the supplied choices, falling back to the supplied default.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @param choices The permitted values for the env var.\n * @param defaultValue The value to return when the env var is absent or empty. Omit to return undefined when absent.\n * @returns The matching choice, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but is not one of the choices.\n */\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[],\n\tdefaultValue: U\n): U;\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[]\n): U | undefined;\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[],\n\tdefaultValue?: U\n): U | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tif (!choices.includes(value as U)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: choices.join(\" | \")\n\t\t});\n\t}\n\treturn value as U;\n}\n\n/**\n * Coerces an env var to a boolean, falling back to the supplied default when not set.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The boolean value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to a boolean.\n */\nexport function envBoolean<T>(envVars: T, key: keyof T, defaultValue: boolean): boolean;\nexport function envBoolean<T>(envVars: T, key: keyof T): boolean | undefined;\nexport function envBoolean<T>(\n\tenvVars: T,\n\tkey: keyof T,\n\tdefaultValue?: boolean\n): boolean | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.boolean(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"boolean\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is already in milliseconds to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The millisecond value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that represents an integer count or size to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The count, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envCount<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envCount<T>(envVars: T, key: keyof T): number | undefined;\nexport function envCount<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that represents an integer to an actual integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The integer, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envInteger<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envInteger<T>(envVars: T, key: keyof T): number | undefined;\nexport function envInteger<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Returns an env var as a typed object. Accepts a pre-parsed object, an inline JSON object string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent or cannot be parsed.\n * @returns The parsed object, or the default when absent or the value cannot be parsed.\n */\nexport function envObject<T, U>(envVars: T, key: keyof T, defaultValue: U): U;\n/**\n * Returns an env var as a typed object. Accepts a pre-parsed object, an inline JSON object string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @returns The parsed object, or undefined when the var is absent or the value cannot be parsed.\n */\nexport function envObject<T, U>(envVars: T, key: keyof T): U | undefined;\nexport function envObject<T, U>(envVars: T, key: keyof T, defaultValue?: U): U | undefined {\n\tconst value: unknown = envVars[key];\n\tif (Is.undefined(value)) {\n\t\treturn defaultValue;\n\t}\n\treturn Coerce.object<U>(value) ?? defaultValue;\n}\n\n/**\n * Returns an env var as a typed array. Accepts a pre-parsed array, an inline JSON array string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent or cannot be parsed.\n * @returns The parsed array, or the default when absent or the value cannot be parsed.\n */\nexport function envArray<T, U>(envVars: T, key: keyof T, defaultValue: U[]): U[];\n/**\n * Returns an env var as a typed array. Accepts a pre-parsed array, an inline JSON array string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @returns The parsed array, or undefined when the var is absent or the value cannot be parsed.\n */\nexport function envArray<T, U>(envVars: T, key: keyof T): U[] | undefined;\nexport function envArray<T, U>(envVars: T, key: keyof T, defaultValue?: U[]): U[] | undefined {\n\tconst value: unknown = envVars[key];\n\tif (Is.undefined(value)) {\n\t\treturn defaultValue;\n\t}\n\treturn Coerce.array<U>(value) ?? defaultValue;\n}\n\n/**\n * Coerces an env var that is already in seconds to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The second value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envSeconds<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envSeconds<T>(envVars: T, key: keyof T): number | undefined;\nexport function envSeconds<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is already in minutes to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The minute value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMinutes<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMinutes<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMinutes<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is a datetime string, throwing when the value is set but not a valid datetime.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The datetime ISO string, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to a datetime.\n */\nexport function envDateTime<T>(envVars: T, key: keyof T, defaultValue: string): string;\nexport function envDateTime<T>(envVars: T, key: keyof T): string | undefined;\nexport function envDateTime<T>(\n\tenvVars: T,\n\tkey: keyof T,\n\tdefaultValue?: string\n): string | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.dateTime(value) ?? Coerce.date(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"datetime\" });\n\t}\n\treturn result.toISOString();\n}\n\n/**\n * Coerces an env var to an integer and converts from seconds to milliseconds.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The value in milliseconds, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envSecToMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envSecToMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envSecToMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst n = Coerce.integer(value);\n\tif (Is.empty(n)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn n * 1000;\n}\n\n/**\n * Coerces an env var to an integer and converts from minutes to milliseconds.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The value in milliseconds, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMinToMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMinToMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMinToMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst n = Coerce.integer(value);\n\tif (Is.empty(n)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn n * 60_000;\n}\n\n/**\n * Converts a comma separated list to an array.\n * @param envVars The environment variables object.\n * @param key The property name of the env var.\n * @param expectedValues An optional array of expected values.\n * @param defaultValue The default value to return when the list is empty or undefined.\n * @throws GeneralError if the list contains a value not in the expected values.\n * @returns The array.\n */\nexport function envListToArray<T, U>(\n\tenvVars: T,\n\tkey: keyof T,\n\texpectedValues?: U[],\n\tdefaultValue: U[] | undefined = []\n): U[] {\n\tconst value = envVars[key];\n\n\tconst values = commaSeparatedListToArray<U>(value as string, defaultValue);\n\n\tif (Is.arrayValue(expectedValues) && !values.every(item => expectedValues.includes(item))) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: expectedValues.join(\" | \")\n\t\t});\n\t}\n\n\treturn values;\n}\n\n/**\n * Converts a comma separated list to an array.\n * @param value The comma separated list.\n * @param defaultValue The default value to return when the list is empty or undefined.\n * @returns The array.\n */\nexport function commaSeparatedListToArray<U>(\n\tvalue: string | undefined,\n\tdefaultValue: U[] | undefined = []\n): U[] {\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\treturn value\n\t\t.split(\",\")\n\t\t.map(item => item.trim())\n\t\t.filter(item => item.length > 0) as U[];\n}\n\n/**\n * Gets named key integer pairs from an env var holding comma separated key=integer pairs.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @returns The named key integer pairs, or undefined when the env var is absent or empty.\n * @throws GeneralError if an entry is not a unique name=value pair with an integer value.\n */\nexport function envKeyIntegerPairs<T>(\n\tenvVars: T,\n\tkey: keyof T\n): { [key: string]: number } | undefined {\n\tconst entries = commaSeparatedListToArray<string>(envVars[key] as string | undefined, undefined);\n\tif (!Is.arrayValue(entries)) {\n\t\treturn undefined;\n\t}\n\n\tconst keyValues: { [name: string]: number } = {};\n\tfor (const entry of entries) {\n\t\tconst parts = entry.split(\"=\").map(part => part.trim());\n\n\t\tconst keyPart = parts[0];\n\t\tconst valuePart = Coerce.integer(parts[1]);\n\t\tif (\n\t\t\tparts.length !== 2 ||\n\t\t\t!Is.stringValue(keyPart) ||\n\t\t\t!Is.integer(valuePart) ||\n\t\t\t!Is.undefined(keyValues[keyPart])\n\t\t) {\n\t\t\tthrow new GeneralError(\"node\", \"invalidEnvVarPair\", { key: keyPart, value: entry });\n\t\t}\n\t\tkeyValues[keyPart] = valuePart;\n\t}\n\n\treturn keyValues;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"envHelpers.js","sourceRoot":"","sources":["../../../../src/builders/helper/envHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { Coerce, GeneralError, Is } from \"@twin.org/core\";\n\n/**\n * Returns an env var as a string when it holds a non-empty value, falling back to the supplied default.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @param defaultValue The value to return when the env var is absent or empty. Omit to return undefined when absent.\n * @returns The string value, the default, or undefined when absent and no default given.\n */\nexport function envString<T>(envVars: T, key: keyof T, defaultValue: string): string;\nexport function envString<T>(envVars: T, key: keyof T): string | undefined;\nexport function envString<T>(envVars: T, key: keyof T, defaultValue?: string): string | undefined {\n\tconst value = envVars[key];\n\treturn Is.stringValue(value) ? value : defaultValue;\n}\n\n/**\n * Returns an env var constrained to one of the supplied choices, falling back to the supplied default.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @param choices The permitted values for the env var.\n * @param defaultValue The value to return when the env var is absent or empty. Omit to return undefined when absent.\n * @returns The matching choice, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but is not one of the choices.\n */\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[],\n\tdefaultValue: U\n): U;\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[]\n): U | undefined;\nexport function envChoice<T, U extends string>(\n\tenvVars: T,\n\tkey: keyof T,\n\tchoices: readonly U[],\n\tdefaultValue?: U\n): U | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tif (!choices.includes(value as U)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: choices.join(\" | \")\n\t\t});\n\t}\n\treturn value as U;\n}\n\n/**\n * Coerces an env var to a boolean, falling back to the supplied default when not set.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The boolean value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to a boolean.\n */\nexport function envBoolean<T>(envVars: T, key: keyof T, defaultValue: boolean): boolean;\nexport function envBoolean<T>(envVars: T, key: keyof T): boolean | undefined;\nexport function envBoolean<T>(\n\tenvVars: T,\n\tkey: keyof T,\n\tdefaultValue?: boolean\n): boolean | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.boolean(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"boolean\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is already in milliseconds to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The millisecond value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that represents an integer count or size to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The count, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envCount<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envCount<T>(envVars: T, key: keyof T): number | undefined;\nexport function envCount<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that represents an integer to an actual integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The integer, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envInteger<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envInteger<T>(envVars: T, key: keyof T): number | undefined;\nexport function envInteger<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Returns an env var as a typed object. Accepts a pre-parsed object, an inline JSON object string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent or cannot be parsed.\n * @returns The parsed object, or the default when absent or the value cannot be parsed.\n */\nexport function envObject<T, U>(envVars: T, key: keyof T, defaultValue: U): U;\n/**\n * Returns an env var as a typed object. Accepts a pre-parsed object, an inline JSON object string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @returns The parsed object, or undefined when the var is absent or the value cannot be parsed.\n */\nexport function envObject<T, U>(envVars: T, key: keyof T): U | undefined;\nexport function envObject<T, U>(envVars: T, key: keyof T, defaultValue?: U): U | undefined {\n\tconst value: unknown = envVars[key];\n\tif (Is.undefined(value)) {\n\t\treturn defaultValue;\n\t}\n\treturn Coerce.object<U>(value) ?? defaultValue;\n}\n\n/**\n * Returns an env var as a typed array. Accepts a pre-parsed array, an inline JSON array string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent or cannot be parsed.\n * @returns The parsed array, or the default when absent or the value cannot be parsed.\n */\nexport function envArray<T, U>(envVars: T, key: keyof T, defaultValue: U[]): U[];\n/**\n * Returns an env var as a typed array. Accepts a pre-parsed array, an inline JSON array string,\n * or a value already expanded from a @json: file reference.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @returns The parsed array, or undefined when the var is absent or the value cannot be parsed.\n */\nexport function envArray<T, U>(envVars: T, key: keyof T): U[] | undefined;\nexport function envArray<T, U>(envVars: T, key: keyof T, defaultValue?: U[]): U[] | undefined {\n\tconst value: unknown = envVars[key];\n\tif (Is.undefined(value)) {\n\t\treturn defaultValue;\n\t}\n\treturn Coerce.array<U>(value) ?? defaultValue;\n}\n\n/**\n * Coerces an env var that is already in seconds to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The second value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envSeconds<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envSeconds<T>(envVars: T, key: keyof T): number | undefined;\nexport function envSeconds<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is already in minutes to an integer.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The minute value, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMinutes<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMinutes<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMinutes<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.integer(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn result;\n}\n\n/**\n * Coerces an env var that is a datetime string, throwing when the value is set but not a valid datetime.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The datetime ISO string, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to a datetime.\n */\nexport function envDateTime<T>(envVars: T, key: keyof T, defaultValue: string): string;\nexport function envDateTime<T>(envVars: T, key: keyof T): string | undefined;\nexport function envDateTime<T>(\n\tenvVars: T,\n\tkey: keyof T,\n\tdefaultValue?: string\n): string | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst result = Coerce.dateTime(value) ?? Coerce.date(value);\n\tif (Is.empty(result)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"datetime\" });\n\t}\n\treturn result.toISOString();\n}\n\n/**\n * Coerces an env var to an integer and converts from seconds to milliseconds.\n * Values of zero or less are returned unchanged so sentinels such as -1 keep their meaning.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The value in milliseconds, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envSecToMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envSecToMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envSecToMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst n = Coerce.integer(value);\n\tif (Is.empty(n)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn n <= 0 ? n : n * 1000;\n}\n\n/**\n * Coerces an env var to an integer and converts from minutes to milliseconds.\n * Values of zero or less are returned unchanged so sentinels such as -1 keep their meaning.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to coerce.\n * @param defaultValue The value to return when the env var is absent. Omit to return undefined when absent.\n * @returns The value in milliseconds, the default, or undefined when absent and no default given.\n * @throws GeneralError if the value is set but cannot be coerced to an integer.\n */\nexport function envMinToMs<T>(envVars: T, key: keyof T, defaultValue: number): number;\nexport function envMinToMs<T>(envVars: T, key: keyof T): number | undefined;\nexport function envMinToMs<T>(envVars: T, key: keyof T, defaultValue?: number): number | undefined {\n\tconst value = envVars[key];\n\tif (!Is.stringValue(value)) {\n\t\treturn defaultValue;\n\t}\n\tconst n = Coerce.integer(value);\n\tif (Is.empty(n)) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", { key, value, type: \"integer\" });\n\t}\n\treturn n <= 0 ? n : n * 60_000;\n}\n\n/**\n * Converts a comma separated list to an array.\n * @param envVars The environment variables object.\n * @param key The property name of the env var.\n * @param expectedValues An optional array of expected values.\n * @throws GeneralError if the list contains a value not in the expected values.\n * @returns The array, empty when the env var is absent.\n */\nexport function envListToArray<T, U>(envVars: T, key: keyof T, expectedValues?: U[]): U[];\n/**\n * Converts a comma separated list to an array.\n * @param envVars The environment variables object.\n * @param key The property name of the env var.\n * @param expectedValues An optional array of expected values.\n * @param defaultValue The default value to return when the list is empty or undefined.\n * @throws GeneralError if the list contains a value not in the expected values.\n * @returns The array, or the default when the env var is absent.\n */\nexport function envListToArray<T, U>(\n\tenvVars: T,\n\tkey: keyof T,\n\texpectedValues: U[] | undefined,\n\tdefaultValue: U[]\n): U[];\n/**\n * Converts a comma separated list to an array.\n * @param envVars The environment variables object.\n * @param key The property name of the env var.\n * @param expectedValues An optional array of expected values.\n * @param defaultValue The default value to return when the list is empty or undefined.\n * @throws GeneralError if the list contains a value not in the expected values.\n * @returns The array, or the default when the env var is absent, which may be undefined.\n */\nexport function envListToArray<T, U>(\n\tenvVars: T,\n\tkey: keyof T,\n\texpectedValues: U[] | undefined,\n\tdefaultValue: U[] | undefined\n): U[] | undefined;\nexport function envListToArray<T, U>(\n\tenvVars: T,\n\tkey: keyof T,\n\texpectedValues?: U[],\n\tdefaultValue?: U[]\n): U[] | undefined {\n\tconst value = envVars[key];\n\tconst resolvedDefaultValue = arguments.length >= 4 ? defaultValue : [];\n\n\tconst values = commaSeparatedListToArray<U>(value as string | undefined, resolvedDefaultValue);\n\n\tif (values === undefined) {\n\t\treturn undefined;\n\t}\n\n\tif (Is.arrayValue(expectedValues) && !values.every(item => expectedValues.includes(item))) {\n\t\tthrow new GeneralError(\"node\", \"invalidEnvVarValue\", {\n\t\t\tkey,\n\t\t\tvalue,\n\t\t\ttype: expectedValues.join(\" | \")\n\t\t});\n\t}\n\n\treturn values;\n}\n\n/**\n * Converts a comma separated list to an array.\n * @param value The comma separated list.\n * @returns The array, empty when the list is empty or undefined.\n */\nexport function commaSeparatedListToArray<U>(value: string | undefined): U[];\n/**\n * Converts a comma separated list to an array.\n * @param value The comma separated list.\n * @param defaultValue The default value to return when the list is empty or undefined.\n * @returns The array, or the default when the list is empty or undefined.\n */\nexport function commaSeparatedListToArray<U>(\n\tvalue: string | undefined,\n\tdefaultValue: U[] | undefined\n): U[] | undefined;\nexport function commaSeparatedListToArray<U>(\n\tvalue: string | undefined,\n\tdefaultValue?: U[]\n): U[] | undefined {\n\tif (!Is.stringValue(value)) {\n\t\tif (arguments.length < 2) {\n\t\t\treturn [];\n\t\t}\n\t\treturn defaultValue;\n\t}\n\treturn value\n\t\t.split(\",\")\n\t\t.map(item => item.trim())\n\t\t.filter(item => item.length > 0) as U[];\n}\n\n/**\n * Gets named key integer pairs from an env var holding comma separated key=integer pairs.\n * @param envVars The environment variables object.\n * @param key The property name of the env var to read.\n * @returns The named key integer pairs, or undefined when the env var is absent or empty.\n * @throws GeneralError if an entry is not a unique name=value pair with an integer value.\n */\nexport function envKeyIntegerPairs<T>(\n\tenvVars: T,\n\tkey: keyof T\n): { [key: string]: number } | undefined {\n\tconst entries = commaSeparatedListToArray<string>(envVars[key] as string | undefined, undefined);\n\tif (!Is.arrayValue(entries)) {\n\t\treturn undefined;\n\t}\n\n\tconst keyValues: { [name: string]: number } = {};\n\tfor (const entry of entries) {\n\t\tconst parts = entry.split(\"=\").map(part => part.trim());\n\n\t\tconst keyPart = parts[0];\n\t\tconst valuePart = Coerce.integer(parts[1]);\n\t\tif (\n\t\t\tparts.length !== 2 ||\n\t\t\t!Is.stringValue(keyPart) ||\n\t\t\t!Is.integer(valuePart) ||\n\t\t\t!Is.undefined(keyValues[keyPart])\n\t\t) {\n\t\t\tthrow new GeneralError(\"node\", \"invalidEnvVarPair\", { key: keyPart, value: entry });\n\t\t}\n\t\tkeyValues[keyPart] = valuePart;\n\t}\n\n\treturn keyValues;\n}\n"]}
|
package/dist/es/defaults.js
CHANGED
|
@@ -28,6 +28,23 @@ export const CONTEXT_ID_HANDLER_FEATURE_DID = "did";
|
|
|
28
28
|
* Feature tag identifying the tenant context ID handler.
|
|
29
29
|
*/
|
|
30
30
|
export const CONTEXT_ID_HANDLER_FEATURE_TENANT = "tenant";
|
|
31
|
+
/**
|
|
32
|
+
* The default component types excluded from the engine clone used by the application health
|
|
33
|
+
* background task. Each entry is a regular expression matched against the engine config type keys.
|
|
34
|
+
* None of the components in these groups implement healthApplication, and nothing that does
|
|
35
|
+
* implement it depends on them, so keeping them out of the clone removes the cost of constructing
|
|
36
|
+
* and starting them in the health worker.
|
|
37
|
+
*/
|
|
38
|
+
export const DEFAULT_HEALTH_EXCLUDE_CLONE_COMPONENTS = [
|
|
39
|
+
"^rightsManagement",
|
|
40
|
+
"^dataspace",
|
|
41
|
+
"^federatedCatalogue",
|
|
42
|
+
"^trust",
|
|
43
|
+
"^automation",
|
|
44
|
+
"^telemetry",
|
|
45
|
+
"^tracing",
|
|
46
|
+
"^restClientProcessor$"
|
|
47
|
+
];
|
|
31
48
|
/**
|
|
32
49
|
* Get the default environment variables for the node.
|
|
33
50
|
* @param envPrefix The environment variable prefix.
|
package/dist/es/defaults.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,uBAAuB,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,2BAA2B,CAAC;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAQ,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAA8B;QAC1C,CAAC,GAAG,SAAS,oCAAoC,CAAC,EAAE,kCAAkC;QACtF,CAAC,GAAG,SAAS,wCAAwC,CAAC,EAAE,sCAAsC;QAC9F,CAAC,GAAG,SAAS,gCAAgC,CAAC,EAAE,8BAA8B;QAC9E,CAAC,GAAG,SAAS,8BAA8B,CAAC,EAAE,4BAA4B;QAC1E,CAAC,GAAG,SAAS,qBAAqB,CAAC,EAAE,mBAAmB;KACxD,CAAC;IACF,OAAO,OAAO,CAAC;AAChB,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Default verification method fragment ID for attestation.\n */\nexport const ATTESTATION_VERIFICATION_METHOD_ID = \"attestation-assertion\";\n\n/**\n * Default verification method fragment ID for immutable proofs.\n */\nexport const IMMUTABLE_PROOF_VERIFICATION_METHOD_ID = \"immutable-proof-assertion\";\n\n/**\n * Default vault key ID for blob storage encryption.\n */\nexport const BLOB_STORAGE_ENCRYPTION_KEY_ID = \"blob-encryption\";\n\n/**\n * Default verification method fragment ID for trust assertions.\n */\nexport const TRUST_VERIFICATION_METHOD_ID = \"trust-assertion\";\n\n/**\n * Default vault key ID used for signing authentication tokens.\n */\nexport const AUTH_SIGNING_KEY_ID = \"auth-signing\";\n\n/**\n * Feature tag identifying the DID context ID handler.\n */\nexport const CONTEXT_ID_HANDLER_FEATURE_DID = \"did\";\n\n/**\n * Feature tag identifying the tenant context ID handler.\n */\nexport const CONTEXT_ID_HANDLER_FEATURE_TENANT = \"tenant\";\n\n/**\n * Get the default environment variables for the node.\n * @param envPrefix The environment variable prefix.\n * @returns The default environment variables.\n */\nexport function getEnvDefaults(envPrefix: string): { [key: string]: string } {\n\tconst envVars: { [key: string]: string } = {\n\t\t[`${envPrefix}ATTESTATION_VERIFICATION_METHOD_ID`]: ATTESTATION_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}IMMUTABLE_PROOF_VERIFICATION_METHOD_ID`]: IMMUTABLE_PROOF_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}BLOB_STORAGE_ENCRYPTION_KEY_ID`]: BLOB_STORAGE_ENCRYPTION_KEY_ID,\n\t\t[`${envPrefix}TRUST_VERIFICATION_METHOD_ID`]: TRUST_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}AUTH_SIGNING_KEY_ID`]: AUTH_SIGNING_KEY_ID\n\t};\n\treturn envVars;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,uBAAuB,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,2BAA2B,CAAC;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAQ,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAa;IAChE,mBAAmB;IACnB,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,UAAU;IACV,uBAAuB;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAA8B;QAC1C,CAAC,GAAG,SAAS,oCAAoC,CAAC,EAAE,kCAAkC;QACtF,CAAC,GAAG,SAAS,wCAAwC,CAAC,EAAE,sCAAsC;QAC9F,CAAC,GAAG,SAAS,gCAAgC,CAAC,EAAE,8BAA8B;QAC9E,CAAC,GAAG,SAAS,8BAA8B,CAAC,EAAE,4BAA4B;QAC1E,CAAC,GAAG,SAAS,qBAAqB,CAAC,EAAE,mBAAmB;KACxD,CAAC;IACF,OAAO,OAAO,CAAC;AAChB,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * Default verification method fragment ID for attestation.\n */\nexport const ATTESTATION_VERIFICATION_METHOD_ID = \"attestation-assertion\";\n\n/**\n * Default verification method fragment ID for immutable proofs.\n */\nexport const IMMUTABLE_PROOF_VERIFICATION_METHOD_ID = \"immutable-proof-assertion\";\n\n/**\n * Default vault key ID for blob storage encryption.\n */\nexport const BLOB_STORAGE_ENCRYPTION_KEY_ID = \"blob-encryption\";\n\n/**\n * Default verification method fragment ID for trust assertions.\n */\nexport const TRUST_VERIFICATION_METHOD_ID = \"trust-assertion\";\n\n/**\n * Default vault key ID used for signing authentication tokens.\n */\nexport const AUTH_SIGNING_KEY_ID = \"auth-signing\";\n\n/**\n * Feature tag identifying the DID context ID handler.\n */\nexport const CONTEXT_ID_HANDLER_FEATURE_DID = \"did\";\n\n/**\n * Feature tag identifying the tenant context ID handler.\n */\nexport const CONTEXT_ID_HANDLER_FEATURE_TENANT = \"tenant\";\n\n/**\n * The default component types excluded from the engine clone used by the application health\n * background task. Each entry is a regular expression matched against the engine config type keys.\n * None of the components in these groups implement healthApplication, and nothing that does\n * implement it depends on them, so keeping them out of the clone removes the cost of constructing\n * and starting them in the health worker.\n */\nexport const DEFAULT_HEALTH_EXCLUDE_CLONE_COMPONENTS: string[] = [\n\t\"^rightsManagement\",\n\t\"^dataspace\",\n\t\"^federatedCatalogue\",\n\t\"^trust\",\n\t\"^automation\",\n\t\"^telemetry\",\n\t\"^tracing\",\n\t\"^restClientProcessor$\"\n];\n\n/**\n * Get the default environment variables for the node.\n * @param envPrefix The environment variable prefix.\n * @returns The default environment variables.\n */\nexport function getEnvDefaults(envPrefix: string): { [key: string]: string } {\n\tconst envVars: { [key: string]: string } = {\n\t\t[`${envPrefix}ATTESTATION_VERIFICATION_METHOD_ID`]: ATTESTATION_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}IMMUTABLE_PROOF_VERIFICATION_METHOD_ID`]: IMMUTABLE_PROOF_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}BLOB_STORAGE_ENCRYPTION_KEY_ID`]: BLOB_STORAGE_ENCRYPTION_KEY_ID,\n\t\t[`${envPrefix}TRUST_VERIFICATION_METHOD_ID`]: TRUST_VERIFICATION_METHOD_ID,\n\t\t[`${envPrefix}AUTH_SIGNING_KEY_ID`]: AUTH_SIGNING_KEY_ID\n\t};\n\treturn envVars;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IEngineEnvironmentVariables.js","sourceRoot":"","sources":["../../../src/models/IEngineEnvironmentVariables.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * The engine core environment variables.\n */\nexport interface IEngineEnvironmentVariables {\n\t/**\n\t * Start the engine in debug mode.\n\t */\n\tdebug?: string;\n\n\t/**\n\t * Start the engine in silent mode.\n\t */\n\tsilent?: string;\n\n\t/**\n\t * Controls how unrecognised TWIN_* environment variables are handled at startup.\n\t * \"error\" (default): throws a startup error, allowing CI and production deployments\n\t * to hard-fail on misconfigured or misspelled variable names.\n\t * \"warn\": logs a warning and continues.\n\t * \"ignore\": skips validation entirely.\n\t * Any other value is rejected at startup.\n\t * @default \"error\"\n\t */\n\tstrictEnv?: string;\n\n\t/**\n\t * Comma-separated list of raw environment variable names to exempt from the unknown-key check.\n\t * Use this to allowlist variables introduced by custom extensions that are not part of the\n\t * core interface, e.g. TWIN_MY_EXTENSION_SECRET.\n\t */\n\tenvAllowList?: string;\n\n\t/**\n\t * The root directory for storing items like state file.\n\t */\n\tstorageFileRoot?: string;\n\n\t/**\n\t * The name of the state file.\n\t */\n\tstateFilename?: string;\n\n\t/**\n\t * Is multi-tenant support enabled, defaults to false.\n\t */\n\ttenantEnabled?: string;\n\n\t/**\n\t * Enable schema migration, defaults to true.\n\t */\n\tschemaMigrationEnabled?: string;\n\n\t/**\n\t * The type of the entity storage to create, comma separate for more than one connector.\n\t * values: file, memory, aws-dynamodb, azure-cosmosdb, gcp-firestoredb, scylladb, mysql, mongodb, postgresql\n\t */\n\tentityStorageConnectorType?: string;\n\n\t/**\n\t * The default entity storage connector to use, defaults to the first one in the list.\n\t */\n\tentityStorageConnectorDefault?: string;\n\n\t/**\n\t * A prefix for all the table in entity-storage, can be empty.\n\t */\n\tentityStorageTablePrefix?: string;\n\n\t/**\n\t * AWS DynamoDB auth mode, either credentials or pod.\n\t */\n\tawsDynamodbAuthMode?: string;\n\n\t/**\n\t * AWS Dynamo DB access key id.\n\t */\n\tawsDynamodbAccessKeyId?: string;\n\n\t/**\n\t * AWS Dynamo DB Endpoint if running local instance.\n\t */\n\tawsDynamodbEndpoint?: string;\n\n\t/**\n\t * AWS Dynamo DB region.\n\t */\n\tawsDynamodbRegion?: string;\n\n\t/**\n\t * AWS Dynamo DB secret access key.\n\t */\n\tawsDynamodbSecretAccessKey?: string;\n\n\t/**\n\t * AWS Dynamo DB connection timeout in milliseconds.\n\t */\n\tawsDynamodbConnectionTimeout?: string;\n\n\t/**\n\t * Azure Cosmos DB key.\n\t */\n\tazureCosmosdbKey?: string;\n\n\t/**\n\t * Azure Cosmos DB container id.\n\t */\n\tazureCosmosdbContainerId?: string;\n\n\t/**\n\t * Azure Cosmos DB database id.\n\t */\n\tazureCosmosdbDatabaseId?: string;\n\n\t/**\n\t * Azure Cosmos DB endpoint.\n\t */\n\tazureCosmosdbEndpoint?: string;\n\n\t/**\n\t * GCP Firestore collection name.\n\t */\n\tgcpFirestoreCollectionName?: string;\n\n\t/**\n\t * GCP Firestore credentials.\n\t */\n\tgcpFirestoreCredentials?: string;\n\n\t/**\n\t * GCP Firestore database id.\n\t */\n\tgcpFirestoreDatabaseId?: string;\n\n\t/**\n\t * GCP Firestore endpoint.\n\t */\n\tgcpFirestoreEndpoint?: string;\n\n\t/**\n\t * GCP Firestore project id.\n\t */\n\tgcpFirestoreProjectId?: string;\n\n\t/**\n\t * ScyllaDB hosts as comma separated string.\n\t */\n\tscylladbHosts?: string;\n\n\t/**\n\t * ScyllaDB keyspace.\n\t */\n\tscylladbKeyspace?: string;\n\n\t/**\n\t * ScyllaDB local data center.\n\t */\n\tscylladbLocalDataCenter?: string;\n\n\t/**\n\t * ScyllaDB port.\n\t */\n\tscylladbPort?: string;\n\n\t/**\n\t * ScyllaDB connection pool: number of connections per local host.\n\t */\n\tscylladbPoolCoreConnectionsPerHost?: string;\n\n\t/**\n\t * ScyllaDB connection pool: maximum requests per connection.\n\t */\n\tscylladbPoolMaxRequestsPerConnection?: string;\n\n\t/**\n\t * MySQL host.\n\t */\n\tmySqlHost?: string;\n\n\t/**\n\t * MySQL port.\n\t */\n\tmySqlPort?: string;\n\n\t/**\n\t * MySQL username.\n\t */\n\tmySqlUser?: string;\n\n\t/**\n\t * MySQL password.\n\t */\n\tmySqlPassword?: string;\n\n\t/**\n\t * MySQL Database.\n\t */\n\tmySqlDatabase?: string;\n\n\t/**\n\t * MySQL connection pool: maximum number of connections.\n\t */\n\tmySqlPoolConnectionLimit?: string;\n\n\t/**\n\t * MySQL connection pool: maximum number of idle connections.\n\t */\n\tmySqlPoolMaxIdle?: string;\n\n\t/**\n\t * MySQL connection pool: milliseconds before an idle connection is removed.\n\t */\n\tmySqlPoolIdleTimeout?: string;\n\n\t/**\n\t * MySQL connection pool: enable TCP keep-alive.\n\t */\n\tmySqlPoolEnableKeepAlive?: string;\n\n\t/**\n\t * MySQL connection pool: wait for a connection when pool is full.\n\t */\n\tmySqlPoolWaitForConnections?: string;\n\n\t/**\n\t * MySQL connection pool: maximum queued requests (0 = unlimited).\n\t */\n\tmySqlPoolQueueLimit?: string;\n\n\t/**\n\t * MongoDB host.\n\t */\n\tmongoDbHost?: string;\n\n\t/**\n\t * MongoDB port.\n\t */\n\tmongoDbPort?: string;\n\n\t/**\n\t * MongoDB username.\n\t */\n\tmongoDbUser?: string;\n\n\t/**\n\t * MongoDB password.\n\t */\n\tmongoDbPassword?: string;\n\n\t/**\n\t * MongoDB Database.\n\t */\n\tmongoDbDatabase?: string;\n\n\t/**\n\t * MongoDB connection pool: maximum number of connections.\n\t */\n\tmongoDbPoolMaxPoolSize?: string;\n\n\t/**\n\t * MongoDB connection pool: minimum number of connections to maintain.\n\t */\n\tmongoDbPoolMinPoolSize?: string;\n\n\t/**\n\t * MongoDB connection pool: milliseconds a connection can remain idle before removal.\n\t */\n\tmongoDbPoolMaxIdleTime?: string;\n\n\t/**\n\t * MongoDB connection pool: milliseconds to wait for a connection before throwing.\n\t */\n\tmongoDbPoolWaitQueueTimeout?: string;\n\n\t/**\n\t * PostgreSQl host.\n\t */\n\tpostgreSqlHost?: string;\n\n\t/**\n\t * PostgreSQl port.\n\t */\n\tpostgreSqlPort?: string;\n\n\t/**\n\t * PostgreSQl username.\n\t */\n\tpostgreSqlUser?: string;\n\n\t/**\n\t * PostgreSQl password.\n\t */\n\tpostgreSqlPassword?: string;\n\n\t/**\n\t * PostgreSQl Database.\n\t */\n\tpostgreSqlDatabase?: string;\n\n\t/**\n\t * PostgreSQL connection pool: maximum number of connections.\n\t */\n\tpostgreSqlPoolMax?: string;\n\n\t/**\n\t * PostgreSQL connection pool: seconds a connection can remain idle before being closed.\n\t */\n\tpostgreSqlPoolIdleTimeout?: string;\n\n\t/**\n\t * PostgreSQL connection pool: seconds to wait when establishing a connection.\n\t */\n\tpostgreSqlPoolConnectTimeout?: string;\n\n\t/**\n\t * PostgreSQL connection pool: maximum seconds a connection can remain open.\n\t */\n\tpostgreSqlPoolMaxLifetime?: string;\n\n\t/**\n\t * The security token for accessing IPFS API.\n\t */\n\tipfsBearerToken?: string;\n\n\t/**\n\t * The url for accessing IPFS API.\n\t */\n\tipfsApiUrl?: string;\n\n\t/**\n\t * The type of the entity storage to create, comma separate for more than one connector.\n\t * values: memory, file, ipfs, aws-s3, azure-storage, gcp-storage.\n\t */\n\tblobStorageConnectorType?: string;\n\n\t/**\n\t * The default blob storage connector to use, defaults to the first one in the list.\n\t */\n\tblobStorageConnectorDefault?: string;\n\n\t/**\n\t * Enable encryption for the blob storage.\n\t */\n\tblobStorageEnableEncryption?: string;\n\n\t/**\n\t * The id of the encryption key for the blob storage.\n\t */\n\tblobStorageEncryptionKeyId?: string;\n\n\t/**\n\t * A prefix for all the blobs in blob-storage, can be empty.\n\t */\n\tblobStoragePrefix?: string;\n\n\t/**\n\t * AWS S3 region.\n\t */\n\tawsS3Region?: string;\n\n\t/**\n\t * AWS S3 bucket name.\n\t */\n\tawsS3BucketName?: string;\n\n\t/**\n\t * AWS S3 auth mode, either credentials or pod, defaults to credentials.\n\t */\n\tawsS3AuthMode?: string;\n\n\t/**\n\t * AWS S3 access key id.\n\t */\n\tawsS3AccessKeyId?: string;\n\n\t/**\n\t * AWS S3 secret access key.\n\t */\n\tawsS3SecretAccessKey?: string;\n\n\t/**\n\t * AWS S3 endpoint.\n\t */\n\tawsS3Endpoint?: string;\n\n\t/**\n\t * Azure Storage account key.\n\t */\n\tazureStorageAccountKey?: string;\n\n\t/**\n\t * Azure Storage account name.\n\t */\n\tazureStorageAccountName?: string;\n\n\t/**\n\t * Azure Storage container.\n\t */\n\tazureStorageContainerName?: string;\n\n\t/**\n\t * Azure Storage endpoint.\n\t */\n\tazureStorageEndpoint?: string;\n\n\t/**\n\t * GCP Storage bucket.\n\t */\n\tgcpStorageBucketName?: string;\n\n\t/**\n\t * GCP Storage credentials.\n\t */\n\tgcpStorageCredentials?: string;\n\n\t/**\n\t * GCP Storage endpoint.\n\t */\n\tgcpStorageEndpoint?: string;\n\n\t/**\n\t * GCP Storage project id.\n\t */\n\tgcpStorageProjectId?: string;\n\n\t/**\n\t * The type of the default vault connector: entity-storage, hashicorp.\n\t */\n\tvaultConnector?: string;\n\n\t/**\n\t * Prefix to prepend to entries in the vault.\n\t */\n\tvaultPrefix?: string;\n\n\t/**\n\t * Hashicorp Vault token.\n\t */\n\thashicorpVaultToken?: string;\n\n\t/**\n\t * Hashicorp Vault endpoint.\n\t */\n\thashicorpVaultEndpoint?: string;\n\n\t/**\n\t * The type of logging task connector, can be a comma separated list: console, entity-storage, open-telemetry, file.\n\t */\n\tloggingConnector?: string;\n\n\t/**\n\t * The batch size for the logging task, set to 1 for no batching.\n\t */\n\tloggingBatchSize?: string;\n\n\t/**\n\t * The batch flush interval in seconds for the logging task, how often to flush the logs when using batching, defaults to 5 seconds.\n\t */\n\tloggingBatchFlushInterval?: string;\n\n\t/**\n\t * Delete log entries older than this many minutes for the entity-storage logging connector.\n\t * Set to 0 to disable age-based retention.\n\t * @default 2880 (2 days)\n\t */\n\tloggingRetainFor?: string;\n\n\t/**\n\t * Keep at most this many log entries for the entity-storage logging connector.\n\t * Set to 0 to disable count-based retention.\n\t * @default 10000\n\t */\n\tloggingMaxEntries?: string;\n\n\t/**\n\t * How often the retention cleanup task runs in minutes for the entity-storage logging connector.\n\t * Set to 0 to disable periodic cleanup.\n\t * @default 5\n\t */\n\tloggingRetentionInterval?: string;\n\n\t/**\n\t * Maximum number of entries deleted per cleanup batch for the entity-storage logging connector.\n\t * Keeping this value smaller helps avoid spikes in database load.\n\t * @default 1000\n\t */\n\tloggingRetentionBatchSize?: string;\n\n\t/**\n\t * A list of components to exclude from logging, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\tloggingSilentComponents?: string;\n\n\t/**\n\t * The directory to write log files into when using the file logging connector. Required when TWIN_LOGGING_CONNECTOR includes \"file\".\n\t */\n\tloggingFileDirectory?: string;\n\n\t/**\n\t * The log filename when using the file logging connector, defaults to \"app.log\".\n\t */\n\tloggingFileFilename?: string;\n\n\t/**\n\t * The maximum log file size in bytes before rotation when using the file logging connector, defaults to 10485760 (10 MB). Set to 0 or negative to disable rotation.\n\t */\n\tloggingFileMaxFileSizeBytes?: string;\n\n\t/**\n\t * The number of rotated log files to retain when using the file logging connector, defaults to 5. Set to 0 or negative to keep all rotated files.\n\t */\n\tloggingFileMaxRetainedFiles?: string;\n\n\t/**\n\t * A list of components to exclude from telemetry, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\ttelemetrySilentComponents?: string;\n\n\t/**\n\t * The name of the OpenTelemetry logger, only required if using open-telemetry as logging connector, defaults to twin-logging.\n\t */\n\topenTelemetryLoggingLoggerName?: string;\n\n\t/**\n\t * The version of the OpenTelemetry logger, only required if using open-telemetry as logging connector, defaults to 1.0.0.\n\t */\n\topenTelemetryLoggingLoggerVersion?: string;\n\n\t/**\n\t * The OTLP endpoint URL for the OpenTelemetry logging exporter, required when using open-telemetry as logging connector, e.g. http://localhost:4318/v1/logs.\n\t */\n\topenTelemetryLoggingPrometheusEndpoint?: string;\n\n\t/**\n\t * The log record processor to use for the OpenTelemetry logging exporter, either batch or simple, defaults to batch.\n\t */\n\topenTelemetryLoggingProcessor?: string;\n\n\t/**\n\t * The type of event bus connector: local.\n\t */\n\teventBusConnector?: string;\n\n\t/**\n\t * The type of event bus component: service.\n\t */\n\teventBusComponent?: string;\n\n\t/**\n\t * The email protocol connector types, comma-separated: pop3, imap, gmail, outlook.\n\t */\n\temailProtocolConnector?: string;\n\n\t/**\n\t * AWS SES region.\n\t */\n\tawsSesRegion?: string;\n\n\t/**\n\t * AWS SES auth mode, either credentials or pod, defaults to credentials.\n\t */\n\tawsSesAuthMode?: string;\n\n\t/**\n\t * AWS SES secret access key.\n\t */\n\tawsSesSecretAccessKey?: string;\n\n\t/**\n\t * AWS SES access key id.\n\t */\n\tawsSesAccessKeyId?: string;\n\n\t/**\n\t * AWS SES endpoint.\n\t */\n\tawsSesEndpoint?: string;\n\n\t/**\n\t * The applications for the push notifications reference a separate json with @json: prefix.\n\t */\n\tawsMessagingPushNotificationApplications?: string;\n\n\t/**\n\t * The type of messaging email connector: entity-storage, aws, smtp.\n\t */\n\tmessagingEmailConnector?: string;\n\n\t/**\n\t * SMTP server hostname or IP address.\n\t */\n\tsmtpHost?: string;\n\n\t/**\n\t * SMTP server port, defaults to 587.\n\t */\n\tsmtpPort?: string;\n\n\t/**\n\t * Whether the SMTP connector uses TLS.\n\t */\n\tsmtpSecure?: string;\n\n\t/**\n\t * SMTP authentication username.\n\t */\n\tsmtpUsername?: string;\n\n\t/**\n\t * SMTP authentication password.\n\t */\n\tsmtpPassword?: string;\n\n\t/**\n\t * The type of messaging sms connector: entity-storage, aws.\n\t */\n\tmessagingSmsConnector?: string;\n\n\t/**\n\t * The type of messaging push notification connector: entity-storage, aws.\n\t */\n\tmessagingPushNotificationConnector?: string;\n\n\t/**\n\t * The type of telemetry connector, comma-separated for multiple: entity-storage, open-telemetry, silent.\n\t */\n\ttelemetryConnector?: string;\n\n\t/**\n\t * The name of the Open Telemetry meter to use, only required if using open-telemetry as telemetry connector, defaults to twin-node.\n\t */\n\topenTelemetryMeterName?: string;\n\n\t/**\n\t * The version of the Open Telemetry metrics specification to use, only required if using open-telemetry as telemetry connector, defaults to 1.0.0.\n\t */\n\topenTelemetryMeterVersion?: string;\n\n\t/**\n\t * The type of Open Telemetry metric reader to use, only required if using open-telemetry as telemetry connector, values: prometheus.\n\t */\n\topenTelemetryReader?: string;\n\n\t/**\n\t * The port to use for the Open Telemetry Prometheus metrics server, only required if using open-telemetry as telemetry connector and prometheus as reader, defaults to 9464.\n\t */\n\topenTelemetryPrometheusPort?: string;\n\n\t/**\n\t * Polling interval in seconds for the telemetry metrics collector. Defaults to 60.\n\t */\n\ttelemetryMetricsCollectorInterval?: string;\n\n\t/**\n\t * The type of telemetry metrics producers, can be a comma separated list: system, process.\n\t */\n\ttelemetryMetricsProducers?: string;\n\n\t/**\n\t * Maximum number of values retained per telemetry metric (count-based history cap). Defaults to 1440.\n\t */\n\ttelemetryMetricsProducerMaxHistory?: string;\n\n\t/**\n\t * The batch size for the telemetry connector, set to 1 to disable size-based flushing.\n\t */\n\ttelemetryBatchSize?: string;\n\n\t/**\n\t * The batch flush interval in seconds for the telemetry connector, how often to flush when using batching, defaults to 5 seconds.\n\t */\n\ttelemetryBatchFlushInterval?: string;\n\n\t/**\n\t * The maximum number of metric values to hold in the write-ahead cache for the telemetry connector. Set to 0 for unlimited.\n\t * @default 1000\n\t */\n\ttelemetryMaxCacheSize?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the telemetry connector.\n\t */\n\ttelemetryMutexTimeout?: string;\n\n\t/**\n\t * The maximum number of metric definitions held in the in-memory definition cache for the telemetry connector.\n\t * @default 100\n\t */\n\ttelemetryMetricDefinitionCacheCapacity?: string;\n\n\t/**\n\t * The time-to-idle in milliseconds for cached metric definitions in the telemetry connector.\n\t * @default 3600000\n\t */\n\ttelemetryMetricDefinitionCacheTtiMs?: string;\n\n\t/**\n\t * A list of components to exclude from tracing, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\ttracingSilentComponents?: string;\n\n\t/**\n\t * The type of tracing connector, comma-separated for multiple: entity-storage, open-telemetry, console, silent.\n\t */\n\ttracingConnector?: string;\n\n\t/**\n\t * The name of the Open Telemetry tracer to use, only required if using open-telemetry as tracing connector, defaults to twin-node.\n\t */\n\topenTelemetryTracingTracerName?: string;\n\n\t/**\n\t * The version of the Open Telemetry tracing specification to use, only required if using open-telemetry as tracing connector, defaults to 1.0.0.\n\t */\n\topenTelemetryTracingTracerVersion?: string;\n\n\t/**\n\t * The OTLP HTTP endpoint to push spans to, e.g. http://localhost:4318/v1/traces. Required when using open-telemetry as tracing connector.\n\t */\n\topenTelemetryTracingEndpoint?: string;\n\n\t/**\n\t * The span processor: batch (default) or simple. Only used when TWIN_TRACING_CONNECTOR=open-telemetry.\n\t */\n\topenTelemetryTracingProcessor?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the tracing connector.\n\t */\n\ttracingMutexTimeout?: string;\n\n\t/**\n\t * The type of faucet connector: entity-storage, iota.\n\t */\n\tfaucetConnector?: string;\n\n\t/**\n\t * The type of wallet connector: entity-storage, iota.\n\t */\n\twalletConnector?: string;\n\n\t/**\n\t * The type of NFT connector: entity-storage, iota.\n\t */\n\tnftConnector?: string;\n\n\t/**\n\t * The NFT deployed package id, for custom deployments.\n\t */\n\tnftPackageId?: string;\n\n\t/**\n\t * The type of notarization connector: entity-storage, iota.\n\t */\n\tnotarizationConnector?: string;\n\n\t/**\n\t * The type of identity connector: entity-storage, iota.\n\t */\n\tidentityConnector?: string;\n\n\t/**\n\t * The index of the wallet address to use, defaults to 0.\n\t */\n\tidentityWalletAddressIndex?: string;\n\n\t/**\n\t * The TTL in milliseconds for caching resolved DIDs when using the IOTA identity connector. Omit to use the connector default.\n\t */\n\tidentityDidResolutionCacheTtl?: string;\n\n\t/**\n\t * The maximum number of DID documents to hold in the resolution cache. Only used when using the IOTA identity connector and caching is enabled.\n\t */\n\tidentityDidResolutionCacheCapacity?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the DID resolution cache. Only used when using the IOTA identity connector and caching is enabled.\n\t */\n\tidentityDidResolutionCacheMutexTimeout?: string;\n\n\t/**\n\t * The number of times to retry resolving a DID after a write operation (create, update, or delete) to confirm propagation. Only used when using the IOTA identity connector.\n\t */\n\tidentityDidResolutionRetries?: string;\n\n\t/**\n\t * The delay in milliseconds between DID resolution retries after a write operation. Only used when using the IOTA identity connector.\n\t */\n\tidentityDidResolutionRetryDelay?: string;\n\n\t/**\n\t * The type of identity resolver connector: entity-storage, iota.\n\t */\n\tidentityResolverConnector?: string;\n\n\t/**\n\t * IOTA Faucet Endpoint.\n\t */\n\tiotaFaucetEndpoint?: string;\n\n\t/**\n\t * IOTA Node Endpoint.\n\t */\n\tiotaNodeEndpoint?: string;\n\n\t/**\n\t * IOTA network.\n\t */\n\tiotaNetwork?: string;\n\n\t/**\n\t * IOTA coin type.\n\t */\n\tiotaCoinType?: string;\n\n\t/**\n\t * IOTA gas budget, in nanos.\n\t */\n\tiotaGasBudget?: string;\n\n\t/**\n\t * IOTA gas reservation duration, in seconds.\n\t */\n\tiotaGasReservationDuration?: string;\n\n\t/**\n\t * IOTA Explorer Endpoint.\n\t */\n\tiotaExplorerEndpoint?: string;\n\n\t/**\n\t * IOTA Gas Station Endpoint.\n\t */\n\tiotaGasStationEndpoint?: string;\n\n\t/**\n\t * IOTA Gas Station Authentication Token.\n\t */\n\tiotaGasStationAuthToken?: string;\n\n\t/**\n\t * The IOTA Identity deployed package id, for custom deployments.\n\t */\n\tiotaIdentityPackageId?: string;\n\n\t/**\n\t * Universal Resolver Endpoint.\n\t */\n\tuniversalResolverEndpoint?: string;\n\n\t/**\n\t * The type of identity profile connector: entity-storage.\n\t */\n\tidentityProfileConnector?: string;\n\n\t/**\n\t * The identity verification method id to use with immutable proofs.\n\t */\n\timmutableProofVerificationMethodId?: string;\n\n\t/**\n\t * The number of times to retry a proof task when it fails, 0 to disable retries.\n\t * @default 5\n\t */\n\timmutableProofTaskRetryCount?: string;\n\n\t/**\n\t * The interval in seconds to wait between proof task retries.\n\t * @default 5\n\t */\n\timmutableProofTaskRetryInterval?: string;\n\n\t/**\n\t * The time in minutes to retain the record of a failed proof task.\n\t * Set to -1 to retain failures forever.\n\t * @default 10080\n\t */\n\timmutableProofTaskFailureRetainFor?: string;\n\n\t/**\n\t * How often in minutes the immutable proof reconciliation sweep runs.\n\t * @default 30\n\t */\n\timmutableProofSweepInterval?: string;\n\n\t/**\n\t * The minimum age in minutes before a proof with no notarization is considered stuck.\n\t * @default 180\n\t */\n\timmutableProofSweepStaleThreshold?: string;\n\n\t/**\n\t * The number of sweep attempts made before a proof is parked.\n\t * @default 5\n\t */\n\timmutableProofSweepMaxAttempts?: string;\n\n\t/**\n\t * The maximum number of proofs to re-enqueue per tenant per sweep cycle.\n\t * @default 10\n\t */\n\timmutableProofSweepBatchLimit?: string;\n\n\t/**\n\t * The minimum time in minutes between sweep attempts for the same proof.\n\t * @default 60\n\t */\n\timmutableProofSweepBackoff?: string;\n\n\t/**\n\t * ISO 8601 date-time used to treat older missing-task proofs as retryable.\n\t */\n\timmutableProofSweepAssumeRetryableBefore?: string;\n\n\t/**\n\t * The type of attestation connector: entity-storage, iota.\n\t */\n\tattestationConnector?: string;\n\n\t/**\n\t * The identity verification method id to use with attestation.\n\t */\n\tattestationVerificationMethodId?: string;\n\n\t/**\n\t * The type of the default data converters, can be a comma separated list: json, xml.\n\t */\n\tdataConverterConnectors?: string;\n\n\t/**\n\t * The type of the default data extractor, can be a comma separated list: json-path.\n\t */\n\tdataExtractorConnectors?: string;\n\n\t/**\n\t * Enable the task scheduler regardless of which other components are active, defaults to false.\n\t */\n\ttaskSchedulerEnabled?: string;\n\n\t/**\n\t * Is the auditable item graph enabled, defaults to false.\n\t */\n\tauditableItemGraphEnabled?: string;\n\n\t/**\n\t * Is the auditable item stream enabled, defaults to false.\n\t */\n\tauditableItemStreamEnabled?: string;\n\n\t/**\n\t * Is the document management enabled, defaults to false.\n\t */\n\tdocumentManagementEnabled?: string;\n\n\t/**\n\t * Enable the federated catalogue, defaults to false, automatically enabled if remote endpoint, filters or dataspace is enabled.\n\t */\n\tfederatedCatalogueEnabled?: string;\n\n\t/**\n\t * Federated catalog filters, command separated list of filters to add.\n\t */\n\tfederatedCatalogueFilters?: string;\n\n\t/**\n\t * Federated catalog remote endpoint, if set will use a REST client instead of local service.\n\t */\n\tfederatedCatalogueRemoteEndpoint?: string;\n\n\t/**\n\t * The path prefix used by the federated catalogue REST client when forwarding requests to the remote endpoint, defaults to \"federated-catalogue\".\n\t */\n\tfederatedCatalogueRestClientPathPrefix?: string;\n\n\t/**\n\t * The trust generators to add to the factory, comma separated list.\n\t */\n\ttrustGenerators?: string;\n\n\t/**\n\t * The trust verifiers to add to the factory, comma separated list.\n\t */\n\ttrustVerifiers?: string;\n\n\t/**\n\t * The verification method to use for trust identities.\n\t * Defaults to trust-assertion.\n\t */\n\ttrustVerificationMethodId?: string;\n\n\t/**\n\t * The trust time to live for generating JWTs in seconds.\n\t * Defaults to undefined for never expiring.\n\t */\n\ttrustJwtTtl?: string;\n\n\t/**\n\t * The allow lists for the trust identity verifier, comma separated list of identities.\n\t */\n\ttrustIdentitiesAllow?: string;\n\n\t/**\n\t * The deny lists for the trust identity verifier, comma separated list of identities.\n\t */\n\ttrustIdentitiesDeny?: string;\n\n\t/**\n\t * Path under which the rights management service is mounted (single source\n\t * of truth). The same value drives:\n\t * - the server route mount (via engine config)\n\t * - the PNP service's callback URL builder (`buildCallbackUrl`)\n\t * - the PNP rest-client's pathPrefix (consumer side)\n\t * Defaults to `rights-management`. Set when deploying behind a reverse proxy\n\t * with path rewriting, K8s ingress with path-based routing, or any custom\n\t * mount point.\n\t */\n\trightsManagementCallbackPath?: string;\n\n\t/**\n\t * The rights management policy information sources to add to the factory.\n\t */\n\trightsManagementPolicyInformationSources?: string;\n\n\t/**\n\t * The rights management policy negotiators sources to add to the factory.\n\t */\n\trightsManagementPolicyNegotiators?: string;\n\n\t/**\n\t * The rights management policy requesters to add to the factory.\n\t */\n\trightsManagementPolicyRequesters?: string;\n\n\t/**\n\t * The rights management policy execution actions to add to the factory.\n\t */\n\trightsManagementPolicyExecutionActions?: string;\n\n\t/**\n\t * The rights management policy enforcement processors to add to the factory.\n\t */\n\trightsManagementPolicyEnforcementProcessors?: string;\n\n\t/**\n\t * The rights management policy arbiters to add to the factory.\n\t */\n\trightsManagementPolicyArbiters?: string;\n\n\t/**\n\t * The rights management policy obligation enforcers to add to the factory.\n\t */\n\trightsManagementPolicyObligationEnforcers?: string;\n\n\t/**\n\t * Is the dataspace enabled, defaults to false.\n\t */\n\tdataspaceEnabled?: string;\n\n\t/**\n\t * The length of time to retain the activity logs for in seconds, set to -1 to keep forever.\n\t * @default 600\n\t */\n\tdataspaceRetainActivityLogsFor?: string;\n\n\t/**\n\t * The interval in seconds for cleaning up the activity logs.\n\t * @default 3600\n\t */\n\tdataspaceActivityLogsCleanupInterval?: string;\n\n\t/**\n\t * The TTL in milliseconds for the dataspace agreement cache.\n\t */\n\tdataspaceAgreementCacheTtl?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the dataspace agreement cache.\n\t */\n\tdataspaceAgreementCacheMutexTimeout?: string;\n\n\t/**\n\t * The time in milliseconds after which an unused agreement is eligible for removal.\n\t */\n\tdataspaceAgreementUnusedThreshold?: string;\n\n\t/**\n\t * The interval in milliseconds between agreement sweep runs.\n\t */\n\tdataspaceAgreementSweepInterval?: string;\n\n\t/**\n\t * The number of times to retry failed data plane tasks.\n\t */\n\tdataspaceRetryCount?: string;\n\n\t/**\n\t * Maximum HTTP retry attempts per push delivery task execution.\n\t */\n\tdataspacePushRetryCount?: string;\n\n\t/**\n\t * Base delay in milliseconds for exponential backoff between push HTTP retries.\n\t */\n\tdataspacePushRetryBaseDelay?: string;\n\n\t/**\n\t * Timeout in milliseconds for each push delivery HTTP POST request.\n\t */\n\tdataspacePushTimeout?: string;\n\n\t/**\n\t * Interval in milliseconds between orphaned push subscription cleanup scans.\n\t */\n\tdataspacePushSubscriptionCleanupInterval?: string;\n\n\t/**\n\t * Base route path for the data plane service (path only, not full URL).\n\t * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers\n\t * and the inbox URL sent to PUSH providers.\n\t *\n\t * This must be the mount-point prefix of the data plane routes, NOT a specific route path.\n\t * Do NOT append sub-paths such as `/entities` or `/inbox` - those are appended automatically\n\t * by each transfer handler and by the data plane REST client.\n\t *\n\t * REQUIRED if PULL or PUSH transfers are supported.\n\t * If not specified, PULL and PUSH transfers will not be available.\n\t *\n\t * Example: \"dataspace\"\n\t */\n\tdataspaceDataPlanePath?: string;\n\n\t/**\n\t * Whether the provider immediately starts a transfer once it has been requested.\n\t * When false the transfer stays in REQUESTED until the provider explicitly calls transferStarted.\n\t * @default false\n\t */\n\tdataspaceAutoStartTransfers?: string;\n\n\t/**\n\t * How long in seconds a negotiation may sit without progress before it is treated as timed out.\n\t * @default 30\n\t */\n\tdataspaceStalledNegotiationTimeout?: string;\n\n\t/**\n\t * How long in seconds a consumer-initiated transfer may sit in REQUESTED without the provider\n\t * progressing it before it is treated as timed out.\n\t * @default 30\n\t */\n\tdataspaceStalledTransferTimeout?: string;\n\n\t/**\n\t * How long in seconds a provider transfer may stay idle before the idle policy marks it as stalled.\n\t */\n\tdataspaceProviderTransferIdleTimeout?: string;\n\n\t/**\n\t * How frequently in seconds the provider idle transfer policy sweep runs.\n\t */\n\tdataspaceProviderTransferPolicySweepInterval?: string;\n\n\t/**\n\t * Path under which the dataspace control plane is mounted (path only, not full URL).\n\t * This must match the control-plane REST mount, as it is combined with the public\n\t * origin to build the consumer's advertised callback address.\n\t * @default \"dataspace-control-plane\"\n\t */\n\tdataspaceCallbackPath?: string;\n\n\t/**\n\t * Are the health components enabled, defaults to false.\n\t */\n\thealthEnabled?: string;\n\n\t/**\n\t * The interval in seconds for performing health checks, defaults to 60.\n\t */\n\thealthInterval?: string;\n\n\t/**\n\t * The interval in seconds for performing health checks at startup, defaults to 2.\n\t * This allows components that take a long time to initialize to be healthy before the first health check is performed.\n\t */\n\thealthStartupInterval?: string;\n\n\t/**\n\t * The interval in seconds for running the application health lifecycle (init, application, teardown), defaults to 300.\n\t */\n\thealthApplicationInterval?: string;\n\n\t/**\n\t * The maximum number of workers to use for processing background tasks, defaults to twice the number of CPU cores.\n\t */\n\tbackgroundTaskMaxSystemWorkerCount?: string;\n\n\t/**\n\t * The interval in milliseconds to leave between background tasks, defaults to 100.\n\t */\n\tbackgroundTaskInterval?: string;\n\n\t/**\n\t * The interval in milliseconds to leave between background task retries, defaults to 5000.\n\t */\n\tbackgroundTaskRetryInterval?: string;\n\n\t/**\n\t * The interval in milliseconds between sweeps removing retained background tasks, defaults to 120000.\n\t */\n\tbackgroundTaskCleanupInterval?: string;\n\n\t/**\n\t * The time in milliseconds to wait for each handler's workers to shut down before terminating them, defaults to 5000.\n\t */\n\tbackgroundTaskWorkerShutdownTimeout?: string;\n\n\t/**\n\t * The maximum dispatches of a background task attempt before it is failed as interrupted, defaults to 3, set to -1 for no limit.\n\t */\n\tbackgroundTaskMaxDispatchCount?: string;\n\n\t/**\n\t * The type of the automation action to create, comma separate for more than one connector.\n\t * values: fetch\n\t */\n\tautomationActionTypes?: string;\n\n\t/**\n\t * The default mutex timeout in milliseconds, used when no component-specific timeout is set, defaults to 5000 if omitted.\n\t */\n\tmutexTimeoutDefault?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the auditable item graph component.\n\t */\n\tauditableItemGraphMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the auditable item stream component.\n\t */\n\tauditableItemStreamMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the federated catalogue component.\n\t */\n\tfederatedCatalogueMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the document management component.\n\t */\n\tdocumentManagementMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the memory and file entity storage connectors.\n\t */\n\tentityStorageMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the rights management component.\n\t */\n\trightsManagementMutexTimeout?: string;\n\n\t/**\n\t * A comma separated list of additional node extensions to load, the initialiseExtension method will be called for each extension.\n\t */\n\textensions?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IEngineEnvironmentVariables.js","sourceRoot":"","sources":["../../../src/models/IEngineEnvironmentVariables.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\n\n/**\n * The engine core environment variables.\n */\nexport interface IEngineEnvironmentVariables {\n\t/**\n\t * Start the engine in debug mode.\n\t */\n\tdebug?: string;\n\n\t/**\n\t * Start the engine in silent mode.\n\t */\n\tsilent?: string;\n\n\t/**\n\t * Controls how unrecognised TWIN_* environment variables are handled at startup.\n\t * \"error\" (default): throws a startup error, allowing CI and production deployments\n\t * to hard-fail on misconfigured or misspelled variable names.\n\t * \"warn\": logs a warning and continues.\n\t * \"ignore\": skips validation entirely.\n\t * Any other value is rejected at startup.\n\t * @default \"error\"\n\t */\n\tstrictEnv?: string;\n\n\t/**\n\t * Comma-separated list of raw environment variable names to exempt from the unknown-key check.\n\t * Use this to allowlist variables introduced by custom extensions that are not part of the\n\t * core interface, e.g. TWIN_MY_EXTENSION_SECRET.\n\t */\n\tenvAllowList?: string;\n\n\t/**\n\t * The root directory for storing items like state file.\n\t */\n\tstorageFileRoot?: string;\n\n\t/**\n\t * The name of the state file.\n\t */\n\tstateFilename?: string;\n\n\t/**\n\t * Is multi-tenant support enabled, defaults to false.\n\t */\n\ttenantEnabled?: string;\n\n\t/**\n\t * Enable schema migration, defaults to true.\n\t */\n\tschemaMigrationEnabled?: string;\n\n\t/**\n\t * The type of the entity storage to create, comma separate for more than one connector.\n\t * values: file, memory, aws-dynamodb, azure-cosmosdb, gcp-firestoredb, scylladb, mysql, mongodb, postgresql\n\t */\n\tentityStorageConnectorType?: string;\n\n\t/**\n\t * The default entity storage connector to use, defaults to the first one in the list.\n\t */\n\tentityStorageConnectorDefault?: string;\n\n\t/**\n\t * A prefix for all the table in entity-storage, can be empty.\n\t */\n\tentityStorageTablePrefix?: string;\n\n\t/**\n\t * AWS DynamoDB auth mode, either credentials or pod.\n\t */\n\tawsDynamodbAuthMode?: string;\n\n\t/**\n\t * AWS Dynamo DB access key id.\n\t */\n\tawsDynamodbAccessKeyId?: string;\n\n\t/**\n\t * AWS Dynamo DB Endpoint if running local instance.\n\t */\n\tawsDynamodbEndpoint?: string;\n\n\t/**\n\t * AWS Dynamo DB region.\n\t */\n\tawsDynamodbRegion?: string;\n\n\t/**\n\t * AWS Dynamo DB secret access key.\n\t */\n\tawsDynamodbSecretAccessKey?: string;\n\n\t/**\n\t * AWS Dynamo DB connection timeout in milliseconds.\n\t */\n\tawsDynamodbConnectionTimeout?: string;\n\n\t/**\n\t * Azure Cosmos DB key.\n\t */\n\tazureCosmosdbKey?: string;\n\n\t/**\n\t * Azure Cosmos DB container id.\n\t */\n\tazureCosmosdbContainerId?: string;\n\n\t/**\n\t * Azure Cosmos DB database id.\n\t */\n\tazureCosmosdbDatabaseId?: string;\n\n\t/**\n\t * Azure Cosmos DB endpoint.\n\t */\n\tazureCosmosdbEndpoint?: string;\n\n\t/**\n\t * GCP Firestore collection name.\n\t */\n\tgcpFirestoreCollectionName?: string;\n\n\t/**\n\t * GCP Firestore credentials.\n\t */\n\tgcpFirestoreCredentials?: string;\n\n\t/**\n\t * GCP Firestore database id.\n\t */\n\tgcpFirestoreDatabaseId?: string;\n\n\t/**\n\t * GCP Firestore endpoint.\n\t */\n\tgcpFirestoreEndpoint?: string;\n\n\t/**\n\t * GCP Firestore project id.\n\t */\n\tgcpFirestoreProjectId?: string;\n\n\t/**\n\t * ScyllaDB hosts as comma separated string.\n\t */\n\tscylladbHosts?: string;\n\n\t/**\n\t * ScyllaDB keyspace.\n\t */\n\tscylladbKeyspace?: string;\n\n\t/**\n\t * ScyllaDB local data center.\n\t */\n\tscylladbLocalDataCenter?: string;\n\n\t/**\n\t * ScyllaDB port.\n\t */\n\tscylladbPort?: string;\n\n\t/**\n\t * ScyllaDB connection pool: number of connections per local host.\n\t */\n\tscylladbPoolCoreConnectionsPerHost?: string;\n\n\t/**\n\t * ScyllaDB connection pool: maximum requests per connection.\n\t */\n\tscylladbPoolMaxRequestsPerConnection?: string;\n\n\t/**\n\t * MySQL host.\n\t */\n\tmySqlHost?: string;\n\n\t/**\n\t * MySQL port.\n\t */\n\tmySqlPort?: string;\n\n\t/**\n\t * MySQL username.\n\t */\n\tmySqlUser?: string;\n\n\t/**\n\t * MySQL password.\n\t */\n\tmySqlPassword?: string;\n\n\t/**\n\t * MySQL Database.\n\t */\n\tmySqlDatabase?: string;\n\n\t/**\n\t * MySQL connection pool: maximum number of connections.\n\t */\n\tmySqlPoolConnectionLimit?: string;\n\n\t/**\n\t * MySQL connection pool: maximum number of idle connections.\n\t */\n\tmySqlPoolMaxIdle?: string;\n\n\t/**\n\t * MySQL connection pool: milliseconds before an idle connection is removed.\n\t */\n\tmySqlPoolIdleTimeout?: string;\n\n\t/**\n\t * MySQL connection pool: enable TCP keep-alive.\n\t */\n\tmySqlPoolEnableKeepAlive?: string;\n\n\t/**\n\t * MySQL connection pool: wait for a connection when pool is full.\n\t */\n\tmySqlPoolWaitForConnections?: string;\n\n\t/**\n\t * MySQL connection pool: maximum queued requests (0 = unlimited).\n\t */\n\tmySqlPoolQueueLimit?: string;\n\n\t/**\n\t * MongoDB host.\n\t */\n\tmongoDbHost?: string;\n\n\t/**\n\t * MongoDB port.\n\t */\n\tmongoDbPort?: string;\n\n\t/**\n\t * MongoDB username.\n\t */\n\tmongoDbUser?: string;\n\n\t/**\n\t * MongoDB password.\n\t */\n\tmongoDbPassword?: string;\n\n\t/**\n\t * MongoDB Database.\n\t */\n\tmongoDbDatabase?: string;\n\n\t/**\n\t * MongoDB connection pool: maximum number of connections.\n\t */\n\tmongoDbPoolMaxPoolSize?: string;\n\n\t/**\n\t * MongoDB connection pool: minimum number of connections to maintain.\n\t */\n\tmongoDbPoolMinPoolSize?: string;\n\n\t/**\n\t * MongoDB connection pool: milliseconds a connection can remain idle before removal.\n\t */\n\tmongoDbPoolMaxIdleTime?: string;\n\n\t/**\n\t * MongoDB connection pool: milliseconds to wait for a connection before throwing.\n\t */\n\tmongoDbPoolWaitQueueTimeout?: string;\n\n\t/**\n\t * PostgreSQl host.\n\t */\n\tpostgreSqlHost?: string;\n\n\t/**\n\t * PostgreSQl port.\n\t */\n\tpostgreSqlPort?: string;\n\n\t/**\n\t * PostgreSQl username.\n\t */\n\tpostgreSqlUser?: string;\n\n\t/**\n\t * PostgreSQl password.\n\t */\n\tpostgreSqlPassword?: string;\n\n\t/**\n\t * PostgreSQl Database.\n\t */\n\tpostgreSqlDatabase?: string;\n\n\t/**\n\t * PostgreSQL connection pool: maximum number of connections.\n\t */\n\tpostgreSqlPoolMax?: string;\n\n\t/**\n\t * PostgreSQL connection pool: seconds a connection can remain idle before being closed.\n\t */\n\tpostgreSqlPoolIdleTimeout?: string;\n\n\t/**\n\t * PostgreSQL connection pool: seconds to wait when establishing a connection.\n\t */\n\tpostgreSqlPoolConnectTimeout?: string;\n\n\t/**\n\t * PostgreSQL connection pool: maximum seconds a connection can remain open.\n\t */\n\tpostgreSqlPoolMaxLifetime?: string;\n\n\t/**\n\t * The security token for accessing IPFS API.\n\t */\n\tipfsBearerToken?: string;\n\n\t/**\n\t * The url for accessing IPFS API.\n\t */\n\tipfsApiUrl?: string;\n\n\t/**\n\t * The type of the entity storage to create, comma separate for more than one connector.\n\t * values: memory, file, ipfs, aws-s3, azure-storage, gcp-storage.\n\t */\n\tblobStorageConnectorType?: string;\n\n\t/**\n\t * The default blob storage connector to use, defaults to the first one in the list.\n\t */\n\tblobStorageConnectorDefault?: string;\n\n\t/**\n\t * Enable encryption for the blob storage.\n\t */\n\tblobStorageEnableEncryption?: string;\n\n\t/**\n\t * The id of the encryption key for the blob storage.\n\t */\n\tblobStorageEncryptionKeyId?: string;\n\n\t/**\n\t * A prefix for all the blobs in blob-storage, can be empty.\n\t */\n\tblobStoragePrefix?: string;\n\n\t/**\n\t * AWS S3 region.\n\t */\n\tawsS3Region?: string;\n\n\t/**\n\t * AWS S3 bucket name.\n\t */\n\tawsS3BucketName?: string;\n\n\t/**\n\t * AWS S3 auth mode, either credentials or pod, defaults to credentials.\n\t */\n\tawsS3AuthMode?: string;\n\n\t/**\n\t * AWS S3 access key id.\n\t */\n\tawsS3AccessKeyId?: string;\n\n\t/**\n\t * AWS S3 secret access key.\n\t */\n\tawsS3SecretAccessKey?: string;\n\n\t/**\n\t * AWS S3 endpoint.\n\t */\n\tawsS3Endpoint?: string;\n\n\t/**\n\t * Azure Storage account key.\n\t */\n\tazureStorageAccountKey?: string;\n\n\t/**\n\t * Azure Storage account name.\n\t */\n\tazureStorageAccountName?: string;\n\n\t/**\n\t * Azure Storage container.\n\t */\n\tazureStorageContainerName?: string;\n\n\t/**\n\t * Azure Storage endpoint.\n\t */\n\tazureStorageEndpoint?: string;\n\n\t/**\n\t * GCP Storage bucket.\n\t */\n\tgcpStorageBucketName?: string;\n\n\t/**\n\t * GCP Storage credentials.\n\t */\n\tgcpStorageCredentials?: string;\n\n\t/**\n\t * GCP Storage endpoint.\n\t */\n\tgcpStorageEndpoint?: string;\n\n\t/**\n\t * GCP Storage project id.\n\t */\n\tgcpStorageProjectId?: string;\n\n\t/**\n\t * The type of the default vault connector: entity-storage, hashicorp.\n\t */\n\tvaultConnector?: string;\n\n\t/**\n\t * Prefix to prepend to entries in the vault.\n\t */\n\tvaultPrefix?: string;\n\n\t/**\n\t * Hashicorp Vault token.\n\t */\n\thashicorpVaultToken?: string;\n\n\t/**\n\t * Hashicorp Vault endpoint.\n\t */\n\thashicorpVaultEndpoint?: string;\n\n\t/**\n\t * The type of logging task connector, can be a comma separated list: console, entity-storage, open-telemetry, file.\n\t */\n\tloggingConnector?: string;\n\n\t/**\n\t * The batch size for the logging task, set to 1 for no batching.\n\t */\n\tloggingBatchSize?: string;\n\n\t/**\n\t * The batch flush interval in seconds for the logging task, how often to flush the logs when using batching, defaults to 5 seconds.\n\t */\n\tloggingBatchFlushInterval?: string;\n\n\t/**\n\t * Delete log entries older than this many minutes for the entity-storage logging connector.\n\t * Set to 0 to disable age-based retention.\n\t * @default 2880 (2 days)\n\t */\n\tloggingRetainFor?: string;\n\n\t/**\n\t * Keep at most this many log entries for the entity-storage logging connector.\n\t * Set to 0 to disable count-based retention.\n\t * @default 10000\n\t */\n\tloggingMaxEntries?: string;\n\n\t/**\n\t * How often the retention cleanup task runs in minutes for the entity-storage logging connector.\n\t * Set to 0 to disable periodic cleanup.\n\t * @default 5\n\t */\n\tloggingRetentionInterval?: string;\n\n\t/**\n\t * Maximum number of entries deleted per cleanup batch for the entity-storage logging connector.\n\t * Keeping this value smaller helps avoid spikes in database load.\n\t * @default 1000\n\t */\n\tloggingRetentionBatchSize?: string;\n\n\t/**\n\t * A list of components to exclude from logging, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\tloggingSilentComponents?: string;\n\n\t/**\n\t * The directory to write log files into when using the file logging connector. Required when TWIN_LOGGING_CONNECTOR includes \"file\".\n\t */\n\tloggingFileDirectory?: string;\n\n\t/**\n\t * The log filename when using the file logging connector, defaults to \"app.log\".\n\t */\n\tloggingFileFilename?: string;\n\n\t/**\n\t * The maximum log file size in bytes before rotation when using the file logging connector, defaults to 10485760 (10 MB). Set to 0 or negative to disable rotation.\n\t */\n\tloggingFileMaxFileSizeBytes?: string;\n\n\t/**\n\t * The number of rotated log files to retain when using the file logging connector, defaults to 5. Set to 0 or negative to keep all rotated files.\n\t */\n\tloggingFileMaxRetainedFiles?: string;\n\n\t/**\n\t * A list of components to exclude from telemetry, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\ttelemetrySilentComponents?: string;\n\n\t/**\n\t * The name of the OpenTelemetry logger, only required if using open-telemetry as logging connector, defaults to twin-logging.\n\t */\n\topenTelemetryLoggingLoggerName?: string;\n\n\t/**\n\t * The version of the OpenTelemetry logger, only required if using open-telemetry as logging connector, defaults to 1.0.0.\n\t */\n\topenTelemetryLoggingLoggerVersion?: string;\n\n\t/**\n\t * The OTLP endpoint URL for the OpenTelemetry logging exporter, required when using open-telemetry as logging connector, e.g. http://localhost:4318/v1/logs.\n\t */\n\topenTelemetryLoggingPrometheusEndpoint?: string;\n\n\t/**\n\t * The log record processor to use for the OpenTelemetry logging exporter, either batch or simple, defaults to batch.\n\t */\n\topenTelemetryLoggingProcessor?: string;\n\n\t/**\n\t * The type of event bus connector: local.\n\t */\n\teventBusConnector?: string;\n\n\t/**\n\t * The type of event bus component: service.\n\t */\n\teventBusComponent?: string;\n\n\t/**\n\t * The email protocol connector types, comma-separated: pop3, imap, gmail, outlook.\n\t */\n\temailProtocolConnector?: string;\n\n\t/**\n\t * AWS SES region.\n\t */\n\tawsSesRegion?: string;\n\n\t/**\n\t * AWS SES auth mode, either credentials or pod, defaults to credentials.\n\t */\n\tawsSesAuthMode?: string;\n\n\t/**\n\t * AWS SES secret access key.\n\t */\n\tawsSesSecretAccessKey?: string;\n\n\t/**\n\t * AWS SES access key id.\n\t */\n\tawsSesAccessKeyId?: string;\n\n\t/**\n\t * AWS SES endpoint.\n\t */\n\tawsSesEndpoint?: string;\n\n\t/**\n\t * The applications for the push notifications reference a separate json with @json: prefix.\n\t */\n\tawsMessagingPushNotificationApplications?: string;\n\n\t/**\n\t * The type of messaging email connector: entity-storage, aws, smtp.\n\t */\n\tmessagingEmailConnector?: string;\n\n\t/**\n\t * SMTP server hostname or IP address.\n\t */\n\tsmtpHost?: string;\n\n\t/**\n\t * SMTP server port, defaults to 587.\n\t */\n\tsmtpPort?: string;\n\n\t/**\n\t * Whether the SMTP connector uses TLS.\n\t */\n\tsmtpSecure?: string;\n\n\t/**\n\t * SMTP authentication username.\n\t */\n\tsmtpUsername?: string;\n\n\t/**\n\t * SMTP authentication password.\n\t */\n\tsmtpPassword?: string;\n\n\t/**\n\t * The type of messaging sms connector: entity-storage, aws.\n\t */\n\tmessagingSmsConnector?: string;\n\n\t/**\n\t * The type of messaging push notification connector: entity-storage, aws.\n\t */\n\tmessagingPushNotificationConnector?: string;\n\n\t/**\n\t * The type of telemetry connector, comma-separated for multiple: entity-storage, open-telemetry, silent.\n\t */\n\ttelemetryConnector?: string;\n\n\t/**\n\t * The name of the Open Telemetry meter to use, only required if using open-telemetry as telemetry connector, defaults to twin-node.\n\t */\n\topenTelemetryMeterName?: string;\n\n\t/**\n\t * The version of the Open Telemetry metrics specification to use, only required if using open-telemetry as telemetry connector, defaults to 1.0.0.\n\t */\n\topenTelemetryMeterVersion?: string;\n\n\t/**\n\t * The type of Open Telemetry metric reader to use, only required if using open-telemetry as telemetry connector, values: prometheus.\n\t */\n\topenTelemetryReader?: string;\n\n\t/**\n\t * The port to use for the Open Telemetry Prometheus metrics server, only required if using open-telemetry as telemetry connector and prometheus as reader, defaults to 9464.\n\t */\n\topenTelemetryPrometheusPort?: string;\n\n\t/**\n\t * Polling interval in seconds for the telemetry metrics collector. Defaults to 60.\n\t */\n\ttelemetryMetricsCollectorInterval?: string;\n\n\t/**\n\t * The type of telemetry metrics producers, can be a comma separated list: system, process.\n\t */\n\ttelemetryMetricsProducers?: string;\n\n\t/**\n\t * Maximum number of values retained per telemetry metric (count-based history cap). Defaults to 1440.\n\t */\n\ttelemetryMetricsProducerMaxHistory?: string;\n\n\t/**\n\t * The batch size for the telemetry connector, set to 1 to disable size-based flushing.\n\t */\n\ttelemetryBatchSize?: string;\n\n\t/**\n\t * The batch flush interval in seconds for the telemetry connector, how often to flush when using batching, defaults to 5 seconds.\n\t */\n\ttelemetryBatchFlushInterval?: string;\n\n\t/**\n\t * The maximum number of metric values to hold in the write-ahead cache for the telemetry connector. Set to 0 for unlimited.\n\t * @default 1000\n\t */\n\ttelemetryMaxCacheSize?: string;\n\n\t/**\n\t * How long in milliseconds the telemetry connector waits for its background thread to confirm\n\t * a flush before a read continues without it.\n\t * @default 30000\n\t */\n\ttelemetryFlushTimeout?: string;\n\n\t/**\n\t * How long in milliseconds the telemetry connector holds values so several share a single\n\t * background task, instead of creating one task per value. Set to 0 to disable coalescing.\n\t * @default 1000\n\t */\n\ttelemetryTaskCoalesce?: string;\n\n\t/**\n\t * How long in milliseconds the telemetry connector allows with tasks outstanding and none of\n\t * them completing before its background thread is treated as stalled and replaced. Set to 0\n\t * to disable the check.\n\t * @default 60000\n\t */\n\ttelemetryTaskStallTimeout?: string;\n\n\t/**\n\t * The maximum number of metric definitions held in the in-memory definition cache for the telemetry connector.\n\t * @default 100\n\t */\n\ttelemetryMetricDefinitionCacheCapacity?: string;\n\n\t/**\n\t * The time-to-idle in milliseconds for cached metric definitions in the telemetry connector.\n\t * @default 3600000\n\t */\n\ttelemetryMetricDefinitionCacheTtiMs?: string;\n\n\t/**\n\t * A list of components to exclude from tracing, can be a comma separated list of component Class names e.g. \"ComponentA,ComponentB\".\n\t */\n\ttracingSilentComponents?: string;\n\n\t/**\n\t * The type of tracing connector, comma-separated for multiple: entity-storage, open-telemetry, console, silent.\n\t */\n\ttracingConnector?: string;\n\n\t/**\n\t * The name of the Open Telemetry tracer to use, only required if using open-telemetry as tracing connector, defaults to twin-node.\n\t */\n\topenTelemetryTracingTracerName?: string;\n\n\t/**\n\t * The version of the Open Telemetry tracing specification to use, only required if using open-telemetry as tracing connector, defaults to 1.0.0.\n\t */\n\topenTelemetryTracingTracerVersion?: string;\n\n\t/**\n\t * The OTLP HTTP endpoint to push spans to, e.g. http://localhost:4318/v1/traces. Required when using open-telemetry as tracing connector.\n\t */\n\topenTelemetryTracingEndpoint?: string;\n\n\t/**\n\t * The span processor: batch (default) or simple. Only used when TWIN_TRACING_CONNECTOR=open-telemetry.\n\t */\n\topenTelemetryTracingProcessor?: string;\n\n\t/**\n\t * The type of faucet connector: entity-storage, iota.\n\t */\n\tfaucetConnector?: string;\n\n\t/**\n\t * The type of wallet connector: entity-storage, iota.\n\t */\n\twalletConnector?: string;\n\n\t/**\n\t * The type of NFT connector: entity-storage, iota.\n\t */\n\tnftConnector?: string;\n\n\t/**\n\t * The NFT deployed package id, for custom deployments.\n\t */\n\tnftPackageId?: string;\n\n\t/**\n\t * The type of notarization connector: entity-storage, iota.\n\t */\n\tnotarizationConnector?: string;\n\n\t/**\n\t * The type of identity connector: entity-storage, iota.\n\t */\n\tidentityConnector?: string;\n\n\t/**\n\t * The index of the wallet address to use, defaults to 0.\n\t */\n\tidentityWalletAddressIndex?: string;\n\n\t/**\n\t * The TTL in milliseconds for caching resolved DIDs when using the IOTA identity connector. Omit to use the connector default.\n\t */\n\tidentityDidResolutionCacheTtl?: string;\n\n\t/**\n\t * The maximum number of DID documents to hold in the resolution cache. Only used when using the IOTA identity connector and caching is enabled.\n\t */\n\tidentityDidResolutionCacheCapacity?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the DID resolution cache. Only used when using the IOTA identity connector and caching is enabled.\n\t */\n\tidentityDidResolutionCacheMutexTimeout?: string;\n\n\t/**\n\t * The number of times to retry resolving a DID after a write operation (create, update, or delete) to confirm propagation. Only used when using the IOTA identity connector.\n\t */\n\tidentityDidResolutionRetries?: string;\n\n\t/**\n\t * The delay in milliseconds between DID resolution retries after a write operation. Only used when using the IOTA identity connector.\n\t */\n\tidentityDidResolutionRetryDelay?: string;\n\n\t/**\n\t * The type of identity resolver connector: entity-storage, iota.\n\t */\n\tidentityResolverConnector?: string;\n\n\t/**\n\t * IOTA Faucet Endpoint.\n\t */\n\tiotaFaucetEndpoint?: string;\n\n\t/**\n\t * IOTA Node Endpoint.\n\t */\n\tiotaNodeEndpoint?: string;\n\n\t/**\n\t * IOTA network.\n\t */\n\tiotaNetwork?: string;\n\n\t/**\n\t * IOTA coin type.\n\t */\n\tiotaCoinType?: string;\n\n\t/**\n\t * IOTA gas budget, in nanos.\n\t */\n\tiotaGasBudget?: string;\n\n\t/**\n\t * IOTA gas reservation duration, in seconds.\n\t */\n\tiotaGasReservationDuration?: string;\n\n\t/**\n\t * IOTA Explorer Endpoint.\n\t */\n\tiotaExplorerEndpoint?: string;\n\n\t/**\n\t * IOTA Gas Station Endpoint.\n\t */\n\tiotaGasStationEndpoint?: string;\n\n\t/**\n\t * IOTA Gas Station Authentication Token.\n\t */\n\tiotaGasStationAuthToken?: string;\n\n\t/**\n\t * The IOTA Identity deployed package id, for custom deployments.\n\t */\n\tiotaIdentityPackageId?: string;\n\n\t/**\n\t * Universal Resolver Endpoint.\n\t */\n\tuniversalResolverEndpoint?: string;\n\n\t/**\n\t * The type of identity profile connector: entity-storage.\n\t */\n\tidentityProfileConnector?: string;\n\n\t/**\n\t * The identity verification method id to use with immutable proofs.\n\t */\n\timmutableProofVerificationMethodId?: string;\n\n\t/**\n\t * The number of times to retry a proof task when it fails, 0 to disable retries.\n\t * @default 5\n\t */\n\timmutableProofTaskRetryCount?: string;\n\n\t/**\n\t * The interval in seconds to wait between proof task retries.\n\t * @default 5\n\t */\n\timmutableProofTaskRetryInterval?: string;\n\n\t/**\n\t * The time in minutes to retain the record of a failed proof task.\n\t * Set to -1 to retain failures forever.\n\t * @default 10080\n\t */\n\timmutableProofTaskFailureRetainFor?: string;\n\n\t/**\n\t * How long in seconds the proof task worker stays idle before it shuts down.\n\t * Set to 0 to shut it down after every task, or -1 to never shut it down.\n\t * @default 60\n\t */\n\timmutableProofTaskWorkerIdleTimeout?: string;\n\n\t/**\n\t * How often in minutes the immutable proof reconciliation sweep runs.\n\t * @default 30\n\t */\n\timmutableProofSweepInterval?: string;\n\n\t/**\n\t * The minimum age in minutes before a proof with no notarization is considered stuck.\n\t * @default 180\n\t */\n\timmutableProofSweepStaleThreshold?: string;\n\n\t/**\n\t * The number of sweep attempts made before a proof is parked.\n\t * @default 5\n\t */\n\timmutableProofSweepMaxAttempts?: string;\n\n\t/**\n\t * The maximum number of proofs to re-enqueue per tenant per sweep cycle.\n\t * @default 10\n\t */\n\timmutableProofSweepBatchLimit?: string;\n\n\t/**\n\t * The minimum time in minutes between sweep attempts for the same proof.\n\t * @default 60\n\t */\n\timmutableProofSweepBackoff?: string;\n\n\t/**\n\t * ISO 8601 date-time used to treat older missing-task proofs as retryable.\n\t */\n\timmutableProofSweepAssumeRetryableBefore?: string;\n\n\t/**\n\t * The type of attestation connector: entity-storage, iota.\n\t */\n\tattestationConnector?: string;\n\n\t/**\n\t * The identity verification method id to use with attestation.\n\t */\n\tattestationVerificationMethodId?: string;\n\n\t/**\n\t * The type of the default data converters, can be a comma separated list: json, xml.\n\t */\n\tdataConverterConnectors?: string;\n\n\t/**\n\t * The type of the default data extractor, can be a comma separated list: json-path.\n\t */\n\tdataExtractorConnectors?: string;\n\n\t/**\n\t * Enable the task scheduler regardless of which other components are active, defaults to false.\n\t */\n\ttaskSchedulerEnabled?: string;\n\n\t/**\n\t * Is the auditable item graph enabled, defaults to false.\n\t */\n\tauditableItemGraphEnabled?: string;\n\n\t/**\n\t * Is the auditable item stream enabled, defaults to false.\n\t */\n\tauditableItemStreamEnabled?: string;\n\n\t/**\n\t * Is the document management enabled, defaults to false.\n\t */\n\tdocumentManagementEnabled?: string;\n\n\t/**\n\t * Enable the federated catalogue, defaults to false, automatically enabled if remote endpoint, filters or dataspace is enabled.\n\t */\n\tfederatedCatalogueEnabled?: string;\n\n\t/**\n\t * Federated catalog filters, command separated list of filters to add.\n\t */\n\tfederatedCatalogueFilters?: string;\n\n\t/**\n\t * Federated catalog remote endpoint, if set will use a REST client instead of local service.\n\t */\n\tfederatedCatalogueRemoteEndpoint?: string;\n\n\t/**\n\t * The path prefix used by the federated catalogue REST client when forwarding requests to the remote endpoint, defaults to \"federated-catalogue\".\n\t */\n\tfederatedCatalogueRestClientPathPrefix?: string;\n\n\t/**\n\t * The trust generators to add to the factory, comma separated list.\n\t */\n\ttrustGenerators?: string;\n\n\t/**\n\t * The trust verifiers to add to the factory, comma separated list.\n\t */\n\ttrustVerifiers?: string;\n\n\t/**\n\t * The verification method to use for trust identities.\n\t * Defaults to trust-assertion.\n\t */\n\ttrustVerificationMethodId?: string;\n\n\t/**\n\t * The trust time to live for generating JWTs in seconds.\n\t * Defaults to undefined for never expiring.\n\t */\n\ttrustJwtTtl?: string;\n\n\t/**\n\t * The allow lists for the trust identity verifier, comma separated list of identities.\n\t */\n\ttrustIdentitiesAllow?: string;\n\n\t/**\n\t * The deny lists for the trust identity verifier, comma separated list of identities.\n\t */\n\ttrustIdentitiesDeny?: string;\n\n\t/**\n\t * Path under which the rights management service is mounted (single source\n\t * of truth). The same value drives:\n\t * - the server route mount (via engine config)\n\t * - the PNP service's callback URL builder (`buildCallbackUrl`)\n\t * - the PNP rest-client's pathPrefix (consumer side)\n\t * Defaults to `rights-management`. Set when deploying behind a reverse proxy\n\t * with path rewriting, K8s ingress with path-based routing, or any custom\n\t * mount point.\n\t */\n\trightsManagementCallbackPath?: string;\n\n\t/**\n\t * The rights management policy information sources to add to the factory.\n\t */\n\trightsManagementPolicyInformationSources?: string;\n\n\t/**\n\t * The rights management policy negotiators sources to add to the factory.\n\t */\n\trightsManagementPolicyNegotiators?: string;\n\n\t/**\n\t * The rights management policy requesters to add to the factory.\n\t */\n\trightsManagementPolicyRequesters?: string;\n\n\t/**\n\t * The rights management policy execution actions to add to the factory.\n\t */\n\trightsManagementPolicyExecutionActions?: string;\n\n\t/**\n\t * The rights management policy enforcement processors to add to the factory.\n\t */\n\trightsManagementPolicyEnforcementProcessors?: string;\n\n\t/**\n\t * The rights management policy arbiters to add to the factory.\n\t */\n\trightsManagementPolicyArbiters?: string;\n\n\t/**\n\t * The rights management policy obligation enforcers to add to the factory.\n\t */\n\trightsManagementPolicyObligationEnforcers?: string;\n\n\t/**\n\t * Is the dataspace enabled, defaults to false.\n\t */\n\tdataspaceEnabled?: string;\n\n\t/**\n\t * The length of time to retain the activity logs for in seconds, set to -1 to keep forever.\n\t * @default 600\n\t */\n\tdataspaceRetainActivityLogsFor?: string;\n\n\t/**\n\t * The interval in seconds for cleaning up the activity logs.\n\t * @default 3600\n\t */\n\tdataspaceActivityLogsCleanupInterval?: string;\n\n\t/**\n\t * The TTL in milliseconds for the dataspace agreement cache.\n\t */\n\tdataspaceAgreementCacheTtl?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the dataspace agreement cache.\n\t */\n\tdataspaceAgreementCacheMutexTimeout?: string;\n\n\t/**\n\t * The time in milliseconds after which an unused agreement is eligible for removal.\n\t */\n\tdataspaceAgreementUnusedThreshold?: string;\n\n\t/**\n\t * The interval in milliseconds between agreement sweep runs.\n\t */\n\tdataspaceAgreementSweepInterval?: string;\n\n\t/**\n\t * The number of times to retry failed data plane tasks.\n\t */\n\tdataspaceRetryCount?: string;\n\n\t/**\n\t * Maximum HTTP retry attempts per push delivery task execution.\n\t */\n\tdataspacePushRetryCount?: string;\n\n\t/**\n\t * Base delay in milliseconds for exponential backoff between push HTTP retries.\n\t */\n\tdataspacePushRetryBaseDelay?: string;\n\n\t/**\n\t * Timeout in milliseconds for each push delivery HTTP POST request.\n\t */\n\tdataspacePushTimeout?: string;\n\n\t/**\n\t * Interval in milliseconds between orphaned push subscription cleanup scans.\n\t */\n\tdataspacePushSubscriptionCleanupInterval?: string;\n\n\t/**\n\t * Base route path for the data plane service (path only, not full URL).\n\t * Combined with the public origin to form the `dataAddress.endpoint` sent to PULL consumers\n\t * and the inbox URL sent to PUSH providers.\n\t *\n\t * This must be the mount-point prefix of the data plane routes, NOT a specific route path.\n\t * Do NOT append sub-paths such as `/entities` or `/inbox` - those are appended automatically\n\t * by each transfer handler and by the data plane REST client.\n\t *\n\t * REQUIRED if PULL or PUSH transfers are supported.\n\t * If not specified, PULL and PUSH transfers will not be available.\n\t *\n\t * Example: \"dataspace\"\n\t */\n\tdataspaceDataPlanePath?: string;\n\n\t/**\n\t * Whether the provider immediately starts a transfer once it has been requested.\n\t * When false the transfer stays in REQUESTED until the provider explicitly calls transferStarted.\n\t * @default false\n\t */\n\tdataspaceAutoStartTransfers?: string;\n\n\t/**\n\t * How long in seconds a negotiation may sit without progress before it is treated as timed out.\n\t * @default 30\n\t */\n\tdataspaceStalledNegotiationTimeout?: string;\n\n\t/**\n\t * How long in seconds a consumer-initiated transfer may sit in REQUESTED without the provider\n\t * progressing it before it is treated as timed out.\n\t * @default 30\n\t */\n\tdataspaceStalledTransferTimeout?: string;\n\n\t/**\n\t * How long in seconds a provider transfer may stay idle before the idle policy marks it as stalled.\n\t */\n\tdataspaceProviderTransferIdleTimeout?: string;\n\n\t/**\n\t * How frequently in seconds the provider idle transfer policy sweep runs.\n\t */\n\tdataspaceProviderTransferPolicySweepInterval?: string;\n\n\t/**\n\t * Path under which the dataspace control plane is mounted (path only, not full URL).\n\t * This must match the control-plane REST mount, as it is combined with the public\n\t * origin to build the consumer's advertised callback address.\n\t * @default \"dataspace-control-plane\"\n\t */\n\tdataspaceCallbackPath?: string;\n\n\t/**\n\t * Are the health components enabled, defaults to false.\n\t */\n\thealthEnabled?: string;\n\n\t/**\n\t * The interval in seconds for performing health checks, defaults to 60.\n\t */\n\thealthInterval?: string;\n\n\t/**\n\t * The interval in seconds for performing health checks at startup, defaults to 2.\n\t * This allows components that take a long time to initialize to be healthy before the first health check is performed.\n\t */\n\thealthStartupInterval?: string;\n\n\t/**\n\t * The interval in seconds for running the application health lifecycle (init, application, teardown), defaults to 300.\n\t */\n\thealthApplicationInterval?: string;\n\n\t/**\n\t * Comma separated list of regular expressions matched against the engine component type keys,\n\t * any which match are excluded from the engine clone used by the application health background\n\t * task. Defaults to the component groups which provide no application health checks.\n\t */\n\thealthExcludeCloneComponents?: string;\n\n\t/**\n\t * The maximum number of workers to use for processing background tasks, defaults to twice the number of CPU cores.\n\t */\n\tbackgroundTaskMaxSystemWorkerCount?: string;\n\n\t/**\n\t * The interval in milliseconds to leave between background tasks, defaults to 100.\n\t */\n\tbackgroundTaskInterval?: string;\n\n\t/**\n\t * The interval in milliseconds to leave between background task retries, defaults to 5000.\n\t */\n\tbackgroundTaskRetryInterval?: string;\n\n\t/**\n\t * The interval in milliseconds between sweeps removing retained background tasks, defaults to 120000.\n\t */\n\tbackgroundTaskCleanupInterval?: string;\n\n\t/**\n\t * The time in milliseconds to wait for each handler's workers to shut down before terminating them, defaults to 5000.\n\t */\n\tbackgroundTaskWorkerShutdownTimeout?: string;\n\n\t/**\n\t * The maximum dispatches of a background task attempt before it is failed as interrupted, defaults to 3, set to -1 for no limit.\n\t */\n\tbackgroundTaskMaxDispatchCount?: string;\n\n\t/**\n\t * The type of the automation action to create, comma separate for more than one connector.\n\t * values: fetch\n\t */\n\tautomationActionTypes?: string;\n\n\t/**\n\t * The default mutex timeout in milliseconds, used when no component-specific timeout is set, defaults to 5000 if omitted.\n\t */\n\tmutexTimeoutDefault?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the auditable item graph component.\n\t */\n\tauditableItemGraphMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the auditable item stream component.\n\t */\n\tauditableItemStreamMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the federated catalogue component.\n\t */\n\tfederatedCatalogueMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the document management component.\n\t */\n\tdocumentManagementMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the memory and file entity storage connectors.\n\t */\n\tentityStorageMutexTimeout?: string;\n\n\t/**\n\t * The mutex timeout in milliseconds for the rights management component.\n\t */\n\trightsManagementMutexTimeout?: string;\n\n\t/**\n\t * A comma separated list of additional node extensions to load, the initialiseExtension method will be called for each extension.\n\t */\n\textensions?: string;\n}\n"]}
|
|
@@ -157,7 +157,9 @@ const engineEnvironmentVariableKeysInternal = {
|
|
|
157
157
|
telemetryBatchSize: true,
|
|
158
158
|
telemetryBatchFlushInterval: true,
|
|
159
159
|
telemetryMaxCacheSize: true,
|
|
160
|
-
|
|
160
|
+
telemetryFlushTimeout: true,
|
|
161
|
+
telemetryTaskCoalesce: true,
|
|
162
|
+
telemetryTaskStallTimeout: true,
|
|
161
163
|
telemetryMetricDefinitionCacheCapacity: true,
|
|
162
164
|
telemetryMetricDefinitionCacheTtiMs: true,
|
|
163
165
|
telemetrySilentComponents: true,
|
|
@@ -167,7 +169,6 @@ const engineEnvironmentVariableKeysInternal = {
|
|
|
167
169
|
openTelemetryTracingTracerVersion: true,
|
|
168
170
|
openTelemetryTracingEndpoint: true,
|
|
169
171
|
openTelemetryTracingProcessor: true,
|
|
170
|
-
tracingMutexTimeout: true,
|
|
171
172
|
tracingSilentComponents: true,
|
|
172
173
|
// DLT / identity
|
|
173
174
|
faucetConnector: true,
|
|
@@ -201,6 +202,7 @@ const engineEnvironmentVariableKeysInternal = {
|
|
|
201
202
|
immutableProofTaskRetryCount: true,
|
|
202
203
|
immutableProofTaskRetryInterval: true,
|
|
203
204
|
immutableProofTaskFailureRetainFor: true,
|
|
205
|
+
immutableProofTaskWorkerIdleTimeout: true,
|
|
204
206
|
immutableProofSweepInterval: true,
|
|
205
207
|
immutableProofSweepStaleThreshold: true,
|
|
206
208
|
immutableProofSweepMaxAttempts: true,
|
|
@@ -268,6 +270,7 @@ const engineEnvironmentVariableKeysInternal = {
|
|
|
268
270
|
healthInterval: true,
|
|
269
271
|
healthStartupInterval: true,
|
|
270
272
|
healthApplicationInterval: true,
|
|
273
|
+
healthExcludeCloneComponents: true,
|
|
271
274
|
// background task
|
|
272
275
|
backgroundTaskMaxSystemWorkerCount: true,
|
|
273
276
|
backgroundTaskInterval: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineEnvironmentVariableKeys.js","sourceRoot":"","sources":["../../../src/models/engineEnvironmentVariableKeys.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IEngineEnvironmentVariables } from \"./IEngineEnvironmentVariables.js\";\n\n// Mapped type exhaustiveness check: TypeScript requires every key of\n// Required<IEngineEnvironmentVariables> to appear here with value `true`.\n// Removing a key → compile error (\"Property X is missing\").\n// Adding an invented key → compile error (\"Object literal may only specify known properties\").\nconst engineEnvironmentVariableKeysInternal: {\n\t[K in keyof Required<IEngineEnvironmentVariables>]: true;\n} = {\n\t// global\n\tdebug: true,\n\tsilent: true,\n\tstrictEnv: true,\n\tenvAllowList: true,\n\tstorageFileRoot: true,\n\tstateFilename: true,\n\ttenantEnabled: true,\n\tschemaMigrationEnabled: true,\n\textensions: true,\n\t// entity storage\n\tentityStorageConnectorType: true,\n\tentityStorageConnectorDefault: true,\n\tentityStorageTablePrefix: true,\n\tentityStorageMutexTimeout: true,\n\t// AWS DynamoDB\n\tawsDynamodbAuthMode: true,\n\tawsDynamodbAccessKeyId: true,\n\tawsDynamodbSecretAccessKey: true,\n\tawsDynamodbRegion: true,\n\tawsDynamodbEndpoint: true,\n\tawsDynamodbConnectionTimeout: true,\n\t// Azure Cosmos DB\n\tazureCosmosdbKey: true,\n\tazureCosmosdbContainerId: true,\n\tazureCosmosdbDatabaseId: true,\n\tazureCosmosdbEndpoint: true,\n\t// GCP Firestore\n\tgcpFirestoreCollectionName: true,\n\tgcpFirestoreCredentials: true,\n\tgcpFirestoreDatabaseId: true,\n\tgcpFirestoreEndpoint: true,\n\tgcpFirestoreProjectId: true,\n\t// ScyllaDB\n\tscylladbHosts: true,\n\tscylladbKeyspace: true,\n\tscylladbLocalDataCenter: true,\n\tscylladbPort: true,\n\tscylladbPoolCoreConnectionsPerHost: true,\n\tscylladbPoolMaxRequestsPerConnection: true,\n\t// MySQL\n\tmySqlHost: true,\n\tmySqlPort: true,\n\tmySqlUser: true,\n\tmySqlPassword: true,\n\tmySqlDatabase: true,\n\tmySqlPoolConnectionLimit: true,\n\tmySqlPoolMaxIdle: true,\n\tmySqlPoolIdleTimeout: true,\n\tmySqlPoolEnableKeepAlive: true,\n\tmySqlPoolWaitForConnections: true,\n\tmySqlPoolQueueLimit: true,\n\t// MongoDB\n\tmongoDbHost: true,\n\tmongoDbPort: true,\n\tmongoDbUser: true,\n\tmongoDbPassword: true,\n\tmongoDbDatabase: true,\n\tmongoDbPoolMaxPoolSize: true,\n\tmongoDbPoolMinPoolSize: true,\n\tmongoDbPoolMaxIdleTime: true,\n\tmongoDbPoolWaitQueueTimeout: true,\n\t// PostgreSQL\n\tpostgreSqlHost: true,\n\tpostgreSqlPort: true,\n\tpostgreSqlUser: true,\n\tpostgreSqlPassword: true,\n\tpostgreSqlDatabase: true,\n\tpostgreSqlPoolMax: true,\n\tpostgreSqlPoolIdleTimeout: true,\n\tpostgreSqlPoolConnectTimeout: true,\n\tpostgreSqlPoolMaxLifetime: true,\n\t// IPFS\n\tipfsBearerToken: true,\n\tipfsApiUrl: true,\n\t// blob storage\n\tblobStorageConnectorType: true,\n\tblobStorageConnectorDefault: true,\n\tblobStorageEnableEncryption: true,\n\tblobStorageEncryptionKeyId: true,\n\tblobStoragePrefix: true,\n\t// AWS S3\n\tawsS3Region: true,\n\tawsS3BucketName: true,\n\tawsS3AuthMode: true,\n\tawsS3AccessKeyId: true,\n\tawsS3SecretAccessKey: true,\n\tawsS3Endpoint: true,\n\t// Azure Storage\n\tazureStorageAccountKey: true,\n\tazureStorageAccountName: true,\n\tazureStorageContainerName: true,\n\tazureStorageEndpoint: true,\n\t// GCP Storage\n\tgcpStorageBucketName: true,\n\tgcpStorageCredentials: true,\n\tgcpStorageEndpoint: true,\n\tgcpStorageProjectId: true,\n\t// vault\n\tvaultConnector: true,\n\tvaultPrefix: true,\n\thashicorpVaultToken: true,\n\thashicorpVaultEndpoint: true,\n\t// logging\n\tloggingConnector: true,\n\tloggingBatchSize: true,\n\tloggingBatchFlushInterval: true,\n\tloggingRetainFor: true,\n\tloggingMaxEntries: true,\n\tloggingRetentionInterval: true,\n\tloggingRetentionBatchSize: true,\n\tloggingSilentComponents: true,\n\tloggingFileDirectory: true,\n\tloggingFileFilename: true,\n\tloggingFileMaxFileSizeBytes: true,\n\tloggingFileMaxRetainedFiles: true,\n\t// open telemetry logging\n\topenTelemetryLoggingLoggerName: true,\n\topenTelemetryLoggingLoggerVersion: true,\n\topenTelemetryLoggingPrometheusEndpoint: true,\n\topenTelemetryLoggingProcessor: true,\n\t// event bus\n\teventBusConnector: true,\n\teventBusComponent: true,\n\t// email\n\temailProtocolConnector: true,\n\t// messaging\n\tmessagingEmailConnector: true,\n\tmessagingSmsConnector: true,\n\tmessagingPushNotificationConnector: true,\n\tsmtpHost: true,\n\tsmtpPort: true,\n\tsmtpSecure: true,\n\tsmtpUsername: true,\n\tsmtpPassword: true,\n\t// AWS SES\n\tawsSesRegion: true,\n\tawsSesAuthMode: true,\n\tawsSesSecretAccessKey: true,\n\tawsSesAccessKeyId: true,\n\tawsSesEndpoint: true,\n\tawsMessagingPushNotificationApplications: true,\n\t// telemetry\n\ttelemetryConnector: true,\n\topenTelemetryMeterName: true,\n\topenTelemetryMeterVersion: true,\n\topenTelemetryReader: true,\n\topenTelemetryPrometheusPort: true,\n\ttelemetryMetricsCollectorInterval: true,\n\ttelemetryMetricsProducers: true,\n\ttelemetryMetricsProducerMaxHistory: true,\n\ttelemetryBatchSize: true,\n\ttelemetryBatchFlushInterval: true,\n\ttelemetryMaxCacheSize: true,\n\ttelemetryMutexTimeout: true,\n\ttelemetryMetricDefinitionCacheCapacity: true,\n\ttelemetryMetricDefinitionCacheTtiMs: true,\n\ttelemetrySilentComponents: true,\n\t// tracing\n\ttracingConnector: true,\n\topenTelemetryTracingTracerName: true,\n\topenTelemetryTracingTracerVersion: true,\n\topenTelemetryTracingEndpoint: true,\n\topenTelemetryTracingProcessor: true,\n\ttracingMutexTimeout: true,\n\ttracingSilentComponents: true,\n\t// DLT / identity\n\tfaucetConnector: true,\n\twalletConnector: true,\n\tnftConnector: true,\n\tnftPackageId: true,\n\tnotarizationConnector: true,\n\tidentityConnector: true,\n\tidentityWalletAddressIndex: true,\n\tidentityDidResolutionCacheTtl: true,\n\tidentityDidResolutionCacheCapacity: true,\n\tidentityDidResolutionCacheMutexTimeout: true,\n\tidentityDidResolutionRetries: true,\n\tidentityDidResolutionRetryDelay: true,\n\tidentityResolverConnector: true,\n\tidentityProfileConnector: true,\n\tuniversalResolverEndpoint: true,\n\t// IOTA\n\tiotaFaucetEndpoint: true,\n\tiotaNodeEndpoint: true,\n\tiotaNetwork: true,\n\tiotaCoinType: true,\n\tiotaGasBudget: true,\n\tiotaGasReservationDuration: true,\n\tiotaExplorerEndpoint: true,\n\tiotaGasStationEndpoint: true,\n\tiotaGasStationAuthToken: true,\n\tiotaIdentityPackageId: true,\n\t// attestation / proofs\n\timmutableProofVerificationMethodId: true,\n\timmutableProofTaskRetryCount: true,\n\timmutableProofTaskRetryInterval: true,\n\timmutableProofTaskFailureRetainFor: true,\n\timmutableProofSweepInterval: true,\n\timmutableProofSweepStaleThreshold: true,\n\timmutableProofSweepMaxAttempts: true,\n\timmutableProofSweepBatchLimit: true,\n\timmutableProofSweepBackoff: true,\n\timmutableProofSweepAssumeRetryableBefore: true,\n\tattestationConnector: true,\n\tattestationVerificationMethodId: true,\n\t// data processing\n\tdataConverterConnectors: true,\n\tdataExtractorConnectors: true,\n\ttaskSchedulerEnabled: true,\n\t// auditable items / documents\n\tauditableItemGraphEnabled: true,\n\tauditableItemGraphMutexTimeout: true,\n\tauditableItemStreamEnabled: true,\n\tauditableItemStreamMutexTimeout: true,\n\tdocumentManagementEnabled: true,\n\tdocumentManagementMutexTimeout: true,\n\t// federated catalogue\n\tfederatedCatalogueEnabled: true,\n\tfederatedCatalogueFilters: true,\n\tfederatedCatalogueRemoteEndpoint: true,\n\tfederatedCatalogueRestClientPathPrefix: true,\n\tfederatedCatalogueMutexTimeout: true,\n\t// trust\n\ttrustGenerators: true,\n\ttrustVerifiers: true,\n\ttrustVerificationMethodId: true,\n\ttrustJwtTtl: true,\n\ttrustIdentitiesAllow: true,\n\ttrustIdentitiesDeny: true,\n\t// rights management\n\trightsManagementCallbackPath: true,\n\trightsManagementPolicyInformationSources: true,\n\trightsManagementPolicyNegotiators: true,\n\trightsManagementPolicyRequesters: true,\n\trightsManagementPolicyExecutionActions: true,\n\trightsManagementPolicyEnforcementProcessors: true,\n\trightsManagementPolicyArbiters: true,\n\trightsManagementPolicyObligationEnforcers: true,\n\trightsManagementMutexTimeout: true,\n\t// dataspace\n\tdataspaceEnabled: true,\n\tdataspaceRetainActivityLogsFor: true,\n\tdataspaceActivityLogsCleanupInterval: true,\n\tdataspaceAgreementCacheTtl: true,\n\tdataspaceAgreementCacheMutexTimeout: true,\n\tdataspaceAgreementUnusedThreshold: true,\n\tdataspaceAgreementSweepInterval: true,\n\tdataspaceRetryCount: true,\n\tdataspacePushRetryCount: true,\n\tdataspacePushRetryBaseDelay: true,\n\tdataspacePushTimeout: true,\n\tdataspacePushSubscriptionCleanupInterval: true,\n\tdataspaceDataPlanePath: true,\n\tdataspaceAutoStartTransfers: true,\n\tdataspaceStalledNegotiationTimeout: true,\n\tdataspaceStalledTransferTimeout: true,\n\tdataspaceProviderTransferIdleTimeout: true,\n\tdataspaceProviderTransferPolicySweepInterval: true,\n\tdataspaceCallbackPath: true,\n\t// health\n\thealthEnabled: true,\n\thealthInterval: true,\n\thealthStartupInterval: true,\n\thealthApplicationInterval: true,\n\t// background task\n\tbackgroundTaskMaxSystemWorkerCount: true,\n\tbackgroundTaskInterval: true,\n\tbackgroundTaskRetryInterval: true,\n\tbackgroundTaskCleanupInterval: true,\n\tbackgroundTaskWorkerShutdownTimeout: true,\n\tbackgroundTaskMaxDispatchCount: true,\n\t// automation / mutex\n\tautomationActionTypes: true,\n\tmutexTimeoutDefault: true\n};\n\n/**\n * The set of camelCase property names that are valid IEngineEnvironmentVariables keys.\n */\nexport const ENGINE_ENVIRONMENT_VARIABLE_KEYS: ReadonlySet<string> = new Set(\n\tObject.keys(engineEnvironmentVariableKeysInternal)\n);\n"]}
|
|
1
|
+
{"version":3,"file":"engineEnvironmentVariableKeys.js","sourceRoot":"","sources":["../../../src/models/engineEnvironmentVariableKeys.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IEngineEnvironmentVariables } from \"./IEngineEnvironmentVariables.js\";\n\n// Mapped type exhaustiveness check: TypeScript requires every key of\n// Required<IEngineEnvironmentVariables> to appear here with value `true`.\n// Removing a key → compile error (\"Property X is missing\").\n// Adding an invented key → compile error (\"Object literal may only specify known properties\").\nconst engineEnvironmentVariableKeysInternal: {\n\t[K in keyof Required<IEngineEnvironmentVariables>]: true;\n} = {\n\t// global\n\tdebug: true,\n\tsilent: true,\n\tstrictEnv: true,\n\tenvAllowList: true,\n\tstorageFileRoot: true,\n\tstateFilename: true,\n\ttenantEnabled: true,\n\tschemaMigrationEnabled: true,\n\textensions: true,\n\t// entity storage\n\tentityStorageConnectorType: true,\n\tentityStorageConnectorDefault: true,\n\tentityStorageTablePrefix: true,\n\tentityStorageMutexTimeout: true,\n\t// AWS DynamoDB\n\tawsDynamodbAuthMode: true,\n\tawsDynamodbAccessKeyId: true,\n\tawsDynamodbSecretAccessKey: true,\n\tawsDynamodbRegion: true,\n\tawsDynamodbEndpoint: true,\n\tawsDynamodbConnectionTimeout: true,\n\t// Azure Cosmos DB\n\tazureCosmosdbKey: true,\n\tazureCosmosdbContainerId: true,\n\tazureCosmosdbDatabaseId: true,\n\tazureCosmosdbEndpoint: true,\n\t// GCP Firestore\n\tgcpFirestoreCollectionName: true,\n\tgcpFirestoreCredentials: true,\n\tgcpFirestoreDatabaseId: true,\n\tgcpFirestoreEndpoint: true,\n\tgcpFirestoreProjectId: true,\n\t// ScyllaDB\n\tscylladbHosts: true,\n\tscylladbKeyspace: true,\n\tscylladbLocalDataCenter: true,\n\tscylladbPort: true,\n\tscylladbPoolCoreConnectionsPerHost: true,\n\tscylladbPoolMaxRequestsPerConnection: true,\n\t// MySQL\n\tmySqlHost: true,\n\tmySqlPort: true,\n\tmySqlUser: true,\n\tmySqlPassword: true,\n\tmySqlDatabase: true,\n\tmySqlPoolConnectionLimit: true,\n\tmySqlPoolMaxIdle: true,\n\tmySqlPoolIdleTimeout: true,\n\tmySqlPoolEnableKeepAlive: true,\n\tmySqlPoolWaitForConnections: true,\n\tmySqlPoolQueueLimit: true,\n\t// MongoDB\n\tmongoDbHost: true,\n\tmongoDbPort: true,\n\tmongoDbUser: true,\n\tmongoDbPassword: true,\n\tmongoDbDatabase: true,\n\tmongoDbPoolMaxPoolSize: true,\n\tmongoDbPoolMinPoolSize: true,\n\tmongoDbPoolMaxIdleTime: true,\n\tmongoDbPoolWaitQueueTimeout: true,\n\t// PostgreSQL\n\tpostgreSqlHost: true,\n\tpostgreSqlPort: true,\n\tpostgreSqlUser: true,\n\tpostgreSqlPassword: true,\n\tpostgreSqlDatabase: true,\n\tpostgreSqlPoolMax: true,\n\tpostgreSqlPoolIdleTimeout: true,\n\tpostgreSqlPoolConnectTimeout: true,\n\tpostgreSqlPoolMaxLifetime: true,\n\t// IPFS\n\tipfsBearerToken: true,\n\tipfsApiUrl: true,\n\t// blob storage\n\tblobStorageConnectorType: true,\n\tblobStorageConnectorDefault: true,\n\tblobStorageEnableEncryption: true,\n\tblobStorageEncryptionKeyId: true,\n\tblobStoragePrefix: true,\n\t// AWS S3\n\tawsS3Region: true,\n\tawsS3BucketName: true,\n\tawsS3AuthMode: true,\n\tawsS3AccessKeyId: true,\n\tawsS3SecretAccessKey: true,\n\tawsS3Endpoint: true,\n\t// Azure Storage\n\tazureStorageAccountKey: true,\n\tazureStorageAccountName: true,\n\tazureStorageContainerName: true,\n\tazureStorageEndpoint: true,\n\t// GCP Storage\n\tgcpStorageBucketName: true,\n\tgcpStorageCredentials: true,\n\tgcpStorageEndpoint: true,\n\tgcpStorageProjectId: true,\n\t// vault\n\tvaultConnector: true,\n\tvaultPrefix: true,\n\thashicorpVaultToken: true,\n\thashicorpVaultEndpoint: true,\n\t// logging\n\tloggingConnector: true,\n\tloggingBatchSize: true,\n\tloggingBatchFlushInterval: true,\n\tloggingRetainFor: true,\n\tloggingMaxEntries: true,\n\tloggingRetentionInterval: true,\n\tloggingRetentionBatchSize: true,\n\tloggingSilentComponents: true,\n\tloggingFileDirectory: true,\n\tloggingFileFilename: true,\n\tloggingFileMaxFileSizeBytes: true,\n\tloggingFileMaxRetainedFiles: true,\n\t// open telemetry logging\n\topenTelemetryLoggingLoggerName: true,\n\topenTelemetryLoggingLoggerVersion: true,\n\topenTelemetryLoggingPrometheusEndpoint: true,\n\topenTelemetryLoggingProcessor: true,\n\t// event bus\n\teventBusConnector: true,\n\teventBusComponent: true,\n\t// email\n\temailProtocolConnector: true,\n\t// messaging\n\tmessagingEmailConnector: true,\n\tmessagingSmsConnector: true,\n\tmessagingPushNotificationConnector: true,\n\tsmtpHost: true,\n\tsmtpPort: true,\n\tsmtpSecure: true,\n\tsmtpUsername: true,\n\tsmtpPassword: true,\n\t// AWS SES\n\tawsSesRegion: true,\n\tawsSesAuthMode: true,\n\tawsSesSecretAccessKey: true,\n\tawsSesAccessKeyId: true,\n\tawsSesEndpoint: true,\n\tawsMessagingPushNotificationApplications: true,\n\t// telemetry\n\ttelemetryConnector: true,\n\topenTelemetryMeterName: true,\n\topenTelemetryMeterVersion: true,\n\topenTelemetryReader: true,\n\topenTelemetryPrometheusPort: true,\n\ttelemetryMetricsCollectorInterval: true,\n\ttelemetryMetricsProducers: true,\n\ttelemetryMetricsProducerMaxHistory: true,\n\ttelemetryBatchSize: true,\n\ttelemetryBatchFlushInterval: true,\n\ttelemetryMaxCacheSize: true,\n\ttelemetryFlushTimeout: true,\n\ttelemetryTaskCoalesce: true,\n\ttelemetryTaskStallTimeout: true,\n\ttelemetryMetricDefinitionCacheCapacity: true,\n\ttelemetryMetricDefinitionCacheTtiMs: true,\n\ttelemetrySilentComponents: true,\n\t// tracing\n\ttracingConnector: true,\n\topenTelemetryTracingTracerName: true,\n\topenTelemetryTracingTracerVersion: true,\n\topenTelemetryTracingEndpoint: true,\n\topenTelemetryTracingProcessor: true,\n\ttracingSilentComponents: true,\n\t// DLT / identity\n\tfaucetConnector: true,\n\twalletConnector: true,\n\tnftConnector: true,\n\tnftPackageId: true,\n\tnotarizationConnector: true,\n\tidentityConnector: true,\n\tidentityWalletAddressIndex: true,\n\tidentityDidResolutionCacheTtl: true,\n\tidentityDidResolutionCacheCapacity: true,\n\tidentityDidResolutionCacheMutexTimeout: true,\n\tidentityDidResolutionRetries: true,\n\tidentityDidResolutionRetryDelay: true,\n\tidentityResolverConnector: true,\n\tidentityProfileConnector: true,\n\tuniversalResolverEndpoint: true,\n\t// IOTA\n\tiotaFaucetEndpoint: true,\n\tiotaNodeEndpoint: true,\n\tiotaNetwork: true,\n\tiotaCoinType: true,\n\tiotaGasBudget: true,\n\tiotaGasReservationDuration: true,\n\tiotaExplorerEndpoint: true,\n\tiotaGasStationEndpoint: true,\n\tiotaGasStationAuthToken: true,\n\tiotaIdentityPackageId: true,\n\t// attestation / proofs\n\timmutableProofVerificationMethodId: true,\n\timmutableProofTaskRetryCount: true,\n\timmutableProofTaskRetryInterval: true,\n\timmutableProofTaskFailureRetainFor: true,\n\timmutableProofTaskWorkerIdleTimeout: true,\n\timmutableProofSweepInterval: true,\n\timmutableProofSweepStaleThreshold: true,\n\timmutableProofSweepMaxAttempts: true,\n\timmutableProofSweepBatchLimit: true,\n\timmutableProofSweepBackoff: true,\n\timmutableProofSweepAssumeRetryableBefore: true,\n\tattestationConnector: true,\n\tattestationVerificationMethodId: true,\n\t// data processing\n\tdataConverterConnectors: true,\n\tdataExtractorConnectors: true,\n\ttaskSchedulerEnabled: true,\n\t// auditable items / documents\n\tauditableItemGraphEnabled: true,\n\tauditableItemGraphMutexTimeout: true,\n\tauditableItemStreamEnabled: true,\n\tauditableItemStreamMutexTimeout: true,\n\tdocumentManagementEnabled: true,\n\tdocumentManagementMutexTimeout: true,\n\t// federated catalogue\n\tfederatedCatalogueEnabled: true,\n\tfederatedCatalogueFilters: true,\n\tfederatedCatalogueRemoteEndpoint: true,\n\tfederatedCatalogueRestClientPathPrefix: true,\n\tfederatedCatalogueMutexTimeout: true,\n\t// trust\n\ttrustGenerators: true,\n\ttrustVerifiers: true,\n\ttrustVerificationMethodId: true,\n\ttrustJwtTtl: true,\n\ttrustIdentitiesAllow: true,\n\ttrustIdentitiesDeny: true,\n\t// rights management\n\trightsManagementCallbackPath: true,\n\trightsManagementPolicyInformationSources: true,\n\trightsManagementPolicyNegotiators: true,\n\trightsManagementPolicyRequesters: true,\n\trightsManagementPolicyExecutionActions: true,\n\trightsManagementPolicyEnforcementProcessors: true,\n\trightsManagementPolicyArbiters: true,\n\trightsManagementPolicyObligationEnforcers: true,\n\trightsManagementMutexTimeout: true,\n\t// dataspace\n\tdataspaceEnabled: true,\n\tdataspaceRetainActivityLogsFor: true,\n\tdataspaceActivityLogsCleanupInterval: true,\n\tdataspaceAgreementCacheTtl: true,\n\tdataspaceAgreementCacheMutexTimeout: true,\n\tdataspaceAgreementUnusedThreshold: true,\n\tdataspaceAgreementSweepInterval: true,\n\tdataspaceRetryCount: true,\n\tdataspacePushRetryCount: true,\n\tdataspacePushRetryBaseDelay: true,\n\tdataspacePushTimeout: true,\n\tdataspacePushSubscriptionCleanupInterval: true,\n\tdataspaceDataPlanePath: true,\n\tdataspaceAutoStartTransfers: true,\n\tdataspaceStalledNegotiationTimeout: true,\n\tdataspaceStalledTransferTimeout: true,\n\tdataspaceProviderTransferIdleTimeout: true,\n\tdataspaceProviderTransferPolicySweepInterval: true,\n\tdataspaceCallbackPath: true,\n\t// health\n\thealthEnabled: true,\n\thealthInterval: true,\n\thealthStartupInterval: true,\n\thealthApplicationInterval: true,\n\thealthExcludeCloneComponents: true,\n\t// background task\n\tbackgroundTaskMaxSystemWorkerCount: true,\n\tbackgroundTaskInterval: true,\n\tbackgroundTaskRetryInterval: true,\n\tbackgroundTaskCleanupInterval: true,\n\tbackgroundTaskWorkerShutdownTimeout: true,\n\tbackgroundTaskMaxDispatchCount: true,\n\t// automation / mutex\n\tautomationActionTypes: true,\n\tmutexTimeoutDefault: true\n};\n\n/**\n * The set of camelCase property names that are valid IEngineEnvironmentVariables keys.\n */\nexport const ENGINE_ENVIRONMENT_VARIABLE_KEYS: ReadonlySet<string> = new Set(\n\tObject.keys(engineEnvironmentVariableKeysInternal)\n);\n"]}
|
package/dist/es/node.js
CHANGED
|
@@ -33,7 +33,7 @@ export async function run(nodeOptions, args) {
|
|
|
33
33
|
nodeOptions ??= {};
|
|
34
34
|
const serverInfo = {
|
|
35
35
|
name: nodeOptions?.serverName ?? "TWIN Node",
|
|
36
|
-
version: nodeOptions?.serverVersion ?? "0.9.
|
|
36
|
+
version: nodeOptions?.serverVersion ?? "0.9.5-next.1" // x-release-please-version
|
|
37
37
|
};
|
|
38
38
|
CLIDisplay.header(serverInfo.name, serverInfo.version, "🌩️ ");
|
|
39
39
|
if (!Is.stringValue(nodeOptions?.executionDirectory)) {
|