libmodulor 0.18.0 → 0.19.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 +30 -0
- package/README.md +1 -1
- package/dist/esm/apps/Helper/src/lib/project.js +51 -6
- package/dist/esm/error/index.d.ts +3 -0
- package/dist/esm/error/index.js +3 -0
- package/dist/esm/error/internal/NotAvailableError.d.ts +3 -0
- package/dist/esm/error/internal/NotAvailableError.js +7 -0
- package/dist/esm/error/internal/NotCallableError.d.ts +4 -0
- package/dist/esm/error/internal/NotCallableError.js +7 -0
- package/dist/esm/error/internal/NotImplementedError.d.ts +3 -0
- package/dist/esm/error/internal/NotImplementedError.js +7 -0
- package/dist/esm/index.cloudflare-worker-hono.d.ts +5 -0
- package/dist/esm/index.cloudflare-worker-hono.js +5 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.node-express.d.ts +2 -0
- package/dist/esm/index.node-express.js +2 -0
- package/dist/esm/index.node-hono.d.ts +1 -0
- package/dist/esm/index.node-hono.js +1 -0
- package/dist/esm/product/index.d.ts +1 -0
- package/dist/esm/product/index.js +1 -0
- package/dist/esm/product/workers/SyncProductUCsLoader.d.ts +15 -0
- package/dist/esm/product/workers/SyncProductUCsLoader.js +52 -0
- package/dist/esm/std/impl/FakeFSManager.js +2 -1
- package/dist/esm/std/impl/FakeJobManager.d.ts +1 -0
- package/dist/esm/std/impl/FakeJobManager.js +3 -0
- package/dist/esm/std/impl/SimpleMapI18nManager.d.ts +2 -0
- package/dist/esm/std/impl/SimpleMapI18nManager.js +14 -8
- package/dist/esm/std/impl/UCDataStoreExternalResourceManager.js +1 -1
- package/dist/esm/std/impl/WebCryptoManager.js +5 -4
- package/dist/esm/std/impl/WebFSManager.js +15 -14
- package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.d.ts +32 -0
- package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js +87 -0
- package/dist/esm/target/lib/mcp-server/MCPServerBooter.d.ts +3 -2
- package/dist/esm/target/lib/mcp-server/MCPServerBooter.js +10 -6
- package/dist/esm/target/lib/server/ServerBooter.d.ts +1 -0
- package/dist/esm/target/lib/server/ServerBooter.js +41 -44
- package/dist/esm/target/lib/server/ServerManager.d.ts +7 -0
- package/dist/esm/target/lib/server/SyncEdgeWorkerInitializer.d.ts +17 -0
- package/dist/esm/target/lib/server/SyncEdgeWorkerInitializer.js +76 -0
- package/dist/esm/target/lib/server/funcs.d.ts +3 -0
- package/dist/esm/target/lib/server/funcs.js +11 -0
- package/dist/esm/target/lib/server-express/HelmetMiddlewareBuilder.d.ts +12 -0
- package/dist/esm/target/lib/server-express/HelmetMiddlewareBuilder.js +39 -0
- package/dist/esm/target/lib/server-express/funcs.d.ts +15 -0
- package/dist/esm/target/lib/server-express/funcs.js +103 -0
- package/dist/esm/target/lib/server-hono/funcs.d.ts +10 -0
- package/dist/esm/target/lib/server-hono/funcs.js +72 -0
- package/dist/esm/target/lib/server-node/funcs.d.ts +5 -0
- package/dist/esm/target/lib/server-node/funcs.js +25 -0
- package/dist/esm/target/lib/server-node/types.d.ts +2 -0
- package/dist/esm/target/nextjs-server/NextJSServerManager.d.ts +2 -0
- package/dist/esm/target/nextjs-server/NextJSServerManager.js +6 -0
- package/dist/esm/target/node-core-cli/NodeCoreCLIManager.d.ts +3 -1
- package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +8 -5
- package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +6 -5
- package/dist/esm/target/node-express-server/NodeExpressServerManager.js +16 -103
- package/dist/esm/target/node-hono-server/NodeHonoServerManager.d.ts +7 -5
- package/dist/esm/target/node-hono-server/NodeHonoServerManager.js +16 -67
- package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.d.ts +5 -1
- package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +42 -29
- package/dist/esm/testing/UCDataStoreTester.js +3 -3
- package/dist/esm/uc/data-store.d.ts +3 -4
- package/dist/esm/uc/helpers/UCOutputBuilder.js +1 -0
- package/dist/esm/uc/impl/CloudflareD1UCDataStore.d.ts +34 -0
- package/dist/esm/uc/impl/CloudflareD1UCDataStore.js +201 -0
- package/dist/esm/uc/impl/InMemoryUCDataStore.d.ts +3 -2
- package/dist/esm/uc/impl/InMemoryUCDataStore.js +17 -14
- package/dist/esm/uc/impl/KnexUCDataStore.d.ts +3 -2
- package/dist/esm/uc/impl/KnexUCDataStore.js +9 -5
- package/dist/esm/uc/impl/SimpleUCManager.d.ts +1 -1
- package/dist/esm/uc/impl/SimpleUCManager.js +2 -2
- package/dist/esm/uc/manager.d.ts +1 -1
- package/dist/esm/uc/settings/consts.js +1 -1
- package/dist/esm/utils/concerns/Initializable.d.ts +1 -0
- package/dist/esm/utils/ioc/bindCloudflareWorker.d.ts +2 -0
- package/dist/esm/utils/ioc/bindCloudflareWorker.js +15 -0
- package/package.json +12 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v0.19.0 (2025-06-20)
|
|
4
|
+
|
|
5
|
+
**BREAKING**
|
|
6
|
+
|
|
7
|
+
- Introduce `Initializable.initSync()` : useful for contexts where async is not available (e.g. Cloudflare workers initialization) => To address, simply add the method in the concerned implementations. You can leave it empty, re-use the same logic as your existing `init()` if its core is not async, or copy it and adapt it to make it sync. If you want to forbid its usage, use `throw new NotCallableError<this>('initSync', 'init', 'async-only');`
|
|
8
|
+
- Introduce `ServerManager.mountSync()` : useful for contexts where async is not available (e.g. Cloudflare workers initialization) => To address, simply add the method in the concerned implementations. You can leave it empty, re-use the same logic as your existing `mount()` if its core is not async, or copy it and adapt it to make it sync. If you want to forbid its usage, use `throw new NotCallableError<this>('mountSync', 'mount', 'async-only');`
|
|
9
|
+
- Change `uc_data_store_ucs_dataset_name` default value from `use-cases` to `uc_executions` : if you relied on the default value and want to keep it, explicitly set `uc_data_store_ucs_dataset_name` in your settings. If you want the new name, rename your existing collection to the new name
|
|
10
|
+
- Make `UCDataStore` compliant with `Initializable` : rename `install` to `init`, add `initSync` and rename `initTx` to `startTx`
|
|
11
|
+
|
|
12
|
+
**Added**
|
|
13
|
+
|
|
14
|
+
- Introduce `target/edge-worker-hono-server` to be able to deploy easily on Cloudflare Workers
|
|
15
|
+
- Introduce `NotAvailableError` for better semantics and more meaningful error messages
|
|
16
|
+
- Introduce `NotImplementedError` for better semantics and more meaningful error messages
|
|
17
|
+
- Init `i18nManager` in `MCPServerBooter` and `NodeCoreCLIManager` : you can remove any initialization made before executing those
|
|
18
|
+
|
|
19
|
+
**Fixed**
|
|
20
|
+
|
|
21
|
+
- Update `UCOutputBuilder` total when removing
|
|
22
|
+
|
|
23
|
+
**Misc**
|
|
24
|
+
|
|
25
|
+
- Extract server targets functions for better reusability
|
|
26
|
+
|
|
27
|
+
## v0.18.1 (2025-06-11)
|
|
28
|
+
|
|
29
|
+
**Misc**
|
|
30
|
+
|
|
31
|
+
- Adjust `CreateProject` biome config
|
|
32
|
+
|
|
3
33
|
## v0.18.0 (2025-06-11)
|
|
4
34
|
|
|
5
35
|
**Misc**
|
package/README.md
CHANGED
|
@@ -8,9 +8,35 @@ src/products/**/rn/.expo
|
|
|
8
8
|
`;
|
|
9
9
|
const BIOME_JSON = `{
|
|
10
10
|
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
|
|
11
|
+
"assist": {
|
|
12
|
+
"actions": {
|
|
13
|
+
"source": {
|
|
14
|
+
"organizeImports": {
|
|
15
|
+
"level": "on",
|
|
16
|
+
"options": {
|
|
17
|
+
"groups": [
|
|
18
|
+
[":NODE:"],
|
|
19
|
+
":BLANK_LINE:",
|
|
20
|
+
[":PACKAGE:"],
|
|
21
|
+
":BLANK_LINE:",
|
|
22
|
+
[":PATH:"]
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"useSortedAttributes": "on",
|
|
27
|
+
"useSortedKeys": "on"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
11
31
|
"files": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
32
|
+
"ignoreUnknown": true,
|
|
33
|
+
"includes": [
|
|
34
|
+
"**",
|
|
35
|
+
"!**/coverage",
|
|
36
|
+
"!**/dist",
|
|
37
|
+
"!**/node_modules",
|
|
38
|
+
"!**/package.json"
|
|
39
|
+
]
|
|
14
40
|
},
|
|
15
41
|
"formatter": {
|
|
16
42
|
"indentStyle": "space",
|
|
@@ -23,6 +49,25 @@ const BIOME_JSON = `{
|
|
|
23
49
|
"parser": {
|
|
24
50
|
"unsafeParameterDecoratorsEnabled": true
|
|
25
51
|
}
|
|
52
|
+
},
|
|
53
|
+
"linter": {
|
|
54
|
+
"rules": {
|
|
55
|
+
"style": {
|
|
56
|
+
"noInferrableTypes": "error",
|
|
57
|
+
"noParameterAssign": "error",
|
|
58
|
+
"noUnusedTemplateLiteral": "error",
|
|
59
|
+
"noUselessElse": "error",
|
|
60
|
+
"useAsConstAssertion": "error",
|
|
61
|
+
"useDefaultParameterLast": "error",
|
|
62
|
+
"useEnumInitializers": "error",
|
|
63
|
+
"useNumberNamespace": "error",
|
|
64
|
+
"useSelfClosingElements": "error",
|
|
65
|
+
"useSingleVarDeclarator": "error"
|
|
66
|
+
},
|
|
67
|
+
"suspicious": {
|
|
68
|
+
"noConsole": "error"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
26
71
|
}
|
|
27
72
|
}
|
|
28
73
|
`;
|
|
@@ -41,9 +86,9 @@ export const PACKAGE_JSON = (name) => `{
|
|
|
41
86
|
"reflect-metadata": "^0.2.2"
|
|
42
87
|
},
|
|
43
88
|
"devDependencies": {
|
|
44
|
-
"@biomejs/biome": "^2.0.0
|
|
45
|
-
"@types/node": "^22.15.
|
|
46
|
-
"@vitest/coverage-v8": "^3.2.
|
|
89
|
+
"@biomejs/biome": "^2.0.0",
|
|
90
|
+
"@types/node": "^22.15.32",
|
|
91
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
47
92
|
"buffer": "^6.0.3",
|
|
48
93
|
"cookie-parser": "^1.4.7",
|
|
49
94
|
"express": "^5.1.0",
|
|
@@ -53,7 +98,7 @@ export const PACKAGE_JSON = (name) => `{
|
|
|
53
98
|
"jose": "^6.0.11",
|
|
54
99
|
"typescript": "^5.8.3",
|
|
55
100
|
"vite": "^6.3.5",
|
|
56
|
-
"vitest": "^3.2.
|
|
101
|
+
"vitest": "^3.2.4"
|
|
57
102
|
}
|
|
58
103
|
}
|
|
59
104
|
`;
|
|
@@ -3,5 +3,8 @@ export { ForbiddenAsNotFoundError } from './ForbiddenAsNotFoundError.js';
|
|
|
3
3
|
export { ForbiddenError } from './ForbiddenError.js';
|
|
4
4
|
export { IllegalArgumentError } from './IllegalArgumentError.js';
|
|
5
5
|
export { InternalServerError } from './InternalServerError.js';
|
|
6
|
+
export { NotAvailableError } from './internal/NotAvailableError.js';
|
|
7
|
+
export { NotCallableError, type NotCallableErrorReason, } from './internal/NotCallableError.js';
|
|
8
|
+
export { NotImplementedError } from './internal/NotImplementedError.js';
|
|
6
9
|
export { NotFoundError } from './NotFoundError.js';
|
|
7
10
|
export { UnauthorizedError } from './UnauthorizedError.js';
|
package/dist/esm/error/index.js
CHANGED
|
@@ -3,5 +3,8 @@ export { ForbiddenAsNotFoundError } from './ForbiddenAsNotFoundError.js';
|
|
|
3
3
|
export { ForbiddenError } from './ForbiddenError.js';
|
|
4
4
|
export { IllegalArgumentError } from './IllegalArgumentError.js';
|
|
5
5
|
export { InternalServerError } from './InternalServerError.js';
|
|
6
|
+
export { NotAvailableError } from './internal/NotAvailableError.js';
|
|
7
|
+
export { NotCallableError, } from './internal/NotCallableError.js';
|
|
8
|
+
export { NotImplementedError } from './internal/NotImplementedError.js';
|
|
6
9
|
export { NotFoundError } from './NotFoundError.js';
|
|
7
10
|
export { UnauthorizedError } from './UnauthorizedError.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class NotCallableError extends Error {
|
|
2
|
+
constructor(calledFn, callableFn, reason) {
|
|
3
|
+
super(`Do not call ${calledFn.toString()}(). Call ${callableFn.toString()}() instead (reason : ${reason})`);
|
|
4
|
+
this.name = 'NotCallableError';
|
|
5
|
+
Object.setPrototypeOf(this, NotCallableError.prototype);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SyncEdgeWorkerHonoServerManager, type SyncEdgeWorkerHonoServerManagerSettings, } from './target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js';
|
|
2
|
+
export { buildHandler, init, mountHandler, toReq, toRes, } from './target/lib/server-hono/funcs.js';
|
|
3
|
+
export { CloudflareD1UCDataStore } from './uc/impl/CloudflareD1UCDataStore.js';
|
|
4
|
+
export { bindCloudflareWorker } from './utils/ioc/bindCloudflareWorker.js';
|
|
5
|
+
export { bindServer } from './utils/ioc/bindServer.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { SyncEdgeWorkerHonoServerManager, } from './target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js';
|
|
2
|
+
export { buildHandler, init, mountHandler, toReq, toRes, } from './target/lib/server-hono/funcs.js';
|
|
3
|
+
export { CloudflareD1UCDataStore } from './uc/impl/CloudflareD1UCDataStore.js';
|
|
4
|
+
export { bindCloudflareWorker } from './utils/ioc/bindCloudflareWorker.js';
|
|
5
|
+
export { bindServer } from './utils/ioc/bindServer.js';
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export * from './target/lib/server/JWTAuthenticationChecker.js';
|
|
|
34
34
|
export * from './target/lib/server/ServerBooter.js';
|
|
35
35
|
export * from './target/lib/server/ServerManager.js';
|
|
36
36
|
export * from './target/lib/server/ServerRequestHandler.js';
|
|
37
|
+
export * from './target/lib/server/SyncEdgeWorkerInitializer.js';
|
|
37
38
|
export * from './testing/index.js';
|
|
38
39
|
export * from './uc/impl/HTTPUCTransporter.js';
|
|
39
40
|
export * from './uc/impl/InMemoryUCDataStore.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -35,6 +35,7 @@ export * from './target/lib/server/JWTAuthenticationChecker.js';
|
|
|
35
35
|
export * from './target/lib/server/ServerBooter.js';
|
|
36
36
|
export * from './target/lib/server/ServerManager.js';
|
|
37
37
|
export * from './target/lib/server/ServerRequestHandler.js';
|
|
38
|
+
export * from './target/lib/server/SyncEdgeWorkerInitializer.js';
|
|
38
39
|
export * from './testing/index.js';
|
|
39
40
|
export * from './uc/impl/HTTPUCTransporter.js';
|
|
40
41
|
export * from './uc/impl/InMemoryUCDataStore.js';
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export { buildHandler, init, mountHandler, toFile, toReq, toRes, } from './target/lib/server-express/funcs.js';
|
|
2
|
+
export { HelmetMiddlewareBuilder } from './target/lib/server-express/HelmetMiddlewareBuilder.js';
|
|
1
3
|
export { NodeExpressServerManager } from './target/node-express-server/NodeExpressServerManager.js';
|
|
2
4
|
export { bindServer } from './utils/ioc/bindServer.js';
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export { buildHandler, init, mountHandler, toFile, toReq, toRes, } from './target/lib/server-express/funcs.js';
|
|
2
|
+
export { HelmetMiddlewareBuilder } from './target/lib/server-express/HelmetMiddlewareBuilder.js';
|
|
1
3
|
export { NodeExpressServerManager } from './target/node-express-server/NodeExpressServerManager.js';
|
|
2
4
|
export { bindServer } from './utils/ioc/bindServer.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export type { ProductI18n } from './i18n.js';
|
|
2
2
|
export type { ProductAppReg, ProductManifest, ProductName, ProductWording, } from './manifest.js';
|
|
3
3
|
export { ProductUCsLoader } from './workers/ProductUCsLoader.js';
|
|
4
|
+
export { type Input as SyncProductUCsLoaderInput, type Output as SyncProductUCsLoaderOutput, SyncProductUCsLoader, } from './workers/SyncProductUCsLoader.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AppManifest, AppUCsLoaderOutput } from '../../app/index.js';
|
|
2
|
+
import type { Logger, Worker } from '../../std/index.js';
|
|
3
|
+
import { UCBuilder, type UCDef } from '../../uc/index.js';
|
|
4
|
+
import type { ProductManifest } from '../manifest.js';
|
|
5
|
+
export interface Input {
|
|
6
|
+
defs: Map<AppManifest, UCDef<any, any, any>[]>;
|
|
7
|
+
}
|
|
8
|
+
export type Output = AppUCsLoaderOutput;
|
|
9
|
+
export declare class SyncProductUCsLoader implements Worker<Input, Output> {
|
|
10
|
+
private logger;
|
|
11
|
+
private productManifest;
|
|
12
|
+
private ucBuilder;
|
|
13
|
+
constructor(logger: Logger, productManifest: ProductManifest, ucBuilder: UCBuilder);
|
|
14
|
+
exec({ defs }: Input): AppUCsLoaderOutput;
|
|
15
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { inject, injectable } from 'inversify';
|
|
14
|
+
import { UCBuilder } from '../../uc/index.js';
|
|
15
|
+
let SyncProductUCsLoader = class SyncProductUCsLoader {
|
|
16
|
+
logger;
|
|
17
|
+
productManifest;
|
|
18
|
+
ucBuilder;
|
|
19
|
+
constructor(logger, productManifest, ucBuilder) {
|
|
20
|
+
this.logger = logger;
|
|
21
|
+
this.productManifest = productManifest;
|
|
22
|
+
this.ucBuilder = ucBuilder;
|
|
23
|
+
}
|
|
24
|
+
exec({ defs }) {
|
|
25
|
+
const ucs = [];
|
|
26
|
+
for (const [appManifest, ucds] of defs.entries()) {
|
|
27
|
+
const app = this.productManifest.appReg.find((a) => a.name === appManifest.name);
|
|
28
|
+
if (!app) {
|
|
29
|
+
throw new Error(`The app ${appManifest.name} must be registered in the product manifest`);
|
|
30
|
+
}
|
|
31
|
+
for (const ucd of ucds) {
|
|
32
|
+
if (app.ucds?.exclude?.includes(ucd.metadata.name)) {
|
|
33
|
+
this.logger.debug('Excluding ucd', {
|
|
34
|
+
name: app.name,
|
|
35
|
+
ucName: ucd.metadata.name,
|
|
36
|
+
});
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
ucs.push(this.ucBuilder.exec({ appManifest, auth: null, def: ucd }));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return ucs;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
SyncProductUCsLoader = __decorate([
|
|
46
|
+
injectable(),
|
|
47
|
+
__param(0, inject('Logger')),
|
|
48
|
+
__param(1, inject('ProductManifest')),
|
|
49
|
+
__param(2, inject(UCBuilder)),
|
|
50
|
+
__metadata("design:paramtypes", [Object, Object, UCBuilder])
|
|
51
|
+
], SyncProductUCsLoader);
|
|
52
|
+
export { SyncProductUCsLoader };
|
|
@@ -8,6 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { injectable } from 'inversify';
|
|
11
|
+
import { NotImplementedError } from '../../error/index.js';
|
|
11
12
|
import { FSManagerItemInfoType, } from '../FSManager.js';
|
|
12
13
|
let FakeFSManager = class FakeFSManager {
|
|
13
14
|
entries;
|
|
@@ -88,7 +89,7 @@ let FakeFSManager = class FakeFSManager {
|
|
|
88
89
|
return resolvedArgs.join('/');
|
|
89
90
|
}
|
|
90
91
|
async pickFiles() {
|
|
91
|
-
throw new
|
|
92
|
+
throw new NotImplementedError('pickFiles');
|
|
92
93
|
}
|
|
93
94
|
async rm(path) {
|
|
94
95
|
this.entries.delete(path);
|
|
@@ -9,8 +9,10 @@ export declare class SimpleMapI18nManager implements I18nManager {
|
|
|
9
9
|
constructor(i18n: I18n, logger: Logger);
|
|
10
10
|
add<K extends I18nTranslationKey>(key: K, value: string): Promise<void>;
|
|
11
11
|
init(): Promise<void>;
|
|
12
|
+
initSync(): void;
|
|
12
13
|
l(): I18nLanguageCode;
|
|
13
14
|
t<K extends I18nTranslationKey>(key: K, opts?: I18nManagerTOpts): string;
|
|
15
|
+
private initCommon;
|
|
14
16
|
tOrNull<K extends I18nTranslationKey>(key: K, _opts?: I18nManagerTOpts): string | null;
|
|
15
17
|
private replacePlaceholders;
|
|
16
18
|
}
|
|
@@ -28,14 +28,10 @@ let SimpleMapI18nManager = class SimpleMapI18nManager {
|
|
|
28
28
|
this.entries.set(key, value);
|
|
29
29
|
}
|
|
30
30
|
async init() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
for (const [k, v] of Object.entries(translations)) {
|
|
37
|
-
this.entries.set(k, v);
|
|
38
|
-
}
|
|
31
|
+
this.initCommon();
|
|
32
|
+
}
|
|
33
|
+
initSync() {
|
|
34
|
+
this.initCommon();
|
|
39
35
|
}
|
|
40
36
|
l() {
|
|
41
37
|
return I18N_DEFAULT_LANG;
|
|
@@ -50,6 +46,16 @@ let SimpleMapI18nManager = class SimpleMapI18nManager {
|
|
|
50
46
|
}
|
|
51
47
|
return key; // Mimic the behavior of some common libraries like i18next
|
|
52
48
|
}
|
|
49
|
+
initCommon() {
|
|
50
|
+
const translations = this.i18n[this.l()];
|
|
51
|
+
this.logger.trace('Initializing I18nManager', { translations });
|
|
52
|
+
if (!translations) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
for (const [k, v] of Object.entries(translations)) {
|
|
56
|
+
this.entries.set(k, v);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
53
59
|
tOrNull(key, _opts) {
|
|
54
60
|
return this.entries.get(key) || null;
|
|
55
61
|
}
|
|
@@ -20,7 +20,7 @@ let UCDataStoreExternalResourceManager = class UCDataStoreExternalResourceManage
|
|
|
20
20
|
this.ucDataStore = ucDataStore;
|
|
21
21
|
}
|
|
22
22
|
async create() {
|
|
23
|
-
return this.ucDataStore.
|
|
23
|
+
return this.ucDataStore.init();
|
|
24
24
|
}
|
|
25
25
|
async delete() {
|
|
26
26
|
return this.ucDataStore.destroy();
|
|
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { injectable } from 'inversify';
|
|
8
|
+
import { NotAvailableError, NotImplementedError } from '../../error/index.js';
|
|
8
9
|
const DIGEST_MAPPING = new Map([
|
|
9
10
|
['sha512', 'SHA-512'],
|
|
10
11
|
]);
|
|
@@ -13,13 +14,13 @@ let WebCryptoManager = class WebCryptoManager {
|
|
|
13
14
|
// Nothing to do
|
|
14
15
|
}
|
|
15
16
|
hash(_algorithm, _base) {
|
|
16
|
-
throw new
|
|
17
|
+
throw new NotImplementedError('hash');
|
|
17
18
|
}
|
|
18
19
|
hmacToBase64(_algorithm, _base, _key, _keyEncoding) {
|
|
19
|
-
throw new
|
|
20
|
+
throw new NotImplementedError('hmacToBase64');
|
|
20
21
|
}
|
|
21
22
|
hmacToHex(_algorithm, _base, _key, _keyEncoding) {
|
|
22
|
-
throw new
|
|
23
|
+
throw new NotImplementedError('hmacToHex');
|
|
23
24
|
}
|
|
24
25
|
async pbkdf2(password, salt, iterationsCount, keyLength, digest) {
|
|
25
26
|
const hash = DIGEST_MAPPING.get(digest);
|
|
@@ -60,7 +61,7 @@ let WebCryptoManager = class WebCryptoManager {
|
|
|
60
61
|
return crypto.randomUUID();
|
|
61
62
|
}
|
|
62
63
|
async scrypt() {
|
|
63
|
-
throw new
|
|
64
|
+
throw new NotAvailableError('scrypt');
|
|
64
65
|
}
|
|
65
66
|
};
|
|
66
67
|
WebCryptoManager = __decorate([
|
|
@@ -5,48 +5,49 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { injectable } from 'inversify';
|
|
8
|
+
import { NotAvailableError } from '../../error/index.js';
|
|
8
9
|
let WebFSManager = class WebFSManager {
|
|
9
10
|
async canHandleFiles() {
|
|
10
|
-
return
|
|
11
|
+
return false;
|
|
11
12
|
}
|
|
12
13
|
async cat(_path, _opts) {
|
|
13
|
-
throw new
|
|
14
|
+
throw new NotAvailableError('cat');
|
|
14
15
|
}
|
|
15
16
|
async chmod(_path, _mode) {
|
|
16
|
-
throw new
|
|
17
|
+
throw new NotAvailableError('chmod');
|
|
17
18
|
}
|
|
18
19
|
async cp(_src, _dest) {
|
|
19
|
-
throw new
|
|
20
|
+
throw new NotAvailableError('cp');
|
|
20
21
|
}
|
|
21
22
|
async echoIn(_src, _content) {
|
|
22
|
-
throw new
|
|
23
|
+
throw new NotAvailableError('echoIn');
|
|
23
24
|
}
|
|
24
25
|
async exists(_path) {
|
|
25
|
-
throw new
|
|
26
|
+
throw new NotAvailableError('exists');
|
|
26
27
|
}
|
|
27
28
|
fileExtension(_fileName) {
|
|
28
|
-
throw new
|
|
29
|
+
throw new NotAvailableError('fileExtension');
|
|
29
30
|
}
|
|
30
31
|
async info(_path) {
|
|
31
|
-
throw new
|
|
32
|
+
throw new NotAvailableError('info');
|
|
32
33
|
}
|
|
33
34
|
async ls(_path, _opts) {
|
|
34
|
-
throw new
|
|
35
|
+
throw new NotAvailableError('ls');
|
|
35
36
|
}
|
|
36
37
|
async mkdir(_path, _opts) {
|
|
37
|
-
throw new
|
|
38
|
+
throw new NotAvailableError('mkdir');
|
|
38
39
|
}
|
|
39
40
|
path(..._parts) {
|
|
40
|
-
throw new
|
|
41
|
+
throw new NotAvailableError('path');
|
|
41
42
|
}
|
|
42
43
|
async pickFiles(_source, _opts) {
|
|
43
|
-
throw new
|
|
44
|
+
throw new NotAvailableError('pickFiles');
|
|
44
45
|
}
|
|
45
46
|
async rm(_path) {
|
|
46
|
-
throw new
|
|
47
|
+
throw new NotAvailableError('rm');
|
|
47
48
|
}
|
|
48
49
|
async touch(_path, _content) {
|
|
49
|
-
throw new
|
|
50
|
+
throw new NotAvailableError('touch');
|
|
50
51
|
}
|
|
51
52
|
};
|
|
52
53
|
WebFSManager = __decorate([
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Hono } from 'hono';
|
|
2
|
+
import type { AppManifest } from '../../app/index.js';
|
|
3
|
+
import type { DirPath } from '../../dt/index.js';
|
|
4
|
+
import type { Configurable, SettingsManager } from '../../std/index.js';
|
|
5
|
+
import type { UCDataStore, UCDef, UCHTTPContract, UCInput, UCManager, UCOPIBase } from '../../uc/index.js';
|
|
6
|
+
import type { ServerManager } from '../lib/server/ServerManager.js';
|
|
7
|
+
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
8
|
+
export interface SyncEdgeWorkerHonoServerManagerSettings {
|
|
9
|
+
sewhsm_bindings_uc_data_store: string | null;
|
|
10
|
+
}
|
|
11
|
+
type S = SyncEdgeWorkerHonoServerManagerSettings;
|
|
12
|
+
export declare class SyncEdgeWorkerHonoServerManager implements Configurable<S>, ServerManager {
|
|
13
|
+
private serverRequestHandler;
|
|
14
|
+
private settingsManager;
|
|
15
|
+
private ucDataStore;
|
|
16
|
+
private ucManager;
|
|
17
|
+
protected runtime: Hono;
|
|
18
|
+
constructor(serverRequestHandler: ServerRequestHandler, settingsManager: SettingsManager<S>, ucDataStore: UCDataStore, ucManager: UCManager);
|
|
19
|
+
s(): SyncEdgeWorkerHonoServerManagerSettings;
|
|
20
|
+
getRuntime(): Hono;
|
|
21
|
+
overrideUCManager(ucManager: UCManager): void;
|
|
22
|
+
init(): Promise<void>;
|
|
23
|
+
initSync(): void;
|
|
24
|
+
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>;
|
|
25
|
+
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;
|
|
26
|
+
mountStaticDir(_dirPath: DirPath): Promise<void>;
|
|
27
|
+
start(): Promise<void>;
|
|
28
|
+
stop(): Promise<void>;
|
|
29
|
+
warmUp(): Promise<void>;
|
|
30
|
+
private beforeExec;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { inject, injectable } from 'inversify';
|
|
14
|
+
import { NotAvailableError, NotCallableError } from '../../error/index.js';
|
|
15
|
+
import { ServerRequestHandler } from '../lib/server/ServerRequestHandler.js';
|
|
16
|
+
import { buildHandler, init, mountHandler } from '../lib/server-hono/funcs.js';
|
|
17
|
+
let SyncEdgeWorkerHonoServerManager = class SyncEdgeWorkerHonoServerManager {
|
|
18
|
+
serverRequestHandler;
|
|
19
|
+
settingsManager;
|
|
20
|
+
ucDataStore;
|
|
21
|
+
ucManager;
|
|
22
|
+
runtime;
|
|
23
|
+
constructor(serverRequestHandler, settingsManager, ucDataStore, ucManager) {
|
|
24
|
+
this.serverRequestHandler = serverRequestHandler;
|
|
25
|
+
this.settingsManager = settingsManager;
|
|
26
|
+
this.ucDataStore = ucDataStore;
|
|
27
|
+
this.ucManager = ucManager;
|
|
28
|
+
}
|
|
29
|
+
s() {
|
|
30
|
+
return {
|
|
31
|
+
sewhsm_bindings_uc_data_store: this.settingsManager.get()('sewhsm_bindings_uc_data_store'),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
getRuntime() {
|
|
35
|
+
return this.runtime;
|
|
36
|
+
}
|
|
37
|
+
overrideUCManager(ucManager) {
|
|
38
|
+
this.ucManager = ucManager;
|
|
39
|
+
}
|
|
40
|
+
async init() {
|
|
41
|
+
throw new NotCallableError('init', 'initSync', 'sync-only');
|
|
42
|
+
}
|
|
43
|
+
initSync() {
|
|
44
|
+
this.runtime = init();
|
|
45
|
+
}
|
|
46
|
+
async mount(_appManifest, _ucd, _contract) {
|
|
47
|
+
throw new NotCallableError('mount', 'mountSync', 'sync-only');
|
|
48
|
+
}
|
|
49
|
+
mountSync(appManifest, ucd, contract) {
|
|
50
|
+
mountHandler(contract, this.runtime, buildHandler(appManifest, ucd, contract, this.serverRequestHandler, this.ucManager, (c) => this.beforeExec(c)));
|
|
51
|
+
}
|
|
52
|
+
async mountStaticDir(_dirPath) {
|
|
53
|
+
throw new NotAvailableError('mountStaticDir');
|
|
54
|
+
}
|
|
55
|
+
async start() {
|
|
56
|
+
throw new NotAvailableError('start');
|
|
57
|
+
}
|
|
58
|
+
async stop() {
|
|
59
|
+
throw new NotAvailableError('stop');
|
|
60
|
+
}
|
|
61
|
+
async warmUp() {
|
|
62
|
+
throw new NotAvailableError('warmUp');
|
|
63
|
+
}
|
|
64
|
+
async beforeExec(c) {
|
|
65
|
+
const { env } = c;
|
|
66
|
+
if (!env) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const ucDataStoreBinding = this.s().sewhsm_bindings_uc_data_store;
|
|
70
|
+
if (!ucDataStoreBinding ||
|
|
71
|
+
!(ucDataStoreBinding in env) ||
|
|
72
|
+
!('setClient' in this.ucDataStore) ||
|
|
73
|
+
typeof this.ucDataStore.setClient !== 'function') {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.ucDataStore.setClient(env[ucDataStoreBinding]);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
SyncEdgeWorkerHonoServerManager = __decorate([
|
|
80
|
+
injectable(),
|
|
81
|
+
__param(0, inject(ServerRequestHandler)),
|
|
82
|
+
__param(1, inject('SettingsManager')),
|
|
83
|
+
__param(2, inject('UCDataStore')),
|
|
84
|
+
__param(3, inject('UCManager')),
|
|
85
|
+
__metadata("design:paramtypes", [ServerRequestHandler, Object, Object, Object])
|
|
86
|
+
], SyncEdgeWorkerHonoServerManager);
|
|
87
|
+
export { SyncEdgeWorkerHonoServerManager };
|