libmodulor 0.18.1 → 0.20.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.
Files changed (92) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +1 -1
  3. package/dist/esm/apps/Helper/src/lib/project.js +8 -8
  4. package/dist/esm/convention.d.ts +2 -0
  5. package/dist/esm/convention.js +2 -0
  6. package/dist/esm/error/index.d.ts +3 -0
  7. package/dist/esm/error/index.js +3 -0
  8. package/dist/esm/error/internal/NotAvailableError.d.ts +3 -0
  9. package/dist/esm/error/internal/NotAvailableError.js +7 -0
  10. package/dist/esm/error/internal/NotCallableError.d.ts +4 -0
  11. package/dist/esm/error/internal/NotCallableError.js +7 -0
  12. package/dist/esm/error/internal/NotImplementedError.d.ts +3 -0
  13. package/dist/esm/error/internal/NotImplementedError.js +7 -0
  14. package/dist/esm/index.cloudflare-worker-hono.d.ts +5 -0
  15. package/dist/esm/index.cloudflare-worker-hono.js +5 -0
  16. package/dist/esm/index.d.ts +1 -0
  17. package/dist/esm/index.js +1 -0
  18. package/dist/esm/index.node-express.d.ts +2 -0
  19. package/dist/esm/index.node-express.js +2 -0
  20. package/dist/esm/index.node-hono.d.ts +1 -0
  21. package/dist/esm/index.node-hono.js +1 -0
  22. package/dist/esm/product/index.d.ts +1 -0
  23. package/dist/esm/product/index.js +1 -0
  24. package/dist/esm/product/workers/SyncProductUCsLoader.d.ts +15 -0
  25. package/dist/esm/product/workers/SyncProductUCsLoader.js +52 -0
  26. package/dist/esm/std/ShellCommandExecutor.d.ts +1 -0
  27. package/dist/esm/std/impl/FakeFSManager.js +2 -1
  28. package/dist/esm/std/impl/FakeJobManager.d.ts +1 -0
  29. package/dist/esm/std/impl/FakeJobManager.js +3 -0
  30. package/dist/esm/std/impl/NodeSpawnShellCommandExecutor.js +6 -0
  31. package/dist/esm/std/impl/SimpleMapI18nManager.d.ts +2 -0
  32. package/dist/esm/std/impl/SimpleMapI18nManager.js +14 -8
  33. package/dist/esm/std/impl/UCDataStoreExternalResourceManager.js +1 -1
  34. package/dist/esm/std/impl/WebCryptoManager.js +5 -4
  35. package/dist/esm/std/impl/WebFSManager.js +15 -14
  36. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.d.ts +32 -0
  37. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js +87 -0
  38. package/dist/esm/target/lib/mcp-server/MCPServerBooter.d.ts +3 -2
  39. package/dist/esm/target/lib/mcp-server/MCPServerBooter.js +10 -6
  40. package/dist/esm/target/lib/react/UCContainer.js +1 -1
  41. package/dist/esm/target/lib/server/ServerBooter.d.ts +1 -0
  42. package/dist/esm/target/lib/server/ServerBooter.js +41 -44
  43. package/dist/esm/target/lib/server/ServerManager.d.ts +7 -0
  44. package/dist/esm/target/lib/server/SyncEdgeWorkerInitializer.d.ts +17 -0
  45. package/dist/esm/target/lib/server/SyncEdgeWorkerInitializer.js +76 -0
  46. package/dist/esm/target/lib/server/funcs.d.ts +3 -0
  47. package/dist/esm/target/lib/server/funcs.js +11 -0
  48. package/dist/esm/target/lib/server-express/HelmetMiddlewareBuilder.d.ts +12 -0
  49. package/dist/esm/target/lib/server-express/HelmetMiddlewareBuilder.js +39 -0
  50. package/dist/esm/target/lib/server-express/funcs.d.ts +15 -0
  51. package/dist/esm/target/lib/server-express/funcs.js +103 -0
  52. package/dist/esm/target/lib/server-hono/funcs.d.ts +10 -0
  53. package/dist/esm/target/lib/server-hono/funcs.js +72 -0
  54. package/dist/esm/target/lib/server-node/funcs.d.ts +5 -0
  55. package/dist/esm/target/lib/server-node/funcs.js +25 -0
  56. package/dist/esm/target/lib/server-node/types.d.ts +2 -0
  57. package/dist/esm/target/nextjs-server/NextJSServerManager.d.ts +2 -0
  58. package/dist/esm/target/nextjs-server/NextJSServerManager.js +6 -0
  59. package/dist/esm/target/node-core-cli/NodeCoreCLIManager.d.ts +3 -1
  60. package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +8 -5
  61. package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +6 -5
  62. package/dist/esm/target/node-express-server/NodeExpressServerManager.js +16 -103
  63. package/dist/esm/target/node-hono-server/NodeHonoServerManager.d.ts +7 -5
  64. package/dist/esm/target/node-hono-server/NodeHonoServerManager.js +16 -67
  65. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.d.ts +5 -1
  66. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +42 -29
  67. package/dist/esm/testing/AppTester.d.ts +5 -2
  68. package/dist/esm/testing/AppTester.js +17 -4
  69. package/dist/esm/testing/UCDataStoreTester.js +3 -3
  70. package/dist/esm/testing/impl/VitestAppTestSuiteEmitter.js +132 -115
  71. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.d.ts +2 -3
  72. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.js +6 -8
  73. package/dist/esm/testing/workers/checkers/UCDefChecker.d.ts +2 -0
  74. package/dist/esm/testing/workers/checkers/UCDefChecker.js +4 -1
  75. package/dist/esm/uc/data-store.d.ts +3 -4
  76. package/dist/esm/uc/helpers/UCOutputBuilder.js +1 -0
  77. package/dist/esm/uc/impl/CloudflareD1UCDataStore.d.ts +34 -0
  78. package/dist/esm/uc/impl/CloudflareD1UCDataStore.js +201 -0
  79. package/dist/esm/uc/impl/InMemoryUCDataStore.d.ts +3 -2
  80. package/dist/esm/uc/impl/InMemoryUCDataStore.js +17 -14
  81. package/dist/esm/uc/impl/KnexUCDataStore.d.ts +3 -2
  82. package/dist/esm/uc/impl/KnexUCDataStore.js +9 -5
  83. package/dist/esm/uc/impl/SimpleUCManager.d.ts +1 -1
  84. package/dist/esm/uc/impl/SimpleUCManager.js +2 -2
  85. package/dist/esm/uc/manager.d.ts +1 -1
  86. package/dist/esm/uc/settings/consts.js +1 -1
  87. package/dist/esm/utils/concerns/Initializable.d.ts +1 -0
  88. package/dist/esm/utils/ioc/bindCloudflareWorker.d.ts +2 -0
  89. package/dist/esm/utils/ioc/bindCloudflareWorker.js +15 -0
  90. package/package.json +17 -14
  91. package/pnpm-workspace.yaml +1 -1
  92. package/tsconfig.json +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.20.0 (2025-07-26)
