libmodulor 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +2 -2
  3. package/dist/esm/apps/Helper/src/i18n.js +4 -4
  4. package/dist/esm/apps/Helper/src/lib/layers/project.js +6 -6
  5. package/dist/esm/apps/Helper/src/ucds/CreateAppUCD.js +5 -10
  6. package/dist/esm/apps/Helper/src/ucds/CreateProductUCD.js +5 -10
  7. package/dist/esm/apps/Helper/src/ucds/CreateTargetUCD.js +6 -11
  8. package/dist/esm/apps/Helper/src/ucds/TestAppUCD.js +5 -8
  9. package/dist/esm/dt/DataType.d.ts +2 -1
  10. package/dist/esm/dt/DataTypes.d.ts +1 -1
  11. package/dist/esm/dt/DataTypes.js +1 -0
  12. package/dist/esm/dt/base/TBase.d.ts +2 -0
  13. package/dist/esm/dt/base/TBase.js +5 -0
  14. package/dist/esm/dt/base/TBoolean.d.ts +2 -0
  15. package/dist/esm/dt/base/TBoolean.js +3 -0
  16. package/dist/esm/dt/base/TInt.d.ts +2 -0
  17. package/dist/esm/dt/base/TInt.js +3 -0
  18. package/dist/esm/dt/base/TNumber.d.ts +2 -0
  19. package/dist/esm/dt/base/TNumber.js +3 -0
  20. package/dist/esm/dt/base/TObject.d.ts +2 -0
  21. package/dist/esm/dt/base/TObject.js +29 -0
  22. package/dist/esm/dt/final/TApiKey.d.ts +2 -0
  23. package/dist/esm/dt/final/TApiKey.js +3 -0
  24. package/dist/esm/dt/final/TDateISO8601.d.ts +2 -0
  25. package/dist/esm/dt/final/TDateISO8601.js +3 -0
  26. package/dist/esm/dt/final/TDomainName.d.ts +2 -0
  27. package/dist/esm/dt/final/TDomainName.js +3 -0
  28. package/dist/esm/dt/final/TEmail.d.ts +2 -0
  29. package/dist/esm/dt/final/TEmail.js +3 -0
  30. package/dist/esm/dt/final/TEncryptionKey.d.ts +2 -0
  31. package/dist/esm/dt/final/TEncryptionKey.js +3 -0
  32. package/dist/esm/dt/final/TErrorCode.d.ts +7 -0
  33. package/dist/esm/dt/final/TErrorCode.js +9 -0
  34. package/dist/esm/dt/final/TFile.d.ts +2 -0
  35. package/dist/esm/dt/final/TFile.js +3 -0
  36. package/dist/esm/dt/final/TIPv4.d.ts +2 -0
  37. package/dist/esm/dt/final/TIPv4.js +3 -0
  38. package/dist/esm/dt/final/TIPv6.d.ts +2 -0
  39. package/dist/esm/dt/final/TIPv6.js +3 -0
  40. package/dist/esm/dt/final/TJWT.d.ts +2 -0
  41. package/dist/esm/dt/final/TJWT.js +3 -0
  42. package/dist/esm/dt/final/TPassword.d.ts +2 -0
  43. package/dist/esm/dt/final/TPassword.js +3 -0
  44. package/dist/esm/dt/final/TSSHPrivateKey.d.ts +2 -0
  45. package/dist/esm/dt/final/TSSHPrivateKey.js +3 -0
  46. package/dist/esm/dt/final/TTime.d.ts +2 -0
  47. package/dist/esm/dt/final/TTime.js +3 -0
  48. package/dist/esm/dt/final/TURL.d.ts +2 -0
  49. package/dist/esm/dt/final/TURL.js +3 -0
  50. package/dist/esm/dt/index.d.ts +2 -0
  51. package/dist/esm/dt/index.js +1 -0
  52. package/dist/esm/dt/targets/json-schema.d.ts +24 -0
  53. package/dist/esm/error/CustomError.d.ts +1 -1
  54. package/dist/esm/error/CustomError.js +2 -2
  55. package/dist/esm/error/ForbiddenAsNotFoundError.js +1 -1
  56. package/dist/esm/error/ForbiddenError.js +1 -1
  57. package/dist/esm/error/IllegalArgumentError.js +2 -2
  58. package/dist/esm/error/InternalServerError.js +1 -1
  59. package/dist/esm/error/NotFoundError.js +1 -1
  60. package/dist/esm/error/UnauthorizedError.js +1 -1
  61. package/dist/esm/error/UnavailableError.d.ts +6 -0
  62. package/dist/esm/error/UnavailableError.js +9 -0
  63. package/dist/esm/error/funcs.d.ts +3 -0
  64. package/dist/esm/error/funcs.js +3 -1
  65. package/dist/esm/error/index.d.ts +2 -1
  66. package/dist/esm/error/index.js +2 -1
  67. package/dist/esm/i18n/locales/de.js +8 -0
  68. package/dist/esm/i18n/locales/en.js +8 -0
  69. package/dist/esm/i18n/locales/es.js +8 -0
  70. package/dist/esm/i18n/locales/fr.js +8 -0
  71. package/dist/esm/i18n/types.d.ts +1 -1
  72. package/dist/esm/product/manifest.d.ts +2 -0
  73. package/dist/esm/products/Helper/i18n.d.ts +8 -0
  74. package/dist/esm/std/impl/SimpleHTTPAPICaller.js +1 -1
  75. package/dist/esm/std/impl/SimpleMapI18nManager.d.ts +1 -1
  76. package/dist/esm/std/impl/SimpleMapI18nManager.js +4 -2
  77. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.d.ts +6 -2
  78. package/dist/esm/target/edge-worker-hono-server/SyncEdgeWorkerHonoServerManager.js +17 -9
  79. package/dist/esm/target/index.d.ts +1 -0
  80. package/dist/esm/target/lib/cli/CommandExecutor.js +2 -2
  81. package/dist/esm/target/lib/cli/renderer.d.ts +2 -1
  82. package/dist/esm/target/lib/cli/renderer.js +10 -11
  83. package/dist/esm/target/lib/openapi/OpenAPISpecBuilder.d.ts +25 -0
  84. package/dist/esm/target/lib/openapi/OpenAPISpecBuilder.js +131 -0
  85. package/dist/esm/target/lib/openapi/consts.d.ts +2 -0
  86. package/dist/esm/target/lib/openapi/consts.js +1 -0
  87. package/dist/esm/target/lib/openapi/funcs.d.ts +16 -0
  88. package/dist/esm/target/lib/openapi/funcs.js +249 -0
  89. package/dist/esm/target/lib/openapi/input.d.ts +16 -0
  90. package/dist/esm/target/lib/openapi/input.js +33 -0
  91. package/dist/esm/target/lib/openapi/types.d.ts +109 -0
  92. package/dist/esm/target/lib/rn/input.d.ts +3 -0
  93. package/dist/esm/target/lib/server/AuthCookieCreator.d.ts +2 -1
  94. package/dist/esm/target/lib/server/AuthenticationChecker.d.ts +3 -3
  95. package/dist/esm/target/lib/server/AuthenticationChecker.js +5 -5
  96. package/dist/esm/target/lib/server/ServerBooter.d.ts +4 -2
  97. package/dist/esm/target/lib/server/ServerBooter.js +34 -11
  98. package/dist/esm/target/lib/server/ServerManager.d.ts +19 -9
  99. package/dist/esm/target/lib/server/ServerRequestHandler.d.ts +0 -1
  100. package/dist/esm/target/lib/server/ServerRequestHandler.js +2 -2
  101. package/dist/esm/target/lib/server/consts.d.ts +4 -0
  102. package/dist/esm/target/lib/server/consts.js +22 -0
  103. package/dist/esm/target/lib/server-express/CORSMiddlewareBuilder.d.ts +15 -0
  104. package/dist/esm/target/lib/server-express/CORSMiddlewareBuilder.js +55 -0
  105. package/dist/esm/target/lib/server-express/funcs.d.ts +2 -1
  106. package/dist/esm/target/lib/server-express/funcs.js +7 -2
  107. package/dist/esm/target/lib/server-hono/CORSMiddlewareBuilder.d.ts +14 -0
  108. package/dist/esm/target/{node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.js → lib/server-hono/CORSMiddlewareBuilder.js} +22 -20
  109. package/dist/esm/target/lib/server-hono/funcs.d.ts +2 -1
  110. package/dist/esm/target/lib/server-hono/funcs.js +2 -1
  111. package/dist/esm/target/lib/shared.d.ts +4 -0
  112. package/dist/esm/target/lib/shared.js +2 -1
  113. package/dist/esm/target/nextjs-server/NextJSServerManager.d.ts +3 -1
  114. package/dist/esm/target/nextjs-server/NextJSServerManager.js +3 -0
  115. package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +1 -1
  116. package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +7 -3
  117. package/dist/esm/target/node-express-server/NodeExpressServerManager.js +24 -14
  118. package/dist/esm/target/node-hono-server/NodeHonoServerManager.d.ts +6 -2
  119. package/dist/esm/target/node-hono-server/NodeHonoServerManager.js +21 -11
  120. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.d.ts +3 -1
  121. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +19 -14
  122. package/dist/esm/target/node-mcp-server/types.d.ts +0 -4
  123. package/dist/esm/target/react-web-pure/UCForm.d.ts +1 -1
  124. package/dist/esm/target/react-web-pure/UCForm.js +3 -2
  125. package/dist/esm/testing/workers/checkers/AppI18nChecker.js +4 -2
  126. package/dist/esm/uc/UC.d.ts +2 -0
  127. package/dist/esm/uc/UC.js +16 -1
  128. package/dist/esm/uc/data-store.d.ts +9 -1
  129. package/dist/esm/uc/data-store.js +33 -1
  130. package/dist/esm/uc/impl/CloudflareD1UCDataStore.d.ts +2 -2
  131. package/dist/esm/uc/impl/CloudflareD1UCDataStore.js +7 -0
  132. package/dist/esm/uc/impl/InMemoryUCDataStore.d.ts +8 -3
  133. package/dist/esm/uc/impl/InMemoryUCDataStore.js +19 -3
  134. package/dist/esm/uc/impl/KnexUCDataStore.d.ts +2 -2
  135. package/dist/esm/uc/impl/KnexUCDataStore.js +10 -2
  136. package/dist/esm/uc/impl/SimpleUCManager.d.ts +4 -4
  137. package/dist/esm/uc/impl/SimpleUCManager.js +10 -10
  138. package/dist/esm/uc/metadata.d.ts +7 -0
  139. package/dist/esm/uc/metadata.js +10 -0
  140. package/dist/esm/uc/output-field.d.ts +1 -0
  141. package/dist/esm/uc/output-field.js +13 -1
  142. package/dist/esm/uc/settings/consts.js +1 -0
  143. package/dist/esm/uc/settings.d.ts +8 -1
  144. package/dist/esm/uc/utils/ucHTTPContract.js +1 -1
  145. package/dist/esm/uc/workers/UCExecChecker.d.ts +3 -3
  146. package/dist/esm/uc/workers/UCExecChecker.js +5 -5
  147. package/dist/esm/utils/http/types.d.ts +5 -0
  148. package/dist/esm/utils/index.d.ts +2 -2
  149. package/dist/esm/utils/index.js +1 -1
  150. package/dist/esm/utils/ioc/bindCommon.js +4 -4
  151. package/dist/esm/utils/ioc/bindFactory.d.ts +2 -0
  152. package/dist/esm/utils/ioc/bindFactory.js +9 -0
  153. package/package.json +21 -20
  154. package/dist/esm/apps/Helper/src/lib/app.d.ts +0 -6
  155. package/dist/esm/apps/Helper/src/lib/app.js +0 -12
  156. package/dist/esm/apps/Helper/src/lib/project.d.ts +0 -3
  157. package/dist/esm/apps/Helper/src/lib/project.js +0 -163
  158. package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.d.ts +0 -2
  159. package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.js +0 -18
  160. package/dist/esm/products/Helper/cli-node-core/container.d.ts +0 -3
  161. package/dist/esm/products/Helper/cli-node-core/container.js +0 -26
  162. package/dist/esm/products/Helper/cli-node-core/index.js +0 -9
  163. package/dist/esm/products/Helper/container.d.ts +0 -3
  164. package/dist/esm/products/Helper/container.js +0 -26
  165. package/dist/esm/products/Helper/index.js +0 -16
  166. package/dist/esm/target/lib/react/common.d.ts +0 -6
  167. package/dist/esm/target/lib/react/common.js +0 -1
  168. package/dist/esm/target/lib/server/RequestHandler.d.ts +0 -14
  169. package/dist/esm/target/lib/server/RequestHandler.js +0 -1
  170. package/dist/esm/target/lib/server-node/stop.d.ts +0 -2
  171. package/dist/esm/target/lib/server-node/stop.js +0 -18
  172. package/dist/esm/target/node-express-server/lib/AuthCookieCreator.d.ts +0 -21
  173. package/dist/esm/target/node-express-server/lib/AuthCookieCreator.js +0 -50
  174. package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.d.ts +0 -21
  175. package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.js +0 -61
  176. package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.d.ts +0 -12
  177. package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.js +0 -35
  178. package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.d.ts +0 -12
  179. package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.js +0 -39
  180. package/dist/esm/target/node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.d.ts +0 -18
  181. package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.d.ts +0 -12
  182. package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.js +0 -36
  183. package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.d.ts +0 -23
  184. package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.js +0 -154
  185. package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.d.ts +0 -13
  186. package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.js +0 -46
  187. package/dist/esm/testing/impl/SimpleAppDocsEmitter.d.ts +0 -7
  188. package/dist/esm/testing/impl/SimpleAppDocsEmitter.js +0 -180
  189. package/dist/esm/testing/impl/SimpleAppTesterConfigurator.d.ts +0 -14
  190. package/dist/esm/testing/impl/SimpleAppTesterConfigurator.js +0 -35
  191. package/dist/esm/uc/utils/stripUCDLifecycleServer.d.ts +0 -15
  192. package/dist/esm/uc/utils/stripUCDLifecycleServer.js +0 -77
  193. package/dist/esm/uc/utils/ucifcoIsForArray.d.ts +0 -8
  194. package/dist/esm/uc/utils/ucifcoIsForArray.js +0 -13
  195. package/dist/esm/utils/bundling/vite/StripUCDLifecycleServerPlugin.d.ts +0 -2
  196. package/dist/esm/utils/bundling/vite/StripUCDLifecycleServerPlugin.js +0 -18
  197. package/dist/esm/utils/http/toFormData.d.ts +0 -3
  198. package/dist/esm/utils/http/toFormData.js +0 -4
  199. package/dist/esm/utils/http/toJSON.d.ts +0 -3
  200. package/dist/esm/utils/http/toJSON.js +0 -3
  201. package/dist/esm/utils/http/toQueryParams.d.ts +0 -2
  202. package/dist/esm/utils/http/toQueryParams.js +0 -4
  203. package/dist/esm/utils/ioc/ContainerPrinter.d.ts +0 -15
  204. package/dist/esm/utils/ioc/ContainerPrinter.js +0 -58
  205. package/dist/esm/utils/ioc/bindProvider.d.ts +0 -2
  206. package/dist/esm/utils/ioc/bindProvider.js +0 -9
  207. /package/dist/esm/{products/Helper/cli-node-core/index.d.ts → dt/targets/json-schema.js} +0 -0
  208. /package/dist/esm/{products/Helper/index.d.ts → target/lib/openapi/types.js} +0 -0
