@twin.org/node-core 0.0.3-next.52 → 0.0.3-next.54
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 +20 -39
- package/dist/es/builders/engineEnvBuilder.js.map +1 -1
- package/dist/es/builders/engineServerEnvBuilder.js +42 -30
- package/dist/es/builders/engineServerEnvBuilder.js.map +1 -1
- package/dist/es/cli.js +6 -2
- package/dist/es/cli.js.map +1 -1
- package/dist/es/commands/bootstrapLegacy.js +204 -102
- package/dist/es/commands/bootstrapLegacy.js.map +1 -1
- package/dist/es/commands/identityCreate.js +52 -3
- package/dist/es/commands/identityCreate.js.map +1 -1
- package/dist/es/commands/identityImports.js +1 -0
- package/dist/es/commands/identityImports.js.map +1 -1
- package/dist/es/commands/identityVerifiableCredentialCreate.js +1 -0
- package/dist/es/commands/identityVerifiableCredentialCreate.js.map +1 -1
- package/dist/es/commands/identityVerificationMethodCreate.js +14 -11
- package/dist/es/commands/identityVerificationMethodCreate.js.map +1 -1
- package/dist/es/commands/identityVerificationMethodImport.js +1 -0
- package/dist/es/commands/identityVerificationMethodImport.js.map +1 -1
- package/dist/es/commands/nodeSetIdentity.js +5 -0
- package/dist/es/commands/nodeSetIdentity.js.map +1 -1
- package/dist/es/commands/removeTenantOrgAlias.js +81 -0
- package/dist/es/commands/removeTenantOrgAlias.js.map +1 -0
- package/dist/es/commands/setNodeOrgId.js +60 -0
- package/dist/es/commands/setNodeOrgId.js.map +1 -0
- package/dist/es/commands/setTenantOrgId.js +158 -0
- package/dist/es/commands/setTenantOrgId.js.map +1 -0
- package/dist/es/commands/tenantCreate.js +41 -7
- package/dist/es/commands/tenantCreate.js.map +1 -1
- package/dist/es/commands/vaultKeyCreate.js +1 -0
- package/dist/es/commands/vaultKeyCreate.js.map +1 -1
- package/dist/es/commands/vaultKeyImport.js +1 -0
- package/dist/es/commands/vaultKeyImport.js.map +1 -1
- package/dist/es/defaults.js +1 -3
- package/dist/es/defaults.js.map +1 -1
- package/dist/es/models/ICliCommandDefinition.js.map +1 -1
- package/dist/es/models/IEngineEnvironmentVariables.js.map +1 -1
- package/dist/es/models/IEngineServerEnvironmentVariables.js.map +1 -1
- package/dist/es/models/INodeEngineState.js.map +1 -1
- package/dist/es/node.js +2 -2
- package/dist/es/node.js.map +1 -1
- package/dist/es/start.js +76 -14
- package/dist/es/start.js.map +1 -1
- package/dist/es/utils.js +1 -1
- package/dist/es/utils.js.map +1 -1
- package/dist/types/builders/engineEnvBuilder.d.ts +2 -13
- package/dist/types/commands/bootstrapLegacy.d.ts +7 -7
- package/dist/types/commands/identityCreate.d.ts +6 -0
- package/dist/types/commands/removeTenantOrgAlias.d.ts +22 -0
- package/dist/types/commands/setNodeOrgId.d.ts +22 -0
- package/dist/types/commands/setTenantOrgId.d.ts +55 -0
- package/dist/types/commands/tenantCreate.d.ts +3 -0
- package/dist/types/defaults.d.ts +0 -1
- package/dist/types/models/ICliCommandDefinition.d.ts +5 -0
- package/dist/types/models/IEngineEnvironmentVariables.d.ts +8 -8
- package/dist/types/models/IEngineServerEnvironmentVariables.d.ts +4 -0
- package/dist/types/models/INodeEngineState.d.ts +5 -0
- package/docs/changelog.md +14 -0
- package/docs/reference/functions/buildEngineConfiguration.md +1 -7
- package/docs/reference/functions/isRightsManagementRequired.md +1 -1
- package/docs/reference/index.md +0 -2
- package/docs/reference/interfaces/ICliCommandDefinition.md +14 -0
- package/docs/reference/interfaces/IEngineEnvironmentVariables.md +16 -16
- package/docs/reference/interfaces/IEngineServerEnvironmentVariables.md +32 -24
- package/docs/reference/interfaces/INodeEngineState.md +9 -0
- package/docs/reference/interfaces/INodeEnvironmentVariables.md +36 -24
- package/locales/en.json +103 -38
- package/package.json +1 -1
- package/dist/es/commands/tenantToken.js +0 -97
- package/dist/es/commands/tenantToken.js.map +0 -1
- package/dist/types/commands/tenantToken.d.ts +0 -28
- package/docs/reference/functions/isUrlTransformerRequired.md +0 -20
- package/docs/reference/variables/URL_TRANSFORMER_ENCRYPTION_KEY_ID.md +0 -3
|
@@ -40,12 +40,12 @@ export async function buildEngineServerConfiguration(envVars, availableContextId
|
|
|
40
40
|
throw new GeneralError("node", "invalidPublicOrigin", { publicOrigin: envVars.publicOrigin });
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
const nodeIdentityEnabled = Coerce.boolean(envVars.nodeIdentityEnabled) ?? true;
|
|
44
43
|
const tenantEnabled = Coerce.boolean(envVars.tenantEnabled) ?? false;
|
|
44
|
+
const apiKeyHeader = envVars.authApiKeyHeader ?? "x-api-key";
|
|
45
45
|
if (tenantEnabled) {
|
|
46
46
|
webServerOptions.allowedHeaders ??= [];
|
|
47
|
-
if (!webServerOptions.allowedHeaders.includes(
|
|
48
|
-
webServerOptions.allowedHeaders.push(
|
|
47
|
+
if (!webServerOptions.allowedHeaders.includes(apiKeyHeader)) {
|
|
48
|
+
webServerOptions.allowedHeaders.push(apiKeyHeader);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
const serverConfig = {
|
|
@@ -91,44 +91,62 @@ export async function buildEngineServerConfiguration(envVars, availableContextId
|
|
|
91
91
|
}
|
|
92
92
|
serverConfig.types.restRouteProcessor ??= [];
|
|
93
93
|
serverConfig.types.socketRouteProcessor ??= [];
|
|
94
|
-
|
|
94
|
+
availableContextIdKeys.push({
|
|
95
|
+
key: ContextIdKeys.Node,
|
|
96
|
+
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
97
|
+
});
|
|
98
|
+
serverConfig.types.restRouteProcessor.push({
|
|
99
|
+
type: RestRouteProcessorType.ContextId,
|
|
100
|
+
options: {
|
|
101
|
+
config: {
|
|
102
|
+
key: ContextIdKeys.Node
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
serverConfig.types.socketRouteProcessor.push({
|
|
107
|
+
type: SocketRouteProcessorType.ContextId,
|
|
108
|
+
options: {
|
|
109
|
+
config: {
|
|
110
|
+
key: ContextIdKeys.Node
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
if (tenantEnabled) {
|
|
95
115
|
availableContextIdKeys.push({
|
|
96
|
-
key: ContextIdKeys.
|
|
116
|
+
key: ContextIdKeys.Organization,
|
|
97
117
|
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
98
118
|
});
|
|
119
|
+
availableContextIdKeys.push({
|
|
120
|
+
key: ContextIdKeys.Tenant,
|
|
121
|
+
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_TENANT]
|
|
122
|
+
});
|
|
99
123
|
serverConfig.types.restRouteProcessor.push({
|
|
100
|
-
type: RestRouteProcessorType.
|
|
124
|
+
type: RestRouteProcessorType.Tenant,
|
|
101
125
|
options: {
|
|
102
126
|
config: {
|
|
103
|
-
|
|
127
|
+
apiKeyName: apiKeyHeader
|
|
104
128
|
}
|
|
105
129
|
}
|
|
106
130
|
});
|
|
107
131
|
serverConfig.types.socketRouteProcessor.push({
|
|
108
|
-
type: SocketRouteProcessorType.
|
|
132
|
+
type: SocketRouteProcessorType.Tenant,
|
|
109
133
|
options: {
|
|
110
134
|
config: {
|
|
111
|
-
|
|
135
|
+
apiKeyName: apiKeyHeader
|
|
112
136
|
}
|
|
113
137
|
}
|
|
114
138
|
});
|
|
115
139
|
}
|
|
116
|
-
|
|
140
|
+
else {
|
|
117
141
|
availableContextIdKeys.push({
|
|
118
|
-
key: ContextIdKeys.
|
|
119
|
-
requiredHandlerFeatures: [
|
|
142
|
+
key: ContextIdKeys.Organization,
|
|
143
|
+
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
120
144
|
});
|
|
121
145
|
serverConfig.types.restRouteProcessor.push({
|
|
122
|
-
type: RestRouteProcessorType.
|
|
123
|
-
options: {
|
|
124
|
-
config: {}
|
|
125
|
-
}
|
|
146
|
+
type: RestRouteProcessorType.SingleTenant
|
|
126
147
|
});
|
|
127
148
|
serverConfig.types.socketRouteProcessor.push({
|
|
128
|
-
type: SocketRouteProcessorType.
|
|
129
|
-
options: {
|
|
130
|
-
config: {}
|
|
131
|
-
}
|
|
149
|
+
type: SocketRouteProcessorType.SingleTenant
|
|
132
150
|
});
|
|
133
151
|
}
|
|
134
152
|
if (!coreEngineConfig.silent) {
|
|
@@ -197,16 +215,10 @@ export async function buildEngineServerConfiguration(envVars, availableContextId
|
|
|
197
215
|
});
|
|
198
216
|
}
|
|
199
217
|
if (authProcessorType === AuthenticationComponentType.EntityStorage) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
});
|
|
205
|
-
availableContextIdKeys.push({
|
|
206
|
-
key: ContextIdKeys.User,
|
|
207
|
-
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
208
|
-
});
|
|
209
|
-
}
|
|
218
|
+
availableContextIdKeys.push({
|
|
219
|
+
key: ContextIdKeys.User,
|
|
220
|
+
requiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]
|
|
221
|
+
});
|
|
210
222
|
serverConfig.types.authenticationComponent ??= [];
|
|
211
223
|
serverConfig.types.authenticationComponent.push({
|
|
212
224
|
type: AuthenticationComponentType.EntityStorage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineServerEnvBuilder.js","sourceRoot":"","sources":["../../../src/builders/engineServerEnvBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IServerInfo, IWebServerOptions } from \"@twin.org/api-models\";\nimport { ContextIdKeys } from \"@twin.org/context\";\nimport { Coerce, GeneralError, Is, StringHelper, Url } from \"@twin.org/core\";\nimport type { IEngineCoreConfig } from \"@twin.org/engine-models\";\nimport { addDefaultRestPaths, addDefaultSocketPaths } from \"@twin.org/engine-server\";\nimport {\n\tAuthenticationAdminComponentType,\n\tAuthenticationAuditComponentType,\n\tAuthenticationComponentType,\n\tAuthenticationRateComponentType,\n\tHostingComponentType,\n\ttype IEngineServerConfig,\n\tInformationComponentType,\n\ttype MimeTypeProcessorType,\n\tRestRouteProcessorType,\n\tSocketRouteProcessorType\n} from \"@twin.org/engine-server-types\";\nimport type { HttpMethod } from \"@twin.org/web\";\nimport { CONTEXT_ID_HANDLER_FEATURE_DID, CONTEXT_ID_HANDLER_FEATURE_TENANT } from \"../defaults.js\";\nimport type { IEngineServerEnvironmentVariables } from \"../models/IEngineServerEnvironmentVariables.js\";\n\n/**\n * Handles the configuration of the server.\n * @param envVars The environment variables for the engine server.\n * @param availableContextIdKeys The context ID keys.\n * @param coreEngineConfig The core engine config.\n * @param serverInfo The server information.\n * @param openApiSpecPath The path to the open api spec.\n * @param favIconPath The path to the favicon.\n * @returns The config for the core and the server.\n */\nexport async function buildEngineServerConfiguration(\n\tenvVars: IEngineServerEnvironmentVariables & { [id: string]: string | unknown },\n\tavailableContextIdKeys: { key: string; requiredHandlerFeatures: string[] }[],\n\tcoreEngineConfig: IEngineCoreConfig,\n\tserverInfo: IServerInfo,\n\topenApiSpecPath?: string,\n\tfavIconPath?: string\n): Promise<IEngineServerConfig> {\n\tconst webServerOptions: IWebServerOptions = {\n\t\tport: Coerce.number(envVars.port),\n\t\thost: Coerce.string(envVars.host),\n\t\tmethods: Is.stringValue(envVars.httpMethods)\n\t\t\t? (envVars.httpMethods.split(\",\") as HttpMethod[])\n\t\t\t: undefined,\n\t\tallowedHeaders: Is.stringValue(envVars.httpAllowedHeaders)\n\t\t\t? envVars.httpAllowedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\texposedHeaders: Is.stringValue(envVars.httpExposedHeaders)\n\t\t\t? envVars.httpExposedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\tcorsOrigins: Is.stringValue(envVars.corsOrigins) ? envVars.corsOrigins.split(\",\") : undefined\n\t};\n\n\tconst localOrigin = `http://${webServerOptions.host ?? \"localhost\"}:${webServerOptions.port ?? 3000}`;\n\n\tlet publicOrigin;\n\tif (Is.stringValue(envVars.publicOrigin)) {\n\t\tconst publicUrl = Url.tryParseExact(envVars.publicOrigin);\n\t\tif (!Is.empty(publicUrl)) {\n\t\t\tconst urlParts = publicUrl.parts();\n\t\t\tpublicOrigin = `${urlParts.schema}://${urlParts.host}${Is.integer(urlParts.port) ? `:${urlParts.port}` : \"\"}`;\n\t\t} else {\n\t\t\tthrow new GeneralError(\"node\", \"invalidPublicOrigin\", { publicOrigin: envVars.publicOrigin });\n\t\t}\n\t}\n\n\tconst nodeIdentityEnabled = Coerce.boolean(envVars.nodeIdentityEnabled) ?? true;\n\tconst tenantEnabled = Coerce.boolean(envVars.tenantEnabled) ?? false;\n\tif (tenantEnabled) {\n\t\twebServerOptions.allowedHeaders ??= [];\n\t\tif (!webServerOptions.allowedHeaders.includes(\"x-api-key\")) {\n\t\t\twebServerOptions.allowedHeaders.push(\"x-api-key\");\n\t\t}\n\t}\n\n\tconst serverConfig: IEngineServerConfig = {\n\t\t...coreEngineConfig,\n\t\tweb: webServerOptions,\n\t\ttypes: {\n\t\t\t...coreEngineConfig.types,\n\t\t\tinformationComponent: [\n\t\t\t\t{\n\t\t\t\t\ttype: InformationComponentType.Service,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tserverInfo,\n\t\t\t\t\t\t\topenApiSpecPath,\n\t\t\t\t\t\t\tfavIconPath\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\thostingComponent: [\n\t\t\t\t{\n\t\t\t\t\ttype: HostingComponentType.Service,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tlocalOrigin,\n\t\t\t\t\t\t\tpublicOrigin\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t};\n\n\tif (Is.stringValue(envVars.mimeTypeProcessors)) {\n\t\tconst mimeTypeProcessors = envVars.mimeTypeProcessors.split(\",\");\n\n\t\tif (Is.arrayValue(mimeTypeProcessors)) {\n\t\t\tserverConfig.types.mimeTypeProcessor ??= [];\n\t\t\tfor (const mimeTypeProcessor of mimeTypeProcessors) {\n\t\t\t\tserverConfig.types.mimeTypeProcessor.push({\n\t\t\t\t\ttype: mimeTypeProcessor as MimeTypeProcessorType\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tserverConfig.types.restRouteProcessor ??= [];\n\tserverConfig.types.socketRouteProcessor ??= [];\n\n\tif (nodeIdentityEnabled) {\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.Node,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t});\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.ContextId,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.ContextId,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (tenantEnabled) {\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.Tenant,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_TENANT]\n\t\t});\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Tenant,\n\t\t\toptions: {\n\t\t\t\tconfig: {}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Tenant,\n\t\t\toptions: {\n\t\t\t\tconfig: {}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (!coreEngineConfig.silent) {\n\t\tconst includeBody = Coerce.boolean(envVars.routeLoggingIncludeBody) ?? coreEngineConfig.debug;\n\t\tconst fullBase64 = Coerce.boolean(envVars.routeLoggingFullBase64) ?? false;\n\t\tconst obfuscateProperties = Is.stringValue(envVars.routeLoggingObfuscateProperties)\n\t\t\t? envVars.routeLoggingObfuscateProperties.split(\",\")\n\t\t\t: undefined;\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tserverConfig.types.restRouteProcessor.push({\n\t\ttype: RestRouteProcessorType.RestRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\tserverConfig.types.socketRouteProcessor.push({\n\t\ttype: SocketRouteProcessorType.SocketRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\n\tconst authAdminProcessorType = envVars.authAdminProcessorType;\n\tconst authProcessorType = envVars.authProcessorType;\n\n\tif (\n\t\tauthAdminProcessorType === AuthenticationAdminComponentType.EntityStorage ||\n\t\tauthProcessorType === AuthenticationComponentType.EntityStorage\n\t) {\n\t\tserverConfig.types.authenticationRateComponent ??= [];\n\t\tserverConfig.types.authenticationRateComponent.push({\n\t\t\ttype: AuthenticationRateComponentType.EntityStorage\n\t\t});\n\n\t\tserverConfig.types.authenticationAuditComponent ??= [];\n\t\tserverConfig.types.authenticationAuditComponent.push({\n\t\t\ttype: AuthenticationAuditComponentType.EntityStorage\n\t\t});\n\t}\n\n\tif (authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage) {\n\t\tserverConfig.types.authenticationAdminComponent ??= [];\n\t\tserverConfig.types.authenticationAdminComponent.push({\n\t\t\ttype: AuthenticationAdminComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (authProcessorType === AuthenticationComponentType.EntityStorage) {\n\t\tif (nodeIdentityEnabled) {\n\t\t\tavailableContextIdKeys.push({\n\t\t\t\tkey: ContextIdKeys.Organization,\n\t\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t\t});\n\t\t\tavailableContextIdKeys.push({\n\t\t\t\tkey: ContextIdKeys.User,\n\t\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t\t});\n\t\t}\n\n\t\tserverConfig.types.authenticationComponent ??= [];\n\t\tserverConfig.types.authenticationComponent.push({\n\t\t\ttype: AuthenticationComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\taddDefaultRestPaths(serverConfig);\n\taddDefaultSocketPaths(serverConfig);\n\n\t// See if any of the rest paths should be overridden by environment variables and update the config accordingly\n\tfor (const componentType in serverConfig.types) {\n\t\tconst types = serverConfig.types[componentType];\n\n\t\tif (Is.arrayValue(types)) {\n\t\t\tfor (const typeConfig of types) {\n\t\t\t\tif (Is.stringValue(typeConfig.restPath)) {\n\t\t\t\t\tconst envVarName = `restPath${StringHelper.pascalCase(componentType.replace(\"Component\", \"\"))}`;\n\t\t\t\t\tconst overrideRestPath = envVars[envVarName];\n\t\t\t\t\tif (Is.stringValue(overrideRestPath)) {\n\t\t\t\t\t\ttypeConfig.restPath = overrideRestPath;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn serverConfig;\n}\n\n/**\n * Checks if the authentication entity storage subsystem is required.\n * Returns true when any component that depends on the authentication entity storage subsystem is enabled.\n * @param envVars The environment variables.\n * @returns True if authentication entity storage is enabled.\n */\nexport function isAuthEntityStorageRequired(envVars: IEngineServerEnvironmentVariables): boolean {\n\treturn (\n\t\tenvVars.authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage ||\n\t\tenvVars.authProcessorType === AuthenticationComponentType.EntityStorage\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"engineServerEnvBuilder.js","sourceRoot":"","sources":["../../../src/builders/engineServerEnvBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type { IServerInfo, IWebServerOptions } from \"@twin.org/api-models\";\nimport { ContextIdKeys } from \"@twin.org/context\";\nimport { Coerce, GeneralError, Is, StringHelper, Url } from \"@twin.org/core\";\nimport type { IEngineCoreConfig } from \"@twin.org/engine-models\";\nimport { addDefaultRestPaths, addDefaultSocketPaths } from \"@twin.org/engine-server\";\nimport {\n\tAuthenticationAdminComponentType,\n\tAuthenticationAuditComponentType,\n\tAuthenticationComponentType,\n\tAuthenticationRateComponentType,\n\tHostingComponentType,\n\ttype IEngineServerConfig,\n\tInformationComponentType,\n\ttype MimeTypeProcessorType,\n\tRestRouteProcessorType,\n\tSocketRouteProcessorType\n} from \"@twin.org/engine-server-types\";\nimport type { HttpMethod } from \"@twin.org/web\";\nimport { CONTEXT_ID_HANDLER_FEATURE_DID, CONTEXT_ID_HANDLER_FEATURE_TENANT } from \"../defaults.js\";\nimport type { IEngineServerEnvironmentVariables } from \"../models/IEngineServerEnvironmentVariables.js\";\n\n/**\n * Handles the configuration of the server.\n * @param envVars The environment variables for the engine server.\n * @param availableContextIdKeys The context ID keys.\n * @param coreEngineConfig The core engine config.\n * @param serverInfo The server information.\n * @param openApiSpecPath The path to the open api spec.\n * @param favIconPath The path to the favicon.\n * @returns The config for the core and the server.\n */\nexport async function buildEngineServerConfiguration(\n\tenvVars: IEngineServerEnvironmentVariables & { [id: string]: string | unknown },\n\tavailableContextIdKeys: { key: string; requiredHandlerFeatures: string[] }[],\n\tcoreEngineConfig: IEngineCoreConfig,\n\tserverInfo: IServerInfo,\n\topenApiSpecPath?: string,\n\tfavIconPath?: string\n): Promise<IEngineServerConfig> {\n\tconst webServerOptions: IWebServerOptions = {\n\t\tport: Coerce.number(envVars.port),\n\t\thost: Coerce.string(envVars.host),\n\t\tmethods: Is.stringValue(envVars.httpMethods)\n\t\t\t? (envVars.httpMethods.split(\",\") as HttpMethod[])\n\t\t\t: undefined,\n\t\tallowedHeaders: Is.stringValue(envVars.httpAllowedHeaders)\n\t\t\t? envVars.httpAllowedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\texposedHeaders: Is.stringValue(envVars.httpExposedHeaders)\n\t\t\t? envVars.httpExposedHeaders.split(\",\")\n\t\t\t: undefined,\n\t\tcorsOrigins: Is.stringValue(envVars.corsOrigins) ? envVars.corsOrigins.split(\",\") : undefined\n\t};\n\n\tconst localOrigin = `http://${webServerOptions.host ?? \"localhost\"}:${webServerOptions.port ?? 3000}`;\n\n\tlet publicOrigin;\n\tif (Is.stringValue(envVars.publicOrigin)) {\n\t\tconst publicUrl = Url.tryParseExact(envVars.publicOrigin);\n\t\tif (!Is.empty(publicUrl)) {\n\t\t\tconst urlParts = publicUrl.parts();\n\t\t\tpublicOrigin = `${urlParts.schema}://${urlParts.host}${Is.integer(urlParts.port) ? `:${urlParts.port}` : \"\"}`;\n\t\t} else {\n\t\t\tthrow new GeneralError(\"node\", \"invalidPublicOrigin\", { publicOrigin: envVars.publicOrigin });\n\t\t}\n\t}\n\n\tconst tenantEnabled = Coerce.boolean(envVars.tenantEnabled) ?? false;\n\tconst apiKeyHeader = envVars.authApiKeyHeader ?? \"x-api-key\";\n\tif (tenantEnabled) {\n\t\twebServerOptions.allowedHeaders ??= [];\n\t\tif (!webServerOptions.allowedHeaders.includes(apiKeyHeader)) {\n\t\t\twebServerOptions.allowedHeaders.push(apiKeyHeader);\n\t\t}\n\t}\n\n\tconst serverConfig: IEngineServerConfig = {\n\t\t...coreEngineConfig,\n\t\tweb: webServerOptions,\n\t\ttypes: {\n\t\t\t...coreEngineConfig.types,\n\t\t\tinformationComponent: [\n\t\t\t\t{\n\t\t\t\t\ttype: InformationComponentType.Service,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tserverInfo,\n\t\t\t\t\t\t\topenApiSpecPath,\n\t\t\t\t\t\t\tfavIconPath\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t],\n\t\t\thostingComponent: [\n\t\t\t\t{\n\t\t\t\t\ttype: HostingComponentType.Service,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tlocalOrigin,\n\t\t\t\t\t\t\tpublicOrigin\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t};\n\n\tif (Is.stringValue(envVars.mimeTypeProcessors)) {\n\t\tconst mimeTypeProcessors = envVars.mimeTypeProcessors.split(\",\");\n\n\t\tif (Is.arrayValue(mimeTypeProcessors)) {\n\t\t\tserverConfig.types.mimeTypeProcessor ??= [];\n\t\t\tfor (const mimeTypeProcessor of mimeTypeProcessors) {\n\t\t\t\tserverConfig.types.mimeTypeProcessor.push({\n\t\t\t\t\ttype: mimeTypeProcessor as MimeTypeProcessorType\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tserverConfig.types.restRouteProcessor ??= [];\n\tserverConfig.types.socketRouteProcessor ??= [];\n\n\tavailableContextIdKeys.push({\n\t\tkey: ContextIdKeys.Node,\n\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t});\n\n\tserverConfig.types.restRouteProcessor.push({\n\t\ttype: RestRouteProcessorType.ContextId,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t}\n\t\t}\n\t});\n\tserverConfig.types.socketRouteProcessor.push({\n\t\ttype: SocketRouteProcessorType.ContextId,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tkey: ContextIdKeys.Node\n\t\t\t}\n\t\t}\n\t});\n\n\tif (tenantEnabled) {\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.Organization,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t});\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.Tenant,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_TENANT]\n\t\t});\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Tenant,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tapiKeyName: apiKeyHeader\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Tenant,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tapiKeyName: apiKeyHeader\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.Organization,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t});\n\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.SingleTenant\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.SingleTenant\n\t\t});\n\t}\n\n\tif (!coreEngineConfig.silent) {\n\t\tconst includeBody = Coerce.boolean(envVars.routeLoggingIncludeBody) ?? coreEngineConfig.debug;\n\t\tconst fullBase64 = Coerce.boolean(envVars.routeLoggingFullBase64) ?? false;\n\t\tconst obfuscateProperties = Is.stringValue(envVars.routeLoggingObfuscateProperties)\n\t\t\t? envVars.routeLoggingObfuscateProperties.split(\",\")\n\t\t\t: undefined;\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.Logging,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tincludeBody,\n\t\t\t\t\tfullBase64,\n\t\t\t\t\tobfuscateProperties\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tserverConfig.types.restRouteProcessor.push({\n\t\ttype: RestRouteProcessorType.RestRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\tserverConfig.types.socketRouteProcessor.push({\n\t\ttype: SocketRouteProcessorType.SocketRoute,\n\t\toptions: {\n\t\t\tconfig: {\n\t\t\t\tincludeErrorStack: coreEngineConfig.debug\n\t\t\t}\n\t\t}\n\t});\n\n\tconst authAdminProcessorType = envVars.authAdminProcessorType;\n\tconst authProcessorType = envVars.authProcessorType;\n\n\tif (\n\t\tauthAdminProcessorType === AuthenticationAdminComponentType.EntityStorage ||\n\t\tauthProcessorType === AuthenticationComponentType.EntityStorage\n\t) {\n\t\tserverConfig.types.authenticationRateComponent ??= [];\n\t\tserverConfig.types.authenticationRateComponent.push({\n\t\t\ttype: AuthenticationRateComponentType.EntityStorage\n\t\t});\n\n\t\tserverConfig.types.authenticationAuditComponent ??= [];\n\t\tserverConfig.types.authenticationAuditComponent.push({\n\t\t\ttype: AuthenticationAuditComponentType.EntityStorage\n\t\t});\n\t}\n\n\tif (authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage) {\n\t\tserverConfig.types.authenticationAdminComponent ??= [];\n\t\tserverConfig.types.authenticationAdminComponent.push({\n\t\t\ttype: AuthenticationAdminComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {}\n\t\t\t}\n\t\t});\n\t}\n\n\tif (authProcessorType === AuthenticationComponentType.EntityStorage) {\n\t\tavailableContextIdKeys.push({\n\t\t\tkey: ContextIdKeys.User,\n\t\t\trequiredHandlerFeatures: [CONTEXT_ID_HANDLER_FEATURE_DID]\n\t\t});\n\n\t\tserverConfig.types.authenticationComponent ??= [];\n\t\tserverConfig.types.authenticationComponent.push({\n\t\t\ttype: AuthenticationComponentType.EntityStorage,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.restRouteProcessor.push({\n\t\t\ttype: RestRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tserverConfig.types.socketRouteProcessor.push({\n\t\t\ttype: SocketRouteProcessorType.AuthHeader,\n\t\t\toptions: {\n\t\t\t\tconfig: {\n\t\t\t\t\tsigningKeyName: envVars.authSigningKeyId\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\taddDefaultRestPaths(serverConfig);\n\taddDefaultSocketPaths(serverConfig);\n\n\t// See if any of the rest paths should be overridden by environment variables and update the config accordingly\n\tfor (const componentType in serverConfig.types) {\n\t\tconst types = serverConfig.types[componentType];\n\n\t\tif (Is.arrayValue(types)) {\n\t\t\tfor (const typeConfig of types) {\n\t\t\t\tif (Is.stringValue(typeConfig.restPath)) {\n\t\t\t\t\tconst envVarName = `restPath${StringHelper.pascalCase(componentType.replace(\"Component\", \"\"))}`;\n\t\t\t\t\tconst overrideRestPath = envVars[envVarName];\n\t\t\t\t\tif (Is.stringValue(overrideRestPath)) {\n\t\t\t\t\t\ttypeConfig.restPath = overrideRestPath;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn serverConfig;\n}\n\n/**\n * Checks if the authentication entity storage subsystem is required.\n * Returns true when any component that depends on the authentication entity storage subsystem is enabled.\n * @param envVars The environment variables.\n * @returns True if authentication entity storage is enabled.\n */\nexport function isAuthEntityStorageRequired(envVars: IEngineServerEnvironmentVariables): boolean {\n\treturn (\n\t\tenvVars.authAdminProcessorType === AuthenticationAdminComponentType.EntityStorage ||\n\t\tenvVars.authProcessorType === AuthenticationComponentType.EntityStorage\n\t);\n}\n"]}
|
package/dist/es/cli.js
CHANGED
|
@@ -12,9 +12,11 @@ import { getCommandDefinitionIdentityVerifiableCredentialCreate } from "./comman
|
|
|
12
12
|
import { getCommandDefinitionIdentityVerificationMethodCreate } from "./commands/identityVerificationMethodCreate.js";
|
|
13
13
|
import { getCommandDefinitionIdentityVerificationMethodImport } from "./commands/identityVerificationMethodImport.js";
|
|
14
14
|
import { getCommandDefinitionNodeSetIdentity } from "./commands/nodeSetIdentity.js";
|
|
15
|
+
import { getCommandDefinitionRemoveTenantOrgAlias } from "./commands/removeTenantOrgAlias.js";
|
|
16
|
+
import { getCommandDefinitionSetNodeOrgId } from "./commands/setNodeOrgId.js";
|
|
17
|
+
import { getCommandDefinitionSetTenantOrgId } from "./commands/setTenantOrgId.js";
|
|
15
18
|
import { getCommandDefinitionTenantCreate } from "./commands/tenantCreate.js";
|
|
16
19
|
import { getCommandDefinitionTenantImport } from "./commands/tenantImport.js";
|
|
17
|
-
import { getCommandDefinitionTenantToken } from "./commands/tenantToken.js";
|
|
18
20
|
import { getCommandDefinitionTenantUpdate } from "./commands/tenantUpdate.js";
|
|
19
21
|
import { getCommandDefinitionUserCreate } from "./commands/userCreate.js";
|
|
20
22
|
import { getCommandDefinitionUserUpdate } from "./commands/userUpdate.js";
|
|
@@ -235,9 +237,11 @@ export function registerCommands() {
|
|
|
235
237
|
getCommandDefinitionIdentityVerificationMethodImport(commandDefinitions);
|
|
236
238
|
getCommandDefinitionIdentityVerifiableCredentialCreate(commandDefinitions);
|
|
237
239
|
getCommandDefinitionNodeSetIdentity(commandDefinitions);
|
|
240
|
+
getCommandDefinitionSetNodeOrgId(commandDefinitions);
|
|
241
|
+
getCommandDefinitionSetTenantOrgId(commandDefinitions);
|
|
242
|
+
getCommandDefinitionRemoveTenantOrgAlias(commandDefinitions);
|
|
238
243
|
getCommandDefinitionTenantCreate(commandDefinitions);
|
|
239
244
|
getCommandDefinitionTenantImport(commandDefinitions);
|
|
240
|
-
getCommandDefinitionTenantToken(commandDefinitions);
|
|
241
245
|
getCommandDefinitionTenantUpdate(commandDefinitions);
|
|
242
246
|
getCommandDefinitionUserCreate(commandDefinitions);
|
|
243
247
|
getCommandDefinitionUserUpdate(commandDefinitions);
|
package/dist/es/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { CLIDisplay } from \"@twin.org/cli-core\";\nimport { ContextIdStore } from \"@twin.org/context\";\nimport { Coerce, GeneralError, I18n, Is, StringHelper } from \"@twin.org/core\";\nimport type { IEngineCore } from \"@twin.org/engine-models\";\nimport * as dotenv from \"dotenv\";\nimport { getCommandDefinitionBootstrapLegacy } from \"./commands/bootstrapLegacy.js\";\nimport { getCommandDefinitionHelp } from \"./commands/help.js\";\nimport { getCommandDefinitionIdentityCreate } from \"./commands/identityCreate.js\";\nimport { getCommandDefinitionIdentityImport } from \"./commands/identityImports.js\";\nimport { getCommandDefinitionIdentityVerifiableCredentialCreate } from \"./commands/identityVerifiableCredentialCreate.js\";\nimport { getCommandDefinitionIdentityVerificationMethodCreate } from \"./commands/identityVerificationMethodCreate.js\";\nimport { getCommandDefinitionIdentityVerificationMethodImport } from \"./commands/identityVerificationMethodImport.js\";\nimport { getCommandDefinitionNodeSetIdentity } from \"./commands/nodeSetIdentity.js\";\nimport { getCommandDefinitionTenantCreate } from \"./commands/tenantCreate.js\";\nimport { getCommandDefinitionTenantImport } from \"./commands/tenantImport.js\";\nimport { getCommandDefinitionTenantToken } from \"./commands/tenantToken.js\";\nimport { getCommandDefinitionTenantUpdate } from \"./commands/tenantUpdate.js\";\nimport { getCommandDefinitionUserCreate } from \"./commands/userCreate.js\";\nimport { getCommandDefinitionUserUpdate } from \"./commands/userUpdate.js\";\nimport { getCommandDefinitionVaultKeyCreate } from \"./commands/vaultKeyCreate.js\";\nimport { getCommandDefinitionVaultKeyImport } from \"./commands/vaultKeyImport.js\";\nimport type { CliCommandParamType } from \"./models/cliCommandParamType.js\";\nimport type { ICliArgs } from \"./models/ICliArgs.js\";\nimport type { ICliCommand } from \"./models/ICliCommand.js\";\nimport type { ICliCommandDefinition } from \"./models/ICliCommandDefinition.js\";\nimport type { INodeEnvironmentVariables } from \"./models/INodeEnvironmentVariables.js\";\n\nconst commandDefinitions: { [id: string]: ICliCommandDefinition } = {};\n\n/**\n * Parse command line arguments.\n * @param args The command line arguments.\n * @returns The parsed command line arguments.\n */\nexport function parseCommandLineArgs(args?: string[]): ICliArgs {\n\tlet nodePath;\n\tlet scriptPath;\n\tlet options:\n\t\t| {\n\t\t\t\tkey: string;\n\t\t\t\tvalue: string;\n\t\t }[]\n\t\t| undefined;\n\n\tif (Is.arrayValue(args)) {\n\t\tif (args.length > 0) {\n\t\t\tnodePath = args[0];\n\t\t}\n\t\tif (args.length > 1) {\n\t\t\tscriptPath = args[1];\n\t\t}\n\t\tif (args.length > 2) {\n\t\t\toptions = [];\n\n\t\t\tfor (let i = 2; i < args.length; i++) {\n\t\t\t\tconst arg = args[i];\n\t\t\t\tconst equalIndex = arg.indexOf(\"=\");\n\t\t\t\tif (equalIndex > 0) {\n\t\t\t\t\tconst key = arg.slice(0, equalIndex).trim();\n\t\t\t\t\tconst value = arg.slice(equalIndex + 1).trim();\n\t\t\t\t\tif (key.startsWith(\"--\")) {\n\t\t\t\t\t\toptions.push({ key: key.slice(2), value });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toptions.push({ key: arg, value: \"\" });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tnodePath,\n\t\tscriptPath,\n\t\toptions\n\t};\n}\n\n/**\n * Construct the CLI command from the parsed arguments.\n * @param processEnv The environment variables from the process.\n * @param cliArgs The parsed CLI arguments.\n * @returns The constructed CLI command.\n * @throws GeneralError if the command is missing.\n */\nexport function constructCliCommand(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\tcliArgs: ICliArgs\n): ICliCommand | undefined {\n\tif (Is.arrayValue(cliArgs.options)) {\n\t\tconst command = cliArgs.options[0];\n\n\t\t// If the first option is --help, we can display help for all commands\n\t\tif (command.key === \"--help\") {\n\t\t\treturn {\n\t\t\t\tdefinition: commandDefinitions.help,\n\t\t\t\tparams: {}\n\t\t\t};\n\t\t}\n\n\t\t// In cases where no command but env-prefix is provided, we just return\n\t\tif (command.key === \"env-prefix\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!commandDefinitions[command.key]) {\n\t\t\tthrow new GeneralError(\"node\", \"cliCommandMissing\", { command: command.key });\n\t\t}\n\n\t\t// We have a valid command, check for --help for that command\n\t\tconst hasHelp = cliArgs.options.find(option => option.key === \"--help\");\n\t\tif (hasHelp) {\n\t\t\treturn {\n\t\t\t\tdefinition: commandDefinitions.help,\n\t\t\t\tparams: {\n\t\t\t\t\tcommand: command.key\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tprocessEnvOptions(processEnv, cliArgs.options);\n\n\t\tconst cliParams: { [id: string]: CliCommandParamType } = {};\n\t\tconst allParamKeys = cliArgs.options\n\t\t\t.map(option => option.key)\n\t\t\t.filter(key => key !== command.key);\n\n\t\tfor (const commandDefParam of commandDefinitions[command.key].params) {\n\t\t\tconst foundParamIndex =\n\t\t\t\tcliArgs.options?.findIndex(option => option.key === commandDefParam.key) ?? -1;\n\t\t\tconst foundParam = foundParamIndex >= 0 ? cliArgs.options?.[foundParamIndex] : undefined;\n\n\t\t\tlet paramValue;\n\t\t\tif (commandDefParam.type === \"number\") {\n\t\t\t\tparamValue = Coerce.number(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t} else if (commandDefParam.type === \"boolean\") {\n\t\t\t\tparamValue = Coerce.boolean(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t} else {\n\t\t\t\tparamValue = Coerce.string(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t}\n\n\t\t\tconst required = commandDefParam.required ?? true;\n\t\t\tif (Is.empty(paramValue) && required) {\n\t\t\t\tthrow new GeneralError(\"node\", \"cliCommandParamMissing\", {\n\t\t\t\t\tcommand: command.key,\n\t\t\t\t\tparam: commandDefParam.key\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!Is.empty(paramValue)) {\n\t\t\t\tcliParams[StringHelper.camelCase(commandDefParam.key)] = paramValue;\n\t\t\t}\n\n\t\t\tif (foundParamIndex >= 0) {\n\t\t\t\tallParamKeys.splice(allParamKeys.indexOf(commandDefParam.key), 1);\n\t\t\t}\n\t\t}\n\n\t\tif (allParamKeys.length > 0) {\n\t\t\tthrow new GeneralError(\"node\", \"cliCommandParamExtra\", {\n\t\t\t\tcommand: command.key,\n\t\t\t\tparams: allParamKeys.join(\", \")\n\t\t\t});\n\t\t}\n\n\t\tif (commandDefinitions[command.key].params.find(param => param.key === \"output-env-prefix\")) {\n\t\t\tcliParams.outputEnvPrefix = (Coerce.string(cliParams.outputEnvPrefix) ?? \"\").toUpperCase();\n\t\t\tcliParams.outputEnvPrefix =\n\t\t\t\tcliParams.outputEnvPrefix.length > 0 && !cliParams.outputEnvPrefix.endsWith(\"_\")\n\t\t\t\t\t? `${cliParams.outputEnvPrefix}_`\n\t\t\t\t\t: cliParams.outputEnvPrefix;\n\t\t}\n\n\t\treturn {\n\t\t\tdefinition: commandDefinitions[command.key],\n\t\t\tparams: cliParams\n\t\t};\n\t}\n}\n\n/**\n * Execute the CLI command.\n * @param engineCore The engine core.\n * @param envVars The environment variables for the node.\n * @param cliCommand The CLI command to execute.\n */\nexport async function executeCommand(\n\tengineCore: IEngineCore,\n\tenvVars: INodeEnvironmentVariables,\n\tcliCommand: ICliCommand\n): Promise<void> {\n\tconst requiresEngineStarted = cliCommand.definition.requiresEngineStarted ?? true;\n\n\ttry {\n\t\tif (requiresEngineStarted) {\n\t\t\tawait engineCore.start(true);\n\t\t}\n\n\t\tCLIDisplay.value(\n\t\t\tI18n.formatMessage(\"node.cli.commands.command\"),\n\t\t\tcliCommand.definition.command\n\t\t);\n\t\tfor (const paramKey in cliCommand.params) {\n\t\t\tCLIDisplay.value(paramKey, Coerce.string(cliCommand.params[paramKey]), 1);\n\t\t}\n\t\tCLIDisplay.break();\n\n\t\tawait ContextIdStore.run(engineCore.getContextIds() ?? {}, async () => {\n\t\t\tawait cliCommand.definition.action(engineCore, envVars, cliCommand.params);\n\t\t});\n\t} catch (error) {\n\t\tCLIDisplay.spinnerStop();\n\n\t\tthrow error;\n\t} finally {\n\t\tif (requiresEngineStarted) {\n\t\t\tCLIDisplay.break();\n\t\t\tawait engineCore.stop();\n\t\t}\n\t}\n}\n\n/**\n * Load the env files and process the options.\n * @param processEnv The environment variables from the process.\n * @param options The options.\n * @returns The processed parameters.\n * @throws GeneralError if an env file has errors.\n */\nexport function processEnvOptions(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\toptions: {\n\t\tkey: string;\n\t\tvalue: string;\n\t}[]\n): void {\n\tconst inputEnv = options.find(option => option.key === \"load-env\")?.value;\n\n\tif (Is.stringValue(inputEnv)) {\n\t\tconst envFiles = inputEnv.split(\",\").map(f => f.trim());\n\t\tfor (const envFile of envFiles) {\n\t\t\tconst output = dotenv.config({\n\t\t\t\tpath: envFile,\n\t\t\t\tquiet: true\n\t\t\t});\n\n\t\t\tif (output.error) {\n\t\t\t\tthrow output.error;\n\t\t\t}\n\n\t\t\tif (Is.objectValue(output.parsed)) {\n\t\t\t\tfor (const key in output.parsed) {\n\t\t\t\t\tprocessEnv[key] = output.parsed[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn substituteEnvOptions(processEnv, options);\n}\n\n/**\n * Process options and replace any env variables with their values.\n * @param processEnv The environment variables from the process.\n * @param options The options.\n * @throws GeneralError if an env variable is missing.\n */\nexport function substituteEnvOptions(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\toptions: {\n\t\tkey: string;\n\t\tvalue: string;\n\t}[]\n): void {\n\tfor (const option of options) {\n\t\tif (option.value.startsWith(\"!\")) {\n\t\t\tconst envVar = processEnv[option.value.slice(1)];\n\t\t\tif (!Is.stringValue(envVar)) {\n\t\t\t\tthrow new GeneralError(\"node\", \"cliEnvVarMissing\", { envVar: option.value.slice(1) });\n\t\t\t}\n\t\t\toption.value = envVar;\n\t\t}\n\t}\n}\n\n/**\n * Register available CLI commands.\n */\nexport function registerCommands(): void {\n\tgetCommandDefinitionHelp(commandDefinitions);\n\tgetCommandDefinitionBootstrapLegacy(commandDefinitions);\n\tgetCommandDefinitionIdentityCreate(commandDefinitions);\n\tgetCommandDefinitionIdentityImport(commandDefinitions);\n\tgetCommandDefinitionIdentityVerificationMethodCreate(commandDefinitions);\n\tgetCommandDefinitionIdentityVerificationMethodImport(commandDefinitions);\n\tgetCommandDefinitionIdentityVerifiableCredentialCreate(commandDefinitions);\n\tgetCommandDefinitionNodeSetIdentity(commandDefinitions);\n\tgetCommandDefinitionTenantCreate(commandDefinitions);\n\tgetCommandDefinitionTenantImport(commandDefinitions);\n\tgetCommandDefinitionTenantToken(commandDefinitions);\n\tgetCommandDefinitionTenantUpdate(commandDefinitions);\n\tgetCommandDefinitionUserCreate(commandDefinitions);\n\tgetCommandDefinitionUserUpdate(commandDefinitions);\n\tgetCommandDefinitionVaultKeyCreate(commandDefinitions);\n\tgetCommandDefinitionVaultKeyImport(commandDefinitions);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { CLIDisplay } from \"@twin.org/cli-core\";\nimport { ContextIdStore } from \"@twin.org/context\";\nimport { Coerce, GeneralError, I18n, Is, StringHelper } from \"@twin.org/core\";\nimport type { IEngineCore } from \"@twin.org/engine-models\";\nimport * as dotenv from \"dotenv\";\nimport { getCommandDefinitionBootstrapLegacy } from \"./commands/bootstrapLegacy.js\";\nimport { getCommandDefinitionHelp } from \"./commands/help.js\";\nimport { getCommandDefinitionIdentityCreate } from \"./commands/identityCreate.js\";\nimport { getCommandDefinitionIdentityImport } from \"./commands/identityImports.js\";\nimport { getCommandDefinitionIdentityVerifiableCredentialCreate } from \"./commands/identityVerifiableCredentialCreate.js\";\nimport { getCommandDefinitionIdentityVerificationMethodCreate } from \"./commands/identityVerificationMethodCreate.js\";\nimport { getCommandDefinitionIdentityVerificationMethodImport } from \"./commands/identityVerificationMethodImport.js\";\nimport { getCommandDefinitionNodeSetIdentity } from \"./commands/nodeSetIdentity.js\";\nimport { getCommandDefinitionRemoveTenantOrgAlias } from \"./commands/removeTenantOrgAlias.js\";\nimport { getCommandDefinitionSetNodeOrgId } from \"./commands/setNodeOrgId.js\";\nimport { getCommandDefinitionSetTenantOrgId } from \"./commands/setTenantOrgId.js\";\nimport { getCommandDefinitionTenantCreate } from \"./commands/tenantCreate.js\";\nimport { getCommandDefinitionTenantImport } from \"./commands/tenantImport.js\";\nimport { getCommandDefinitionTenantUpdate } from \"./commands/tenantUpdate.js\";\nimport { getCommandDefinitionUserCreate } from \"./commands/userCreate.js\";\nimport { getCommandDefinitionUserUpdate } from \"./commands/userUpdate.js\";\nimport { getCommandDefinitionVaultKeyCreate } from \"./commands/vaultKeyCreate.js\";\nimport { getCommandDefinitionVaultKeyImport } from \"./commands/vaultKeyImport.js\";\nimport type { CliCommandParamType } from \"./models/cliCommandParamType.js\";\nimport type { ICliArgs } from \"./models/ICliArgs.js\";\nimport type { ICliCommand } from \"./models/ICliCommand.js\";\nimport type { ICliCommandDefinition } from \"./models/ICliCommandDefinition.js\";\nimport type { INodeEnvironmentVariables } from \"./models/INodeEnvironmentVariables.js\";\n\nconst commandDefinitions: { [id: string]: ICliCommandDefinition } = {};\n\n/**\n * Parse command line arguments.\n * @param args The command line arguments.\n * @returns The parsed command line arguments.\n */\nexport function parseCommandLineArgs(args?: string[]): ICliArgs {\n\tlet nodePath;\n\tlet scriptPath;\n\tlet options:\n\t\t| {\n\t\t\t\tkey: string;\n\t\t\t\tvalue: string;\n\t\t }[]\n\t\t| undefined;\n\n\tif (Is.arrayValue(args)) {\n\t\tif (args.length > 0) {\n\t\t\tnodePath = args[0];\n\t\t}\n\t\tif (args.length > 1) {\n\t\t\tscriptPath = args[1];\n\t\t}\n\t\tif (args.length > 2) {\n\t\t\toptions = [];\n\n\t\t\tfor (let i = 2; i < args.length; i++) {\n\t\t\t\tconst arg = args[i];\n\t\t\t\tconst equalIndex = arg.indexOf(\"=\");\n\t\t\t\tif (equalIndex > 0) {\n\t\t\t\t\tconst key = arg.slice(0, equalIndex).trim();\n\t\t\t\t\tconst value = arg.slice(equalIndex + 1).trim();\n\t\t\t\t\tif (key.startsWith(\"--\")) {\n\t\t\t\t\t\toptions.push({ key: key.slice(2), value });\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toptions.push({ key: arg, value: \"\" });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tnodePath,\n\t\tscriptPath,\n\t\toptions\n\t};\n}\n\n/**\n * Construct the CLI command from the parsed arguments.\n * @param processEnv The environment variables from the process.\n * @param cliArgs The parsed CLI arguments.\n * @returns The constructed CLI command.\n * @throws GeneralError if the command is missing.\n */\nexport function constructCliCommand(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\tcliArgs: ICliArgs\n): ICliCommand | undefined {\n\tif (Is.arrayValue(cliArgs.options)) {\n\t\tconst command = cliArgs.options[0];\n\n\t\t// If the first option is --help, we can display help for all commands\n\t\tif (command.key === \"--help\") {\n\t\t\treturn {\n\t\t\t\tdefinition: commandDefinitions.help,\n\t\t\t\tparams: {}\n\t\t\t};\n\t\t}\n\n\t\t// In cases where no command but env-prefix is provided, we just return\n\t\tif (command.key === \"env-prefix\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!commandDefinitions[command.key]) {\n\t\t\tthrow new GeneralError(\"node\", \"cliCommandMissing\", { command: command.key });\n\t\t}\n\n\t\t// We have a valid command, check for --help for that command\n\t\tconst hasHelp = cliArgs.options.find(option => option.key === \"--help\");\n\t\tif (hasHelp) {\n\t\t\treturn {\n\t\t\t\tdefinition: commandDefinitions.help,\n\t\t\t\tparams: {\n\t\t\t\t\tcommand: command.key\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tprocessEnvOptions(processEnv, cliArgs.options);\n\n\t\tconst cliParams: { [id: string]: CliCommandParamType } = {};\n\t\tconst allParamKeys = cliArgs.options\n\t\t\t.map(option => option.key)\n\t\t\t.filter(key => key !== command.key);\n\n\t\tfor (const commandDefParam of commandDefinitions[command.key].params) {\n\t\t\tconst foundParamIndex =\n\t\t\t\tcliArgs.options?.findIndex(option => option.key === commandDefParam.key) ?? -1;\n\t\t\tconst foundParam = foundParamIndex >= 0 ? cliArgs.options?.[foundParamIndex] : undefined;\n\n\t\t\tlet paramValue;\n\t\t\tif (commandDefParam.type === \"number\") {\n\t\t\t\tparamValue = Coerce.number(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t} else if (commandDefParam.type === \"boolean\") {\n\t\t\t\tparamValue = Coerce.boolean(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t} else {\n\t\t\t\tparamValue = Coerce.string(foundParam?.value ?? commandDefParam.defaultValue);\n\t\t\t}\n\n\t\t\tconst required = commandDefParam.required ?? true;\n\t\t\tif (Is.empty(paramValue) && required) {\n\t\t\t\tthrow new GeneralError(\"node\", \"cliCommandParamMissing\", {\n\t\t\t\t\tcommand: command.key,\n\t\t\t\t\tparam: commandDefParam.key\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!Is.empty(paramValue)) {\n\t\t\t\tcliParams[StringHelper.camelCase(commandDefParam.key)] = paramValue;\n\t\t\t}\n\n\t\t\tif (foundParamIndex >= 0) {\n\t\t\t\tallParamKeys.splice(allParamKeys.indexOf(commandDefParam.key), 1);\n\t\t\t}\n\t\t}\n\n\t\tif (allParamKeys.length > 0) {\n\t\t\tthrow new GeneralError(\"node\", \"cliCommandParamExtra\", {\n\t\t\t\tcommand: command.key,\n\t\t\t\tparams: allParamKeys.join(\", \")\n\t\t\t});\n\t\t}\n\n\t\tif (commandDefinitions[command.key].params.find(param => param.key === \"output-env-prefix\")) {\n\t\t\tcliParams.outputEnvPrefix = (Coerce.string(cliParams.outputEnvPrefix) ?? \"\").toUpperCase();\n\t\t\tcliParams.outputEnvPrefix =\n\t\t\t\tcliParams.outputEnvPrefix.length > 0 && !cliParams.outputEnvPrefix.endsWith(\"_\")\n\t\t\t\t\t? `${cliParams.outputEnvPrefix}_`\n\t\t\t\t\t: cliParams.outputEnvPrefix;\n\t\t}\n\n\t\treturn {\n\t\t\tdefinition: commandDefinitions[command.key],\n\t\t\tparams: cliParams\n\t\t};\n\t}\n}\n\n/**\n * Execute the CLI command.\n * @param engineCore The engine core.\n * @param envVars The environment variables for the node.\n * @param cliCommand The CLI command to execute.\n */\nexport async function executeCommand(\n\tengineCore: IEngineCore,\n\tenvVars: INodeEnvironmentVariables,\n\tcliCommand: ICliCommand\n): Promise<void> {\n\tconst requiresEngineStarted = cliCommand.definition.requiresEngineStarted ?? true;\n\n\ttry {\n\t\tif (requiresEngineStarted) {\n\t\t\tawait engineCore.start(true);\n\t\t}\n\n\t\tCLIDisplay.value(\n\t\t\tI18n.formatMessage(\"node.cli.commands.command\"),\n\t\t\tcliCommand.definition.command\n\t\t);\n\t\tfor (const paramKey in cliCommand.params) {\n\t\t\tCLIDisplay.value(paramKey, Coerce.string(cliCommand.params[paramKey]), 1);\n\t\t}\n\t\tCLIDisplay.break();\n\n\t\tawait ContextIdStore.run(engineCore.getContextIds() ?? {}, async () => {\n\t\t\tawait cliCommand.definition.action(engineCore, envVars, cliCommand.params);\n\t\t});\n\t} catch (error) {\n\t\tCLIDisplay.spinnerStop();\n\n\t\tthrow error;\n\t} finally {\n\t\tif (requiresEngineStarted) {\n\t\t\tCLIDisplay.break();\n\t\t\tawait engineCore.stop();\n\t\t}\n\t}\n}\n\n/**\n * Load the env files and process the options.\n * @param processEnv The environment variables from the process.\n * @param options The options.\n * @returns The processed parameters.\n * @throws GeneralError if an env file has errors.\n */\nexport function processEnvOptions(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\toptions: {\n\t\tkey: string;\n\t\tvalue: string;\n\t}[]\n): void {\n\tconst inputEnv = options.find(option => option.key === \"load-env\")?.value;\n\n\tif (Is.stringValue(inputEnv)) {\n\t\tconst envFiles = inputEnv.split(\",\").map(f => f.trim());\n\t\tfor (const envFile of envFiles) {\n\t\t\tconst output = dotenv.config({\n\t\t\t\tpath: envFile,\n\t\t\t\tquiet: true\n\t\t\t});\n\n\t\t\tif (output.error) {\n\t\t\t\tthrow output.error;\n\t\t\t}\n\n\t\t\tif (Is.objectValue(output.parsed)) {\n\t\t\t\tfor (const key in output.parsed) {\n\t\t\t\t\tprocessEnv[key] = output.parsed[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn substituteEnvOptions(processEnv, options);\n}\n\n/**\n * Process options and replace any env variables with their values.\n * @param processEnv The environment variables from the process.\n * @param options The options.\n * @throws GeneralError if an env variable is missing.\n */\nexport function substituteEnvOptions(\n\tprocessEnv: {\n\t\t[id: string]: string;\n\t},\n\toptions: {\n\t\tkey: string;\n\t\tvalue: string;\n\t}[]\n): void {\n\tfor (const option of options) {\n\t\tif (option.value.startsWith(\"!\")) {\n\t\t\tconst envVar = processEnv[option.value.slice(1)];\n\t\t\tif (!Is.stringValue(envVar)) {\n\t\t\t\tthrow new GeneralError(\"node\", \"cliEnvVarMissing\", { envVar: option.value.slice(1) });\n\t\t\t}\n\t\t\toption.value = envVar;\n\t\t}\n\t}\n}\n\n/**\n * Register available CLI commands.\n */\nexport function registerCommands(): void {\n\tgetCommandDefinitionHelp(commandDefinitions);\n\tgetCommandDefinitionBootstrapLegacy(commandDefinitions);\n\tgetCommandDefinitionIdentityCreate(commandDefinitions);\n\tgetCommandDefinitionIdentityImport(commandDefinitions);\n\tgetCommandDefinitionIdentityVerificationMethodCreate(commandDefinitions);\n\tgetCommandDefinitionIdentityVerificationMethodImport(commandDefinitions);\n\tgetCommandDefinitionIdentityVerifiableCredentialCreate(commandDefinitions);\n\tgetCommandDefinitionNodeSetIdentity(commandDefinitions);\n\tgetCommandDefinitionSetNodeOrgId(commandDefinitions);\n\tgetCommandDefinitionSetTenantOrgId(commandDefinitions);\n\tgetCommandDefinitionRemoveTenantOrgAlias(commandDefinitions);\n\tgetCommandDefinitionTenantCreate(commandDefinitions);\n\tgetCommandDefinitionTenantImport(commandDefinitions);\n\tgetCommandDefinitionTenantUpdate(commandDefinitions);\n\tgetCommandDefinitionUserCreate(commandDefinitions);\n\tgetCommandDefinitionUserUpdate(commandDefinitions);\n\tgetCommandDefinitionVaultKeyCreate(commandDefinitions);\n\tgetCommandDefinitionVaultKeyImport(commandDefinitions);\n}\n"]}
|