4
+
5
+ **Added**
6
+
7
+ - Add ability to stream data in `ShellCommandExecutor`
8
+ - Stream output with color when using the `TestApp` command
9
+ - Check app sources before executing the test in `TestApp` : this allows to spot errors earlier and avoid cryptic exec errors when the sources are not valid (don't forget to re-generate the tests with `pnpm libmodulor GenerateAppsTests` and use `--updateSnapshots` the next time you call `TestApp --appName YourApp`)
10
+
11
+ **Misc**
12
+
13
+ - Add the `Toolbox` app to `examples` (for docs)
14
+ - Expose `UC_POLICY_FILE_NAME_EXT` and `UC_POLICY_FILE_NAME_SUFFIX` in the convention
15
+ - Move `examples/embedded` to `examples/standalone`
16
+ - Add the `GeocodeAddress` UCD to `Toolbox` (for docs)
17
+ - Add the `MyRunningMap` app to `examples` (for docs)
18
+ - Harmonize `examples` apps testing
19
+
20
+ ## v0.19.0 (2025-06-20)
21
+
22
+ **BREAKING**
23
+
24
+ - 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');`
25
+ - 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');`
26
+ - 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
27
+ - Make `UCDataStore` compliant with `Initializable` : rename `install` to `init`, add `initSync` and rename `initTx` to `startTx`
28
+
29
+ **Added**
30
+
31
+ - Introduce `target/edge-worker-hono-server` to be able to deploy easily on Cloudflare Workers
32
+ - Introduce `NotAvailableError` for better semantics and more meaningful error messages
33
+ - Introduce `NotImplementedError` for better semantics and more meaningful error messages
34
+ - Init `i18nManager` in `MCPServerBooter` and `NodeCoreCLIManager` : you can remove any initialization made before executing those
35
+
36
+ **Fixed**
37
+
38
+ - Update `UCOutputBuilder` total when removing
39
+
40
+ **Misc**
41
+
42
+ - Extract server targets functions for better reusability
43
+
3
44
  ## v0.18.1 (2025-06-11)
4
45
 
5
46
  **Misc**
package/README.md CHANGED
@@ -17,4 +17,4 @@ If you think you can help in any way, feel free to contact me (cf. `author` in `
17
17
 
18
18
  ## ⚖️ License
19
19
 
20
- [LGPL-3.0](https://github.com/c100k/libmodulor/blob/v0.18.1/LICENSE)
20
+ [LGPL-3.0](https://github.com/c100k/libmodulor/blob/v0.20.0/LICENSE)
@@ -81,24 +81,24 @@ export const PACKAGE_JSON = (name) => `{
81
81
  "test": "tsc && vitest run --passWithNoTests"
82
82
  },
83
83
  "dependencies": {
84
- "inversify": "^7.5.2",
84
+ "inversify": "^7.6.1",
85
85
  "libmodulor": "latest",
86
86
  "reflect-metadata": "^0.2.2"
87
87
  },
88
88
  "devDependencies": {
89
- "@biomejs/biome": "^2.0.0-beta.6",
90
- "@types/node": "^22.15.29",
91
- "@vitest/coverage-v8": "^3.2.0",
89
+ "@biomejs/biome": "^2.1.2",
90
+ "@types/node": "^22.16.5",
91
+ "@vitest/coverage-v8": "^3.2.4",
92
92
  "buffer": "^6.0.3",
93
93
  "cookie-parser": "^1.4.7",
94
94
  "express": "^5.1.0",
95
- "express-fileupload": "^1.5.1",
96
- "fast-check": "^4.1.1",
95
+ "express-fileupload": "^1.5.2",
96
+ "fast-check": "^4.2.0",
97
97
  "helmet": "^8.1.0",
98
- "jose": "^6.0.11",
98
+ "jose": "^6.0.12",
99
99
  "typescript": "^5.8.3",
100
100
  "vite": "^6.3.5",
101
- "vitest": "^3.2.0"
101
+ "vitest": "^3.2.4"
102
102
  }
103
103
  }
104
104
  `;
@@ -44,3 +44,5 @@ export declare const UC_OPI_BASE: string;
44
44
  export declare const UC_OPI_SUFFIX: string;
45
45
  export declare const UC_POLICY_SUFFIX: string;
46
46
  export declare const UC_POLICY_SUFFIX_FULL: string;
47
+ export declare const UC_POLICY_FILE_NAME_EXT: string;
48
+ export declare const UC_POLICY_FILE_NAME_SUFFIX: string;
@@ -54,3 +54,5 @@ export const UC_OPI_BASE = 'UCOPIBase';
54
54
  export const UC_OPI_SUFFIX = 'OPI';
55
55
  export const UC_POLICY_SUFFIX = 'Policy';
56
56
  export const UC_POLICY_SUFFIX_FULL = `UC${UC_POLICY_SUFFIX}`;
57
+ export const UC_POLICY_FILE_NAME_EXT = '.ts';
58
+ export const UC_POLICY_FILE_NAME_SUFFIX = `${UC_POLICY_SUFFIX_FULL}${UC_POLICY_FILE_NAME_EXT}`;
@@ -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';
@@ -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,3 @@
1
+ export declare class NotAvailableError<T> extends Error {
2
+ constructor(calledFn: keyof T);
3
+ }
@@ -0,0 +1,7 @@
1
+ export class NotAvailableError extends Error {
2
+ constructor(calledFn) {
3
+ super(`Method ${calledFn.toString()} is not available`);
4
+ this.name = 'NotAvailableError';
5
+ Object.setPrototypeOf(this, NotAvailableError.prototype);
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ export type NotCallableErrorReason = 'async-only' | 'sync-only';
2
+ export declare class NotCallableError<T> extends Error {
3
+ constructor(calledFn: keyof T, callableFn: keyof T, reason: NotCallableErrorReason);
4
+ }
@@ -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,3 @@
1
+ export declare class NotImplementedError<T> extends Error {
2
+ constructor(calledFn: keyof T);
3
+ }
@@ -0,0 +1,7 @@
1
+ export class NotImplementedError extends Error {
2
+ constructor(calledFn) {
3
+ super(`Method ${calledFn.toString()} is not implemented yet`);
4
+ this.name = 'NotImplementedError';
5
+ Object.setPrototypeOf(this, NotImplementedError.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';
@@ -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,2 +1,3 @@
1
+ export { buildHandler, init, mountHandler, toReq, toRes, } from './target/lib/server-hono/funcs.js';
1
2
  export { NodeHonoServerManager } from './target/node-hono-server/NodeHonoServerManager.js';
2
3
  export { bindServer } from './utils/ioc/bindServer.js';
@@ -1,2 +1,3 @@
1
+ export { buildHandler, init, mountHandler, toReq, toRes, } from './target/lib/server-hono/funcs.js';
1
2
  export { NodeHonoServerManager } from './target/node-hono-server/NodeHonoServerManager.js';
2
3
  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';
@@ -1 +1,2 @@
1
1
  export { ProductUCsLoader } from './workers/ProductUCsLoader.js';
2
+ export { 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 };
@@ -12,6 +12,7 @@ export interface ShellCommandExecutorInput {
12
12
  args?: ShellCommandExecutorCommandArg[];
13
13
  cwd?: FilePath;
14
14
  env?: ShellCommandExecutorEnv;
15
+ streamData?: boolean;
15
16
  };
16
17
  }
17
18
  export type ShellCommandExecutorOutput = string;
@@ -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 Error('Method not implemented.');
92
+ throw new NotImplementedError('pickFiles');
92
93
  }
93
94
  async rm(path) {
94
95
  this.entries.delete(path);
@@ -9,4 +9,5 @@ export declare class FakeJobManager implements JobManager {
9
9
  clear(): Promise<void>;
10
10
  dispatch<I>(queueName: JobManagerQueueName, jobName: JobManagerJobName, input: I): Promise<void>;
11
11
  init(): Promise<void>;
12
+ initSync(): void;
12
13
  }
@@ -22,6 +22,9 @@ let FakeJobManager = class FakeJobManager {
22
22
  async init() {
23
23
  // Nothing to do
24
24
  }
25
+ initSync() {
26
+ // Nothing to do
27
+ }
25
28
  };
26
29
  FakeJobManager = __decorate([
27
30
  injectable(),
@@ -17,9 +17,15 @@ let NodeSpawnShellCommandExecutor = class NodeSpawnShellCommandExecutor {
17
17
  });
18
18
  proc.stderr.on('data', (chunk) => {
19
19
  stderr += chunk;
20
+ if (opts?.streamData) {
21
+ process.stderr.write(chunk);
22
+ }
20
23
  });
21
24
  proc.stdout.on('data', (chunk) => {
22
25
  stdout += chunk;
26
+ if (opts?.streamData) {
27
+ process.stdout.write(chunk);
28
+ }
23
29
  });
24
30
  proc.on('error', (err) => {
25
31
  reject(err);
@@ -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
- const translations = this.i18n[this.l()];
32
- this.logger.trace('Initializing I18nManager', { translations });
33
- if (!translations) {
34
- return;
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.install();
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 Error('Method not implemented.');
17
+ throw new NotImplementedError('hash');
17
18
  }
18
19
  hmacToBase64(_algorithm, _base, _key, _keyEncoding) {
19
- throw new Error('Method not implemented.');
20
+ throw new NotImplementedError('hmacToBase64');
20
21
  }
21
22
  hmacToHex(_algorithm, _base, _key, _keyEncoding) {
22
- throw new Error('Method not implemented.');
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 Error('Not available on this platform');
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 true;
11
+ return false;
11
12
  }
12
13
  async cat(_path, _opts) {
13
- throw new Error('Not available on this platform');
14
+ throw new NotAvailableError('cat');
14
15
  }
15
16
  async chmod(_path, _mode) {
16
- throw new Error('Not available on this platform');
17
+ throw new NotAvailableError('chmod');
17
18
  }
18
19
  async cp(_src, _dest) {
19
- throw new Error('Not available on this platform');
20
+ throw new NotAvailableError('cp');
20
21
  }
21
22
  async echoIn(_src, _content) {
22
- throw new Error('Not available on this platform');
23
+ throw new NotAvailableError('echoIn');
23
24
  }
24
25
  async exists(_path) {
25
- throw new Error('Not available on this platform');
26
+ throw new NotAvailableError('exists');
26
27
  }
27
28
  fileExtension(_fileName) {
28
- throw new Error('Not available on this platform');
29
+ throw new NotAvailableError('fileExtension');
29
30
  }
30
31
  async info(_path) {
31
- throw new Error('Not available on this platform');
32
+ throw new NotAvailableError('info');
32
33
  }
33
34
  async ls(_path, _opts) {
34
- throw new Error('Not available on this platform');
35
+ throw new NotAvailableError('ls');
35
36
  }
36
37
  async mkdir(_path, _opts) {
37
- throw new Error('Not available on this platform');
38
+ throw new NotAvailableError('mkdir');
38
39
  }
39
40
  path(..._parts) {
40
- throw new Error('Not available on this platform');
41
+ throw new NotAvailableError('path');
41
42
  }
42
43
  async pickFiles(_source, _opts) {
43
- throw new Error('Not available on this platform');
44
+ throw new NotAvailableError('pickFiles');
44
45
  }
45
46
  async rm(_path) {
46
- throw new Error('Not available on this platform');
47
+ throw new NotAvailableError('rm');
47
48
  }
48
49
  async touch(_path, _content) {
49
- throw new Error('Not available on this platform');
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 {};