@@ -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,2 +0,0 @@
1
- import type { PluginOption } from 'vite';
2
- export declare const StripUCDLifecycleServerPlugin: PluginOption;
@@ -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,3 +0,0 @@
1
- import { Container } from 'inversify';
2
- declare const container: Container;
3
- export default container;
@@ -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,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,3 +0,0 @@
1
- import { Container } from 'inversify';
2
- declare const container: Container;
3
- export default container;
@@ -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,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,6 +0,0 @@
1
- export interface Stylable {
2
- /**
3
- * Although it's not applicable to all the targets (e.g. React Native), we generalize `className` to make it more convenient for targets that accept it as it is a pretty common and standard property
4
- */
5
- className?: string;
6
- }
@@ -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,2 +0,0 @@
1
- import type { Server } from './types.js';
2
- export declare function stop(server: Server): Promise<void>;
@@ -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 };
@@ -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 {};
@@ -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 {};
@@ -1,35 +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 { CustomerFacingErrorBuilder } from '../../lib/server/CustomerFacingErrorBuilder.js';
15
- let ErrorMiddlewareBuilder = class ErrorMiddlewareBuilder {
16
- customerFacingErrorBuilder;
17
- constructor(customerFacingErrorBuilder) {
18
- this.customerFacingErrorBuilder = customerFacingErrorBuilder;
19
- }
20
- exec(_input) {
21
- return (error, _req, res, nextFn) => {
22
- const { error: customError } = this.customerFacingErrorBuilder.exec({
23
- error,
24
- });
25
- res.status(customError.httpStatus).send(customError.toObj());
26
- nextFn();
27
- };
28
- }
29
- };
30
- ErrorMiddlewareBuilder = __decorate([
31
- injectable(),
32
- __param(0, inject(CustomerFacingErrorBuilder)),
33
- __metadata("design:paramtypes", [CustomerFacingErrorBuilder])
34
- ], ErrorMiddlewareBuilder);
35
- export { ErrorMiddlewareBuilder };
@@ -1,12 +0,0 @@
1
- import type { RequestHandler } from 'express';
2
- import type { Worker } from '../../../std/index.js';
3
- import { CSPDirectivesBuilder } from '../../lib/server/CSPDirectivesBuilder.js';
4
- interface Input {
5
- }
6
- type Output = RequestHandler;
7
- export declare class HelmetMiddlewareBuilder implements Worker<Input, Output> {
8
- private cspDirectivesBuilder;
9
- constructor(cspDirectivesBuilder: CSPDirectivesBuilder);
10
- exec(_input: Input): Output;
11
- }
12
- export {};
@@ -1,39 +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 helmet from 'helmet';
14
- import { inject, injectable } from 'inversify';
15
- import { CSPDirectivesBuilder, } from '../../lib/server/CSPDirectivesBuilder.js';
16
- let HelmetMiddlewareBuilder = class HelmetMiddlewareBuilder {
17
- cspDirectivesBuilder;
18
- constructor(cspDirectivesBuilder) {
19
- this.cspDirectivesBuilder = cspDirectivesBuilder;
20
- }
21
- exec(_input) {
22
- const defaultDirectives = helmet.contentSecurityPolicy.getDefaultDirectives();
23
- const { directives } = this.cspDirectivesBuilder.exec({
24
- defaultDirectives,
25
- });
26
- return helmet({
27
- contentSecurityPolicy: {
28
- directives,
29
- useDefaults: false,
30
- },
31
- });
32
- }
33
- };
34
- HelmetMiddlewareBuilder = __decorate([
35
- injectable(),
36
- __param(0, inject(CSPDirectivesBuilder)),
37
- __metadata("design:paramtypes", [CSPDirectivesBuilder])
38
- ], HelmetMiddlewareBuilder);
39
- export { HelmetMiddlewareBuilder };
@@ -1,18 +0,0 @@
1
- import type { RequestHandler } from 'express';
2
- import type { Configurable, SettingsManager, Worker } from '../../../std/index.js';
3
- import type { UCSec } from '../../../uc/index.js';
4
- import { PublicApiKeyChecker } from '../../lib/server/PublicApiKeyChecker.js';
5
- import type { ServerManagerSettings } from '../../lib/server/ServerManager.js';
6
- interface Input {
7
- checkType: UCSec['publicApiKeyCheckType'];
8
- }
9
- type Output = RequestHandler;
10
- type S = Pick<ServerManagerSettings, 'server_public_api_key_header_name'>;
11
- export declare class PublicApiKeyCheckerMiddlewareBuilder implements Configurable<S>, Worker<Input, Output> {
12
- private publicApiKeyChecker;
13
- private settingsManager;
14
- constructor(publicApiKeyChecker: PublicApiKeyChecker, settingsManager: SettingsManager<S>);
15
- s(): S;
16
- exec({ checkType }: Input): Output;
17
- }
18
- export {};
@@ -1,12 +0,0 @@
1
- import type { RequestHandler } from 'express';
2
- import type { Worker } from '../../../std/index.js';
3
- import { RequestChecker } from '../../lib/server/RequestChecker.js';
4
- interface Input {
5
- }
6
- type Output = RequestHandler;
7
- export declare class RequestCheckerMiddlewareBuilder implements Worker<Input, Output> {
8
- private requestChecker;
9
- constructor(requestChecker: RequestChecker);
10
- exec(_input: Input): Output;
11
- }
12
- export {};