libmodulor 0.27.0 → 0.29.0
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/CHANGELOG.md +39 -0
- package/README.md +2 -2
- package/dist/esm/apps/Helper/src/i18n.js +4 -4
- package/dist/esm/apps/Helper/src/lib/layers/project.js +6 -6
- package/dist/esm/apps/Helper/src/ucds/CreateAppUCD.js +5 -10
- package/dist/esm/apps/Helper/src/ucds/CreateProductUCD.js +5 -10
- package/dist/esm/apps/Helper/src/ucds/CreateTargetUCD.js +6 -11
- package/dist/esm/apps/Helper/src/ucds/TestAppUCD.js +5 -8
- package/dist/esm/dt/DataType.d.ts +2 -1
- package/dist/esm/dt/DataTypes.d.ts +1 -1
- package/dist/esm/dt/DataTypes.js +1 -0
- package/dist/esm/dt/base/TBase.d.ts +2 -0
- package/dist/esm/dt/base/TBase.js +5 -0
- package/dist/esm/dt/base/TBoolean.d.ts +2 -0
- package/dist/esm/dt/base/TBoolean.js +3 -0
- package/dist/esm/dt/base/TInt.d.ts +2 -0
- package/dist/esm/dt/base/TInt.js +3 -0
- package/dist/esm/dt/base/TNumber.d.ts +2 -0
- package/dist/esm/dt/base/TNumber.js +3 -0
- package/dist/esm/dt/base/TObject.d.ts +2 -0
- package/dist/esm/dt/base/TObject.js +29 -0
- package/dist/esm/dt/final/TApiKey.d.ts +2 -0
- package/dist/esm/dt/final/TApiKey.js +3 -0
- package/dist/esm/dt/final/TDateISO8601.d.ts +2 -0
- package/dist/esm/dt/final/TDateISO8601.js +3 -0
- package/dist/esm/dt/final/TDomainName.d.ts +2 -0
- package/dist/esm/dt/final/TDomainName.js +3 -0
- package/dist/esm/dt/final/TEmail.d.ts +2 -0
- package/dist/esm/dt/final/TEmail.js +3 -0
- package/dist/esm/dt/final/TEncryptionKey.d.ts +2 -0
- package/dist/esm/dt/final/TEncryptionKey.js +3 -0
- package/dist/esm/dt/final/TErrorCode.d.ts +7 -0
- package/dist/esm/dt/final/TErrorCode.js +9 -0
- package/dist/esm/dt/final/TFile.d.ts +2 -0
- package/dist/esm/dt/final/TFile.js +3 -0
- package/dist/esm/dt/final/TIPv4.d.ts +2 -0
- package/dist/esm/dt/final/TIPv4.js +3 -0
- package/dist/esm/dt/final/TIPv6.d.ts +2 -0
- package/dist/esm/dt/final/TIPv6.js +3 -0
- package/dist/esm/dt/final/TJWT.d.ts +2 -0
- package/dist/esm/dt/final/TJWT.js +3 -0
- package/dist/esm/dt/final/TPassword.d.ts +2 -0
- package/dist/esm/dt/final/TPassword.js +3 -0
- package/dist/esm/dt/final/TSSHPrivateKey.d.ts +2 -0
- package/dist/esm/dt/final/TSSHPrivateKey.js +3 -0
- package/dist/esm/dt/final/TTime.d.ts +2 -0
- package/dist/esm/dt/final/TTime.js +3 -0
- package/dist/esm/dt/final/TURL.d.ts +2 -0
- package/dist/esm/dt/final/TURL.js +3 -0
- package/dist/esm/dt/index.d.ts +2 -0
- package/dist/esm/dt/index.js +1 -0
- package/dist/esm/dt/targets/json-schema.d.ts +24 -0
- package/dist/esm/error/CustomError.d.ts +1 -1
- package/dist/esm/error/CustomError.js +2 -2
- package/dist/esm/error/ForbiddenAsNotFoundError.js +1 -1
- package/dist/esm/error/ForbiddenError.js +1 -1
- package/dist/esm/error/IllegalArgumentError.js +2 -2
- package/dist/esm/error/InternalServerError.js +1 -1
- package/dist/esm/error/NotFoundError.js +1 -1
- package/dist/esm/error/UnauthorizedError.js +1 -1
- package/dist/esm/error/UnavailableError.d.ts +6 -0
- package/dist/esm/error/UnavailableError.js +9 -0
- package/dist/esm/error/funcs.d.ts +3 -0
- package/dist/esm/error/funcs.js +3 -1
- package/dist/esm/error/index.d.ts +2 -1
- package/dist/esm/error/index.js +2 -1
- package/dist/esm/i18n/locales/de.js +8 -0
- package/dist/esm/i18n/locales/en.js +8 -0
- package/dist/esm/i18n/locales/es.js +8 -0
- package/dist/esm/i18n/locales/fr.js +8 -0
- package/dist/esm/i18n/types.d.ts +1 -1
- package/dist/esm/product/manifest.d.ts +2 -0
- package/dist/esm/products/Helper/i18n.d.ts +8 -0
- package/dist/esm/std/impl/SimpleHTTPAPICaller.js +1 -1
- package/dist/esm/std/impl/SimpleMapI18nManager.d.ts +1 -1
- package/dist/esm/std/impl/SimpleMapI18nManager.js +4 -2
- package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.d.ts +6 -2
- package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js +17 -9
- package/dist/esm/target/index.d.ts +1 -0
- package/dist/esm/target/lib/cli/CommandExecutor.js +2 -2
- package/dist/esm/target/lib/cli/renderer.d.ts +2 -1
- package/dist/esm/target/lib/cli/renderer.js +10 -11
- package/dist/esm/target/lib/openapi/OpenAPISpecBuilder.d.ts +25 -0
- package/dist/esm/target/lib/openapi/OpenAPISpecBuilder.js +131 -0
- package/dist/esm/target/lib/openapi/consts.d.ts +2 -0
- package/dist/esm/target/lib/openapi/consts.js +1 -0
- package/dist/esm/target/lib/openapi/funcs.d.ts +16 -0
- package/dist/esm/target/lib/openapi/funcs.js +249 -0
- package/dist/esm/target/lib/openapi/input.d.ts +16 -0
- package/dist/esm/target/lib/openapi/input.js +33 -0
- package/dist/esm/target/lib/openapi/types.d.ts +109 -0
- package/dist/esm/target/lib/rn/input.d.ts +3 -0
- package/dist/esm/target/lib/server/AuthCookieCreator.d.ts +2 -1
- package/dist/esm/target/lib/server/AuthenticationChecker.d.ts +3 -3
- package/dist/esm/target/lib/server/AuthenticationChecker.js +5 -5
- package/dist/esm/target/lib/server/ServerBooter.d.ts +4 -2
- package/dist/esm/target/lib/server/ServerBooter.js +34 -11
- package/dist/esm/target/lib/server/ServerManager.d.ts +19 -9
- package/dist/esm/target/lib/server/ServerRequestHandler.d.ts +0 -1
- package/dist/esm/target/lib/server/ServerRequestHandler.js +2 -2
- package/dist/esm/target/lib/server/consts.d.ts +4 -0
- package/dist/esm/target/lib/server/consts.js +22 -0
- package/dist/esm/target/lib/server-express/CORSMiddlewareBuilder.d.ts +15 -0
- package/dist/esm/target/lib/server-express/CORSMiddlewareBuilder.js +55 -0
- package/dist/esm/target/lib/server-express/funcs.d.ts +2 -1
- package/dist/esm/target/lib/server-express/funcs.js +7 -2
- package/dist/esm/target/lib/server-hono/CORSMiddlewareBuilder.d.ts +14 -0
- package/dist/esm/target/{node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.js → lib/server-hono/CORSMiddlewareBuilder.js} +22 -20
- package/dist/esm/target/lib/server-hono/funcs.d.ts +2 -1
- package/dist/esm/target/lib/server-hono/funcs.js +2 -1
- package/dist/esm/target/lib/shared.d.ts +4 -0
- package/dist/esm/target/lib/shared.js +2 -1
- package/dist/esm/target/nextjs-server/NextJSServerManager.d.ts +3 -1
- package/dist/esm/target/nextjs-server/NextJSServerManager.js +3 -0
- package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +1 -1
- package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +7 -3
- package/dist/esm/target/node-express-server/NodeExpressServerManager.js +24 -14
- package/dist/esm/target/node-hono-server/NodeHonoServerManager.d.ts +6 -2
- package/dist/esm/target/node-hono-server/NodeHonoServerManager.js +21 -11
- package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.d.ts +3 -1
- package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +19 -14
- package/dist/esm/target/node-mcp-server/types.d.ts +0 -4
- package/dist/esm/target/react-web-pure/UCForm.d.ts +1 -1
- package/dist/esm/target/react-web-pure/UCForm.js +3 -2
- package/dist/esm/testing/workers/checkers/AppI18nChecker.js +4 -2
- package/dist/esm/uc/UC.d.ts +2 -0
- package/dist/esm/uc/UC.js +16 -1
- package/dist/esm/uc/data-store.d.ts +9 -1
- package/dist/esm/uc/data-store.js +33 -1
- package/dist/esm/uc/impl/CloudflareD1UCDataStore.d.ts +2 -2
- package/dist/esm/uc/impl/CloudflareD1UCDataStore.js +7 -0
- package/dist/esm/uc/impl/InMemoryUCDataStore.d.ts +8 -3
- package/dist/esm/uc/impl/InMemoryUCDataStore.js +19 -3
- package/dist/esm/uc/impl/KnexUCDataStore.d.ts +2 -2
- package/dist/esm/uc/impl/KnexUCDataStore.js +10 -2
- package/dist/esm/uc/impl/SimpleUCManager.d.ts +4 -4
- package/dist/esm/uc/impl/SimpleUCManager.js +10 -10
- package/dist/esm/uc/metadata.d.ts +7 -0
- package/dist/esm/uc/metadata.js +10 -0
- package/dist/esm/uc/output-field.d.ts +1 -0
- package/dist/esm/uc/output-field.js +13 -1
- package/dist/esm/uc/settings/consts.js +1 -0
- package/dist/esm/uc/settings.d.ts +8 -1
- package/dist/esm/uc/utils/ucHTTPContract.js +1 -1
- package/dist/esm/uc/workers/UCExecChecker.d.ts +3 -3
- package/dist/esm/uc/workers/UCExecChecker.js +5 -5
- package/dist/esm/utils/http/types.d.ts +5 -0
- package/dist/esm/utils/index.d.ts +2 -2
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/ioc/bindCommon.js +4 -4
- package/dist/esm/utils/ioc/bindFactory.d.ts +2 -0
- package/dist/esm/utils/ioc/bindFactory.js +9 -0
- package/package.json +21 -20
- package/dist/esm/apps/Helper/src/lib/app.d.ts +0 -6
- package/dist/esm/apps/Helper/src/lib/app.js +0 -12
- package/dist/esm/apps/Helper/src/lib/project.d.ts +0 -3
- package/dist/esm/apps/Helper/src/lib/project.js +0 -163
- package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.d.ts +0 -2
- package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.js +0 -18
- package/dist/esm/products/Helper/cli-node-core/container.d.ts +0 -3
- package/dist/esm/products/Helper/cli-node-core/container.js +0 -26
- package/dist/esm/products/Helper/cli-node-core/index.js +0 -9
- package/dist/esm/products/Helper/container.d.ts +0 -3
- package/dist/esm/products/Helper/container.js +0 -26
- package/dist/esm/products/Helper/index.js +0 -16
- package/dist/esm/target/lib/react/common.d.ts +0 -6
- package/dist/esm/target/lib/react/common.js +0 -1
- package/dist/esm/target/lib/server/RequestHandler.d.ts +0 -14
- package/dist/esm/target/lib/server/RequestHandler.js +0 -1
- package/dist/esm/target/lib/server-node/stop.d.ts +0 -2
- package/dist/esm/target/lib/server-node/stop.js +0 -18
- package/dist/esm/target/node-express-server/lib/AuthCookieCreator.d.ts +0 -21
- package/dist/esm/target/node-express-server/lib/AuthCookieCreator.js +0 -50
- package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.d.ts +0 -21
- package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.js +0 -61
- package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.d.ts +0 -12
- package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.js +0 -35
- package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.d.ts +0 -12
- package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.js +0 -39
- package/dist/esm/target/node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.d.ts +0 -18
- package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.d.ts +0 -12
- package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.js +0 -36
- package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.d.ts +0 -23
- package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.js +0 -154
- package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.d.ts +0 -13
- package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.js +0 -46
- package/dist/esm/testing/impl/SimpleAppDocsEmitter.d.ts +0 -7
- package/dist/esm/testing/impl/SimpleAppDocsEmitter.js +0 -180
- package/dist/esm/testing/impl/SimpleAppTesterConfigurator.d.ts +0 -14
- package/dist/esm/testing/impl/SimpleAppTesterConfigurator.js +0 -35
- package/dist/esm/uc/utils/stripUCDLifecycleServer.d.ts +0 -15
- package/dist/esm/uc/utils/stripUCDLifecycleServer.js +0 -77
- package/dist/esm/uc/utils/ucifcoIsForArray.d.ts +0 -8
- package/dist/esm/uc/utils/ucifcoIsForArray.js +0 -13
- package/dist/esm/utils/bundling/vite/StripUCDLifecycleServerPlugin.d.ts +0 -2
- package/dist/esm/utils/bundling/vite/StripUCDLifecycleServerPlugin.js +0 -18
- package/dist/esm/utils/http/toFormData.d.ts +0 -3
- package/dist/esm/utils/http/toFormData.js +0 -4
- package/dist/esm/utils/http/toJSON.d.ts +0 -3
- package/dist/esm/utils/http/toJSON.js +0 -3
- package/dist/esm/utils/http/toQueryParams.d.ts +0 -2
- package/dist/esm/utils/http/toQueryParams.js +0 -4
- package/dist/esm/utils/ioc/ContainerPrinter.d.ts +0 -15
- package/dist/esm/utils/ioc/ContainerPrinter.js +0 -58
- package/dist/esm/utils/ioc/bindProvider.d.ts +0 -2
- package/dist/esm/utils/ioc/bindProvider.js +0 -9
- /package/dist/esm/{products/Helper/cli-node-core/index.d.ts → dt/targets/json-schema.js} +0 -0
- /package/dist/esm/{products/Helper/index.d.ts → target/lib/openapi/types.js} +0 -0
|
@@ -4,8 +4,9 @@ import type { AppManifest } from '../../../app/index.js';
|
|
|
4
4
|
import type { UCDef, UCHTTPContract, UCInput, UCManager, UCOPIBase } from '../../../uc/index.js';
|
|
5
5
|
import type { CustomerFacingErrorBuilder } from '../server/CustomerFacingErrorBuilder.js';
|
|
6
6
|
import type { ServerRequestHandler, ServerRequestHandlerReq, ServerRequestHandlerRes } from '../server/ServerRequestHandler.js';
|
|
7
|
+
import type { CORSMiddlewareBuilder } from './CORSMiddlewareBuilder.js';
|
|
7
8
|
export declare function buildHandler<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract, serverRequestHandler: ServerRequestHandler, ucManager: UCManager, beforeExec?: (c: Context) => Promise<void>): Handler;
|
|
8
|
-
export declare function init<E extends Env = BlankEnv>(customerFacingErrorBuilder: CustomerFacingErrorBuilder): Hono<E>;
|
|
9
|
+
export declare function init<E extends Env = BlankEnv>(corsMB: CORSMiddlewareBuilder, customerFacingErrorBuilder: CustomerFacingErrorBuilder): Hono<E>;
|
|
9
10
|
export declare function mountHandler(contract: UCHTTPContract, hono: Hono, handler: Handler): void;
|
|
10
11
|
export declare function toReq(c: Context): ServerRequestHandlerReq;
|
|
11
12
|
export declare function toRes(c: Context): ServerRequestHandlerRes;
|
|
@@ -86,9 +86,10 @@ export function buildHandler(appManifest, ucd, contract, serverRequestHandler, u
|
|
|
86
86
|
};
|
|
87
87
|
return handler;
|
|
88
88
|
}
|
|
89
|
-
export function init(customerFacingErrorBuilder) {
|
|
89
|
+
export function init(corsMB, customerFacingErrorBuilder) {
|
|
90
90
|
const app = new Hono();
|
|
91
91
|
app.use(secureHeaders());
|
|
92
|
+
app.use(corsMB.exec({}));
|
|
92
93
|
app.use(logger());
|
|
93
94
|
app.notFound((c) => {
|
|
94
95
|
const error = new NotFoundError();
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
import type { SemVerVersion } from '../../dt/index.js';
|
|
2
|
+
import type { HTTPHeaderName } from '../../utils/index.js';
|
|
1
3
|
export type AuthCookieName = 'auth';
|
|
2
4
|
export type PublicApiKeyHeaderName = 'X-API-Key' | (string & {});
|
|
5
|
+
export declare const AUTHORIZATION_HEADER_NAME: HTTPHeaderName;
|
|
6
|
+
export declare const DEFAULT_VERSION: SemVerVersion;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const AUTHORIZATION_HEADER_NAME = 'Authorization';
|
|
2
|
+
export const DEFAULT_VERSION = '0.1.0';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AppManifest } from '../../app/index.js';
|
|
2
|
-
import type { DirPath } from '../../dt/index.js';
|
|
2
|
+
import type { DirPath, URLPath } from '../../dt/index.js';
|
|
3
3
|
import type { UCDef, UCHTTPContract, UCInput, UCManager, UCOPIBase } from '../../uc/index.js';
|
|
4
|
+
import type { OpenAPISpec } from '../lib/openapi/types.js';
|
|
4
5
|
import type { ServerManager } from '../lib/server/ServerManager.js';
|
|
5
6
|
export declare class NextJSServerManager implements ServerManager {
|
|
6
7
|
overrideUCManager(_ucManager: UCManager): void;
|
|
@@ -8,6 +9,7 @@ export declare class NextJSServerManager implements ServerManager {
|
|
|
8
9
|
initSync(): void;
|
|
9
10
|
mount<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(_appManifest: AppManifest, _ucd: UCDef<I, OPI0, OPI1>, _contract: UCHTTPContract): Promise<void>;
|
|
10
11
|
mountSync<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(_appManifest: AppManifest, _ucd: UCDef<I, OPI0, OPI1>, _contract: UCHTTPContract): void;
|
|
12
|
+
mountOpenAPISpec(_spec: OpenAPISpec, _at: URLPath): Promise<void>;
|
|
11
13
|
mountStaticDir(_dirPath: DirPath): Promise<void>;
|
|
12
14
|
start(): Promise<void>;
|
|
13
15
|
stop(): Promise<void>;
|
|
@@ -41,7 +41,7 @@ let NodeCoreCLIManager = class NodeCoreCLIManager {
|
|
|
41
41
|
uc.def.ext?.cmd?.mountAt ?? ucMountingPoint(uc),
|
|
42
42
|
uc,
|
|
43
43
|
]));
|
|
44
|
-
if (!command
|
|
44
|
+
if (!command?.trim() || command === '--help') {
|
|
45
45
|
showHelp(ucs, this.wordingManager);
|
|
46
46
|
}
|
|
47
47
|
else if (command === '--version') {
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { type Express } from 'express';
|
|
2
2
|
import type { AppManifest } from '../../app/index.js';
|
|
3
|
-
import type { DirPath } from '../../dt/index.js';
|
|
3
|
+
import type { DirPath, URLPath } from '../../dt/index.js';
|
|
4
4
|
import type { Configurable, EnvironmentManager, Logger, LoggerSettings, SettingsManager } from '../../std/index.js';
|
|
5
5
|
import type { UCDef, UCHTTPContract, UCInput, UCManager, UCOPIBase } from '../../uc/index.js';
|
|
6
|
+
import type { OpenAPISpec } from '../lib/openapi/types.js';
|
|
6
7
|
import { CustomerFacingErrorBuilder } from '../lib/server/CustomerFacingErrorBuilder.js';
|
|
7
8
|
import { EntrypointsBuilder } from '../lib/server/EntrypointsBuilder.js';
|
|
8
9
|
import type { ServerManager, ServerManagerSettings } from '../lib/server/ServerManager.js';
|
|
9
10
|
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
10
11
|
import { ServerSSLCertLoader } from '../lib/server/ServerSSLCertLoader.js';
|
|
12
|
+
import { CORSMiddlewareBuilder } from '../lib/server-express/CORSMiddlewareBuilder.js';
|
|
11
13
|
import { HelmetMiddlewareBuilder } from '../lib/server-express/HelmetMiddlewareBuilder.js';
|
|
12
14
|
import type { ListenSettings, StopSettings } from '../lib/server-node/types.js';
|
|
13
15
|
type S = ListenSettings & Pick<LoggerSettings, 'logger_level'> & Pick<ServerManagerSettings, 'server_tmp_path'> & StopSettings;
|
|
14
16
|
export declare class NodeExpressServerManager implements Configurable<S>, ServerManager {
|
|
17
|
+
private corsMiddlewareBuilder;
|
|
15
18
|
private customerFacingErrorBuilder;
|
|
16
19
|
private entrypointsBuilder;
|
|
17
20
|
protected environmentManager: EnvironmentManager;
|
|
18
|
-
private
|
|
21
|
+
private helmetMiddlewareBuilder;
|
|
19
22
|
protected logger: Logger;
|
|
20
23
|
private serverRequestHandler;
|
|
21
24
|
private serverSSLCertLoader;
|
|
@@ -23,7 +26,7 @@ export declare class NodeExpressServerManager implements Configurable<S>, Server
|
|
|
23
26
|
private ucManager;
|
|
24
27
|
protected runtime: Express;
|
|
25
28
|
private server;
|
|
26
|
-
constructor(customerFacingErrorBuilder: CustomerFacingErrorBuilder, entrypointsBuilder: EntrypointsBuilder, environmentManager: EnvironmentManager,
|
|
29
|
+
constructor(corsMiddlewareBuilder: CORSMiddlewareBuilder, customerFacingErrorBuilder: CustomerFacingErrorBuilder, entrypointsBuilder: EntrypointsBuilder, environmentManager: EnvironmentManager, helmetMiddlewareBuilder: HelmetMiddlewareBuilder, logger: Logger, serverRequestHandler: ServerRequestHandler, serverSSLCertLoader: ServerSSLCertLoader, settingsManager: SettingsManager<S>, ucManager: UCManager);
|
|
27
30
|
s(): S;
|
|
28
31
|
getRuntime(): Express;
|
|
29
32
|
overrideUCManager(ucManager: UCManager): void;
|
|
@@ -31,6 +34,7 @@ export declare class NodeExpressServerManager implements Configurable<S>, Server
|
|
|
31
34
|
initSync(): void;
|
|
32
35
|
mount<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): Promise<void>;
|
|
33
36
|
mountSync<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): void;
|
|
37
|
+
mountOpenAPISpec(spec: OpenAPISpec, at: URLPath): Promise<void>;
|
|
34
38
|
mountStaticDir(dirPath: DirPath): Promise<void>;
|
|
35
39
|
start(): Promise<void>;
|
|
36
40
|
stop(): Promise<void>;
|
|
@@ -19,14 +19,16 @@ import { CustomerFacingErrorBuilder } from '../lib/server/CustomerFacingErrorBui
|
|
|
19
19
|
import { EntrypointsBuilder } from '../lib/server/EntrypointsBuilder.js';
|
|
20
20
|
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
21
21
|
import { ServerSSLCertLoader } from '../lib/server/ServerSSLCertLoader.js';
|
|
22
|
+
import { CORSMiddlewareBuilder } from '../lib/server-express/CORSMiddlewareBuilder.js';
|
|
22
23
|
import { buildHandler, init, mountHandler, postInit, } from '../lib/server-express/funcs.js';
|
|
23
24
|
import { HelmetMiddlewareBuilder } from '../lib/server-express/HelmetMiddlewareBuilder.js';
|
|
24
25
|
import { listen, stop } from '../lib/server-node/funcs.js';
|
|
25
26
|
let NodeExpressServerManager = class NodeExpressServerManager {
|
|
27
|
+
corsMiddlewareBuilder;
|
|
26
28
|
customerFacingErrorBuilder;
|
|
27
29
|
entrypointsBuilder;
|
|
28
30
|
environmentManager;
|
|
29
|
-
|
|
31
|
+
helmetMiddlewareBuilder;
|
|
30
32
|
logger;
|
|
31
33
|
serverRequestHandler;
|
|
32
34
|
serverSSLCertLoader;
|
|
@@ -34,11 +36,12 @@ let NodeExpressServerManager = class NodeExpressServerManager {
|
|
|
34
36
|
ucManager;
|
|
35
37
|
runtime;
|
|
36
38
|
server;
|
|
37
|
-
constructor(customerFacingErrorBuilder, entrypointsBuilder, environmentManager,
|
|
39
|
+
constructor(corsMiddlewareBuilder, customerFacingErrorBuilder, entrypointsBuilder, environmentManager, helmetMiddlewareBuilder, logger, serverRequestHandler, serverSSLCertLoader, settingsManager, ucManager) {
|
|
40
|
+
this.corsMiddlewareBuilder = corsMiddlewareBuilder;
|
|
38
41
|
this.customerFacingErrorBuilder = customerFacingErrorBuilder;
|
|
39
42
|
this.entrypointsBuilder = entrypointsBuilder;
|
|
40
43
|
this.environmentManager = environmentManager;
|
|
41
|
-
this.
|
|
44
|
+
this.helmetMiddlewareBuilder = helmetMiddlewareBuilder;
|
|
42
45
|
this.logger = logger;
|
|
43
46
|
this.serverRequestHandler = serverRequestHandler;
|
|
44
47
|
this.serverSSLCertLoader = serverSSLCertLoader;
|
|
@@ -64,7 +67,7 @@ let NodeExpressServerManager = class NodeExpressServerManager {
|
|
|
64
67
|
this.ucManager = ucManager;
|
|
65
68
|
}
|
|
66
69
|
async init() {
|
|
67
|
-
this.runtime = init(this.
|
|
70
|
+
this.runtime = init(this.corsMiddlewareBuilder, this.helmetMiddlewareBuilder, this.s().logger_level, this.s().server_tmp_path);
|
|
68
71
|
await this.createServer();
|
|
69
72
|
}
|
|
70
73
|
initSync() {
|
|
@@ -76,6 +79,11 @@ let NodeExpressServerManager = class NodeExpressServerManager {
|
|
|
76
79
|
mountSync(appManifest, ucd, contract) {
|
|
77
80
|
this.mountCommon(appManifest, ucd, contract);
|
|
78
81
|
}
|
|
82
|
+
async mountOpenAPISpec(spec, at) {
|
|
83
|
+
this.runtime.get(at, (_req, res) => {
|
|
84
|
+
res.send(spec);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
79
87
|
async mountStaticDir(dirPath) {
|
|
80
88
|
this.runtime.use(express.static(dirPath));
|
|
81
89
|
}
|
|
@@ -105,16 +113,18 @@ let NodeExpressServerManager = class NodeExpressServerManager {
|
|
|
105
113
|
};
|
|
106
114
|
NodeExpressServerManager = __decorate([
|
|
107
115
|
injectable(),
|
|
108
|
-
__param(0, inject(
|
|
109
|
-
__param(1, inject(
|
|
110
|
-
__param(2, inject(
|
|
111
|
-
__param(3, inject(
|
|
112
|
-
__param(4, inject(
|
|
113
|
-
__param(5, inject(
|
|
114
|
-
__param(6, inject(
|
|
115
|
-
__param(7, inject(
|
|
116
|
-
__param(8, inject('
|
|
117
|
-
|
|
116
|
+
__param(0, inject(CORSMiddlewareBuilder)),
|
|
117
|
+
__param(1, inject(CustomerFacingErrorBuilder)),
|
|
118
|
+
__param(2, inject(EntrypointsBuilder)),
|
|
119
|
+
__param(3, inject('EnvironmentManager')),
|
|
120
|
+
__param(4, inject(HelmetMiddlewareBuilder)),
|
|
121
|
+
__param(5, inject('Logger')),
|
|
122
|
+
__param(6, inject(ServerRequestHandler)),
|
|
123
|
+
__param(7, inject(ServerSSLCertLoader)),
|
|
124
|
+
__param(8, inject('SettingsManager')),
|
|
125
|
+
__param(9, inject('UCManager')),
|
|
126
|
+
__metadata("design:paramtypes", [CORSMiddlewareBuilder,
|
|
127
|
+
CustomerFacingErrorBuilder,
|
|
118
128
|
EntrypointsBuilder, Object, HelmetMiddlewareBuilder, Object, ServerRequestHandler,
|
|
119
129
|
ServerSSLCertLoader, Object, Object])
|
|
120
130
|
], NodeExpressServerManager);
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import type { Hono } from 'hono';
|
|
2
2
|
import type { AppManifest } from '../../app/index.js';
|
|
3
|
-
import type { DirPath } from '../../dt/index.js';
|
|
3
|
+
import type { DirPath, URLPath } from '../../dt/index.js';
|
|
4
4
|
import type { Configurable, EnvironmentManager, Logger, SettingsManager } from '../../std/index.js';
|
|
5
5
|
import type { UCDef, UCHTTPContract, UCInput, UCManager, UCOPIBase } from '../../uc/index.js';
|
|
6
|
+
import type { OpenAPISpec } from '../lib/openapi/types.js';
|
|
6
7
|
import { CustomerFacingErrorBuilder } from '../lib/server/CustomerFacingErrorBuilder.js';
|
|
7
8
|
import { EntrypointsBuilder } from '../lib/server/EntrypointsBuilder.js';
|
|
8
9
|
import type { ServerManager } from '../lib/server/ServerManager.js';
|
|
9
10
|
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
10
11
|
import { ServerSSLCertLoader } from '../lib/server/ServerSSLCertLoader.js';
|
|
12
|
+
import { CORSMiddlewareBuilder } from '../lib/server-hono/CORSMiddlewareBuilder.js';
|
|
11
13
|
import type { ListenSettings, StopSettings } from '../lib/server-node/types.js';
|
|
12
14
|
type S = ListenSettings & StopSettings;
|
|
13
15
|
export declare class NodeHonoServerManager implements Configurable<S>, ServerManager {
|
|
16
|
+
private corsMiddlewareBuilder;
|
|
14
17
|
private customerFacingErrorBuilder;
|
|
15
18
|
private entrypointsBuilder;
|
|
16
19
|
protected environmentManager: EnvironmentManager;
|
|
@@ -21,7 +24,7 @@ export declare class NodeHonoServerManager implements Configurable<S>, ServerMan
|
|
|
21
24
|
private ucManager;
|
|
22
25
|
protected runtime: Hono;
|
|
23
26
|
private server;
|
|
24
|
-
constructor(customerFacingErrorBuilder: CustomerFacingErrorBuilder, entrypointsBuilder: EntrypointsBuilder, environmentManager: EnvironmentManager, logger: Logger, serverRequestHandler: ServerRequestHandler, serverSSLCertLoader: ServerSSLCertLoader, settingsManager: SettingsManager<S>, ucManager: UCManager);
|
|
27
|
+
constructor(corsMiddlewareBuilder: CORSMiddlewareBuilder, customerFacingErrorBuilder: CustomerFacingErrorBuilder, entrypointsBuilder: EntrypointsBuilder, environmentManager: EnvironmentManager, logger: Logger, serverRequestHandler: ServerRequestHandler, serverSSLCertLoader: ServerSSLCertLoader, settingsManager: SettingsManager<S>, ucManager: UCManager);
|
|
25
28
|
s(): S;
|
|
26
29
|
getRuntime(): Hono;
|
|
27
30
|
overrideUCManager(ucManager: UCManager): void;
|
|
@@ -29,6 +32,7 @@ export declare class NodeHonoServerManager implements Configurable<S>, ServerMan
|
|
|
29
32
|
initSync(): void;
|
|
30
33
|
mount<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): Promise<void>;
|
|
31
34
|
mountSync<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): void;
|
|
35
|
+
mountOpenAPISpec(spec: OpenAPISpec, at: URLPath): Promise<void>;
|
|
32
36
|
mountStaticDir(dirPath: DirPath): Promise<void>;
|
|
33
37
|
start(): Promise<void>;
|
|
34
38
|
stop(): Promise<void>;
|
|
@@ -20,9 +20,11 @@ import { CustomerFacingErrorBuilder } from '../lib/server/CustomerFacingErrorBui
|
|
|
20
20
|
import { EntrypointsBuilder } from '../lib/server/EntrypointsBuilder.js';
|
|
21
21
|
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
22
22
|
import { ServerSSLCertLoader } from '../lib/server/ServerSSLCertLoader.js';
|
|
23
|
+
import { CORSMiddlewareBuilder } from '../lib/server-hono/CORSMiddlewareBuilder.js';
|
|
23
24
|
import { buildHandler, init, mountHandler } from '../lib/server-hono/funcs.js';
|
|
24
25
|
import { listen, stop } from '../lib/server-node/funcs.js';
|
|
25
26
|
let NodeHonoServerManager = class NodeHonoServerManager {
|
|
27
|
+
corsMiddlewareBuilder;
|
|
26
28
|
customerFacingErrorBuilder;
|
|
27
29
|
entrypointsBuilder;
|
|
28
30
|
environmentManager;
|
|
@@ -33,7 +35,8 @@ let NodeHonoServerManager = class NodeHonoServerManager {
|
|
|
33
35
|
ucManager;
|
|
34
36
|
runtime;
|
|
35
37
|
server;
|
|
36
|
-
constructor(customerFacingErrorBuilder, entrypointsBuilder, environmentManager, logger, serverRequestHandler, serverSSLCertLoader, settingsManager, ucManager) {
|
|
38
|
+
constructor(corsMiddlewareBuilder, customerFacingErrorBuilder, entrypointsBuilder, environmentManager, logger, serverRequestHandler, serverSSLCertLoader, settingsManager, ucManager) {
|
|
39
|
+
this.corsMiddlewareBuilder = corsMiddlewareBuilder;
|
|
37
40
|
this.customerFacingErrorBuilder = customerFacingErrorBuilder;
|
|
38
41
|
this.entrypointsBuilder = entrypointsBuilder;
|
|
39
42
|
this.environmentManager = environmentManager;
|
|
@@ -60,7 +63,7 @@ let NodeHonoServerManager = class NodeHonoServerManager {
|
|
|
60
63
|
this.ucManager = ucManager;
|
|
61
64
|
}
|
|
62
65
|
async init() {
|
|
63
|
-
this.runtime = init(this.customerFacingErrorBuilder);
|
|
66
|
+
this.runtime = init(this.corsMiddlewareBuilder, this.customerFacingErrorBuilder);
|
|
64
67
|
await this.createServer();
|
|
65
68
|
}
|
|
66
69
|
initSync() {
|
|
@@ -72,6 +75,11 @@ let NodeHonoServerManager = class NodeHonoServerManager {
|
|
|
72
75
|
mountSync(appManifest, ucd, contract) {
|
|
73
76
|
this.mountCommon(appManifest, ucd, contract);
|
|
74
77
|
}
|
|
78
|
+
async mountOpenAPISpec(spec, at) {
|
|
79
|
+
this.runtime.get(at, (c) => {
|
|
80
|
+
return c.json(spec);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
75
83
|
async mountStaticDir(dirPath) {
|
|
76
84
|
this.runtime.use(serveStatic({ root: dirPath }));
|
|
77
85
|
}
|
|
@@ -109,15 +117,17 @@ let NodeHonoServerManager = class NodeHonoServerManager {
|
|
|
109
117
|
};
|
|
110
118
|
NodeHonoServerManager = __decorate([
|
|
111
119
|
injectable(),
|
|
112
|
-
__param(0, inject(
|
|
113
|
-
__param(1, inject(
|
|
114
|
-
__param(2, inject(
|
|
115
|
-
__param(3, inject('
|
|
116
|
-
__param(4, inject(
|
|
117
|
-
__param(5, inject(
|
|
118
|
-
__param(6, inject(
|
|
119
|
-
__param(7, inject('
|
|
120
|
-
|
|
120
|
+
__param(0, inject(CORSMiddlewareBuilder)),
|
|
121
|
+
__param(1, inject(CustomerFacingErrorBuilder)),
|
|
122
|
+
__param(2, inject(EntrypointsBuilder)),
|
|
123
|
+
__param(3, inject('EnvironmentManager')),
|
|
124
|
+
__param(4, inject('Logger')),
|
|
125
|
+
__param(5, inject(ServerRequestHandler)),
|
|
126
|
+
__param(6, inject(ServerSSLCertLoader)),
|
|
127
|
+
__param(7, inject('SettingsManager')),
|
|
128
|
+
__param(8, inject('UCManager')),
|
|
129
|
+
__metadata("design:paramtypes", [CORSMiddlewareBuilder,
|
|
130
|
+
CustomerFacingErrorBuilder,
|
|
121
131
|
EntrypointsBuilder, Object, Object, ServerRequestHandler,
|
|
122
132
|
ServerSSLCertLoader, Object, Object])
|
|
123
133
|
], NodeHonoServerManager);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import type { AppManifest } from '../../app/index.js';
|
|
3
|
-
import type { DirPath } from '../../dt/index.js';
|
|
3
|
+
import type { DirPath, URLPath } from '../../dt/index.js';
|
|
4
4
|
import { WordingManager } from '../../i18n/index.js';
|
|
5
5
|
import type { ProductManifest } from '../../product/index.js';
|
|
6
6
|
import type { Configurable, LoggerSettings, SettingsManager } from '../../std/index.js';
|
|
7
7
|
import { UCBuilder, type UCDef, type UCHTTPContract, type UCInput, type UCManager, type UCOPIBase } from '../../uc/index.js';
|
|
8
|
+
import type { OpenAPISpec } from '../lib/openapi/types.js';
|
|
8
9
|
import type { ServerManager } from '../lib/server/ServerManager.js';
|
|
9
10
|
type S = Pick<LoggerSettings, 'logger_level'>;
|
|
10
11
|
/**
|
|
@@ -34,6 +35,7 @@ export declare class NodeLocalStdioMCPServerManager implements Configurable<S>,
|
|
|
34
35
|
initSync(): void;
|
|
35
36
|
mount<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): Promise<void>;
|
|
36
37
|
mountSync<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>(appManifest: AppManifest, ucd: UCDef<I, OPI0, OPI1>, contract: UCHTTPContract): void;
|
|
38
|
+
mountOpenAPISpec(_spec: OpenAPISpec, _at: URLPath): Promise<void>;
|
|
37
39
|
mountStaticDir(_dirPath: DirPath): Promise<void>;
|
|
38
40
|
start(): Promise<void>;
|
|
39
41
|
stop(): Promise<void>;
|
|
@@ -17,6 +17,7 @@ import { inject, injectable } from 'inversify';
|
|
|
17
17
|
import { NotAvailableError } from '../../error/index.js';
|
|
18
18
|
import { WordingManager } from '../../i18n/index.js';
|
|
19
19
|
import { UCBuilder, ucifIsMandatory, ucMountingPoint, } from '../../uc/index.js';
|
|
20
|
+
import { DEFAULT_VERSION } from '../lib/shared.js';
|
|
20
21
|
import { propertyType, resError, resObj } from './funcs.js';
|
|
21
22
|
/**
|
|
22
23
|
* A simple MCP Server implementation
|
|
@@ -67,6 +68,9 @@ let NodeLocalStdioMCPServerManager = class NodeLocalStdioMCPServerManager {
|
|
|
67
68
|
mountSync(appManifest, ucd, contract) {
|
|
68
69
|
this.mountCommon(appManifest, ucd, contract);
|
|
69
70
|
}
|
|
71
|
+
async mountOpenAPISpec(_spec, _at) {
|
|
72
|
+
// Nothing to do
|
|
73
|
+
}
|
|
70
74
|
async mountStaticDir(_dirPath) {
|
|
71
75
|
throw new NotAvailableError('mountStaticDir');
|
|
72
76
|
}
|
|
@@ -90,18 +94,18 @@ let NodeLocalStdioMCPServerManager = class NodeLocalStdioMCPServerManager {
|
|
|
90
94
|
const res = {
|
|
91
95
|
type: 'object',
|
|
92
96
|
};
|
|
93
|
-
if (uc.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
if (!uc.hasInput()) {
|
|
98
|
+
return res;
|
|
99
|
+
}
|
|
100
|
+
res.properties = {};
|
|
101
|
+
for (const f of uc.inputFields) {
|
|
102
|
+
const { def, key } = f;
|
|
103
|
+
const { desc } = this.wordingManager.ucif(f);
|
|
104
|
+
res.properties[key] = {
|
|
105
|
+
...propertyType(def),
|
|
106
|
+
description: desc,
|
|
107
|
+
required: ucifIsMandatory(def),
|
|
108
|
+
};
|
|
105
109
|
}
|
|
106
110
|
return res;
|
|
107
111
|
}
|
|
@@ -140,9 +144,10 @@ let NodeLocalStdioMCPServerManager = class NodeLocalStdioMCPServerManager {
|
|
|
140
144
|
}
|
|
141
145
|
}
|
|
142
146
|
initCommon() {
|
|
147
|
+
const { name, version } = this.productManifest;
|
|
143
148
|
this.runtime = new Server({
|
|
144
|
-
name:
|
|
145
|
-
version:
|
|
149
|
+
name: name,
|
|
150
|
+
version: version ?? DEFAULT_VERSION,
|
|
146
151
|
}, {
|
|
147
152
|
capabilities: {
|
|
148
153
|
tools: {},
|
|
@@ -12,8 +12,4 @@ export type PropertyArrayType<T extends PropertyPrimitiveType> = {
|
|
|
12
12
|
export type PropertyType<T extends PropertyPrimitiveType = PropertyPrimitiveType> = {
|
|
13
13
|
type: T;
|
|
14
14
|
} | PropertyArrayType<T>;
|
|
15
|
-
export type Property<T extends PropertyPrimitiveType = PropertyPrimitiveType> = PropertyType<T> & {
|
|
16
|
-
description: string | null;
|
|
17
|
-
required: boolean;
|
|
18
|
-
};
|
|
19
15
|
export type Tool = ListToolsResult['tools'][0];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type UCInput, type UCOPIBase } from '../../uc/index.js';
|
|
3
3
|
import type { UCFormProps } from '../lib/react/form.js';
|
|
4
4
|
export declare function UCForm<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined>({ clearAfterExec, disabled, execState, onSubmit: onSubmitBase, uc, }: UCFormProps<I, OPI0, OPI1>): ReactElement;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useRef } from 'react';
|
|
3
|
+
import { UCExecRes } from '../../uc/index.js';
|
|
3
4
|
import { useStyleContext } from '../lib/react/StyleContextProvider.js';
|
|
4
5
|
import { UCFormField } from './UCFormField.js';
|
|
5
6
|
import { UCFormSubmitControl } from './UCFormSubmitControl.js';
|
|
@@ -8,8 +9,8 @@ export function UCForm({ clearAfterExec, disabled, execState, onSubmit: onSubmit
|
|
|
8
9
|
const formRef = useRef(null);
|
|
9
10
|
const onSubmit = async (e) => {
|
|
10
11
|
e.preventDefault();
|
|
11
|
-
const
|
|
12
|
-
if (
|
|
12
|
+
const res = await onSubmitBase();
|
|
13
|
+
if (res === UCExecRes.SUCCEEDED && clearAfterExec) {
|
|
13
14
|
formRef.current?.reset();
|
|
14
15
|
}
|
|
15
16
|
};
|
|
@@ -16,7 +16,7 @@ const ERR_I18N_LABEL_NO_DOT = (key) => `The i18n key '${key}' is a label, thus i
|
|
|
16
16
|
const ERR_I18N_MISSING_TRANS = (key, lang) => `The i18n key '${key}' is missing for lang '${lang}'`;
|
|
17
17
|
let AppI18nChecker = class AppI18nChecker {
|
|
18
18
|
static { AppI18nChecker_1 = this; }
|
|
19
|
-
static I18N_KEY_PATTERN = /(dt_([A-Z][A-Za-z0-9]+)_([A-Za-z0-9]+)_(desc|label))|(err_([A-Za-z_]+))|(uc_([A-Z][A-Za-z0-9]+)_(client_confirm_(cancel|confirm|message|title)|desc|label|i_submit_(changing|idle|initializing|submitting)|op_(0|1)_(empty|label)))|(ucif_([a-z]([A-Za-z0-9]+)?)_(desc|label))|(ucof_([a-z]([A-Za-z0-9]+)?)_(desc|label))|(validation_([a-z]+)_([A-Z][A-Za-z0-9]+))/;
|
|
19
|
+
static I18N_KEY_PATTERN = /(dt_([A-Z][A-Za-z0-9]+)_constr_format)|(dt_([A-Z][A-Za-z0-9]+)_([A-Za-z0-9]+)_(desc|label))|(err_([A-Za-z_]+))|(uc_([A-Z][A-Za-z0-9]+)_(client_confirm_(cancel|confirm|message|title)|desc|label|i_submit_(changing|idle|initializing|submitting)|op_(0|1)_(empty|label)))|(ucif_([a-z]([A-Za-z0-9]+)?)_(desc|label))|(ucof_([a-z]([A-Za-z0-9]+)?)_(desc|label))|(validation_([a-z]+)_([A-Z][A-Za-z0-9]+))/;
|
|
20
20
|
output;
|
|
21
21
|
constructor() {
|
|
22
22
|
this.output = { errors: [] };
|
|
@@ -41,7 +41,9 @@ let AppI18nChecker = class AppI18nChecker {
|
|
|
41
41
|
if (!matches) {
|
|
42
42
|
this.output.errors.push(ERR_I18N_KEY_INVALID(key));
|
|
43
43
|
}
|
|
44
|
-
if (key.endsWith('_label') &&
|
|
44
|
+
if (key.endsWith('_label') &&
|
|
45
|
+
translation.endsWith('.') &&
|
|
46
|
+
!translation.endsWith('...')) {
|
|
45
47
|
this.output.errors.push(ERR_I18N_LABEL_NO_DOT(key));
|
|
46
48
|
}
|
|
47
49
|
}
|
package/dist/esm/uc/UC.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export declare class UC<I extends UCInput | undefined = undefined, OPI0 extends
|
|
|
21
21
|
clear(): void;
|
|
22
22
|
clearSensitiveInputFields(): void;
|
|
23
23
|
fill(input: UCInputPartial<I>): this;
|
|
24
|
+
hasInput(): boolean;
|
|
24
25
|
hasInputField(key: UCFieldKey): boolean;
|
|
25
26
|
hasMediaInInput(): boolean;
|
|
26
27
|
hasOutputParts(): boolean;
|
|
@@ -29,6 +30,7 @@ export declare class UC<I extends UCInput | undefined = undefined, OPI0 extends
|
|
|
29
30
|
inputFieldsOrdered(): UCInputField<any>[];
|
|
30
31
|
inputFieldsInsensitive(): UCInputField<any>[];
|
|
31
32
|
inputFieldsSensitive(): UCInputField<any>[];
|
|
33
|
+
inputFieldsRepeatable(): UCInputField<any>[];
|
|
32
34
|
needsInputFilling(): boolean;
|
|
33
35
|
needsOutputDisplay(): boolean;
|
|
34
36
|
operatesOnAggregate(): boolean;
|
package/dist/esm/uc/UC.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TFile, Validation } from '../dt/index.js';
|
|
2
2
|
import { isBlank } from '../utils/index.js';
|
|
3
|
-
import { ucifIsMandatory, ucifIsSensitive, ucifMustBeFilledManually, } from './input-field.js';
|
|
3
|
+
import { ucifIsMandatory, ucifIsSensitive, ucifMustBeFilledManually, ucifRepeatability, } from './input-field.js';
|
|
4
4
|
import { AggregateInputDef } from './io/input/AggregateInput.js';
|
|
5
5
|
import { ListInputDef } from './io/input/ListInput.js';
|
|
6
6
|
import { UCInputField } from './UCInputField.js';
|
|
@@ -44,6 +44,9 @@ export class UC {
|
|
|
44
44
|
}
|
|
45
45
|
return this;
|
|
46
46
|
}
|
|
47
|
+
hasInput() {
|
|
48
|
+
return this.inputFields.length > 0;
|
|
49
|
+
}
|
|
47
50
|
hasInputField(key) {
|
|
48
51
|
return this.inputFields.find((f) => f.key === key) !== undefined;
|
|
49
52
|
}
|
|
@@ -104,6 +107,18 @@ export class UC {
|
|
|
104
107
|
inputFieldsSensitive() {
|
|
105
108
|
return this.inputFields.filter((f) => ucifIsSensitive(f.def));
|
|
106
109
|
}
|
|
110
|
+
// biome-ignore lint/suspicious/noExplicitAny: can be anything
|
|
111
|
+
inputFieldsRepeatable() {
|
|
112
|
+
const res = [];
|
|
113
|
+
for (const f of this.inputFields) {
|
|
114
|
+
const [isRepeatable] = ucifRepeatability(f.def);
|
|
115
|
+
if (!isRepeatable) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
res.push(f);
|
|
119
|
+
}
|
|
120
|
+
return res;
|
|
121
|
+
}
|
|
107
122
|
needsInputFilling() {
|
|
108
123
|
const fields = this.inputFields;
|
|
109
124
|
if (fields.length === 0) {
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { AppName } from '../app/index.js';
|
|
2
2
|
import type { UIntQuantity, UUID } from '../dt/index.js';
|
|
3
|
-
import type { Clearable, Initializable, StringKeys } from '../utils/index.js';
|
|
3
|
+
import type { Clearable, EnumOf, Initializable, StringKeys } from '../utils/index.js';
|
|
4
4
|
import type { UCData } from './data.js';
|
|
5
5
|
import type { UCExecMode } from './exec.js';
|
|
6
6
|
import type { UCInput } from './input.js';
|
|
7
7
|
import type { UCName } from './metadata.js';
|
|
8
8
|
export type UCDataStoreDatasetName = string;
|
|
9
|
+
export declare const UCDataStoreMode: {
|
|
10
|
+
readonly NONE: "NONE";
|
|
11
|
+
readonly READ: "READ";
|
|
12
|
+
readonly READ_WRITE: "READ_WRITE";
|
|
13
|
+
readonly WRITE: "WRITE";
|
|
14
|
+
};
|
|
15
|
+
export type UCDataStoreMode = EnumOf<typeof UCDataStoreMode>;
|
|
9
16
|
interface UCDataStoreQueryOpts {
|
|
10
17
|
}
|
|
11
18
|
export type UCDataStoreReadFilter<T> = T | T[];
|
|
@@ -67,4 +74,5 @@ export interface UCDataStore extends Clearable, Initializable {
|
|
|
67
74
|
writeBulk<I extends UCInput | undefined = undefined, D extends UCData | null = null>(records: UCDataStoreRecord<I, D>[], opts?: UCDataStoreWriteOpts): Promise<void>;
|
|
68
75
|
writeProjection<T extends object>(name: string, data: T, opts?: UCDataStoreWriteProjectionOpts): Promise<void>;
|
|
69
76
|
}
|
|
77
|
+
export declare function assertCan(op: 'read' | 'write', mode: UCDataStoreMode): void;
|
|
70
78
|
export {};
|
|
@@ -1 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
import { UnavailableError } from '../error/index.js';
|
|
2
|
+
export const UCDataStoreMode = {
|
|
3
|
+
NONE: 'NONE',
|
|
4
|
+
READ: 'READ',
|
|
5
|
+
READ_WRITE: 'READ_WRITE',
|
|
6
|
+
WRITE: 'WRITE',
|
|
7
|
+
};
|
|
8
|
+
export function assertCan(op, mode) {
|
|
9
|
+
switch (mode) {
|
|
10
|
+
case 'NONE':
|
|
11
|
+
if (op === 'read') {
|
|
12
|
+
throw new UnavailableError('err_uc_data_store_not_readable');
|
|
13
|
+
}
|
|
14
|
+
if (op === 'write') {
|
|
15
|
+
throw new UnavailableError('err_uc_data_store_not_writable');
|
|
16
|
+
}
|
|
17
|
+
break;
|
|
18
|
+
case 'READ':
|
|
19
|
+
if (op === 'write') {
|
|
20
|
+
throw new UnavailableError('err_uc_data_store_not_writable');
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
case 'READ_WRITE':
|
|
24
|
+
break;
|
|
25
|
+
case 'WRITE':
|
|
26
|
+
if (op === 'read') {
|
|
27
|
+
throw new UnavailableError('err_uc_data_store_not_readable');
|
|
28
|
+
}
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
mode;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { D1Database } from '@cloudflare/workers-types';
|
|
2
2
|
import type { Configurable, SettingsManager } from '../../std/index.js';
|
|
3
3
|
import type { UCData } from '../data.js';
|
|
4
|
-
import type
|
|
4
|
+
import { type UCDataStore, type UCDataStoreReadOpts, type UCDataStoreReadProjectionOpts, type UCDataStoreReadResponse, type UCDataStoreRecord, type UCDataStoreTx, type UCDataStoreWriteOpts, type UCDataStoreWriteProjectionOpts, type UCDataStoreWriteProjectionSpecificBinding } from '../data-store.js';
|
|
5
5
|
import type { UCInput } from '../input.js';
|
|
6
6
|
import type { UCSettings } from '../settings.js';
|
|
7
|
-
type S = Pick<UCSettings, 'uc_data_store_ucs_dataset_name'>;
|
|
7
|
+
type S = Pick<UCSettings, 'uc_data_store_mode' | 'uc_data_store_ucs_dataset_name'>;
|
|
8
8
|
export declare const ROW_COLS: (keyof UCDataStoreRecord)[];
|
|
9
9
|
/**
|
|
10
10
|
* @alpha This implementation is still a WIP and needs improvement
|
|
@@ -12,6 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { inject, injectable } from 'inversify';
|
|
14
14
|
import { NotAvailableError, NotImplementedError } from '../../error/index.js';
|
|
15
|
+
import { assertCan, } from '../data-store.js';
|
|
15
16
|
export const ROW_COLS = [
|
|
16
17
|
'aggregateId',
|
|
17
18
|
'appName',
|
|
@@ -38,6 +39,7 @@ let CloudflareD1UCDataStore = class CloudflareD1UCDataStore {
|
|
|
38
39
|
}
|
|
39
40
|
s() {
|
|
40
41
|
return {
|
|
42
|
+
uc_data_store_mode: this.settingsManager.get()('uc_data_store_mode'),
|
|
41
43
|
uc_data_store_ucs_dataset_name: this.settingsManager.get()('uc_data_store_ucs_dataset_name'),
|
|
42
44
|
};
|
|
43
45
|
}
|
|
@@ -92,6 +94,7 @@ CREATE INDEX IF NOT EXISTS uc_executions_user_id_index ON uc_executions (userId)
|
|
|
92
94
|
}
|
|
93
95
|
async read(opts) {
|
|
94
96
|
this.assertClient();
|
|
97
|
+
assertCan('read', this.s().uc_data_store_mode);
|
|
95
98
|
// TODO : Consider using a query builder (or Google's pipe operator ?) when it gets too complicated or dangerous
|
|
96
99
|
const query = [
|
|
97
100
|
`select * from ${this.s().uc_data_store_ucs_dataset_name}`,
|
|
@@ -131,6 +134,7 @@ CREATE INDEX IF NOT EXISTS uc_executions_user_id_index ON uc_executions (userId)
|
|
|
131
134
|
};
|
|
132
135
|
}
|
|
133
136
|
async readProjection(_name, _opts) {
|
|
137
|
+
assertCan('read', this.s().uc_data_store_mode);
|
|
134
138
|
throw new NotImplementedError('readProjection');
|
|
135
139
|
}
|
|
136
140
|
async startTx() {
|
|
@@ -144,6 +148,7 @@ CREATE INDEX IF NOT EXISTS uc_executions_user_id_index ON uc_executions (userId)
|
|
|
144
148
|
}
|
|
145
149
|
async write(record, _opts) {
|
|
146
150
|
this.assertClient();
|
|
151
|
+
assertCan('write', this.s().uc_data_store_mode);
|
|
147
152
|
const cols = ROW_COLS.join(', ');
|
|
148
153
|
const placeholders = ROW_COLS.map(() => '?').join(', ');
|
|
149
154
|
// Use variables only for variables declared here => never for data coming from outside this method !
|
|
@@ -166,9 +171,11 @@ CREATE INDEX IF NOT EXISTS uc_executions_user_id_index ON uc_executions (userId)
|
|
|
166
171
|
.run();
|
|
167
172
|
}
|
|
168
173
|
async writeBulk(_records, _opts) {
|
|
174
|
+
assertCan('write', this.s().uc_data_store_mode);
|
|
169
175
|
throw new NotImplementedError('writeBulk');
|
|
170
176
|
}
|
|
171
177
|
async writeProjection(_name, _data, _opts) {
|
|
178
|
+
assertCan('write', this.s().uc_data_store_mode);
|
|
172
179
|
throw new NotImplementedError('writeProjection');
|
|
173
180
|
}
|
|
174
181
|
setClient(client) {
|