libmodulor 0.26.0 → 0.28.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/i18n.js +4 -4
- package/dist/esm/apps/Helper/src/lib/layers/project.js +7 -7
- package/dist/esm/apps/Helper/src/lib/layers/uc.js +1 -1
- 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/convention.d.ts +1 -1
- package/dist/esm/convention.js +1 -1
- 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/final/TErrorCode.d.ts +7 -0
- package/dist/esm/dt/final/TErrorCode.js +9 -0
- package/dist/esm/dt/index.d.ts +1 -0
- package/dist/esm/dt/index.js +1 -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.js +2 -0
- package/dist/esm/error/index.d.ts +1 -0
- package/dist/esm/error/index.js +1 -0
- 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/products/Helper/i18n.d.ts +8 -0
- package/dist/esm/std/impl/SimpleHTTPAPICaller.js +1 -1
- 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/server/AuthenticationChecker.d.ts +3 -3
- package/dist/esm/target/lib/server/AuthenticationChecker.js +5 -5
- package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +1 -1
- 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/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/settings/consts.js +1 -0
- package/dist/esm/uc/settings.d.ts +8 -1
- package/dist/esm/uc/workers/UCExecChecker.d.ts +3 -3
- package/dist/esm/uc/workers/UCExecChecker.js +5 -5
- package/dist/esm/utils/index.d.ts +1 -1
- 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.d.ts +0 -1
- 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.d.ts +0 -1
- 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/PublicApiKeyCheckerMiddlewareBuilder.js +0 -44
- 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
|
@@ -16,7 +16,7 @@ import { InMemoryUCDataStore } from '../../uc/impl/InMemoryUCDataStore.js';
|
|
|
16
16
|
import { SimpleUCManager } from '../../uc/impl/SimpleUCManager.js';
|
|
17
17
|
import { StaticUCClientConfirmManager } from '../../uc/impl/StaticUCClientConfirmManager.js';
|
|
18
18
|
import { UC_DEFAULT_SETTINGS, } from '../../uc/index.js';
|
|
19
|
-
import {
|
|
19
|
+
import { bindFactory } from './bindFactory.js';
|
|
20
20
|
export function bindCommon(container) {
|
|
21
21
|
// settings
|
|
22
22
|
container.bind('Settings').toConstantValue({
|
|
@@ -55,9 +55,9 @@ export function bindCommon(container) {
|
|
|
55
55
|
.to(SettingsServerClientManager);
|
|
56
56
|
container.bind('XMLManager').to(NoopXMLManager);
|
|
57
57
|
// uc
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
bindFactory(container, 'UCInit');
|
|
59
|
+
bindFactory(container, 'UCMain');
|
|
60
|
+
bindFactory(container, 'UCPolicy');
|
|
61
61
|
container
|
|
62
62
|
.bind('UCClientConfirmManager')
|
|
63
63
|
.to(StaticUCClientConfirmManager);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libmodulor",
|
|
3
3
|
"description": "A TypeScript library to create platform-agnostic applications",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.28.0",
|
|
5
5
|
"license": "LGPL-3.0",
|
|
6
6
|
"author": "Chafik H'nini <chafik.hnini@gmail.com>",
|
|
7
7
|
"homepage": "https://libmodulor.c100k.eu",
|
|
@@ -97,40 +97,41 @@
|
|
|
97
97
|
"test": "tsc && vitest run"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
|
-
"@biomejs/biome": "^2.
|
|
100
|
+
"@biomejs/biome": "^2.4.13",
|
|
101
101
|
"@react-native-community/slider": "^4.5.7",
|
|
102
|
-
"@types/react": "^19.2.
|
|
102
|
+
"@types/react": "^19.2.14",
|
|
103
103
|
"@types/react-dom": "^19.2.3",
|
|
104
104
|
"babel-plugin-parameter-decorator": "^1.0.16",
|
|
105
105
|
"babel-plugin-transform-typescript-metadata": "^0.3.2",
|
|
106
|
-
"expo": "
|
|
106
|
+
"expo": "55.0.11",
|
|
107
107
|
"expo-document-picker": "~14.0.8",
|
|
108
108
|
"expo-image-picker": "^17.0.10",
|
|
109
|
-
"
|
|
109
|
+
"react-native-safe-area-context": "^5.7.0",
|
|
110
|
+
"wrangler": "^4.84.1"
|
|
110
111
|
},
|
|
111
112
|
"peerDependencies": {
|
|
112
|
-
"@hono/node-server": "^1.19.
|
|
113
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
114
|
-
"@stricli/core": "^1.2.
|
|
113
|
+
"@hono/node-server": "^1.19.14",
|
|
114
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
115
|
+
"@stricli/core": "^1.2.6",
|
|
115
116
|
"buffer": "^6.0.3",
|
|
116
117
|
"cookie-parser": "^1.4.7",
|
|
117
118
|
"express": "^5.2.1",
|
|
118
119
|
"express-fileupload": "^1.5.2",
|
|
119
|
-
"fast-check": "^4.
|
|
120
|
+
"fast-check": "^4.7.0",
|
|
120
121
|
"helmet": "^8.1.0",
|
|
121
|
-
"hono": "^4.
|
|
122
|
-
"inversify": "^7.
|
|
123
|
-
"jose": "^6.
|
|
124
|
-
"knex": "^3.
|
|
125
|
-
"next": "^15.5.
|
|
126
|
-
"pg": "^8.
|
|
127
|
-
"react": "
|
|
128
|
-
"react-dom": "
|
|
129
|
-
"react-native": "^0.
|
|
122
|
+
"hono": "^4.12.15",
|
|
123
|
+
"inversify": "^7.11.0",
|
|
124
|
+
"jose": "^6.2.2",
|
|
125
|
+
"knex": "^3.2.9",
|
|
126
|
+
"next": "^15.5.15",
|
|
127
|
+
"pg": "^8.20.0",
|
|
128
|
+
"react": "19.2.3",
|
|
129
|
+
"react-dom": "19.2.3",
|
|
130
|
+
"react-native": "^0.84.1",
|
|
130
131
|
"reflect-metadata": "^0.2.2",
|
|
131
132
|
"sqlite3": "^5.1.7",
|
|
132
|
-
"typescript": "^
|
|
133
|
-
"vite": "^6.4.
|
|
133
|
+
"typescript": "^6.0.3",
|
|
134
|
+
"vite": "^6.4.2",
|
|
134
135
|
"vitest": "^3.2.4"
|
|
135
136
|
},
|
|
136
137
|
"peerDependenciesMeta": {
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type DirPath } from '../../../../dt/index.js';
|
|
2
|
-
import type { UCInput, UCInputDef, UCInputFieldValue } from '../../../../uc/index.js';
|
|
3
|
-
export interface AppInput extends UCInput {
|
|
4
|
-
appsPath: UCInputFieldValue<DirPath>;
|
|
5
|
-
}
|
|
6
|
-
export declare const AppInputFieldsDef: UCInputDef<AppInput>['fields'];
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { APPS_ROOT_PATH } from '../../../../convention.js';
|
|
2
|
-
import { TDirPath } from '../../../../dt/index.js';
|
|
3
|
-
export const AppInputFieldsDef = {
|
|
4
|
-
appsPath: {
|
|
5
|
-
cardinality: {
|
|
6
|
-
min: 0,
|
|
7
|
-
},
|
|
8
|
-
type: new TDirPath()
|
|
9
|
-
.setDefaultValue(APPS_ROOT_PATH.join('/'))
|
|
10
|
-
.setExamples([APPS_ROOT_PATH.join('/')]),
|
|
11
|
-
},
|
|
12
|
-
};
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
const GITIGNORE = `coverage
|
|
2
|
-
dist
|
|
3
|
-
node_modules
|
|
4
|
-
src/apps/**/test/reports
|
|
5
|
-
src/apps/**/test/*.test.ts
|
|
6
|
-
src/products/**/rn/.expo
|
|
7
|
-
.env
|
|
8
|
-
`;
|
|
9
|
-
const BIOME_JSON = `{
|
|
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
|
-
},
|
|
31
|
-
"files": {
|
|
32
|
-
"ignoreUnknown": true,
|
|
33
|
-
"includes": [
|
|
34
|
-
"**",
|
|
35
|
-
"!**/coverage",
|
|
36
|
-
"!**/dist",
|
|
37
|
-
"!**/node_modules",
|
|
38
|
-
"!**/package.json",
|
|
39
|
-
"!**/src/**/test/reports"
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"formatter": {
|
|
43
|
-
"indentStyle": "space",
|
|
44
|
-
"indentWidth": 4
|
|
45
|
-
},
|
|
46
|
-
"javascript": {
|
|
47
|
-
"formatter": {
|
|
48
|
-
"quoteStyle": "single"
|
|
49
|
-
},
|
|
50
|
-
"parser": {
|
|
51
|
-
"unsafeParameterDecoratorsEnabled": true
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
"linter": {
|
|
55
|
-
"rules": {
|
|
56
|
-
"style": {
|
|
57
|
-
"noInferrableTypes": "error",
|
|
58
|
-
"noParameterAssign": "error",
|
|
59
|
-
"noUnusedTemplateLiteral": "error",
|
|
60
|
-
"noUselessElse": "error",
|
|
61
|
-
"useAsConstAssertion": "error",
|
|
62
|
-
"useDefaultParameterLast": "error",
|
|
63
|
-
"useEnumInitializers": "error",
|
|
64
|
-
"useNumberNamespace": "error",
|
|
65
|
-
"useSelfClosingElements": "error",
|
|
66
|
-
"useSingleVarDeclarator": "error"
|
|
67
|
-
},
|
|
68
|
-
"suspicious": {
|
|
69
|
-
"noConsole": "error"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
`;
|
|
75
|
-
export const PACKAGE_JSON = (name) => `{
|
|
76
|
-
"name": "${name}",
|
|
77
|
-
"version": "0.1.0",
|
|
78
|
-
"type": "module",
|
|
79
|
-
"private": true,
|
|
80
|
-
"scripts": {
|
|
81
|
-
"lint": "biome check --write .",
|
|
82
|
-
"test": "tsc && vitest run --passWithNoTests"
|
|
83
|
-
},
|
|
84
|
-
"dependencies": {
|
|
85
|
-
"inversify": "^7.10.7",
|
|
86
|
-
"libmodulor": "latest",
|
|
87
|
-
"reflect-metadata": "^0.2.2"
|
|
88
|
-
},
|
|
89
|
-
"devDependencies": {
|
|
90
|
-
"@biomejs/biome": "^2.3.10",
|
|
91
|
-
"@types/node": "^25.0.3",
|
|
92
|
-
"@vitest/coverage-v8": "^3.2.4",
|
|
93
|
-
"buffer": "^6.0.3",
|
|
94
|
-
"cookie-parser": "^1.4.7",
|
|
95
|
-
"express": "^5.2.1",
|
|
96
|
-
"express-fileupload": "^1.5.2",
|
|
97
|
-
"fast-check": "^4.4.0",
|
|
98
|
-
"helmet": "^8.1.0",
|
|
99
|
-
"jose": "^6.1.3",
|
|
100
|
-
"typescript": "^5.9.3",
|
|
101
|
-
"vite": "^6.4.1",
|
|
102
|
-
"vitest": "^3.2.4"
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
`;
|
|
106
|
-
const README_MD = (name) => `# ${name}
|
|
107
|
-
|
|
108
|
-
🚀🚀🚀
|
|
109
|
-
`;
|
|
110
|
-
const TSCONFIG_JSON = `{
|
|
111
|
-
"compilerOptions": {
|
|
112
|
-
"allowSyntheticDefaultImports": true,
|
|
113
|
-
"allowUnreachableCode": false,
|
|
114
|
-
"allowUnusedLabels": false,
|
|
115
|
-
"declaration": true,
|
|
116
|
-
"emitDecoratorMetadata": true,
|
|
117
|
-
"exactOptionalPropertyTypes": true,
|
|
118
|
-
"experimentalDecorators": true,
|
|
119
|
-
"jsx": "react-jsx",
|
|
120
|
-
"lib": ["dom", "esnext"],
|
|
121
|
-
"module": "NodeNext",
|
|
122
|
-
"moduleResolution": "NodeNext",
|
|
123
|
-
"noEmit": true,
|
|
124
|
-
"noFallthroughCasesInSwitch": true,
|
|
125
|
-
"noImplicitOverride": true,
|
|
126
|
-
"noImplicitReturns": true,
|
|
127
|
-
"noPropertyAccessFromIndexSignature": true,
|
|
128
|
-
"noUncheckedIndexedAccess": true,
|
|
129
|
-
"noUnusedLocals": true,
|
|
130
|
-
"noUnusedParameters": true,
|
|
131
|
-
"removeComments": true,
|
|
132
|
-
"skipLibCheck": true,
|
|
133
|
-
"sourceMap": true,
|
|
134
|
-
"strict": true,
|
|
135
|
-
"target": "ESNext",
|
|
136
|
-
"verbatimModuleSyntax": true
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
`;
|
|
140
|
-
const VITEST_CONFIG_TS = `import { defineConfig } from 'vitest/config';
|
|
141
|
-
|
|
142
|
-
export default defineConfig({
|
|
143
|
-
test: {
|
|
144
|
-
coverage: {
|
|
145
|
-
enabled: true,
|
|
146
|
-
exclude: ['src/apps/**/test', 'src/**/*.test.ts'],
|
|
147
|
-
include: ['src'],
|
|
148
|
-
reporter: ['html', 'lcov', 'text'],
|
|
149
|
-
},
|
|
150
|
-
reporters: ['verbose'],
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
`;
|
|
154
|
-
export function projectFiles(name) {
|
|
155
|
-
return new Map([
|
|
156
|
-
['.gitignore', GITIGNORE],
|
|
157
|
-
['biome.json', BIOME_JSON],
|
|
158
|
-
['package.json', PACKAGE_JSON(name)],
|
|
159
|
-
['README.md', README_MD(name)],
|
|
160
|
-
['tsconfig.json', TSCONFIG_JSON],
|
|
161
|
-
['vitest.config.ts', VITEST_CONFIG_TS],
|
|
162
|
-
]);
|
|
163
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { UC_DEF_FILE_NAME_SUFFIX } from '../../convention.js';
|
|
2
|
-
import { stripUCDLifecycleServer } from '../../uc/index.js';
|
|
3
|
-
export const StripUCDLifecycleServerPlugin = {
|
|
4
|
-
// Why enforce ?
|
|
5
|
-
// Otherwise Rollup parses the file and strips trailing commas.
|
|
6
|
-
// We need them to strip correctly (although the implementation will be made more robust).
|
|
7
|
-
enforce: 'pre',
|
|
8
|
-
name: 'strip-ucd-lifecycle-server',
|
|
9
|
-
transform: (src, id) => {
|
|
10
|
-
if (id.match(new RegExp(`${UC_DEF_FILE_NAME_SUFFIX}$`)) === null) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const code = stripUCDLifecycleServer(src);
|
|
14
|
-
return {
|
|
15
|
-
code,
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Container } from 'inversify';
|
|
2
|
-
import { NodeSpawnShellCommandExecutor } from '../../../std/impl/NodeSpawnShellCommandExecutor.js';
|
|
3
|
-
import { VitestAppTestSuiteEmitter } from '../../../testing/impl/VitestAppTestSuiteEmitter.js';
|
|
4
|
-
import { VitestAppTestSuiteRunner } from '../../../testing/impl/VitestAppTestSuiteRunner.js';
|
|
5
|
-
import { CONTAINER_OPTS } from '../../../utils/index.js';
|
|
6
|
-
import { bindCommon } from '../../../utils/ioc/bindCommon.js';
|
|
7
|
-
import { bindNodeCLI } from '../../../utils/ioc/bindNodeCLI.js';
|
|
8
|
-
import { bindNodeCore } from '../../../utils/ioc/bindNodeCore.js';
|
|
9
|
-
import { bindProduct } from '../../../utils/ioc/bindProduct.js';
|
|
10
|
-
import { I18n } from '../i18n.js';
|
|
11
|
-
import { Manifest } from '../manifest.js';
|
|
12
|
-
const container = new Container(CONTAINER_OPTS);
|
|
13
|
-
bindCommon(container);
|
|
14
|
-
bindNodeCore(container);
|
|
15
|
-
bindNodeCLI(container);
|
|
16
|
-
bindProduct(container, Manifest, I18n);
|
|
17
|
-
container
|
|
18
|
-
.bind('AppTestSuiteEmitter')
|
|
19
|
-
.to(VitestAppTestSuiteEmitter);
|
|
20
|
-
container
|
|
21
|
-
.bind('AppTestSuiteRunner')
|
|
22
|
-
.to(VitestAppTestSuiteRunner);
|
|
23
|
-
container
|
|
24
|
-
.bind('ShellCommandExecutor')
|
|
25
|
-
.to(NodeSpawnShellCommandExecutor);
|
|
26
|
-
export default container;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { NodeCoreCLIManager } from '../../../target/node-core-cli/NodeCoreCLIManager.js';
|
|
4
|
-
import container from './container.js';
|
|
5
|
-
const i18nManager = container.get('I18nManager');
|
|
6
|
-
await i18nManager.init();
|
|
7
|
-
await container.get(NodeCoreCLIManager).handleCommand({
|
|
8
|
-
srcImporter: (path) => import(path),
|
|
9
|
-
});
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Container } from 'inversify';
|
|
2
|
-
import { NodeSpawnShellCommandExecutor } from '../../std/impl/NodeSpawnShellCommandExecutor.js';
|
|
3
|
-
import { VitestAppTestSuiteEmitter } from '../../testing/impl/VitestAppTestSuiteEmitter.js';
|
|
4
|
-
import { VitestAppTestSuiteRunner } from '../../testing/impl/VitestAppTestSuiteRunner.js';
|
|
5
|
-
import { CONTAINER_OPTS } from '../../utils/index.js';
|
|
6
|
-
import { bindCommon } from '../../utils/ioc/bindCommon.js';
|
|
7
|
-
import { bindNodeCLI } from '../../utils/ioc/bindNodeCLI.js';
|
|
8
|
-
import { bindNodeCore } from '../../utils/ioc/bindNodeCore.js';
|
|
9
|
-
import { bindProduct } from '../../utils/ioc/bindProduct.js';
|
|
10
|
-
import { I18n } from './i18n.js';
|
|
11
|
-
import { Manifest } from './manifest.js';
|
|
12
|
-
const container = new Container(CONTAINER_OPTS);
|
|
13
|
-
bindCommon(container);
|
|
14
|
-
bindNodeCore(container);
|
|
15
|
-
bindNodeCLI(container);
|
|
16
|
-
bindProduct(container, Manifest, I18n);
|
|
17
|
-
container
|
|
18
|
-
.bind('AppTestSuiteEmitter')
|
|
19
|
-
.to(VitestAppTestSuiteEmitter);
|
|
20
|
-
container
|
|
21
|
-
.bind('AppTestSuiteRunner')
|
|
22
|
-
.to(VitestAppTestSuiteRunner);
|
|
23
|
-
container
|
|
24
|
-
.bind('ShellCommandExecutor')
|
|
25
|
-
.to(NodeSpawnShellCommandExecutor);
|
|
26
|
-
export default container;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { APPS_ROOT_DIR_NAME } from '../../convention.js';
|
|
4
|
-
import { NodeCoreCLIManager } from '../../target/node-core-cli/NodeCoreCLIManager.js';
|
|
5
|
-
import container from './container.js';
|
|
6
|
-
const i18nManager = container.get('I18nManager');
|
|
7
|
-
await i18nManager.init();
|
|
8
|
-
// Before screaming, yes, this is not using any powerful CLI library.
|
|
9
|
-
// The goal is to reduce the usage of dependencies as much as possible.
|
|
10
|
-
// As long as the built-in Node.js API allows to build it without too many workarounds, let's keep it this way.
|
|
11
|
-
await container.get(NodeCoreCLIManager).handleCommand({
|
|
12
|
-
appsRootPath: container
|
|
13
|
-
.get('FSManager')
|
|
14
|
-
.path('..', '..', APPS_ROOT_DIR_NAME),
|
|
15
|
-
srcImporter: (path) => import(path),
|
|
16
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { AppManifest } from '../../../app/index.js';
|
|
2
|
-
import type { UCDef, UCInput, UCManager, UCOPIBase } from '../../../uc/index.js';
|
|
3
|
-
import type { HTTPDataEnvelope } from '../../../utils/index.js';
|
|
4
|
-
export interface RequestHandlerInputRaw<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined> {
|
|
5
|
-
appManifest: AppManifest;
|
|
6
|
-
envelope: HTTPDataEnvelope;
|
|
7
|
-
ucd: UCDef<I, OPI0, OPI1>;
|
|
8
|
-
/**
|
|
9
|
-
* It is not injected in the handler constructor because it must be the same as the one used in ServerManager.
|
|
10
|
-
*
|
|
11
|
-
* And in some cases, this latter is specific to a context : for instance in automated tests.
|
|
12
|
-
*/
|
|
13
|
-
ucManager: UCManager;
|
|
14
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export async function stop(server) {
|
|
2
|
-
if (!server?.listening) {
|
|
3
|
-
return;
|
|
4
|
-
}
|
|
5
|
-
// As stated in the docs of `close`, only awaiting `.close` is not enough to make sure all the connections are closed.
|
|
6
|
-
// Hence the wrapping in a promise, where the callback is called when the 'close' event is emitted.
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
if (!server) {
|
|
9
|
-
return resolve();
|
|
10
|
-
}
|
|
11
|
-
server.close((err) => {
|
|
12
|
-
if (err) {
|
|
13
|
-
return reject(err);
|
|
14
|
-
}
|
|
15
|
-
resolve();
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { CookieOptions } from 'express';
|
|
2
|
-
import type { JWT } from '../../../dt/index.js';
|
|
3
|
-
import type { JWTManager, SettingsManager, Worker } from '../../../std/index.js';
|
|
4
|
-
import type { ServerManagerSettings } from '../../lib/server/ServerManager.js';
|
|
5
|
-
interface Input {
|
|
6
|
-
jwt: JWT;
|
|
7
|
-
}
|
|
8
|
-
interface Output {
|
|
9
|
-
name: string;
|
|
10
|
-
opts: CookieOptions;
|
|
11
|
-
val: JWT;
|
|
12
|
-
}
|
|
13
|
-
type S = Pick<ServerManagerSettings, 'server_cookies_http_only' | 'server_cookies_name_auth' | 'server_cookies_same_site' | 'server_cookies_secure'>;
|
|
14
|
-
export declare class AuthCookieCreator implements Worker<Input, Promise<Output>> {
|
|
15
|
-
private jwtManager;
|
|
16
|
-
private settingsManager;
|
|
17
|
-
constructor(jwtManager: JWTManager, settingsManager: SettingsManager<S>);
|
|
18
|
-
s(): S;
|
|
19
|
-
exec({ jwt }: Input): Promise<Output>;
|
|
20
|
-
}
|
|
21
|
-
export {};
|
|
@@ -1,50 +0,0 @@
|
|
|
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
|
-
let AuthCookieCreator = class AuthCookieCreator {
|
|
15
|
-
jwtManager;
|
|
16
|
-
settingsManager;
|
|
17
|
-
constructor(jwtManager, settingsManager) {
|
|
18
|
-
this.jwtManager = jwtManager;
|
|
19
|
-
this.settingsManager = settingsManager;
|
|
20
|
-
}
|
|
21
|
-
s() {
|
|
22
|
-
return {
|
|
23
|
-
server_cookies_http_only: this.settingsManager.get()('server_cookies_http_only'),
|
|
24
|
-
server_cookies_name_auth: this.settingsManager.get()('server_cookies_name_auth'),
|
|
25
|
-
server_cookies_same_site: this.settingsManager.get()('server_cookies_same_site'),
|
|
26
|
-
server_cookies_secure: this.settingsManager.get()('server_cookies_secure'),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
async exec({ jwt }) {
|
|
30
|
-
const { exp } = await this.jwtManager.decode(jwt);
|
|
31
|
-
return {
|
|
32
|
-
name: this.s().server_cookies_name_auth,
|
|
33
|
-
opts: {
|
|
34
|
-
expires: exp ? new Date(exp * 1000) : undefined,
|
|
35
|
-
httpOnly: this.s().server_cookies_http_only,
|
|
36
|
-
sameSite: this.s().server_cookies_same_site,
|
|
37
|
-
secure: this.s().server_cookies_secure,
|
|
38
|
-
signed: false, // Not signing to keep it simple and btw, the JWT is already signed
|
|
39
|
-
},
|
|
40
|
-
val: jwt,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
AuthCookieCreator = __decorate([
|
|
45
|
-
injectable(),
|
|
46
|
-
__param(0, inject('JWTManager')),
|
|
47
|
-
__param(1, inject('SettingsManager')),
|
|
48
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
49
|
-
], AuthCookieCreator);
|
|
50
|
-
export { AuthCookieCreator };
|
package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Request, RequestHandler } from 'express';
|
|
2
|
-
import type { Configurable, SettingsManager, Worker } from '../../../std/index.js';
|
|
3
|
-
import { type UCAuth, UCBuilder, type UCInput, type UCOPIBase } from '../../../uc/index.js';
|
|
4
|
-
import { AuthenticationChecker, type AuthenticationCheckerInputRaw } from '../../lib/server/AuthenticationChecker.js';
|
|
5
|
-
import type { ServerManagerSettings } from '../../lib/server/ServerManager.js';
|
|
6
|
-
type Input<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined> = AuthenticationCheckerInputRaw<I, OPI0, OPI1>;
|
|
7
|
-
type Output = RequestHandler;
|
|
8
|
-
interface ReqAuthenticated extends Request {
|
|
9
|
-
auth: UCAuth;
|
|
10
|
-
}
|
|
11
|
-
export declare function isReqAuthenticated(req: Request): req is ReqAuthenticated;
|
|
12
|
-
type S = Pick<ServerManagerSettings, 'server_cookies_name_auth'>;
|
|
13
|
-
export declare class AuthenticationCheckerMiddlewareBuilder<I extends UCInput | undefined = undefined, OPI0 extends UCOPIBase | undefined = undefined, OPI1 extends UCOPIBase | undefined = undefined> implements Configurable<S>, Worker<Input<I, OPI0, OPI1>, Output> {
|
|
14
|
-
private authenticationChecker;
|
|
15
|
-
private settingsManager;
|
|
16
|
-
private ucBuilder;
|
|
17
|
-
constructor(authenticationChecker: AuthenticationChecker, settingsManager: SettingsManager<S>, ucBuilder: UCBuilder);
|
|
18
|
-
s(): S;
|
|
19
|
-
exec({ appManifest, ucd }: Input<I, OPI0, OPI1>): Output;
|
|
20
|
-
}
|
|
21
|
-
export {};
|
package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
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
|
-
import { AuthenticationChecker, } from '../../lib/server/AuthenticationChecker.js';
|
|
16
|
-
export function isReqAuthenticated(req) {
|
|
17
|
-
return !!req.auth;
|
|
18
|
-
}
|
|
19
|
-
let AuthenticationCheckerMiddlewareBuilder = class AuthenticationCheckerMiddlewareBuilder {
|
|
20
|
-
authenticationChecker;
|
|
21
|
-
settingsManager;
|
|
22
|
-
ucBuilder;
|
|
23
|
-
constructor(authenticationChecker, settingsManager, ucBuilder) {
|
|
24
|
-
this.authenticationChecker = authenticationChecker;
|
|
25
|
-
this.settingsManager = settingsManager;
|
|
26
|
-
this.ucBuilder = ucBuilder;
|
|
27
|
-
}
|
|
28
|
-
s() {
|
|
29
|
-
return {
|
|
30
|
-
server_cookies_name_auth: this.settingsManager.get()('server_cookies_name_auth'),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
exec({ appManifest, ucd }) {
|
|
34
|
-
return async (req, _res, nextFn) => {
|
|
35
|
-
const authCookie = req.cookies[this.s().server_cookies_name_auth];
|
|
36
|
-
const authorizationHeader = req.headers.authorization;
|
|
37
|
-
const uc = this.ucBuilder.exec({
|
|
38
|
-
appManifest,
|
|
39
|
-
auth: null,
|
|
40
|
-
def: ucd,
|
|
41
|
-
});
|
|
42
|
-
const { auth } = await this.authenticationChecker.exec({
|
|
43
|
-
authCookie,
|
|
44
|
-
authorizationHeader,
|
|
45
|
-
uc,
|
|
46
|
-
});
|
|
47
|
-
if (auth) {
|
|
48
|
-
req.auth = auth;
|
|
49
|
-
}
|
|
50
|
-
nextFn();
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
AuthenticationCheckerMiddlewareBuilder = __decorate([
|
|
55
|
-
injectable(),
|
|
56
|
-
__param(0, inject(AuthenticationChecker)),
|
|
57
|
-
__param(1, inject('SettingsManager')),
|
|
58
|
-
__param(2, inject(UCBuilder)),
|
|
59
|
-
__metadata("design:paramtypes", [AuthenticationChecker, Object, UCBuilder])
|
|
60
|
-
], AuthenticationCheckerMiddlewareBuilder);
|
|
61
|
-
export { AuthenticationCheckerMiddlewareBuilder };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ErrorRequestHandler } from 'express';
|
|
2
|
-
import type { Worker } from '../../../std/index.js';
|
|
3
|
-
import { CustomerFacingErrorBuilder } from '../../lib/server/CustomerFacingErrorBuilder.js';
|
|
4
|
-
interface Input {
|
|
5
|
-
}
|
|
6
|
-
type Output = ErrorRequestHandler;
|
|
7
|
-
export declare class ErrorMiddlewareBuilder implements Worker<Input, Output> {
|
|
8
|
-
private customerFacingErrorBuilder;
|
|
9
|
-
constructor(customerFacingErrorBuilder: CustomerFacingErrorBuilder);
|
|
10
|
-
exec(_input: Input): Output;
|
|
11
|
-
}
|
|
12
|
-
export {};
|