@codemation/host 0.0.15 → 0.0.16
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/{AppConfigFactory-DmHOpg8O.d.ts → AppConfigFactory-D_ReOKfV.d.ts} +5 -3
- package/dist/{AppConfigFactory-DWIz2hy-.js → AppConfigFactory-JjNqYnGg.js} +41 -3
- package/dist/AppConfigFactory-JjNqYnGg.js.map +1 -0
- package/dist/{AppContainerFactory-B5eRpvAa.js → AppContainerFactory-_dnF0VOf.js} +272 -105
- package/dist/AppContainerFactory-_dnF0VOf.js.map +1 -0
- package/dist/{CodemationConfig-D2ULNkec.d.ts → CodemationConfig-u80ZoIrc.d.ts} +18 -10
- package/dist/{CodemationConfigNormalizer-CBLxXaRV.d.ts → CodemationConfigNormalizer-DCt0mPPz.d.ts} +2 -2
- package/dist/{CodemationConsumerConfigLoader-BLvzcfb7.d.ts → CodemationConsumerConfigLoader-C8iscLBJ.d.ts} +4 -2
- package/dist/{CodemationConsumerConfigLoader-BBzAr6L_.js → CodemationConsumerConfigLoader-LGrCspIx.js} +18 -4
- package/dist/CodemationConsumerConfigLoader-LGrCspIx.js.map +1 -0
- package/dist/CodemationPluginListMerger-CGwOTdZ7.js +57 -0
- package/dist/CodemationPluginListMerger-CGwOTdZ7.js.map +1 -0
- package/dist/{CodemationPluginListMerger-B0-e4CJ6.d.ts → CodemationPluginListMerger-ZY3R_kTo.d.ts} +79 -117
- package/dist/{CredentialServices-BeuMtqYA.d.ts → CredentialServices-Uo1jxSYB.d.ts} +2 -2
- package/dist/PublicFrontendBootstrap-p7mS8aWG.d.ts +50 -0
- package/dist/{FrontendAppConfigFactory-Bj-DZNlt.d.ts → PublicFrontendBootstrapFactory-BA65IXL4.d.ts} +19 -4
- package/dist/{FrontendAppConfigJsonCodec-nOCQI0ag.js → PublicFrontendBootstrapJsonCodec-BdiVGG5R.js} +76 -2
- package/dist/PublicFrontendBootstrapJsonCodec-BdiVGG5R.js.map +1 -0
- package/dist/PublicFrontendBootstrapJsonCodec-DjkkKXcq.d.ts +35 -0
- package/dist/client.d.ts +3 -3
- package/dist/client.js +2 -2
- package/dist/consumer.d.ts +3 -3
- package/dist/consumer.js +1 -1
- package/dist/credentials.d.ts +2 -2
- package/dist/index.d.ts +44 -12
- package/dist/index.js +8 -8
- package/dist/nextServer.d.ts +30 -9
- package/dist/nextServer.js +4 -4
- package/dist/{persistenceServer-CaehMh3M.d.ts → persistenceServer-BKbOs-TQ.d.ts} +2 -2
- package/dist/{persistenceServer-DVeWUbc3.js → persistenceServer-J2teHIIg.js} +2 -2
- package/dist/{persistenceServer-DVeWUbc3.js.map → persistenceServer-J2teHIIg.js.map} +1 -1
- package/dist/persistenceServer.d.ts +4 -4
- package/dist/persistenceServer.js +2 -2
- package/dist/{server-C65z_kqm.js → server-CVC7QBwT.js} +42 -25
- package/dist/server-CVC7QBwT.js.map +1 -0
- package/dist/{server-Dyo8qh4k.d.ts → server-CbcnGZHm.d.ts} +14 -19
- package/dist/server.d.ts +10 -10
- package/dist/server.js +7 -7
- package/package.json +5 -5
- package/src/application/dev/BootRuntimeSummary.types.ts +2 -0
- package/src/application/dev/DevBootstrapSummaryAssembler.ts +1 -0
- package/src/application/dev/DevBootstrapSummaryJson.types.ts +6 -0
- package/src/bootstrap/AppContainerFactory.ts +101 -6
- package/src/bootstrap/runtime/AppConfigFactory.ts +22 -2
- package/src/client.ts +4 -0
- package/src/index.ts +13 -5
- package/src/infrastructure/config/CodemationPluginRegistrar.ts +6 -0
- package/src/infrastructure/di/HandlesCommandRegistry.ts +1 -10
- package/src/infrastructure/di/HandlesQueryRegistry.ts +1 -10
- package/src/nextServer.ts +4 -0
- package/src/presentation/config/AppConfig.ts +6 -0
- package/src/presentation/config/CodemationPackageManifest.ts +1 -7
- package/src/presentation/config/CodemationPlugin.ts +45 -9
- package/src/presentation/config/CodemationPluginListMerger.ts +30 -26
- package/src/presentation/frontend/InternalAuthBootstrap.ts +12 -0
- package/src/presentation/frontend/InternalAuthBootstrapFactory.ts +26 -0
- package/src/presentation/frontend/InternalAuthBootstrapJsonCodec.ts +49 -0
- package/src/presentation/frontend/PublicFrontendBootstrap.ts +12 -0
- package/src/presentation/frontend/PublicFrontendBootstrapFactory.ts +23 -0
- package/src/presentation/frontend/PublicFrontendBootstrapJsonCodec.ts +48 -0
- package/src/presentation/http/ApiPaths.ts +10 -0
- package/src/presentation/http/hono/HonoHttpAnonymousRoutePolicyRegistry.ts +3 -0
- package/src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts +32 -0
- package/src/presentation/http/routeHandlers/InternalAuthBootstrapHttpRouteHandler.ts +18 -0
- package/src/presentation/http/routeHandlers/PublicFrontendBootstrapHttpRouteHandler.ts +18 -0
- package/src/presentation/server/CodemationConsumerConfigLoader.ts +16 -3
- package/src/presentation/server/CodemationPluginDiscovery.ts +59 -28
- package/src/server.ts +6 -0
- package/dist/AppConfigFactory-DWIz2hy-.js.map +0 -1
- package/dist/AppContainerFactory-B5eRpvAa.js.map +0 -1
- package/dist/CodemationConsumerConfigLoader-BBzAr6L_.js.map +0 -1
- package/dist/CodemationPluginListMerger-DrVOw9KP.js +0 -57
- package/dist/CodemationPluginListMerger-DrVOw9KP.js.map +0 -1
- package/dist/FrontendAppConfig-D50wjj_n.d.ts +0 -27
- package/dist/FrontendAppConfigJsonCodec-1_L7H_Qo.d.ts +0 -20
- package/dist/FrontendAppConfigJsonCodec-nOCQI0ag.js.map +0 -1
- package/dist/server-C65z_kqm.js.map +0 -1
|
@@ -25,14 +25,17 @@ interface CodemationPluginContext extends CodemationRegistrationContextBase {
|
|
|
25
25
|
readonly appConfig: AppConfig;
|
|
26
26
|
readonly loggerFactory: LoggerFactory;
|
|
27
27
|
}
|
|
28
|
-
interface
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
interface CodemationPluginConfig {
|
|
29
|
+
readonly credentialTypes?: ReadonlyArray<AnyCredentialType>;
|
|
30
|
+
readonly register?: (context: CodemationPluginContext) => void | Promise<void>;
|
|
31
|
+
readonly sandbox?: CodemationConfig;
|
|
32
|
+
}
|
|
33
|
+
type CodemationPlugin = CodemationPluginConfig;
|
|
34
|
+
declare const definePlugin: <TConfig extends CodemationPluginConfig>(config: TConfig) => TConfig;
|
|
35
|
+
declare class CodemationPluginPackageMetadata {
|
|
36
|
+
private static readonly packageNameSymbol;
|
|
37
|
+
attachPackageName(plugin: CodemationPlugin, packageName: string): CodemationPlugin;
|
|
38
|
+
readPackageName(plugin: CodemationPlugin): string | undefined;
|
|
36
39
|
}
|
|
37
40
|
//#endregion
|
|
38
41
|
//#region src/presentation/config/AppConfig.d.ts
|
|
@@ -45,6 +48,10 @@ type AppPersistenceConfig = Readonly<{
|
|
|
45
48
|
kind: "pglite";
|
|
46
49
|
dataDir: string;
|
|
47
50
|
}>;
|
|
51
|
+
type AppPluginLoadSummary = Readonly<{
|
|
52
|
+
packageName: string;
|
|
53
|
+
source: "configured" | "discovered";
|
|
54
|
+
}>;
|
|
48
55
|
interface AppConfig {
|
|
49
56
|
readonly consumerRoot: string;
|
|
50
57
|
readonly repoRoot: string;
|
|
@@ -54,6 +61,7 @@ interface AppConfig {
|
|
|
54
61
|
readonly containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;
|
|
55
62
|
readonly credentialTypes: ReadonlyArray<AnyCredentialType>;
|
|
56
63
|
readonly plugins: ReadonlyArray<CodemationPlugin>;
|
|
64
|
+
readonly pluginLoadSummary?: ReadonlyArray<AppPluginLoadSummary>;
|
|
57
65
|
readonly hasConfiguredCredentialSessionServiceRegistration: boolean;
|
|
58
66
|
readonly log?: CodemationLogConfig;
|
|
59
67
|
readonly engineExecutionLimits?: CodemationEngineExecutionLimitsConfig;
|
|
@@ -168,5 +176,5 @@ interface CodemationConfig {
|
|
|
168
176
|
readonly log?: CodemationLogConfig;
|
|
169
177
|
}
|
|
170
178
|
//#endregion
|
|
171
|
-
export { AppPersistenceConfig as _, CodemationConfig as a,
|
|
172
|
-
//# sourceMappingURL=CodemationConfig-
|
|
179
|
+
export { definePlugin as C, CodemationPluginPackageMetadata as S, CodemationClassToken as T, AppPersistenceConfig as _, CodemationConfig as a, CodemationPluginConfig as b, CodemationEngineExecutionLimitsConfig as c, CodemationSchedulerConfig as d, CodemationSchedulerKind as f, AppConfig as g, CodemationRegistrationContextBase as h, CodemationApplicationRuntimeConfig as i, CodemationEventBusConfig as l, CodemationAppContext as m, CodemationAppSchedulerConfig as n, CodemationDatabaseConfig as o, CodemationWorkflowDiscovery as p, CodemationAppSchedulerKind as r, CodemationDatabaseKind as s, CodemationAppDefinition as t, CodemationEventBusKind as u, AppPluginLoadSummary as v, CodemationContainerRegistration as w, CodemationPluginContext as x, CodemationPlugin as y };
|
|
180
|
+
//# sourceMappingURL=CodemationConfig-u80ZoIrc.d.ts.map
|
package/dist/{CodemationConfigNormalizer-CBLxXaRV.d.ts → CodemationConfigNormalizer-DCt0mPPz.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as CodemationConfig,
|
|
1
|
+
import { a as CodemationConfig, w as CodemationContainerRegistration } from "./CodemationConfig-u80ZoIrc.js";
|
|
2
2
|
|
|
3
3
|
//#region src/presentation/config/CodemationConfigNormalizer.d.ts
|
|
4
4
|
type NormalizedCodemationConfig = CodemationConfig & Readonly<{
|
|
@@ -6,4 +6,4 @@ type NormalizedCodemationConfig = CodemationConfig & Readonly<{
|
|
|
6
6
|
}>;
|
|
7
7
|
//#endregion
|
|
8
8
|
export { NormalizedCodemationConfig as t };
|
|
9
|
-
//# sourceMappingURL=CodemationConfigNormalizer-
|
|
9
|
+
//# sourceMappingURL=CodemationConfigNormalizer-DCt0mPPz.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-
|
|
1
|
+
import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-DCt0mPPz.js";
|
|
2
2
|
|
|
3
3
|
//#region src/presentation/server/CodemationConsumerAppResolver.d.ts
|
|
4
4
|
type CodemationConsumerApp = Readonly<{
|
|
@@ -50,12 +50,14 @@ declare class CodemationConsumerConfigLoader {
|
|
|
50
50
|
private getOrCreateImporter;
|
|
51
51
|
private resetImporter;
|
|
52
52
|
private toNamespace;
|
|
53
|
+
private resolveTsxImporterModuleSpecifier;
|
|
53
54
|
private findNearestTsconfig;
|
|
54
55
|
private createImportSpecifier;
|
|
55
56
|
private shouldUseNativeRuntimeImport;
|
|
57
|
+
private shouldResetImporterBeforeImport;
|
|
56
58
|
private isStoppedTransformServiceError;
|
|
57
59
|
private exists;
|
|
58
60
|
}
|
|
59
61
|
//#endregion
|
|
60
62
|
export { CodemationConsumerAppResolver as i, CodemationConsumerConfigResolution as n, CodemationConsumerApp as r, CodemationConsumerConfigLoader as t };
|
|
61
|
-
//# sourceMappingURL=CodemationConsumerConfigLoader-
|
|
63
|
+
//# sourceMappingURL=CodemationConsumerConfigLoader-C8iscLBJ.d.ts.map
|
|
@@ -2,7 +2,6 @@ import { s as logLevelPolicyFactory, t as ServerLoggerFactory } from "./ServerLo
|
|
|
2
2
|
import { access, readdir, stat } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { pathToFileURL } from "node:url";
|
|
5
|
-
import { register } from "tsx/esm/api";
|
|
6
5
|
|
|
7
6
|
//#region src/presentation/config/CodemationConfigNormalizer.ts
|
|
8
7
|
var CodemationConfigNormalizer = class {
|
|
@@ -384,9 +383,10 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
384
383
|
async importModule(modulePath) {
|
|
385
384
|
if (this.shouldUseNativeRuntimeImport()) return await this.importModuleWithNativeRuntime(modulePath);
|
|
386
385
|
const tsconfigPath = await this.resolveTsconfigPath(modulePath);
|
|
386
|
+
if (this.shouldResetImporterBeforeImport()) await this.resetImporter(tsconfigPath);
|
|
387
387
|
const importSpecifier = await this.createImportSpecifier(modulePath);
|
|
388
388
|
for (let attempt = 0; attempt < 3; attempt += 1) try {
|
|
389
|
-
return await this.getOrCreateImporter(tsconfigPath).import(importSpecifier, import.meta.url);
|
|
389
|
+
return await (await this.getOrCreateImporter(tsconfigPath)).import(importSpecifier, import.meta.url);
|
|
390
390
|
} catch (error) {
|
|
391
391
|
if (!this.isStoppedTransformServiceError(error) || attempt === 2) throw error;
|
|
392
392
|
await this.resetImporter(tsconfigPath);
|
|
@@ -401,10 +401,14 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
401
401
|
if (overridePath && await this.exists(overridePath)) return overridePath;
|
|
402
402
|
return await this.findNearestTsconfig(modulePath) ?? false;
|
|
403
403
|
}
|
|
404
|
-
getOrCreateImporter(tsconfigPath) {
|
|
404
|
+
async getOrCreateImporter(tsconfigPath) {
|
|
405
405
|
const cacheKey = tsconfigPath || "default";
|
|
406
406
|
const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);
|
|
407
407
|
if (existingImporter) return existingImporter;
|
|
408
|
+
const { register } = await import(
|
|
409
|
+
/* webpackIgnore: true */
|
|
410
|
+
this.resolveTsxImporterModuleSpecifier()
|
|
411
|
+
);
|
|
408
412
|
const nextImporter = register({
|
|
409
413
|
namespace: this.toNamespace(cacheKey),
|
|
410
414
|
tsconfig: tsconfigPath
|
|
@@ -422,6 +426,13 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
422
426
|
toNamespace(cacheKey) {
|
|
423
427
|
return `codemation_consumer_${cacheKey.replace(/[^a-zA-Z0-9_-]+/g, "_")}`;
|
|
424
428
|
}
|
|
429
|
+
resolveTsxImporterModuleSpecifier() {
|
|
430
|
+
return [
|
|
431
|
+
"tsx",
|
|
432
|
+
"esm",
|
|
433
|
+
"api"
|
|
434
|
+
].join("/");
|
|
435
|
+
}
|
|
425
436
|
async findNearestTsconfig(modulePath) {
|
|
426
437
|
let currentDirectory = path.dirname(modulePath);
|
|
427
438
|
while (true) {
|
|
@@ -441,6 +452,9 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
441
452
|
shouldUseNativeRuntimeImport() {
|
|
442
453
|
return process.env.CODEMATION_TS_RUNTIME === "ts-node";
|
|
443
454
|
}
|
|
455
|
+
shouldResetImporterBeforeImport() {
|
|
456
|
+
return (process.env.CODEMATION_DEV_SERVER_TOKEN?.trim().length ?? 0) > 0;
|
|
457
|
+
}
|
|
444
458
|
isStoppedTransformServiceError(error) {
|
|
445
459
|
return error instanceof Error && error.message.includes("The service is no longer running");
|
|
446
460
|
}
|
|
@@ -456,4 +470,4 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
456
470
|
|
|
457
471
|
//#endregion
|
|
458
472
|
export { CodemationConfigNormalizer as a, CodemationConsumerAppResolver as i, WorkflowDiscoveryPathSegmentsComputer as n, WorkflowModulePathFinder as r, CodemationConsumerConfigLoader as t };
|
|
459
|
-
//# sourceMappingURL=CodemationConsumerConfigLoader-
|
|
473
|
+
//# sourceMappingURL=CodemationConsumerConfigLoader-LGrCspIx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodemationConsumerConfigLoader-LGrCspIx.js","names":["containerRegistrations: Array<CodemationContainerRegistration<unknown>>","credentialTypes: Array<AnyCredentialType>","workflows: Array<WorkflowDefinition>","workflowDirectories: Array<string>","workflows: WorkflowDefinition[]","workflowModulePaths: string[]","bestRoot: string | null","resolvedConfig: NormalizedCodemationConfig"],"sources":["../src/presentation/config/CodemationConfigNormalizer.ts","../src/presentation/server/CodemationConsumerConfigExportsResolver.ts","../src/presentation/server/DiscoveredWorkflowsEmptyMessageFactory.ts","../src/presentation/server/WorkflowDefinitionExportsResolver.ts","../src/presentation/server/CodemationConsumerAppResolver.ts","../src/presentation/server/WorkflowModulePathFinder.ts","../src/presentation/server/WorkflowDiscoveryPathSegmentsComputer.ts","../src/presentation/server/CodemationConsumerConfigLoader.ts"],"sourcesContent":["import type { AnyCredentialType, Container, TypeToken, WorkflowDefinition } from \"@codemation/core\";\nimport type { CodemationContainerRegistration } from \"../../bootstrap/CodemationContainerRegistration\";\nimport type { CodemationAppContext } from \"./CodemationAppContext\";\nimport type { CodemationClassToken } from \"./CodemationClassToken\";\nimport type {\n CodemationApplicationRuntimeConfig,\n CodemationConfig,\n CodemationDatabaseConfig,\n CodemationEventBusConfig,\n CodemationSchedulerConfig,\n} from \"./CodemationConfig\";\n\nexport type NormalizedCodemationConfig = CodemationConfig &\n Readonly<{\n containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;\n }>;\n\nexport class CodemationConfigNormalizer {\n normalize(config: CodemationConfig): NormalizedCodemationConfig {\n const collected = this.collectRegistration(config);\n const normalizedRuntime = this.normalizeRuntimeConfig(config);\n const normalizedWorkflowDiscoveryDirectories = [\n ...(config.workflowDiscovery?.directories ?? []),\n ...collected.workflowDirectories,\n ];\n\n return {\n ...config,\n auth: config.app?.auth ?? config.auth,\n containerRegistrations: collected.containerRegistrations,\n credentialTypes: [...(config.credentialTypes ?? []), ...collected.credentialTypes],\n log: config.app?.log ?? config.log,\n runtime: normalizedRuntime,\n whitelabel: config.app?.whitelabel ?? config.whitelabel,\n workflowDiscovery:\n normalizedWorkflowDiscoveryDirectories.length > 0\n ? { directories: normalizedWorkflowDiscoveryDirectories }\n : config.workflowDiscovery,\n workflows: this.mergeWorkflows(config.workflows ?? [], collected.workflows),\n };\n }\n\n private collectRegistration(config: CodemationConfig): Readonly<{\n containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;\n credentialTypes: ReadonlyArray<AnyCredentialType>;\n workflows: ReadonlyArray<WorkflowDefinition>;\n workflowDirectories: ReadonlyArray<string>;\n }> {\n if (!config.register) {\n return {\n containerRegistrations: [],\n credentialTypes: [],\n workflows: [],\n workflowDirectories: [],\n };\n }\n\n const containerRegistrations: Array<CodemationContainerRegistration<unknown>> = [];\n const credentialTypes: Array<AnyCredentialType> = [];\n const workflows: Array<WorkflowDefinition> = [];\n const workflowDirectories: Array<string> = [];\n\n const context: CodemationAppContext = {\n registerCredentialType(type) {\n credentialTypes.push(type);\n },\n registerNode<TValue>(token: TypeToken<TValue>, implementation?: CodemationClassToken<TValue>) {\n containerRegistrations.push({\n token,\n useClass: implementation ?? (token as CodemationClassToken<TValue>),\n });\n },\n registerValue<TValue>(token: TypeToken<TValue>, value: TValue) {\n containerRegistrations.push({ token, useValue: value });\n },\n registerClass<TValue>(token: TypeToken<TValue>, implementation: CodemationClassToken<TValue>) {\n containerRegistrations.push({ token, useClass: implementation });\n },\n registerFactory<TValue>(token: TypeToken<TValue>, factory: (container: Container) => TValue) {\n containerRegistrations.push({ token, useFactory: factory });\n },\n registerWorkflow(workflow: WorkflowDefinition) {\n workflows.push(workflow);\n },\n registerWorkflows(nextWorkflows: ReadonlyArray<WorkflowDefinition>) {\n workflows.push(...nextWorkflows);\n },\n discoverWorkflows(...directories: ReadonlyArray<string>) {\n workflowDirectories.push(...directories);\n },\n };\n\n config.register(context);\n\n return {\n containerRegistrations,\n credentialTypes,\n workflows,\n workflowDirectories,\n };\n }\n\n private normalizeRuntimeConfig(config: CodemationConfig): CodemationApplicationRuntimeConfig | undefined {\n if (!config.app) {\n return config.runtime;\n }\n const nextRuntime: CodemationApplicationRuntimeConfig = {\n ...(config.runtime ?? {}),\n frontendPort: config.app.frontendPort ?? config.runtime?.frontendPort,\n database: this.normalizeDatabaseConfig(config),\n eventBus: this.normalizeEventBusConfig(config),\n scheduler: this.normalizeSchedulerConfig(config),\n engineExecutionLimits: config.app.engineExecutionLimits ?? config.runtime?.engineExecutionLimits,\n };\n return nextRuntime;\n }\n\n private normalizeDatabaseConfig(config: CodemationConfig): CodemationDatabaseConfig | undefined {\n if (!config.app) {\n return config.runtime?.database;\n }\n if (config.app.database) {\n return config.app.database;\n }\n if (!config.app.databaseUrl) {\n return config.runtime?.database;\n }\n return {\n ...(config.runtime?.database ?? {}),\n url: config.app.databaseUrl,\n };\n }\n\n private normalizeSchedulerConfig(config: CodemationConfig): CodemationSchedulerConfig | undefined {\n if (!config.app?.scheduler) {\n return config.runtime?.scheduler;\n }\n const scheduler = config.app.scheduler;\n return {\n ...(config.runtime?.scheduler ?? {}),\n kind:\n scheduler.kind === \"queue\" ? \"bullmq\" : scheduler.kind === \"inline\" ? \"local\" : config.runtime?.scheduler?.kind,\n queuePrefix: scheduler.queuePrefix ?? config.runtime?.scheduler?.queuePrefix,\n workerQueues: scheduler.workerQueues ?? config.runtime?.scheduler?.workerQueues,\n };\n }\n\n private normalizeEventBusConfig(config: CodemationConfig): CodemationEventBusConfig | undefined {\n if (!config.app?.scheduler) {\n return config.runtime?.eventBus;\n }\n const scheduler = config.app.scheduler;\n const eventBusKind =\n scheduler.kind === \"queue\" ? \"redis\" : scheduler.kind === \"inline\" ? \"memory\" : config.runtime?.eventBus?.kind;\n return {\n ...(config.runtime?.eventBus ?? {}),\n kind: eventBusKind,\n queuePrefix: scheduler.queuePrefix ?? config.runtime?.eventBus?.queuePrefix,\n redisUrl: scheduler.redisUrl ?? config.runtime?.eventBus?.redisUrl,\n };\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n registeredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> | undefined {\n if (configuredWorkflows.length === 0 && registeredWorkflows.length === 0) {\n return undefined;\n }\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of registeredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n}\n","import type { CodemationConfig } from \"../config/CodemationConfig\";\n\nexport class CodemationConsumerConfigExportsResolver {\n resolveConfig(moduleExports: Readonly<Record<string, unknown>>): CodemationConfig | null {\n const defaultExport = moduleExports.default;\n if (this.isConfig(defaultExport)) {\n return defaultExport;\n }\n const namedConfig = moduleExports.codemationHost ?? moduleExports.config;\n if (this.isConfig(namedConfig)) {\n return namedConfig;\n }\n return null;\n }\n\n private isConfig(value: unknown): value is CodemationConfig {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return (\n \"app\" in value ||\n \"register\" in value ||\n \"credentials\" in value ||\n \"runtime\" in value ||\n \"workflows\" in value ||\n \"workflowDiscovery\" in value ||\n \"plugins\" in value ||\n \"whitelabel\" in value ||\n \"auth\" in value ||\n \"log\" in value\n );\n }\n}\n","export class DiscoveredWorkflowsEmptyMessageFactory {\n create(discoveredPaths: ReadonlyArray<string>): string {\n const lines = discoveredPaths.map((p) => ` - ${p}`).join(\"\\n\");\n return [\n `Discovered ${discoveredPaths.length} file(s) under workflow discovery, but none export a WorkflowDefinition.`,\n lines,\n \"\",\n \"Move shared helpers outside the discovery directories (for example src/lib), or export at least one object with id, name, nodes, and edges from a workflow module.\",\n ].join(\"\\n\");\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\n\n/**\n * Collects exported values that match the {@link WorkflowDefinition} shape.\n * Other exports (helpers, constants, type-only re-exports) are ignored.\n */\nexport class WorkflowDefinitionExportsResolver {\n resolve(moduleExports: Readonly<Record<string, unknown>>): ReadonlyArray<WorkflowDefinition> {\n const workflows: WorkflowDefinition[] = [];\n for (const exportedValue of Object.values(moduleExports)) {\n if (this.isWorkflowDefinition(exportedValue)) {\n workflows.push(exportedValue);\n }\n }\n return workflows;\n }\n\n private isWorkflowDefinition(value: unknown): value is WorkflowDefinition {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return \"id\" in value && \"name\" in value && \"nodes\" in value && \"edges\" in value;\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\nimport { CodemationConfigNormalizer } from \"../config/CodemationConfigNormalizer\";\nimport type { NormalizedCodemationConfig } from \"../config/CodemationConfigNormalizer\";\nimport { CodemationConsumerConfigExportsResolver } from \"./CodemationConsumerConfigExportsResolver\";\nimport { DiscoveredWorkflowsEmptyMessageFactory } from \"./DiscoveredWorkflowsEmptyMessageFactory\";\nimport { WorkflowDefinitionExportsResolver } from \"./WorkflowDefinitionExportsResolver\";\n\nexport type CodemationConsumerApp = Readonly<{\n config: NormalizedCodemationConfig;\n workflowSources: ReadonlyArray<string>;\n}>;\n\nexport class CodemationConsumerAppResolver {\n private readonly configExportsResolver = new CodemationConsumerConfigExportsResolver();\n private readonly configNormalizer = new CodemationConfigNormalizer();\n private readonly workflowDefinitionExportsResolver = new WorkflowDefinitionExportsResolver();\n private readonly discoveredWorkflowsEmptyMessageFactory = new DiscoveredWorkflowsEmptyMessageFactory();\n\n resolve(\n args: Readonly<{\n configModule: Readonly<Record<string, unknown>>;\n workflowModules: ReadonlyArray<Readonly<Record<string, unknown>>>;\n workflowSourcePaths: ReadonlyArray<string>;\n workflowDiscoveryPathSegmentsList?: ReadonlyArray<readonly string[]>;\n }>,\n ): CodemationConsumerApp {\n const rawConfig = this.configExportsResolver.resolveConfig(args.configModule);\n if (!rawConfig) {\n throw new Error(\"Consumer app module does not export a Codemation config object.\");\n }\n const config = this.configNormalizer.normalize(rawConfig);\n const discoveredWorkflows = this.resolveDiscoveredWorkflows(\n args.workflowModules,\n args.workflowSourcePaths,\n args.workflowDiscoveryPathSegmentsList,\n );\n return {\n config: {\n ...config,\n workflows: this.mergeWorkflows(config.workflows ?? [], discoveredWorkflows),\n },\n workflowSources: args.workflowSourcePaths,\n };\n }\n\n private resolveDiscoveredWorkflows(\n workflowModules: ReadonlyArray<Readonly<Record<string, unknown>>>,\n workflowSourcePaths: ReadonlyArray<string>,\n workflowDiscoveryPathSegmentsList: ReadonlyArray<readonly string[]> | undefined,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n workflowModules.forEach((workflowModule: Readonly<Record<string, unknown>>, index: number) => {\n const pathSegments = workflowDiscoveryPathSegmentsList?.[index];\n const workflows = this.workflowDefinitionExportsResolver.resolve(workflowModule);\n workflows.forEach((workflow: WorkflowDefinition) => {\n const enriched =\n pathSegments && pathSegments.length > 0\n ? ({ ...workflow, discoveryPathSegments: pathSegments } satisfies WorkflowDefinition)\n : workflow;\n workflowsById.set(workflow.id, enriched);\n });\n });\n if (workflowsById.size === 0 && workflowSourcePaths.length > 0) {\n throw new Error(this.discoveredWorkflowsEmptyMessageFactory.create(workflowSourcePaths));\n }\n return [...workflowsById.values()];\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n discoveredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of discoveredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n}\n","import { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport class WorkflowModulePathFinder {\n static readonly defaultWorkflowDirectories = [\"src/workflows\", \"workflows\"] as const;\n private readonly workflowExtensions = new Set([\".ts\", \".js\", \".mts\", \".mjs\"]);\n\n async discoverModulePaths(\n args: Readonly<{\n consumerRoot: string;\n workflowDirectories: ReadonlyArray<string> | undefined;\n exists: (absolutePath: string) => Promise<boolean>;\n }>,\n ): Promise<ReadonlyArray<string>> {\n const directories = args.workflowDirectories ?? WorkflowModulePathFinder.defaultWorkflowDirectories;\n const workflowModulePaths: string[] = [];\n for (const directory of directories) {\n const absoluteDirectory = path.resolve(args.consumerRoot, directory);\n if (!(await args.exists(absoluteDirectory))) {\n continue;\n }\n workflowModulePaths.push(...(await this.collectWorkflowModulePaths(absoluteDirectory)));\n }\n return workflowModulePaths;\n }\n\n private async collectWorkflowModulePaths(directoryPath: string): Promise<ReadonlyArray<string>> {\n const entries = await readdir(directoryPath, { withFileTypes: true });\n const workflowModulePaths: string[] = [];\n for (const entry of entries) {\n const entryPath = path.resolve(directoryPath, entry.name);\n if (entry.isDirectory()) {\n workflowModulePaths.push(...(await this.collectWorkflowModulePaths(entryPath)));\n continue;\n }\n if (this.isWorkflowModulePath(entryPath)) {\n workflowModulePaths.push(entryPath);\n }\n }\n return workflowModulePaths;\n }\n\n private isWorkflowModulePath(modulePath: string): boolean {\n const extension = path.extname(modulePath);\n return this.workflowExtensions.has(extension) && !modulePath.endsWith(\".d.ts\");\n }\n}\n","import path from \"node:path\";\n\nimport { WorkflowModulePathFinder } from \"./WorkflowModulePathFinder\";\n\nexport class WorkflowDiscoveryPathSegmentsComputer {\n compute(\n args: Readonly<{\n consumerRoot: string;\n workflowDiscoveryDirectories: ReadonlyArray<string>;\n absoluteWorkflowModulePath: string;\n }>,\n ): readonly string[] | undefined {\n const normalizedConsumer = path.resolve(args.consumerRoot);\n const normalizedWorkflowPath = path.resolve(args.absoluteWorkflowModulePath);\n const directories =\n args.workflowDiscoveryDirectories.length > 0\n ? args.workflowDiscoveryDirectories\n : [...WorkflowModulePathFinder.defaultWorkflowDirectories];\n\n let bestRoot: string | null = null;\n for (const directory of directories) {\n const absoluteDirectory = path.resolve(normalizedConsumer, directory);\n const isPrefix =\n normalizedWorkflowPath === absoluteDirectory ||\n normalizedWorkflowPath.startsWith(`${absoluteDirectory}${path.sep}`);\n if (!isPrefix) {\n continue;\n }\n if (!bestRoot || absoluteDirectory.length > bestRoot.length) {\n bestRoot = absoluteDirectory;\n }\n }\n if (!bestRoot) {\n return undefined;\n }\n const relative = path.relative(bestRoot, normalizedWorkflowPath);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n return undefined;\n }\n if (relative.length === 0) {\n return undefined;\n }\n const parts = relative.split(path.sep).filter((segment) => segment.length > 0);\n if (parts.length === 0) {\n return undefined;\n }\n const lastIndex = parts.length - 1;\n const last = parts[lastIndex] ?? \"\";\n const ext = path.extname(last);\n parts[lastIndex] = ext ? last.slice(0, -ext.length) : last;\n return parts;\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\nimport { access, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { NamespacedUnregister } from \"tsx/esm/api\";\nimport type { CodemationConfig } from \"../config/CodemationConfig\";\nimport { CodemationConfigNormalizer } from \"../config/CodemationConfigNormalizer\";\nimport type { NormalizedCodemationConfig } from \"../config/CodemationConfigNormalizer\";\nimport { logLevelPolicyFactory } from \"../../infrastructure/logging/LogLevelPolicyFactory\";\nimport { ServerLoggerFactory } from \"../../infrastructure/logging/ServerLoggerFactory\";\nimport { DiscoveredWorkflowsEmptyMessageFactory } from \"./DiscoveredWorkflowsEmptyMessageFactory\";\nimport { CodemationConsumerConfigExportsResolver } from \"./CodemationConsumerConfigExportsResolver\";\nimport { WorkflowDefinitionExportsResolver } from \"./WorkflowDefinitionExportsResolver\";\nimport { WorkflowDiscoveryPathSegmentsComputer } from \"./WorkflowDiscoveryPathSegmentsComputer\";\nimport { WorkflowModulePathFinder } from \"./WorkflowModulePathFinder\";\n\nexport type CodemationConsumerConfigResolution = Readonly<{\n config: NormalizedCodemationConfig;\n bootstrapSource: string | null;\n workflowSources: ReadonlyArray<string>;\n}>;\n\nexport class CodemationConsumerConfigLoader {\n private static readonly importerRegistrationsByTsconfig = new Map<string, NamespacedUnregister>();\n private readonly configExportsResolver = new CodemationConsumerConfigExportsResolver();\n private readonly configNormalizer = new CodemationConfigNormalizer();\n private readonly workflowModulePathFinder = new WorkflowModulePathFinder();\n private readonly workflowDefinitionExportsResolver = new WorkflowDefinitionExportsResolver();\n private readonly discoveredWorkflowsEmptyMessageFactory = new DiscoveredWorkflowsEmptyMessageFactory();\n private readonly pathSegmentsComputer = new WorkflowDiscoveryPathSegmentsComputer();\n private readonly performanceDiagnosticsLogger = new ServerLoggerFactory(\n logLevelPolicyFactory,\n ).createPerformanceDiagnostics(\"codemation-config-loader.timing\");\n\n async load(\n args: Readonly<{ consumerRoot: string; configPathOverride?: string }>,\n ): Promise<CodemationConsumerConfigResolution> {\n const loadStarted = performance.now();\n let mark = loadStarted;\n const phaseMs = (label: string): void => {\n const now = performance.now();\n const delta = now - mark;\n mark = now;\n this.performanceDiagnosticsLogger.info(\n `load.${label} +${delta.toFixed(1)}ms (cumulative ${(now - loadStarted).toFixed(1)}ms)`,\n );\n };\n const bootstrapSource = await this.resolveConfigPath(args.consumerRoot, args.configPathOverride);\n phaseMs(\"resolveConfigPath\");\n if (!bootstrapSource) {\n throw new Error(\n 'Codemation config not found. Expected \"codemation.config.ts\" in the consumer project root or \"src/\".',\n );\n }\n const moduleExports = await this.importModule(bootstrapSource);\n phaseMs(\"importConfigModule\");\n const rawConfig = this.configExportsResolver.resolveConfig(moduleExports);\n if (!rawConfig) {\n throw new Error(`Config file does not export a Codemation config object: ${bootstrapSource}`);\n }\n const config = this.configNormalizer.normalize(rawConfig);\n const workflowSources = await this.resolveWorkflowSources(args.consumerRoot, config);\n phaseMs(\"resolveWorkflowSources\");\n const workflows = this.mergeWorkflows(\n config.workflows ?? [],\n await this.loadDiscoveredWorkflows(args.consumerRoot, config, workflowSources),\n );\n phaseMs(\"loadDiscoveredWorkflows\");\n const resolvedConfig: NormalizedCodemationConfig = {\n ...config,\n workflows,\n };\n logLevelPolicyFactory.create().applyCodemationLogConfig(resolvedConfig.log);\n return {\n config: resolvedConfig,\n bootstrapSource,\n workflowSources,\n };\n }\n\n private async resolveConfigPath(\n consumerRoot: string,\n configPathOverride: string | undefined,\n ): Promise<string | null> {\n if (configPathOverride) {\n const explicitPath = path.isAbsolute(configPathOverride)\n ? configPathOverride\n : path.resolve(consumerRoot, configPathOverride);\n if (!(await this.exists(explicitPath))) {\n throw new Error(`Config file not found: ${explicitPath}`);\n }\n return explicitPath;\n }\n for (const candidate of this.getConventionCandidates(consumerRoot)) {\n if (await this.exists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n private getConventionCandidates(consumerRoot: string): ReadonlyArray<string> {\n return [\n path.resolve(consumerRoot, \"codemation.config.ts\"),\n path.resolve(consumerRoot, \"codemation.config.js\"),\n path.resolve(consumerRoot, \"src\", \"codemation.config.ts\"),\n path.resolve(consumerRoot, \"src\", \"codemation.config.js\"),\n ];\n }\n\n private async resolveWorkflowSources(consumerRoot: string, config: CodemationConfig): Promise<ReadonlyArray<string>> {\n if ((config.workflowDiscovery?.directories?.length ?? 0) === 0) {\n return [];\n }\n const discoveredPaths = await this.workflowModulePathFinder.discoverModulePaths({\n consumerRoot,\n workflowDirectories: config.workflowDiscovery?.directories,\n exists: (absolutePath) => this.exists(absolutePath),\n });\n return [...discoveredPaths].sort((left: string, right: string) => left.localeCompare(right));\n }\n\n private async loadDiscoveredWorkflows(\n consumerRoot: string,\n config: CodemationConfig,\n workflowSources: ReadonlyArray<string>,\n ): Promise<ReadonlyArray<WorkflowDefinition>> {\n const workflowDiscoveryDirectories = config.workflowDiscovery?.directories ?? [];\n const workflowsById = new Map<string, WorkflowDefinition>();\n const loadedWorkflowModules = await Promise.all(\n workflowSources.map(async (workflowSource: string) => ({\n workflowSource,\n segments: this.pathSegmentsComputer.compute({\n consumerRoot,\n workflowDiscoveryDirectories,\n absoluteWorkflowModulePath: workflowSource,\n }),\n moduleExports: await this.importModule(workflowSource),\n })),\n );\n for (const loadedWorkflowModule of loadedWorkflowModules) {\n for (const workflow of this.workflowDefinitionExportsResolver.resolve(loadedWorkflowModule.moduleExports)) {\n const enriched =\n loadedWorkflowModule.segments && loadedWorkflowModule.segments.length > 0\n ? ({ ...workflow, discoveryPathSegments: loadedWorkflowModule.segments } satisfies WorkflowDefinition)\n : workflow;\n workflowsById.set(workflow.id, enriched);\n }\n }\n if (workflowsById.size === 0 && workflowSources.length > 0) {\n throw new Error(this.discoveredWorkflowsEmptyMessageFactory.create(workflowSources));\n }\n return [...workflowsById.values()];\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n discoveredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of discoveredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n\n private async importModule(modulePath: string): Promise<Record<string, unknown>> {\n if (this.shouldUseNativeRuntimeImport()) {\n return await this.importModuleWithNativeRuntime(modulePath);\n }\n const tsconfigPath = await this.resolveTsconfigPath(modulePath);\n if (this.shouldResetImporterBeforeImport()) {\n await this.resetImporter(tsconfigPath);\n }\n const importSpecifier = await this.createImportSpecifier(modulePath);\n for (let attempt = 0; attempt < 3; attempt += 1) {\n try {\n const importedModule = await (\n await this.getOrCreateImporter(tsconfigPath)\n ).import(importSpecifier, import.meta.url);\n return importedModule as Record<string, unknown>;\n } catch (error) {\n if (!this.isStoppedTransformServiceError(error) || attempt === 2) {\n throw error;\n }\n await this.resetImporter(tsconfigPath);\n }\n }\n throw new Error(`Failed to import consumer module after retries: ${modulePath}`);\n }\n\n private async importModuleWithNativeRuntime(modulePath: string): Promise<Record<string, unknown>> {\n const importedModule = await import(await this.createImportSpecifier(modulePath));\n return importedModule as Record<string, unknown>;\n }\n\n private async resolveTsconfigPath(modulePath: string): Promise<string | false> {\n const overridePath = process.env.CODEMATION_TSCONFIG_PATH;\n if (overridePath && (await this.exists(overridePath))) {\n return overridePath;\n }\n const discoveredPath = await this.findNearestTsconfig(modulePath);\n return discoveredPath ?? false;\n }\n\n private async getOrCreateImporter(tsconfigPath: string | false): Promise<NamespacedUnregister> {\n const cacheKey = tsconfigPath || \"default\";\n const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);\n if (existingImporter) {\n return existingImporter;\n }\n const { register } = await import(/* webpackIgnore: true */ this.resolveTsxImporterModuleSpecifier());\n const nextImporter = register({\n namespace: this.toNamespace(cacheKey),\n tsconfig: tsconfigPath,\n });\n CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.set(cacheKey, nextImporter);\n return nextImporter;\n }\n\n private async resetImporter(tsconfigPath: string | false): Promise<void> {\n const cacheKey = tsconfigPath || \"default\";\n const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);\n if (!existingImporter) {\n return;\n }\n CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.delete(cacheKey);\n await existingImporter.unregister().catch(() => null);\n }\n\n private toNamespace(cacheKey: string): string {\n return `codemation_consumer_${cacheKey.replace(/[^a-zA-Z0-9_-]+/g, \"_\")}`;\n }\n\n private resolveTsxImporterModuleSpecifier(): string {\n return [\"tsx\", \"esm\", \"api\"].join(\"/\");\n }\n\n private async findNearestTsconfig(modulePath: string): Promise<string | null> {\n let currentDirectory = path.dirname(modulePath);\n while (true) {\n const candidate = path.resolve(currentDirectory, \"tsconfig.json\");\n if (await this.exists(candidate)) {\n return candidate;\n }\n const parentDirectory = path.dirname(currentDirectory);\n if (parentDirectory === currentDirectory) {\n return null;\n }\n currentDirectory = parentDirectory;\n }\n }\n\n private async createImportSpecifier(modulePath: string): Promise<string> {\n const moduleUrl = pathToFileURL(modulePath);\n const moduleStats = await stat(modulePath);\n moduleUrl.searchParams.set(\"t\", String(moduleStats.mtimeMs));\n return moduleUrl.href;\n }\n\n private shouldUseNativeRuntimeImport(): boolean {\n return process.env.CODEMATION_TS_RUNTIME === \"ts-node\";\n }\n\n private shouldResetImporterBeforeImport(): boolean {\n return (process.env.CODEMATION_DEV_SERVER_TOKEN?.trim().length ?? 0) > 0;\n }\n\n private isStoppedTransformServiceError(error: unknown): boolean {\n return error instanceof Error && error.message.includes(\"The service is no longer running\");\n }\n\n private async exists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/bootstrap/CodemationBootstrapRequest.ts
|
|
2
|
+
var CodemationBootstrapRequest = class {
|
|
3
|
+
consumerRoot;
|
|
4
|
+
repoRoot;
|
|
5
|
+
workflowSources;
|
|
6
|
+
env;
|
|
7
|
+
constructor(args) {
|
|
8
|
+
this.consumerRoot = args.consumerRoot;
|
|
9
|
+
this.repoRoot = args.repoRoot;
|
|
10
|
+
this.workflowSources = [...args.workflowSources ?? []];
|
|
11
|
+
this.env = args.env;
|
|
12
|
+
}
|
|
13
|
+
resolveEnvironment() {
|
|
14
|
+
return {
|
|
15
|
+
...process.env,
|
|
16
|
+
...this.env ?? {}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/presentation/config/CodemationPluginListMerger.ts
|
|
23
|
+
/**
|
|
24
|
+
* Merges explicitly configured plugins with auto-discovered plugins.
|
|
25
|
+
* Configured plugins are applied first; discovered plugins fill in gaps.
|
|
26
|
+
* Plugins discovered from package.json manifests are deduped by npm package name so the same package is not
|
|
27
|
+
* registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.
|
|
28
|
+
*/
|
|
29
|
+
var CodemationPluginListMerger = class {
|
|
30
|
+
constructor(packageMetadata) {
|
|
31
|
+
this.packageMetadata = packageMetadata;
|
|
32
|
+
}
|
|
33
|
+
merge(configuredPlugins, discoveredPlugins) {
|
|
34
|
+
const pluginsByPackageId = /* @__PURE__ */ new Map();
|
|
35
|
+
const pluginsByReference = /* @__PURE__ */ new Set();
|
|
36
|
+
const result = [];
|
|
37
|
+
for (const plugin of configuredPlugins) this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);
|
|
38
|
+
for (const plugin of discoveredPlugins) this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
tryAdd(plugin, pluginsByPackageId, pluginsByReference, result) {
|
|
42
|
+
const packageId = this.packageMetadata.readPackageName(plugin);
|
|
43
|
+
if (packageId) {
|
|
44
|
+
if (pluginsByPackageId.has(packageId)) return;
|
|
45
|
+
pluginsByPackageId.set(packageId, plugin);
|
|
46
|
+
result.push(plugin);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (pluginsByReference.has(plugin)) return;
|
|
50
|
+
pluginsByReference.add(plugin);
|
|
51
|
+
result.push(plugin);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { CodemationBootstrapRequest as n, CodemationPluginListMerger as t };
|
|
57
|
+
//# sourceMappingURL=CodemationPluginListMerger-CGwOTdZ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodemationPluginListMerger-CGwOTdZ7.js","names":["packageMetadata: CodemationPluginPackageMetadata","result: CodemationPlugin[]"],"sources":["../src/bootstrap/CodemationBootstrapRequest.ts","../src/presentation/config/CodemationPluginListMerger.ts"],"sourcesContent":["export class CodemationBootstrapRequest {\n readonly consumerRoot: string;\n readonly repoRoot: string;\n readonly workflowSources: ReadonlyArray<string>;\n readonly env?: Readonly<NodeJS.ProcessEnv>;\n\n constructor(\n args: Readonly<{\n consumerRoot: string;\n repoRoot: string;\n workflowSources?: ReadonlyArray<string>;\n env?: Readonly<NodeJS.ProcessEnv>;\n }>,\n ) {\n this.consumerRoot = args.consumerRoot;\n this.repoRoot = args.repoRoot;\n this.workflowSources = [...(args.workflowSources ?? [])];\n this.env = args.env;\n }\n\n resolveEnvironment(): NodeJS.ProcessEnv {\n return {\n ...process.env,\n ...(this.env ?? {}),\n };\n }\n}\n","import { CodemationPluginPackageMetadata, type CodemationPlugin } from \"./CodemationPlugin\";\n\n/**\n * Merges explicitly configured plugins with auto-discovered plugins.\n * Configured plugins are applied first; discovered plugins fill in gaps.\n * Plugins discovered from package.json manifests are deduped by npm package name so the same package is not\n * registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.\n */\nexport class CodemationPluginListMerger {\n constructor(private readonly packageMetadata: CodemationPluginPackageMetadata) {}\n\n merge(\n configuredPlugins: ReadonlyArray<CodemationPlugin>,\n discoveredPlugins: ReadonlyArray<CodemationPlugin>,\n ): ReadonlyArray<CodemationPlugin> {\n const pluginsByPackageId = new Map<string, CodemationPlugin>();\n const pluginsByReference = new Set<CodemationPlugin>();\n const result: CodemationPlugin[] = [];\n\n for (const plugin of configuredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n for (const plugin of discoveredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n return result;\n }\n\n private tryAdd(\n plugin: CodemationPlugin,\n pluginsByPackageId: Map<string, CodemationPlugin>,\n pluginsByReference: Set<CodemationPlugin>,\n result: CodemationPlugin[],\n ): void {\n const packageId = this.packageMetadata.readPackageName(plugin);\n if (packageId) {\n if (pluginsByPackageId.has(packageId)) {\n return;\n }\n pluginsByPackageId.set(packageId, plugin);\n result.push(plugin);\n return;\n }\n if (pluginsByReference.has(plugin)) {\n return;\n }\n pluginsByReference.add(plugin);\n result.push(plugin);\n }\n}\n"],"mappings":";AAAA,IAAa,6BAAb,MAAwC;CACtC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YACE,MAMA;AACA,OAAK,eAAe,KAAK;AACzB,OAAK,WAAW,KAAK;AACrB,OAAK,kBAAkB,CAAC,GAAI,KAAK,mBAAmB,EAAE,CAAE;AACxD,OAAK,MAAM,KAAK;;CAGlB,qBAAwC;AACtC,SAAO;GACL,GAAG,QAAQ;GACX,GAAI,KAAK,OAAO,EAAE;GACnB;;;;;;;;;;;;AChBL,IAAa,6BAAb,MAAwC;CACtC,YAAY,AAAiBA,iBAAkD;EAAlD;;CAE7B,MACE,mBACA,mBACiC;EACjC,MAAM,qCAAqB,IAAI,KAA+B;EAC9D,MAAM,qCAAqB,IAAI,KAAuB;EACtD,MAAMC,SAA6B,EAAE;AAErC,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,SAAO;;CAGT,AAAQ,OACN,QACA,oBACA,oBACA,QACM;EACN,MAAM,YAAY,KAAK,gBAAgB,gBAAgB,OAAO;AAC9D,MAAI,WAAW;AACb,OAAI,mBAAmB,IAAI,UAAU,CACnC;AAEF,sBAAmB,IAAI,WAAW,OAAO;AACzC,UAAO,KAAK,OAAO;AACnB;;AAEF,MAAI,mBAAmB,IAAI,OAAO,CAChC;AAEF,qBAAmB,IAAI,OAAO;AAC9B,SAAO,KAAK,OAAO"}
|
package/dist/{CodemationPluginListMerger-B0-e4CJ6.d.ts → CodemationPluginListMerger-ZY3R_kTo.d.ts}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as CodemationWhitelabelConfig, l as Logger, t as CodemationAuthConfig, u as LoggerFactory } from "./CodemationAuthConfig-Bh2cCNCI.js";
|
|
2
|
-
import { A as RunId, B as PersistedRunState,
|
|
3
|
-
import {
|
|
4
|
-
import { t as CredentialStore } from "./CredentialServices-
|
|
5
|
-
import { n as PrismaMigrationDeployer, r as PrismaClient } from "./AppConfigFactory-
|
|
2
|
+
import { A as RunId, B as PersistedRunState, F as NodeExecutionRequestHandler, H as RunSummary, I as NodeExecutionScheduler, L as WorkflowRepository, M as WorkflowDefinition, N as WorkflowId, U as Clock, V as RunCurrentState, c as AnyCredentialType, i as TypeToken, n as Engine, o as RunEvent, r as Container, s as RunEventBus, z as WorkflowActivationPolicy } from "./index-CkiptHb-.js";
|
|
3
|
+
import { S as CodemationPluginPackageMetadata, g as AppConfig, w as CodemationContainerRegistration, y as CodemationPlugin } from "./CodemationConfig-u80ZoIrc.js";
|
|
4
|
+
import { t as CredentialStore } from "./CredentialServices-Uo1jxSYB.js";
|
|
5
|
+
import { n as PrismaMigrationDeployer, r as PrismaClient } from "./AppConfigFactory-D_ReOKfV.js";
|
|
6
6
|
import "reflect-metadata";
|
|
7
7
|
import { Hono } from "hono";
|
|
8
8
|
import { PGlite } from "@electric-sql/pglite";
|
|
@@ -27,114 +27,6 @@ interface QueryBus {
|
|
|
27
27
|
execute<TResult>(query: Query<TResult>): Promise<TResult>;
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
//#region src/application/contracts/userDirectoryContracts.types.d.ts
|
|
31
|
-
type UserAccountStatus = "invited" | "active" | "inactive";
|
|
32
|
-
type UserAccountDto = Readonly<{
|
|
33
|
-
id: string;
|
|
34
|
-
email: string;
|
|
35
|
-
status: UserAccountStatus;
|
|
36
|
-
inviteExpiresAt: string | null;
|
|
37
|
-
/** Ways the user can sign in (password + linked OAuth / OIDC / email-link accounts). */
|
|
38
|
-
loginMethods: ReadonlyArray<string>;
|
|
39
|
-
}>;
|
|
40
|
-
/** Result of CLI/bootstrap `upsert` for a local password user (distinct from invite-based onboarding). */
|
|
41
|
-
type UpsertLocalBootstrapUserResultDto = Readonly<{
|
|
42
|
-
outcome: "created" | "updated";
|
|
43
|
-
}>;
|
|
44
|
-
//#endregion
|
|
45
|
-
//#region src/application/queries/ListUserAccountsQuery.d.ts
|
|
46
|
-
declare class ListUserAccountsQuery extends Query<ReadonlyArray<UserAccountDto>> {}
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/application/commands/UpsertLocalBootstrapUserCommand.d.ts
|
|
49
|
-
declare class UpsertLocalBootstrapUserCommand extends Command<UpsertLocalBootstrapUserResultDto> {
|
|
50
|
-
readonly email: string;
|
|
51
|
-
readonly password: string;
|
|
52
|
-
constructor(email: string, password: string);
|
|
53
|
-
}
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/application/bus/CommandHandler.d.ts
|
|
56
|
-
declare abstract class CommandHandler<TCommand extends Command<TResult>, TResult> {
|
|
57
|
-
abstract execute(command: TCommand): Promise<TResult>;
|
|
58
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
//#region src/domain/runs/WorkflowRunRepository.d.ts
|
|
61
|
-
interface WorkflowRunRepository {
|
|
62
|
-
load(runId: string): Promise<PersistedRunState | undefined>;
|
|
63
|
-
save(state: PersistedRunState): Promise<void>;
|
|
64
|
-
listRuns(args: Readonly<{
|
|
65
|
-
workflowId?: string;
|
|
66
|
-
limit?: number;
|
|
67
|
-
}>): Promise<ReadonlyArray<RunSummary>>;
|
|
68
|
-
deleteRun(runId: RunId): Promise<void>;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
|
|
72
|
-
type WorkflowDebuggerOverlayState = Readonly<{
|
|
73
|
-
workflowId: string;
|
|
74
|
-
updatedAt: string;
|
|
75
|
-
copiedFromRunId?: string;
|
|
76
|
-
currentState: RunCurrentState;
|
|
77
|
-
}>;
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region src/domain/workflows/WorkflowDebuggerOverlayRepository.d.ts
|
|
80
|
-
interface WorkflowDebuggerOverlayRepository {
|
|
81
|
-
load(workflowId: string): Promise<WorkflowDebuggerOverlayState | undefined>;
|
|
82
|
-
save(state: WorkflowDebuggerOverlayState): Promise<void>;
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
//#region src/domain/workflows/WorkflowDefinitionRepository.d.ts
|
|
86
|
-
interface WorkflowDefinitionRepository {
|
|
87
|
-
listDefinitions(): Promise<ReadonlyArray<WorkflowDefinition>>;
|
|
88
|
-
getDefinition(workflowId: string): Promise<WorkflowDefinition | undefined>;
|
|
89
|
-
resolveSnapshot(args: Readonly<{
|
|
90
|
-
workflowId: string;
|
|
91
|
-
workflowSnapshot?: unknown;
|
|
92
|
-
}>): Promise<WorkflowDefinition | undefined>;
|
|
93
|
-
}
|
|
94
|
-
//#endregion
|
|
95
|
-
//#region src/domain/workflows/WorkflowActivationRepository.d.ts
|
|
96
|
-
type WorkflowActivationRow = Readonly<{
|
|
97
|
-
workflowId: string;
|
|
98
|
-
isActive: boolean;
|
|
99
|
-
}>;
|
|
100
|
-
interface WorkflowActivationRepository {
|
|
101
|
-
loadAll(): Promise<ReadonlyArray<WorkflowActivationRow>>;
|
|
102
|
-
upsert(workflowId: string, active: boolean): Promise<void>;
|
|
103
|
-
}
|
|
104
|
-
//#endregion
|
|
105
|
-
//#region src/infrastructure/persistence/RuntimeWorkflowActivationPolicy.d.ts
|
|
106
|
-
/**
|
|
107
|
-
* In-memory activation map: missing workflow id ⇒ inactive. Hydrated from persistence at startup and updated on command.
|
|
108
|
-
*/
|
|
109
|
-
declare class RuntimeWorkflowActivationPolicy implements WorkflowActivationPolicy {
|
|
110
|
-
private readonly activeByWorkflowId;
|
|
111
|
-
hydrateFromRepository(repository: WorkflowActivationRepository): Promise<void>;
|
|
112
|
-
set(workflowId: string, active: boolean): void;
|
|
113
|
-
isActive(workflowId: WorkflowId): boolean;
|
|
114
|
-
}
|
|
115
|
-
//#endregion
|
|
116
|
-
//#region src/application/bus/QueryHandler.d.ts
|
|
117
|
-
declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
|
|
118
|
-
abstract execute(query: TQuery): Promise<TResult>;
|
|
119
|
-
}
|
|
120
|
-
//#endregion
|
|
121
|
-
//#region src/application/binary/RunBinaryAttachmentLookupService.d.ts
|
|
122
|
-
declare class RunBinaryAttachmentLookupService {
|
|
123
|
-
private readonly workflowRunRepository;
|
|
124
|
-
private readonly workflowDebuggerOverlayRepository;
|
|
125
|
-
constructor(workflowRunRepository: WorkflowRunRepository, workflowDebuggerOverlayRepository: WorkflowDebuggerOverlayRepository);
|
|
126
|
-
findForRun(runId: string, binaryId: string): Promise<BinaryAttachment | undefined>;
|
|
127
|
-
findForWorkflowOverlay(workflowId: string, binaryId: string): Promise<BinaryAttachment | undefined>;
|
|
128
|
-
private findInRunState;
|
|
129
|
-
private findInCurrentState;
|
|
130
|
-
private findInOutputsByNode;
|
|
131
|
-
private findInNodeSnapshots;
|
|
132
|
-
private findInCurrentStateSnapshots;
|
|
133
|
-
private findInMutableState;
|
|
134
|
-
private findInPortItemMap;
|
|
135
|
-
private findInItems;
|
|
136
|
-
}
|
|
137
|
-
//#endregion
|
|
138
30
|
//#region src/infrastructure/config/CodemationPluginRegistrar.d.ts
|
|
139
31
|
declare class CodemationPluginRegistrar {
|
|
140
32
|
apply(args: Readonly<{
|
|
@@ -208,6 +100,8 @@ type AppContainerInputs = Readonly<{
|
|
|
208
100
|
declare class AppContainerFactory {
|
|
209
101
|
private readonly containerRegistrationRegistrar;
|
|
210
102
|
private readonly pluginRegistrar;
|
|
103
|
+
private static readonly queryHandlers;
|
|
104
|
+
private static readonly commandHandlers;
|
|
211
105
|
private static readonly honoRouteRegistrars;
|
|
212
106
|
constructor(containerRegistrationRegistrar?: CodemationContainerRegistrationRegistrar, pluginRegistrar?: CodemationPluginRegistrar);
|
|
213
107
|
create(inputs: AppContainerInputs): Promise<Container>;
|
|
@@ -247,6 +141,27 @@ declare class DatabaseMigrations {
|
|
|
247
141
|
migrate(): Promise<void>;
|
|
248
142
|
}
|
|
249
143
|
//#endregion
|
|
144
|
+
//#region src/domain/workflows/WorkflowActivationRepository.d.ts
|
|
145
|
+
type WorkflowActivationRow = Readonly<{
|
|
146
|
+
workflowId: string;
|
|
147
|
+
isActive: boolean;
|
|
148
|
+
}>;
|
|
149
|
+
interface WorkflowActivationRepository {
|
|
150
|
+
loadAll(): Promise<ReadonlyArray<WorkflowActivationRow>>;
|
|
151
|
+
upsert(workflowId: string, active: boolean): Promise<void>;
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/infrastructure/persistence/RuntimeWorkflowActivationPolicy.d.ts
|
|
155
|
+
/**
|
|
156
|
+
* In-memory activation map: missing workflow id ⇒ inactive. Hydrated from persistence at startup and updated on command.
|
|
157
|
+
*/
|
|
158
|
+
declare class RuntimeWorkflowActivationPolicy implements WorkflowActivationPolicy {
|
|
159
|
+
private readonly activeByWorkflowId;
|
|
160
|
+
hydrateFromRepository(repository: WorkflowActivationRepository): Promise<void>;
|
|
161
|
+
set(workflowId: string, active: boolean): void;
|
|
162
|
+
isActive(workflowId: WorkflowId): boolean;
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
250
165
|
//#region src/application/websocket/WorkflowRunEventWebsocketRelay.d.ts
|
|
251
166
|
declare class WorkflowRunEventWebsocketRelay {
|
|
252
167
|
private readonly workflowWebsocketPublisher;
|
|
@@ -311,6 +226,11 @@ interface SessionVerifier {
|
|
|
311
226
|
verify(request: Request): Promise<AuthenticatedPrincipal | null>;
|
|
312
227
|
}
|
|
313
228
|
//#endregion
|
|
229
|
+
//#region src/application/bus/CommandHandler.d.ts
|
|
230
|
+
declare abstract class CommandHandler<TCommand extends Command<TResult>, TResult> {
|
|
231
|
+
abstract execute(command: TCommand): Promise<TResult>;
|
|
232
|
+
}
|
|
233
|
+
//#endregion
|
|
314
234
|
//#region src/application/bus/DomainEvent.d.ts
|
|
315
235
|
declare abstract class DomainEvent {}
|
|
316
236
|
//#endregion
|
|
@@ -324,6 +244,46 @@ declare abstract class DomainEventHandler<TEvent extends DomainEvent> {
|
|
|
324
244
|
abstract handle(event: TEvent): Promise<void>;
|
|
325
245
|
}
|
|
326
246
|
//#endregion
|
|
247
|
+
//#region src/application/bus/QueryHandler.d.ts
|
|
248
|
+
declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
|
|
249
|
+
abstract execute(query: TQuery): Promise<TResult>;
|
|
250
|
+
}
|
|
251
|
+
//#endregion
|
|
252
|
+
//#region src/domain/runs/WorkflowRunRepository.d.ts
|
|
253
|
+
interface WorkflowRunRepository {
|
|
254
|
+
load(runId: string): Promise<PersistedRunState | undefined>;
|
|
255
|
+
save(state: PersistedRunState): Promise<void>;
|
|
256
|
+
listRuns(args: Readonly<{
|
|
257
|
+
workflowId?: string;
|
|
258
|
+
limit?: number;
|
|
259
|
+
}>): Promise<ReadonlyArray<RunSummary>>;
|
|
260
|
+
deleteRun(runId: RunId): Promise<void>;
|
|
261
|
+
}
|
|
262
|
+
//#endregion
|
|
263
|
+
//#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
|
|
264
|
+
type WorkflowDebuggerOverlayState = Readonly<{
|
|
265
|
+
workflowId: string;
|
|
266
|
+
updatedAt: string;
|
|
267
|
+
copiedFromRunId?: string;
|
|
268
|
+
currentState: RunCurrentState;
|
|
269
|
+
}>;
|
|
270
|
+
//#endregion
|
|
271
|
+
//#region src/domain/workflows/WorkflowDebuggerOverlayRepository.d.ts
|
|
272
|
+
interface WorkflowDebuggerOverlayRepository {
|
|
273
|
+
load(workflowId: string): Promise<WorkflowDebuggerOverlayState | undefined>;
|
|
274
|
+
save(state: WorkflowDebuggerOverlayState): Promise<void>;
|
|
275
|
+
}
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/domain/workflows/WorkflowDefinitionRepository.d.ts
|
|
278
|
+
interface WorkflowDefinitionRepository {
|
|
279
|
+
listDefinitions(): Promise<ReadonlyArray<WorkflowDefinition>>;
|
|
280
|
+
getDefinition(workflowId: string): Promise<WorkflowDefinition | undefined>;
|
|
281
|
+
resolveSnapshot(args: Readonly<{
|
|
282
|
+
workflowId: string;
|
|
283
|
+
workflowSnapshot?: unknown;
|
|
284
|
+
}>): Promise<WorkflowDefinition | undefined>;
|
|
285
|
+
}
|
|
286
|
+
//#endregion
|
|
327
287
|
//#region src/presentation/http/hono/HonoApiRouteRegistrar.d.ts
|
|
328
288
|
interface HonoApiRouteRegistrar {
|
|
329
289
|
register(app: Hono): void;
|
|
@@ -379,13 +339,15 @@ declare class CodemationBootstrapRequest {
|
|
|
379
339
|
/**
|
|
380
340
|
* Merges explicitly configured plugins with auto-discovered plugins.
|
|
381
341
|
* Configured plugins are applied first; discovered plugins fill in gaps.
|
|
382
|
-
* Plugins
|
|
383
|
-
* registered twice when the consumer config lists a plugin and discovery also finds it
|
|
384
|
-
* module evaluations produce different `constructor` identities for the same logical plugin.
|
|
342
|
+
* Plugins discovered from package.json manifests are deduped by npm package name so the same package is not
|
|
343
|
+
* registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.
|
|
385
344
|
*/
|
|
386
345
|
declare class CodemationPluginListMerger {
|
|
346
|
+
private readonly packageMetadata;
|
|
347
|
+
constructor(packageMetadata: CodemationPluginPackageMetadata);
|
|
387
348
|
merge(configuredPlugins: ReadonlyArray<CodemationPlugin>, discoveredPlugins: ReadonlyArray<CodemationPlugin>): ReadonlyArray<CodemationPlugin>;
|
|
349
|
+
private tryAdd;
|
|
388
350
|
}
|
|
389
351
|
//#endregion
|
|
390
|
-
export {
|
|
391
|
-
//# sourceMappingURL=CodemationPluginListMerger-
|
|
352
|
+
export { Command as _, WorkflowDebuggerOverlayRepository as a, WorkerRuntime as c, AppContainerLifecycle as d, AppContainerFactory as f, CommandBus as g, Query as h, HonoApiRouteRegistrar as i, FrontendRuntime as l, QueryBus as m, CodemationBootstrapRequest as n, WorkflowRunRepository as o, WorkflowWebsocketServer as p, ApplicationTokens as r, SessionVerifier as s, CodemationPluginListMerger as t, DatabaseMigrations as u };
|
|
353
|
+
//# sourceMappingURL=CodemationPluginListMerger-ZY3R_kTo.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C as CredentialTypeDefinition, L as WorkflowRepository, M as WorkflowDefinition, S as CredentialType, T as CredentialTypeRegistry, b as CredentialSessionService, c as AnyCredentialType, d as CredentialFieldSchema, f as CredentialHealth, g as CredentialMaterialSourceKind, h as CredentialJsonRecord, l as CredentialBinding, m as CredentialInstanceRecord, p as CredentialInstanceId, u as CredentialBindingKey, v as CredentialRequirement, w as CredentialTypeId, x as CredentialSetupStatus } from "./index-CkiptHb-.js";
|
|
2
|
-
import { g as AppConfig } from "./CodemationConfig-
|
|
2
|
+
import { g as AppConfig } from "./CodemationConfig-u80ZoIrc.js";
|
|
3
3
|
|
|
4
4
|
//#region src/domain/credentials/CredentialTypeRegistryImpl.d.ts
|
|
5
5
|
declare class CredentialTypeRegistryImpl implements CredentialTypeRegistry {
|
|
@@ -288,4 +288,4 @@ type MutableCredentialSessionService = CredentialSessionService & Readonly<{
|
|
|
288
288
|
}>;
|
|
289
289
|
//#endregion
|
|
290
290
|
export { CredentialInstanceService as a, CredentialFieldEnvOverlayService as c, CredentialBindingService as i, CredentialTypeRegistryImpl as l, CredentialType$1 as n, CredentialMaterialResolver as o, CredentialRuntimeMaterialService as r, CredentialSecretCipher as s, CredentialStore as t };
|
|
291
|
-
//# sourceMappingURL=CredentialServices-
|
|
291
|
+
//# sourceMappingURL=CredentialServices-Uo1jxSYB.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { t as CodemationAuthConfig } from "./CodemationAuthConfig-Bh2cCNCI.js";
|
|
2
|
+
|
|
3
|
+
//#region src/presentation/frontend/CodemationFrontendAuthSnapshot.d.ts
|
|
4
|
+
type CodemationFrontendAuthProviderSnapshot = Readonly<{
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
}>;
|
|
8
|
+
type CodemationFrontendAuthSnapshot = Readonly<{
|
|
9
|
+
config: CodemationAuthConfig | undefined;
|
|
10
|
+
credentialsEnabled: boolean;
|
|
11
|
+
oauthProviders: ReadonlyArray<CodemationFrontendAuthProviderSnapshot>;
|
|
12
|
+
secret: string | null;
|
|
13
|
+
uiAuthEnabled: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region src/presentation/frontend/FrontendAppConfig.d.ts
|
|
17
|
+
/**
|
|
18
|
+
* Frontend-safe projection of host app configuration for packaged Next UI and SSR.
|
|
19
|
+
*/
|
|
20
|
+
type FrontendAppConfig = Readonly<{
|
|
21
|
+
auth: CodemationFrontendAuthSnapshot;
|
|
22
|
+
productName: string;
|
|
23
|
+
logoUrl: string | null;
|
|
24
|
+
}>;
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/presentation/frontend/InternalAuthBootstrap.d.ts
|
|
27
|
+
/**
|
|
28
|
+
* Node-side runtime bootstrap for NextAuth provider wiring.
|
|
29
|
+
*/
|
|
30
|
+
type InternalAuthBootstrap = Readonly<{
|
|
31
|
+
authConfig: CodemationAuthConfig | undefined;
|
|
32
|
+
credentialsEnabled: boolean;
|
|
33
|
+
oauthProviders: ReadonlyArray<CodemationFrontendAuthProviderSnapshot>;
|
|
34
|
+
uiAuthEnabled: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/presentation/frontend/PublicFrontendBootstrap.d.ts
|
|
38
|
+
/**
|
|
39
|
+
* Frontend-safe runtime bootstrap consumed by the Next.js shell.
|
|
40
|
+
*/
|
|
41
|
+
type PublicFrontendBootstrap = Readonly<{
|
|
42
|
+
credentialsEnabled: boolean;
|
|
43
|
+
logoUrl: string | null;
|
|
44
|
+
oauthProviders: ReadonlyArray<CodemationFrontendAuthProviderSnapshot>;
|
|
45
|
+
productName: string;
|
|
46
|
+
uiAuthEnabled: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { CodemationFrontendAuthSnapshot as a, CodemationFrontendAuthProviderSnapshot as i, InternalAuthBootstrap as n, FrontendAppConfig as r, PublicFrontendBootstrap as t };
|
|
50
|
+
//# sourceMappingURL=PublicFrontendBootstrap-p7mS8aWG.d.ts.map
|