libmodulor 0.1.0 → 0.3.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 (756) hide show
  1. package/.github/ISSUE_TEMPLATE/generic-issue.md +16 -0
  2. package/CHANGELOG.md +30 -2
  3. package/LICENSE +165 -0
  4. package/MAINTAINERS.md +1 -0
  5. package/README.md +71 -1339
  6. package/dist/esm/app/i18n.d.ts +2 -0
  7. package/dist/esm/app/i18n.js +1 -0
  8. package/dist/esm/app/index.d.ts +8 -0
  9. package/dist/esm/app/index.js +5 -0
  10. package/dist/esm/app/installer.d.ts +4 -0
  11. package/dist/esm/app/installer.js +1 -0
  12. package/dist/esm/app/manifest.d.ts +14 -0
  13. package/dist/esm/app/manifest.js +1 -0
  14. package/dist/esm/app/workers/AppManifestLoader.d.ts +15 -0
  15. package/dist/esm/app/workers/AppManifestLoader.js +56 -0
  16. package/dist/esm/app/workers/AppSrcBrowser.d.ts +19 -0
  17. package/dist/esm/app/workers/AppSrcBrowser.js +59 -0
  18. package/dist/esm/app/workers/AppSrcFilePathBuilder.d.ts +19 -0
  19. package/dist/esm/app/workers/AppSrcFilePathBuilder.js +48 -0
  20. package/dist/esm/app/workers/AppUCsLoader.d.ts +22 -0
  21. package/dist/esm/app/workers/AppUCsLoader.js +65 -0
  22. package/dist/esm/app/workers/UCDefLoader.d.ts +15 -0
  23. package/dist/esm/app/workers/UCDefLoader.js +57 -0
  24. package/dist/esm/apps/Helper/index.d.ts +2 -0
  25. package/dist/esm/apps/Helper/index.js +2 -0
  26. package/dist/esm/apps/Helper/src/i18n.d.ts +2 -0
  27. package/dist/esm/apps/Helper/src/i18n.js +18 -0
  28. package/dist/esm/apps/Helper/src/lib/app.d.ts +6 -0
  29. package/dist/esm/apps/Helper/src/lib/app.js +12 -0
  30. package/dist/esm/apps/Helper/src/manifest.d.ts +22 -0
  31. package/dist/esm/apps/Helper/src/manifest.js +22 -0
  32. package/dist/esm/apps/Helper/src/ucds/DeleteGeneratedAppsTestsUCD.d.ts +5 -0
  33. package/dist/esm/apps/Helper/src/ucds/DeleteGeneratedAppsTestsUCD.js +70 -0
  34. package/dist/esm/apps/Helper/src/ucds/GenerateAppsTestsUCD.d.ts +12 -0
  35. package/dist/esm/apps/Helper/src/ucds/GenerateAppsTestsUCD.js +106 -0
  36. package/dist/esm/apps/Helper/src/ucds/TestAppUCD.d.ts +9 -0
  37. package/dist/esm/apps/Helper/src/ucds/TestAppUCD.js +103 -0
  38. package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.d.ts +2 -0
  39. package/dist/esm/bundlers/vite/StripUCDLifecycleServerPlugin.js +15 -0
  40. package/dist/esm/convention.d.ts +42 -0
  41. package/dist/esm/convention.js +40 -0
  42. package/dist/esm/dt/DataType.d.ts +68 -0
  43. package/dist/esm/dt/DataType.js +1 -0
  44. package/dist/esm/dt/DataTypes.d.ts +2 -0
  45. package/dist/esm/dt/DataTypes.js +68 -0
  46. package/dist/esm/dt/Validation.d.ts +25 -0
  47. package/dist/esm/dt/Validation.js +42 -0
  48. package/dist/esm/dt/base/TBase.d.ts +66 -0
  49. package/dist/esm/dt/base/TBase.js +120 -0
  50. package/dist/esm/dt/base/TBoolean.d.ts +10 -0
  51. package/dist/esm/dt/base/TBoolean.js +38 -0
  52. package/dist/esm/dt/base/TInt.d.ts +20 -0
  53. package/dist/esm/dt/base/TInt.js +53 -0
  54. package/dist/esm/dt/base/TNumber.d.ts +31 -0
  55. package/dist/esm/dt/base/TNumber.js +83 -0
  56. package/dist/esm/dt/base/TObject.d.ts +18 -0
  57. package/dist/esm/dt/base/TObject.js +66 -0
  58. package/dist/esm/dt/base/TString.d.ts +22 -0
  59. package/dist/esm/dt/base/TString.js +62 -0
  60. package/dist/esm/dt/base/TUInt.d.ts +12 -0
  61. package/dist/esm/dt/base/TUInt.js +18 -0
  62. package/dist/esm/dt/final/TAddress.d.ts +7 -0
  63. package/dist/esm/dt/final/TAddress.js +9 -0
  64. package/dist/esm/dt/final/TAmount.d.ts +13 -0
  65. package/dist/esm/dt/final/TAmount.js +27 -0
  66. package/dist/esm/dt/final/TApiKey.d.ts +10 -0
  67. package/dist/esm/dt/final/TApiKey.js +15 -0
  68. package/dist/esm/dt/final/TBarCode.d.ts +7 -0
  69. package/dist/esm/dt/final/TBarCode.js +9 -0
  70. package/dist/esm/dt/final/TCSS.d.ts +8 -0
  71. package/dist/esm/dt/final/TCSS.js +12 -0
  72. package/dist/esm/dt/final/TColor.d.ts +9 -0
  73. package/dist/esm/dt/final/TColor.js +12 -0
  74. package/dist/esm/dt/final/TColorRGBA.d.ts +11 -0
  75. package/dist/esm/dt/final/TColorRGBA.js +19 -0
  76. package/dist/esm/dt/final/TCompanyName.d.ts +7 -0
  77. package/dist/esm/dt/final/TCompanyName.js +9 -0
  78. package/dist/esm/dt/final/TCountryISO3166Alpha2.d.ts +10 -0
  79. package/dist/esm/dt/final/TCountryISO3166Alpha2.js +270 -0
  80. package/dist/esm/dt/final/TCurrencyISO4217.d.ts +15 -0
  81. package/dist/esm/dt/final/TCurrencyISO4217.js +24 -0
  82. package/dist/esm/dt/final/TDateISO8601.d.ts +12 -0
  83. package/dist/esm/dt/final/TDateISO8601.js +29 -0
  84. package/dist/esm/dt/final/TDateTimeFormat.d.ts +7 -0
  85. package/dist/esm/dt/final/TDateTimeFormat.js +9 -0
  86. package/dist/esm/dt/final/TDirPath.d.ts +9 -0
  87. package/dist/esm/dt/final/TDirPath.js +16 -0
  88. package/dist/esm/dt/final/TDomainName.d.ts +13 -0
  89. package/dist/esm/dt/final/TDomainName.js +22 -0
  90. package/dist/esm/dt/final/TEmail.d.ts +13 -0
  91. package/dist/esm/dt/final/TEmail.js +22 -0
  92. package/dist/esm/dt/final/TEmbeddedObject.d.ts +6 -0
  93. package/dist/esm/dt/final/TEmbeddedObject.js +10 -0
  94. package/dist/esm/dt/final/TEmoji.d.ts +7 -0
  95. package/dist/esm/dt/final/TEmoji.js +9 -0
  96. package/dist/esm/dt/final/TEncryptionKey.d.ts +10 -0
  97. package/dist/esm/dt/final/TEncryptionKey.js +15 -0
  98. package/dist/esm/dt/final/TErrorMessage.d.ts +7 -0
  99. package/dist/esm/dt/final/TErrorMessage.js +9 -0
  100. package/dist/esm/dt/final/TExternalServiceId.d.ts +7 -0
  101. package/dist/esm/dt/final/TExternalServiceId.js +9 -0
  102. package/dist/esm/dt/final/TFile.d.ts +23 -0
  103. package/dist/esm/dt/final/TFile.js +41 -0
  104. package/dist/esm/dt/final/TFileExtension.d.ts +15 -0
  105. package/dist/esm/dt/final/TFileExtension.js +15 -0
  106. package/dist/esm/dt/final/TFileMimeType.d.ts +11 -0
  107. package/dist/esm/dt/final/TFileMimeType.js +15 -0
  108. package/dist/esm/dt/final/TFileName.d.ts +7 -0
  109. package/dist/esm/dt/final/TFileName.js +9 -0
  110. package/dist/esm/dt/final/TFilePath.d.ts +9 -0
  111. package/dist/esm/dt/final/TFilePath.js +16 -0
  112. package/dist/esm/dt/final/TFreeTextLong.d.ts +8 -0
  113. package/dist/esm/dt/final/TFreeTextLong.js +12 -0
  114. package/dist/esm/dt/final/TFreeTextShort.d.ts +7 -0
  115. package/dist/esm/dt/final/TFreeTextShort.js +9 -0
  116. package/dist/esm/dt/final/TGeolocation.d.ts +12 -0
  117. package/dist/esm/dt/final/TGeolocation.js +20 -0
  118. package/dist/esm/dt/final/TGitSSHURL.d.ts +11 -0
  119. package/dist/esm/dt/final/TGitSSHURL.js +17 -0
  120. package/dist/esm/dt/final/THTML.d.ts +8 -0
  121. package/dist/esm/dt/final/THTML.js +12 -0
  122. package/dist/esm/dt/final/THTTPContentType.d.ts +9 -0
  123. package/dist/esm/dt/final/THTTPContentType.js +20 -0
  124. package/dist/esm/dt/final/THTTPMethod.d.ts +9 -0
  125. package/dist/esm/dt/final/THTTPMethod.js +24 -0
  126. package/dist/esm/dt/final/THTTPStatusNumber.d.ts +10 -0
  127. package/dist/esm/dt/final/THTTPStatusNumber.js +27 -0
  128. package/dist/esm/dt/final/THostAddress.d.ts +7 -0
  129. package/dist/esm/dt/final/THostAddress.js +9 -0
  130. package/dist/esm/dt/final/THostPort.d.ts +8 -0
  131. package/dist/esm/dt/final/THostPort.js +15 -0
  132. package/dist/esm/dt/final/TIPv4.d.ts +9 -0
  133. package/dist/esm/dt/final/TIPv4.js +16 -0
  134. package/dist/esm/dt/final/TIPv6.d.ts +9 -0
  135. package/dist/esm/dt/final/TIPv6.js +16 -0
  136. package/dist/esm/dt/final/TJSONString.d.ts +10 -0
  137. package/dist/esm/dt/final/TJSONString.js +25 -0
  138. package/dist/esm/dt/final/TJWT.d.ts +12 -0
  139. package/dist/esm/dt/final/TJWT.js +41 -0
  140. package/dist/esm/dt/final/TJavaScript.d.ts +8 -0
  141. package/dist/esm/dt/final/TJavaScript.js +12 -0
  142. package/dist/esm/dt/final/TJobTitle.d.ts +7 -0
  143. package/dist/esm/dt/final/TJobTitle.js +9 -0
  144. package/dist/esm/dt/final/TMarkdown.d.ts +8 -0
  145. package/dist/esm/dt/final/TMarkdown.js +12 -0
  146. package/dist/esm/dt/final/TNumIndex.d.ts +7 -0
  147. package/dist/esm/dt/final/TNumIndex.js +9 -0
  148. package/dist/esm/dt/final/TPassword.d.ts +10 -0
  149. package/dist/esm/dt/final/TPassword.js +15 -0
  150. package/dist/esm/dt/final/TPercentage.d.ts +10 -0
  151. package/dist/esm/dt/final/TPercentage.js +21 -0
  152. package/dist/esm/dt/final/TPersonFirstname.d.ts +9 -0
  153. package/dist/esm/dt/final/TPersonFirstname.js +19 -0
  154. package/dist/esm/dt/final/TPersonFullname.d.ts +11 -0
  155. package/dist/esm/dt/final/TPersonFullname.js +19 -0
  156. package/dist/esm/dt/final/TPersonInitials.d.ts +9 -0
  157. package/dist/esm/dt/final/TPersonInitials.js +19 -0
  158. package/dist/esm/dt/final/TPersonLastname.d.ts +9 -0
  159. package/dist/esm/dt/final/TPersonLastname.js +19 -0
  160. package/dist/esm/dt/final/TQRCode.d.ts +9 -0
  161. package/dist/esm/dt/final/TQRCode.js +19 -0
  162. package/dist/esm/dt/final/TSQLQuery.d.ts +8 -0
  163. package/dist/esm/dt/final/TSQLQuery.js +12 -0
  164. package/dist/esm/dt/final/TSSHPrivateKey.d.ts +16 -0
  165. package/dist/esm/dt/final/TSSHPrivateKey.js +26 -0
  166. package/dist/esm/dt/final/TSSHPublicKey.d.ts +13 -0
  167. package/dist/esm/dt/final/TSSHPublicKey.js +27 -0
  168. package/dist/esm/dt/final/TSearchQuery.d.ts +19 -0
  169. package/dist/esm/dt/final/TSearchQuery.js +23 -0
  170. package/dist/esm/dt/final/TSemVerVersion.d.ts +9 -0
  171. package/dist/esm/dt/final/TSemVerVersion.js +19 -0
  172. package/dist/esm/dt/final/TShellCommand.d.ts +8 -0
  173. package/dist/esm/dt/final/TShellCommand.js +12 -0
  174. package/dist/esm/dt/final/TSlug.d.ts +9 -0
  175. package/dist/esm/dt/final/TSlug.js +16 -0
  176. package/dist/esm/dt/final/TTime.d.ts +13 -0
  177. package/dist/esm/dt/final/TTime.js +22 -0
  178. package/dist/esm/dt/final/TTimestamp.d.ts +7 -0
  179. package/dist/esm/dt/final/TTimestamp.js +9 -0
  180. package/dist/esm/dt/final/TUIntDuration.d.ts +7 -0
  181. package/dist/esm/dt/final/TUIntDuration.js +9 -0
  182. package/dist/esm/dt/final/TUIntQuantity.d.ts +7 -0
  183. package/dist/esm/dt/final/TUIntQuantity.js +9 -0
  184. package/dist/esm/dt/final/TURL.d.ts +16 -0
  185. package/dist/esm/dt/final/TURL.js +32 -0
  186. package/dist/esm/dt/final/TURLPath.d.ts +7 -0
  187. package/dist/esm/dt/final/TURLPath.js +9 -0
  188. package/dist/esm/dt/final/TUUID.d.ts +9 -0
  189. package/dist/esm/dt/final/TUUID.js +16 -0
  190. package/dist/esm/dt/final/TUsername.d.ts +7 -0
  191. package/dist/esm/dt/final/TUsername.js +9 -0
  192. package/dist/esm/dt/final/TYesNo.d.ts +9 -0
  193. package/dist/esm/dt/final/TYesNo.js +20 -0
  194. package/dist/esm/dt/index.d.ts +78 -0
  195. package/dist/esm/dt/index.js +75 -0
  196. package/dist/esm/dt/targets/rn.d.ts +1 -0
  197. package/dist/esm/dt/targets/rn.js +1 -0
  198. package/dist/esm/dt/targets/web.d.ts +1 -0
  199. package/dist/esm/dt/targets/web.js +1 -0
  200. package/dist/esm/error/CustomError.d.ts +10 -0
  201. package/dist/esm/error/CustomError.js +13 -0
  202. package/dist/esm/error/ForbiddenAsNotFoundError.d.ts +6 -0
  203. package/dist/esm/error/ForbiddenAsNotFoundError.js +9 -0
  204. package/dist/esm/error/ForbiddenError.d.ts +6 -0
  205. package/dist/esm/error/ForbiddenError.js +9 -0
  206. package/dist/esm/error/IllegalArgumentError.d.ts +6 -0
  207. package/dist/esm/error/IllegalArgumentError.js +9 -0
  208. package/dist/esm/error/InternalServerError.d.ts +6 -0
  209. package/dist/esm/error/InternalServerError.js +9 -0
  210. package/dist/esm/error/NotFoundError.d.ts +6 -0
  211. package/dist/esm/error/NotFoundError.js +9 -0
  212. package/dist/esm/error/UnauthorizedError.d.ts +6 -0
  213. package/dist/esm/error/UnauthorizedError.js +9 -0
  214. package/dist/esm/error/index.d.ts +7 -0
  215. package/dist/esm/error/index.js +7 -0
  216. package/dist/esm/i18n/WordingManager.d.ts +20 -0
  217. package/dist/esm/i18n/WordingManager.js +109 -0
  218. package/dist/esm/i18n/consts.d.ts +2 -0
  219. package/dist/esm/i18n/consts.js +1 -0
  220. package/dist/esm/i18n/index.d.ts +3 -0
  221. package/dist/esm/i18n/index.js +2 -0
  222. package/dist/esm/i18n/locales/en.d.ts +2 -0
  223. package/dist/esm/i18n/locales/en.js +54 -0
  224. package/dist/esm/i18n/locales/fr.d.ts +2 -0
  225. package/dist/esm/i18n/locales/fr.js +54 -0
  226. package/dist/esm/i18n/types.d.ts +14 -0
  227. package/dist/esm/i18n/types.js +1 -0
  228. package/dist/esm/icon/Icon.d.ts +1 -0
  229. package/dist/esm/icon/Icon.js +1 -0
  230. package/dist/esm/icon/index.d.ts +1 -0
  231. package/dist/esm/icon/index.js +1 -0
  232. package/dist/esm/index.d.ts +42 -0
  233. package/dist/esm/index.js +42 -1
  234. package/dist/esm/index.node-mcp.d.ts +2 -0
  235. package/dist/esm/index.node-mcp.js +2 -0
  236. package/dist/esm/index.node-test.d.ts +3 -0
  237. package/dist/esm/index.node-test.js +2 -0
  238. package/dist/esm/index.node.d.ts +13 -0
  239. package/dist/esm/index.node.js +13 -0
  240. package/dist/esm/index.react-web-pure.d.ts +10 -0
  241. package/dist/esm/index.react-web-pure.js +10 -0
  242. package/dist/esm/index.react.d.ts +9 -0
  243. package/dist/esm/index.react.js +6 -0
  244. package/dist/esm/index.rn.d.ts +2 -0
  245. package/dist/esm/index.rn.js +2 -0
  246. package/dist/esm/index.std-jwt-manager-jose.d.ts +1 -0
  247. package/dist/esm/index.std-jwt-manager-jose.js +1 -0
  248. package/dist/esm/index.uc-data-store-knex.d.ts +1 -0
  249. package/dist/esm/index.uc-data-store-knex.js +1 -0
  250. package/dist/esm/index.vite.d.ts +1 -0
  251. package/dist/esm/index.vite.js +1 -0
  252. package/dist/esm/index.web.d.ts +5 -0
  253. package/dist/esm/index.web.js +5 -0
  254. package/dist/esm/product/i18n.d.ts +2 -0
  255. package/dist/esm/product/i18n.js +1 -0
  256. package/dist/esm/product/index.d.ts +3 -0
  257. package/dist/esm/product/index.js +1 -0
  258. package/dist/esm/product/manifest.d.ts +17 -0
  259. package/dist/esm/product/manifest.js +1 -0
  260. package/dist/esm/product/workers/ProductUCsLoader.d.ts +12 -0
  261. package/dist/esm/product/workers/ProductUCsLoader.js +41 -0
  262. package/dist/esm/products/Helper/container.d.ts +3 -0
  263. package/dist/esm/products/Helper/container.js +22 -0
  264. package/dist/esm/products/Helper/i18n.d.ts +2 -0
  265. package/dist/esm/products/Helper/i18n.js +10 -0
  266. package/dist/esm/products/Helper/index.d.ts +1 -0
  267. package/dist/esm/products/Helper/index.js +11 -0
  268. package/dist/esm/products/Helper/manifest.d.ts +1 -0
  269. package/dist/esm/products/Helper/manifest.js +4 -0
  270. package/dist/esm/std/BufferManager.d.ts +9 -0
  271. package/dist/esm/std/BufferManager.js +1 -0
  272. package/dist/esm/std/ClockManager.d.ts +7 -0
  273. package/dist/esm/std/ClockManager.js +1 -0
  274. package/dist/esm/std/CryptoManager.d.ts +20 -0
  275. package/dist/esm/std/CryptoManager.js +1 -0
  276. package/dist/esm/std/EmailManager.d.ts +25 -0
  277. package/dist/esm/std/EmailManager.js +1 -0
  278. package/dist/esm/std/EnvironmentManager.d.ts +14 -0
  279. package/dist/esm/std/EnvironmentManager.js +1 -0
  280. package/dist/esm/std/ExternalResourceInstaller.d.ts +17 -0
  281. package/dist/esm/std/ExternalResourceInstaller.js +37 -0
  282. package/dist/esm/std/ExternalResourceManager.d.ts +6 -0
  283. package/dist/esm/std/ExternalResourceManager.js +1 -0
  284. package/dist/esm/std/FSManager.d.ts +55 -0
  285. package/dist/esm/std/FSManager.js +6 -0
  286. package/dist/esm/std/FormDataBuilder.d.ts +9 -0
  287. package/dist/esm/std/FormDataBuilder.js +1 -0
  288. package/dist/esm/std/HTTPAPICallExecutor.d.ts +40 -0
  289. package/dist/esm/std/HTTPAPICallExecutor.js +1 -0
  290. package/dist/esm/std/HTTPAPICaller.d.ts +39 -0
  291. package/dist/esm/std/HTTPAPICaller.js +1 -0
  292. package/dist/esm/std/I18nManager.d.ts +14 -0
  293. package/dist/esm/std/I18nManager.js +1 -0
  294. package/dist/esm/std/JWTManager.d.ts +34 -0
  295. package/dist/esm/std/JWTManager.js +1 -0
  296. package/dist/esm/std/JobManager.d.ts +17 -0
  297. package/dist/esm/std/JobManager.js +1 -0
  298. package/dist/esm/std/Logger.d.ts +13 -0
  299. package/dist/esm/std/Logger.js +1 -0
  300. package/dist/esm/std/PromptManager.d.ts +6 -0
  301. package/dist/esm/std/PromptManager.js +1 -0
  302. package/dist/esm/std/SettingsManager.d.ts +14 -0
  303. package/dist/esm/std/SettingsManager.js +7 -0
  304. package/dist/esm/std/Worker.d.ts +3 -0
  305. package/dist/esm/std/Worker.js +1 -0
  306. package/dist/esm/std/XMLManager.d.ts +9 -0
  307. package/dist/esm/std/XMLManager.js +1 -0
  308. package/dist/esm/std/consts.d.ts +8 -0
  309. package/dist/esm/std/consts.js +22 -0
  310. package/dist/esm/std/impl/BufferLibBufferManager.d.ts +10 -0
  311. package/dist/esm/std/impl/BufferLibBufferManager.js +32 -0
  312. package/dist/esm/std/impl/ConsoleLogger.d.ts +17 -0
  313. package/dist/esm/std/impl/ConsoleLogger.js +77 -0
  314. package/dist/esm/std/impl/EnvSettingsManager.d.ts +10 -0
  315. package/dist/esm/std/impl/EnvSettingsManager.js +108 -0
  316. package/dist/esm/std/impl/FakeEmailManager.d.ts +13 -0
  317. package/dist/esm/std/impl/FakeEmailManager.js +29 -0
  318. package/dist/esm/std/impl/FakeFSManager.d.ts +23 -0
  319. package/dist/esm/std/impl/FakeFSManager.js +104 -0
  320. package/dist/esm/std/impl/FakeHTTPAPICallExecutor.d.ts +9 -0
  321. package/dist/esm/std/impl/FakeHTTPAPICallExecutor.js +74 -0
  322. package/dist/esm/std/impl/FakeJobManager.d.ts +12 -0
  323. package/dist/esm/std/impl/FakeJobManager.js +29 -0
  324. package/dist/esm/std/impl/FetchHTTPAPICallExecutor.d.ts +4 -0
  325. package/dist/esm/std/impl/FetchHTTPAPICallExecutor.js +16 -0
  326. package/dist/esm/std/impl/JoseJWTManager.d.ts +14 -0
  327. package/dist/esm/std/impl/JoseJWTManager.js +110 -0
  328. package/dist/esm/std/impl/NodeBufferManager.d.ts +9 -0
  329. package/dist/esm/std/impl/NodeBufferManager.js +31 -0
  330. package/dist/esm/std/impl/NodeCryptoManager.d.ts +13 -0
  331. package/dist/esm/std/impl/NodeCryptoManager.js +60 -0
  332. package/dist/esm/std/impl/NodeDeterministicCryptoManager.d.ts +10 -0
  333. package/dist/esm/std/impl/NodeDeterministicCryptoManager.js +59 -0
  334. package/dist/esm/std/impl/NodeEnvironmentManager.d.ts +9 -0
  335. package/dist/esm/std/impl/NodeEnvironmentManager.js +29 -0
  336. package/dist/esm/std/impl/NodeFSManager.d.ts +19 -0
  337. package/dist/esm/std/impl/NodeFSManager.js +126 -0
  338. package/dist/esm/std/impl/NodeFormDataBuilder.d.ts +4 -0
  339. package/dist/esm/std/impl/NodeFormDataBuilder.js +37 -0
  340. package/dist/esm/std/impl/NodeHTTPAPICallExecutorAgentBuilder.d.ts +7 -0
  341. package/dist/esm/std/impl/NodeHTTPAPICallExecutorAgentBuilder.js +35 -0
  342. package/dist/esm/std/impl/NodePromptManager.d.ts +4 -0
  343. package/dist/esm/std/impl/NodePromptManager.js +34 -0
  344. package/dist/esm/std/impl/NoopHTTPAPICallExecutorAgentBuilder.d.ts +4 -0
  345. package/dist/esm/std/impl/NoopHTTPAPICallExecutorAgentBuilder.js +16 -0
  346. package/dist/esm/std/impl/NoopXMLManager.d.ts +4 -0
  347. package/dist/esm/std/impl/NoopXMLManager.js +16 -0
  348. package/dist/esm/std/impl/SettingsServerClientManager.d.ts +16 -0
  349. package/dist/esm/std/impl/SettingsServerClientManager.js +59 -0
  350. package/dist/esm/std/impl/SimpleFormDataBuilder.d.ts +4 -0
  351. package/dist/esm/std/impl/SimpleFormDataBuilder.js +16 -0
  352. package/dist/esm/std/impl/SimpleHTTPAPICaller.d.ts +19 -0
  353. package/dist/esm/std/impl/SimpleHTTPAPICaller.js +196 -0
  354. package/dist/esm/std/impl/SimpleMapI18nManager.d.ts +16 -0
  355. package/dist/esm/std/impl/SimpleMapI18nManager.js +74 -0
  356. package/dist/esm/std/impl/StaticSettingsManager.d.ts +6 -0
  357. package/dist/esm/std/impl/StaticSettingsManager.js +28 -0
  358. package/dist/esm/std/impl/StdDateClockManager.d.ts +7 -0
  359. package/dist/esm/std/impl/StdDateClockManager.js +25 -0
  360. package/dist/esm/std/impl/UCDataStoreExternalResourceManager.d.ts +10 -0
  361. package/dist/esm/std/impl/UCDataStoreExternalResourceManager.js +37 -0
  362. package/dist/esm/std/impl/WebCryptoManager.d.ts +13 -0
  363. package/dist/esm/std/impl/WebCryptoManager.js +60 -0
  364. package/dist/esm/std/impl/WebFSManager.d.ts +18 -0
  365. package/dist/esm/std/impl/WebFSManager.js +55 -0
  366. package/dist/esm/std/index.d.ts +20 -0
  367. package/dist/esm/std/index.js +20 -0
  368. package/dist/esm/target/lib/cli/CLIManager.d.ts +6 -0
  369. package/dist/esm/target/lib/cli/CLIManager.js +1 -0
  370. package/dist/esm/target/lib/cli/CommandExecutor.d.ts +24 -0
  371. package/dist/esm/target/lib/cli/CommandExecutor.js +118 -0
  372. package/dist/esm/target/lib/cli/renderer.d.ts +2 -0
  373. package/dist/esm/target/lib/cli/renderer.js +17 -0
  374. package/dist/esm/target/lib/client/ServerClientManager.d.ts +27 -0
  375. package/dist/esm/target/lib/client/ServerClientManager.js +1 -0
  376. package/dist/esm/target/lib/client/consts.d.ts +2 -0
  377. package/dist/esm/target/lib/client/consts.js +5 -0
  378. package/dist/esm/target/lib/mcp-server/MCPServerBooter.d.ts +15 -0
  379. package/dist/esm/target/lib/mcp-server/MCPServerBooter.js +55 -0
  380. package/dist/esm/target/lib/react/DIContextProvider.d.ts +16 -0
  381. package/dist/esm/target/lib/react/DIContextProvider.js +19 -0
  382. package/dist/esm/target/lib/react/UCContainer.d.ts +6 -0
  383. package/dist/esm/target/lib/react/UCContainer.js +24 -0
  384. package/dist/esm/target/lib/react/UCEntrypoint.d.ts +9 -0
  385. package/dist/esm/target/lib/react/UCEntrypoint.js +8 -0
  386. package/dist/esm/target/lib/react/UCPanel.d.ts +20 -0
  387. package/dist/esm/target/lib/react/UCPanel.js +86 -0
  388. package/dist/esm/target/lib/react/entrypoint.d.ts +6 -0
  389. package/dist/esm/target/lib/react/entrypoint.js +1 -0
  390. package/dist/esm/target/lib/react/form.d.ts +10 -0
  391. package/dist/esm/target/lib/react/form.js +1 -0
  392. package/dist/esm/target/lib/react/loader.d.ts +2 -0
  393. package/dist/esm/target/lib/react/loader.js +1 -0
  394. package/dist/esm/target/lib/react/panel.d.ts +14 -0
  395. package/dist/esm/target/lib/react/panel.js +1 -0
  396. package/dist/esm/target/lib/react/touchable.d.ts +12 -0
  397. package/dist/esm/target/lib/react/touchable.js +1 -0
  398. package/dist/esm/target/lib/react/useUC.d.ts +15 -0
  399. package/dist/esm/target/lib/react/useUC.js +22 -0
  400. package/dist/esm/target/lib/react/useUCOR.d.ts +17 -0
  401. package/dist/esm/target/lib/react/useUCOR.js +80 -0
  402. package/dist/esm/target/lib/server/AuthenticationChecker.d.ts +30 -0
  403. package/dist/esm/target/lib/server/AuthenticationChecker.js +108 -0
  404. package/dist/esm/target/lib/server/BasicAuthenticationChecker.d.ts +17 -0
  405. package/dist/esm/target/lib/server/BasicAuthenticationChecker.js +69 -0
  406. package/dist/esm/target/lib/server/CSPDirectivesBuilder.d.ts +22 -0
  407. package/dist/esm/target/lib/server/CSPDirectivesBuilder.js +63 -0
  408. package/dist/esm/target/lib/server/CustomerFacingErrorBuilder.d.ts +15 -0
  409. package/dist/esm/target/lib/server/CustomerFacingErrorBuilder.js +42 -0
  410. package/dist/esm/target/lib/server/EntrypointsBuilder.d.ts +15 -0
  411. package/dist/esm/target/lib/server/EntrypointsBuilder.js +46 -0
  412. package/dist/esm/target/lib/server/JWTAuthenticationChecker.d.ts +17 -0
  413. package/dist/esm/target/lib/server/JWTAuthenticationChecker.js +78 -0
  414. package/dist/esm/target/lib/server/PrivateApiKeyAuthenticationChecker.d.ts +15 -0
  415. package/dist/esm/target/lib/server/PrivateApiKeyAuthenticationChecker.js +52 -0
  416. package/dist/esm/target/lib/server/PublicApiKeyChecker.d.ts +16 -0
  417. package/dist/esm/target/lib/server/PublicApiKeyChecker.js +55 -0
  418. package/dist/esm/target/lib/server/RequestChecker.d.ts +18 -0
  419. package/dist/esm/target/lib/server/RequestChecker.js +53 -0
  420. package/dist/esm/target/lib/server/RequestHandler.d.ts +9 -0
  421. package/dist/esm/target/lib/server/RequestHandler.js +1 -0
  422. package/dist/esm/target/lib/server/RequestLogger.d.ts +14 -0
  423. package/dist/esm/target/lib/server/RequestLogger.js +36 -0
  424. package/dist/esm/target/lib/server/ServerBooter.d.ts +24 -0
  425. package/dist/esm/target/lib/server/ServerBooter.js +111 -0
  426. package/dist/esm/target/lib/server/ServerInstaller.d.ts +10 -0
  427. package/dist/esm/target/lib/server/ServerInstaller.js +44 -0
  428. package/dist/esm/target/lib/server/ServerManager.d.ts +39 -0
  429. package/dist/esm/target/lib/server/ServerManager.js +1 -0
  430. package/dist/esm/target/lib/server/consts.d.ts +2 -0
  431. package/dist/esm/target/lib/server/consts.js +20 -0
  432. package/dist/esm/target/lib/shared.d.ts +2 -0
  433. package/dist/esm/target/lib/shared.js +1 -0
  434. package/dist/esm/target/lib/web/input.d.ts +24 -0
  435. package/dist/esm/target/lib/web/input.js +41 -0
  436. package/dist/esm/target/node-core-cli/NodeCoreCLIManager.d.ts +12 -0
  437. package/dist/esm/target/node-core-cli/NodeCoreCLIManager.js +93 -0
  438. package/dist/esm/target/node-core-cli/commands.d.ts +3 -0
  439. package/dist/esm/target/node-core-cli/commands.js +55 -0
  440. package/dist/esm/target/node-express-server/NodeExpressServerManager.d.ts +44 -0
  441. package/dist/esm/target/node-express-server/NodeExpressServerManager.js +184 -0
  442. package/dist/esm/target/node-express-server/lib/AuthCookieCreator.d.ts +21 -0
  443. package/dist/esm/target/node-express-server/lib/AuthCookieCreator.js +50 -0
  444. package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.d.ts +21 -0
  445. package/dist/esm/target/node-express-server/middlewares/AuthenticationCheckerMiddlewareBuilder.js +66 -0
  446. package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.d.ts +12 -0
  447. package/dist/esm/target/node-express-server/middlewares/ErrorMiddlewareBuilder.js +35 -0
  448. package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.d.ts +12 -0
  449. package/dist/esm/target/node-express-server/middlewares/HelmetMiddlewareBuilder.js +39 -0
  450. package/dist/esm/target/node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.d.ts +18 -0
  451. package/dist/esm/target/node-express-server/middlewares/PublicApiKeyCheckerMiddlewareBuilder.js +49 -0
  452. package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.d.ts +12 -0
  453. package/dist/esm/target/node-express-server/middlewares/RequestCheckerMiddlewareBuilder.js +41 -0
  454. package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.d.ts +23 -0
  455. package/dist/esm/target/node-express-server/middlewares/RequestHandlerMiddlewareBuilder.js +151 -0
  456. package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.d.ts +13 -0
  457. package/dist/esm/target/node-express-server/middlewares/RequestLoggerMiddlewareBuilder.js +45 -0
  458. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.d.ts +32 -0
  459. package/dist/esm/target/node-mcp-server/NodeLocalStdioMCPServerManager.js +155 -0
  460. package/dist/esm/target/node-mcp-server/funcs.d.ts +7 -0
  461. package/dist/esm/target/node-mcp-server/funcs.js +45 -0
  462. package/dist/esm/target/node-mcp-server/types.d.ts +19 -0
  463. package/dist/esm/target/node-mcp-server/types.js +1 -0
  464. package/dist/esm/target/react-web-pure/UCAutoExecLoader.d.ts +2 -0
  465. package/dist/esm/target/react-web-pure/UCAutoExecLoader.js +4 -0
  466. package/dist/esm/target/react-web-pure/UCEntrypointTouchable.d.ts +4 -0
  467. package/dist/esm/target/react-web-pure/UCEntrypointTouchable.js +4 -0
  468. package/dist/esm/target/react-web-pure/UCExecTouchable.d.ts +4 -0
  469. package/dist/esm/target/react-web-pure/UCExecTouchable.js +7 -0
  470. package/dist/esm/target/react-web-pure/UCForm.d.ts +4 -0
  471. package/dist/esm/target/react-web-pure/UCForm.js +17 -0
  472. package/dist/esm/target/react-web-pure/UCFormField.d.ts +11 -0
  473. package/dist/esm/target/react-web-pure/UCFormField.js +32 -0
  474. package/dist/esm/target/react-web-pure/UCFormFieldControl.d.ts +11 -0
  475. package/dist/esm/target/react-web-pure/UCFormFieldControl.js +34 -0
  476. package/dist/esm/target/react-web-pure/UCFormFieldDesc.d.ts +7 -0
  477. package/dist/esm/target/react-web-pure/UCFormFieldDesc.js +10 -0
  478. package/dist/esm/target/react-web-pure/UCFormFieldErr.d.ts +7 -0
  479. package/dist/esm/target/react-web-pure/UCFormFieldErr.js +4 -0
  480. package/dist/esm/target/react-web-pure/UCFormFieldLabel.d.ts +7 -0
  481. package/dist/esm/target/react-web-pure/UCFormFieldLabel.js +8 -0
  482. package/dist/esm/target/react-web-pure/UCFormSubmitControl.d.ts +6 -0
  483. package/dist/esm/target/react-web-pure/UCFormSubmitControl.js +6 -0
  484. package/dist/esm/testing/AppTester.d.ts +67 -0
  485. package/dist/esm/testing/AppTester.js +343 -0
  486. package/dist/esm/testing/AppTesterConfigurator.d.ts +26 -0
  487. package/dist/esm/testing/AppTesterConfigurator.js +1 -0
  488. package/dist/esm/testing/UCDataStoreTester.d.ts +25 -0
  489. package/dist/esm/testing/UCDataStoreTester.js +192 -0
  490. package/dist/esm/testing/UCDefASTParser.d.ts +43 -0
  491. package/dist/esm/testing/UCDefASTParser.js +44 -0
  492. package/dist/esm/testing/ctx.d.ts +18 -0
  493. package/dist/esm/testing/ctx.js +1 -0
  494. package/dist/esm/testing/flow.d.ts +13 -0
  495. package/dist/esm/testing/flow.js +1 -0
  496. package/dist/esm/testing/impl/SimpleAppDocsEmitter.d.ts +7 -0
  497. package/dist/esm/testing/impl/SimpleAppDocsEmitter.js +161 -0
  498. package/dist/esm/testing/impl/SimpleAppTesterConfigurator.d.ts +14 -0
  499. package/dist/esm/testing/impl/SimpleAppTesterConfigurator.js +34 -0
  500. package/dist/esm/testing/impl/SimpleHTMLAppTestReportEmitter.d.ts +10 -0
  501. package/dist/esm/testing/impl/SimpleHTMLAppTestReportEmitter.js +186 -0
  502. package/dist/esm/testing/impl/TypeScriptLibUCDefASTParser.d.ts +24 -0
  503. package/dist/esm/testing/impl/TypeScriptLibUCDefASTParser.js +246 -0
  504. package/dist/esm/testing/impl/VitestAppTestSuiteEmitter.d.ts +7 -0
  505. package/dist/esm/testing/impl/VitestAppTestSuiteEmitter.js +231 -0
  506. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.d.ts +10 -0
  507. package/dist/esm/testing/impl/VitestAppTestSuiteRunner.js +51 -0
  508. package/dist/esm/testing/impl/newNodeAppTester.d.ts +3 -0
  509. package/dist/esm/testing/impl/newNodeAppTester.js +67 -0
  510. package/dist/esm/testing/index.d.ts +13 -0
  511. package/dist/esm/testing/index.js +5 -0
  512. package/dist/esm/testing/opts.d.ts +34 -0
  513. package/dist/esm/testing/opts.js +50 -0
  514. package/dist/esm/testing/uc-auth.d.ts +7 -0
  515. package/dist/esm/testing/uc-auth.js +13 -0
  516. package/dist/esm/testing/uc-input.d.ts +11 -0
  517. package/dist/esm/testing/uc-input.js +52 -0
  518. package/dist/esm/testing/utils.d.ts +6 -0
  519. package/dist/esm/testing/utils.js +8 -0
  520. package/dist/esm/testing/workers/AppDocsEmitter.d.ts +12 -0
  521. package/dist/esm/testing/workers/AppDocsEmitter.js +1 -0
  522. package/dist/esm/testing/workers/AppTestReportEmitter.d.ts +14 -0
  523. package/dist/esm/testing/workers/AppTestReportEmitter.js +1 -0
  524. package/dist/esm/testing/workers/AppTestSuiteEmitter.d.ts +32 -0
  525. package/dist/esm/testing/workers/AppTestSuiteEmitter.js +1 -0
  526. package/dist/esm/testing/workers/AppTestSuiteRunner.d.ts +10 -0
  527. package/dist/esm/testing/workers/AppTestSuiteRunner.js +1 -0
  528. package/dist/esm/testing/workers/AppTesterCtxInitializer.d.ts +17 -0
  529. package/dist/esm/testing/workers/AppTesterCtxInitializer.js +57 -0
  530. package/dist/esm/testing/workers/UCExecutor.d.ts +45 -0
  531. package/dist/esm/testing/workers/UCExecutor.js +94 -0
  532. package/dist/esm/testing/workers/checkers/AppI18nChecker.d.ts +19 -0
  533. package/dist/esm/testing/workers/checkers/AppI18nChecker.js +52 -0
  534. package/dist/esm/testing/workers/checkers/AppIndexChecker.d.ts +16 -0
  535. package/dist/esm/testing/workers/checkers/AppIndexChecker.js +41 -0
  536. package/dist/esm/testing/workers/checkers/AppManifestChecker.d.ts +17 -0
  537. package/dist/esm/testing/workers/checkers/AppManifestChecker.js +34 -0
  538. package/dist/esm/testing/workers/checkers/UCDefChecker.d.ts +14 -0
  539. package/dist/esm/testing/workers/checkers/UCDefChecker.js +45 -0
  540. package/dist/esm/testing/workers/checkers/UCDefSourcesChecker.d.ts +27 -0
  541. package/dist/esm/testing/workers/checkers/UCDefSourcesChecker.js +249 -0
  542. package/dist/esm/uc/UC.d.ts +39 -0
  543. package/dist/esm/uc/UC.js +157 -0
  544. package/dist/esm/uc/UCInputField.d.ts +23 -0
  545. package/dist/esm/uc/UCInputField.js +162 -0
  546. package/dist/esm/uc/UCOutputField.d.ts +9 -0
  547. package/dist/esm/uc/UCOutputField.js +8 -0
  548. package/dist/esm/uc/auth/consts.d.ts +3 -0
  549. package/dist/esm/uc/auth/consts.js +16 -0
  550. package/dist/esm/uc/auth.d.ts +13 -0
  551. package/dist/esm/uc/auth.js +1 -0
  552. package/dist/esm/uc/client.d.ts +19 -0
  553. package/dist/esm/uc/client.js +1 -0
  554. package/dist/esm/uc/data-store.d.ts +71 -0
  555. package/dist/esm/uc/data-store.js +1 -0
  556. package/dist/esm/uc/data.d.ts +2 -0
  557. package/dist/esm/uc/data.js +1 -0
  558. package/dist/esm/uc/def.d.ts +33 -0
  559. package/dist/esm/uc/def.js +1 -0
  560. package/dist/esm/uc/exec.d.ts +7 -0
  561. package/dist/esm/uc/exec.js +11 -0
  562. package/dist/esm/uc/ext.d.ts +16 -0
  563. package/dist/esm/uc/ext.js +1 -0
  564. package/dist/esm/uc/file.d.ts +3 -0
  565. package/dist/esm/uc/file.js +1 -0
  566. package/dist/esm/uc/helpers/UCOutputBuilder.d.ts +18 -0
  567. package/dist/esm/uc/helpers/UCOutputBuilder.js +71 -0
  568. package/dist/esm/uc/helpers/UCOutputReader.d.ts +43 -0
  569. package/dist/esm/uc/helpers/UCOutputReader.js +119 -0
  570. package/dist/esm/uc/impl/HTTPUCTransporter.d.ts +17 -0
  571. package/dist/esm/uc/impl/HTTPUCTransporter.js +118 -0
  572. package/dist/esm/uc/impl/InMemoryUCDataStore.d.ts +22 -0
  573. package/dist/esm/uc/impl/InMemoryUCDataStore.js +97 -0
  574. package/dist/esm/uc/impl/KnexUCDataStore.d.ts +43 -0
  575. package/dist/esm/uc/impl/KnexUCDataStore.js +237 -0
  576. package/dist/esm/uc/impl/PromptUCClientConfirmManager.d.ts +16 -0
  577. package/dist/esm/uc/impl/PromptUCClientConfirmManager.js +51 -0
  578. package/dist/esm/uc/impl/SimpleUCManager.d.ts +39 -0
  579. package/dist/esm/uc/impl/SimpleUCManager.js +163 -0
  580. package/dist/esm/uc/impl/StaticUCClientConfirmManager.d.ts +12 -0
  581. package/dist/esm/uc/impl/StaticUCClientConfirmManager.js +34 -0
  582. package/dist/esm/uc/impl/WebUCClientConfirmManager.d.ts +10 -0
  583. package/dist/esm/uc/impl/WebUCClientConfirmManager.js +34 -0
  584. package/dist/esm/uc/index.d.ts +62 -0
  585. package/dist/esm/uc/index.js +62 -0
  586. package/dist/esm/uc/init.d.ts +3 -0
  587. package/dist/esm/uc/init.js +1 -0
  588. package/dist/esm/uc/input-field.d.ts +35 -0
  589. package/dist/esm/uc/input-field.js +73 -0
  590. package/dist/esm/uc/input.d.ts +12 -0
  591. package/dist/esm/uc/input.js +1 -0
  592. package/dist/esm/uc/io/input/AggregateInput.d.ts +7 -0
  593. package/dist/esm/uc/io/input/AggregateInput.js +11 -0
  594. package/dist/esm/uc/io/input/ListInput.d.ts +10 -0
  595. package/dist/esm/uc/io/input/ListInput.js +29 -0
  596. package/dist/esm/uc/io/output/AggregateOutput.d.ts +5 -0
  597. package/dist/esm/uc/io/output/AggregateOutput.js +13 -0
  598. package/dist/esm/uc/lifecycle/client/IdleClientMain.d.ts +6 -0
  599. package/dist/esm/uc/lifecycle/client/IdleClientMain.js +15 -0
  600. package/dist/esm/uc/lifecycle/client/SendClientMain.d.ts +10 -0
  601. package/dist/esm/uc/lifecycle/client/SendClientMain.js +28 -0
  602. package/dist/esm/uc/lifecycle/server/IdleServerMain.d.ts +6 -0
  603. package/dist/esm/uc/lifecycle/server/IdleServerMain.js +15 -0
  604. package/dist/esm/uc/main.d.ts +10 -0
  605. package/dist/esm/uc/main.js +1 -0
  606. package/dist/esm/uc/manager.d.ts +25 -0
  607. package/dist/esm/uc/manager.js +1 -0
  608. package/dist/esm/uc/metadata.d.ts +17 -0
  609. package/dist/esm/uc/metadata.js +20 -0
  610. package/dist/esm/uc/opi-layout.d.ts +13 -0
  611. package/dist/esm/uc/opi-layout.js +1 -0
  612. package/dist/esm/uc/opi.d.ts +6 -0
  613. package/dist/esm/uc/opi.js +1 -0
  614. package/dist/esm/uc/output-field.d.ts +8 -0
  615. package/dist/esm/uc/output-field.js +1 -0
  616. package/dist/esm/uc/output-part.d.ts +26 -0
  617. package/dist/esm/uc/output-part.js +1 -0
  618. package/dist/esm/uc/output.d.ts +19 -0
  619. package/dist/esm/uc/output.js +1 -0
  620. package/dist/esm/uc/policies/AnonymousUCPolicy.d.ts +7 -0
  621. package/dist/esm/uc/policies/AnonymousUCPolicy.js +22 -0
  622. package/dist/esm/uc/policies/AuthenticatedUCPolicy.d.ts +7 -0
  623. package/dist/esm/uc/policies/AuthenticatedUCPolicy.js +22 -0
  624. package/dist/esm/uc/policies/EverybodyUCPolicy.d.ts +7 -0
  625. package/dist/esm/uc/policies/EverybodyUCPolicy.js +22 -0
  626. package/dist/esm/uc/policies/NobodyUCPolicy.d.ts +7 -0
  627. package/dist/esm/uc/policies/NobodyUCPolicy.js +22 -0
  628. package/dist/esm/uc/policies/RoleAdminUCPolicy.d.ts +7 -0
  629. package/dist/esm/uc/policies/RoleAdminUCPolicy.js +22 -0
  630. package/dist/esm/uc/policies/RoleRegularUCPolicy.d.ts +7 -0
  631. package/dist/esm/uc/policies/RoleRegularUCPolicy.js +22 -0
  632. package/dist/esm/uc/policies/funcs.d.ts +2 -0
  633. package/dist/esm/uc/policies/funcs.js +6 -0
  634. package/dist/esm/uc/policy.d.ts +13 -0
  635. package/dist/esm/uc/policy.js +1 -0
  636. package/dist/esm/uc/sec/consts.d.ts +3 -0
  637. package/dist/esm/uc/sec/consts.js +2 -0
  638. package/dist/esm/uc/sec.d.ts +6 -0
  639. package/dist/esm/uc/sec.js +1 -0
  640. package/dist/esm/uc/server.d.ts +13 -0
  641. package/dist/esm/uc/server.js +1 -0
  642. package/dist/esm/uc/settings/consts.d.ts +2 -0
  643. package/dist/esm/uc/settings/consts.js +6 -0
  644. package/dist/esm/uc/settings.d.ts +11 -0
  645. package/dist/esm/uc/settings.js +1 -0
  646. package/dist/esm/uc/side-effect.d.ts +12 -0
  647. package/dist/esm/uc/side-effect.js +6 -0
  648. package/dist/esm/uc/transporter.d.ts +7 -0
  649. package/dist/esm/uc/transporter.js +1 -0
  650. package/dist/esm/uc/utils/appendUCInputToURL.d.ts +4 -0
  651. package/dist/esm/uc/utils/appendUCInputToURL.js +12 -0
  652. package/dist/esm/uc/utils/fmtVal.d.ts +7 -0
  653. package/dist/esm/uc/utils/fmtVal.js +20 -0
  654. package/dist/esm/uc/utils/rInput.d.ts +11 -0
  655. package/dist/esm/uc/utils/rInput.js +39 -0
  656. package/dist/esm/uc/utils/rVal.d.ts +5 -0
  657. package/dist/esm/uc/utils/rVal.js +20 -0
  658. package/dist/esm/uc/utils/recIs.d.ts +5 -0
  659. package/dist/esm/uc/utils/recIs.js +1 -0
  660. package/dist/esm/uc/utils/stripUCDLifecycleServer.d.ts +2 -0
  661. package/dist/esm/uc/utils/stripUCDLifecycleServer.js +60 -0
  662. package/dist/esm/uc/utils/ucHTTPContract.d.ts +15 -0
  663. package/dist/esm/uc/utils/ucHTTPContract.js +39 -0
  664. package/dist/esm/uc/utils/ucMountingPoint.d.ts +7 -0
  665. package/dist/esm/uc/utils/ucMountingPoint.js +7 -0
  666. package/dist/esm/uc/utils/ucifcoIsForArray.d.ts +2 -0
  667. package/dist/esm/uc/utils/ucifcoIsForArray.js +7 -0
  668. package/dist/esm/uc/value.d.ts +2 -0
  669. package/dist/esm/uc/value.js +1 -0
  670. package/dist/esm/uc/workers/SimpleAggregateFinder.d.ts +20 -0
  671. package/dist/esm/uc/workers/SimpleAggregateFinder.js +45 -0
  672. package/dist/esm/uc/workers/SimpleAggregateOwnershipChecker.d.ts +17 -0
  673. package/dist/esm/uc/workers/SimpleAggregateOwnershipChecker.js +35 -0
  674. package/dist/esm/uc/workers/UCBuilder.d.ts +10 -0
  675. package/dist/esm/uc/workers/UCBuilder.js +17 -0
  676. package/dist/esm/uc/workers/UCExecChecker.d.ts +24 -0
  677. package/dist/esm/uc/workers/UCExecChecker.js +72 -0
  678. package/dist/esm/uc/workers/UCInputFilesProcessor.d.ts +20 -0
  679. package/dist/esm/uc/workers/UCInputFilesProcessor.js +75 -0
  680. package/dist/esm/uc/workers/UCInputValidator.d.ts +15 -0
  681. package/dist/esm/uc/workers/UCInputValidator.js +48 -0
  682. package/dist/esm/uc/workers/UCOutputFilesProcessor.d.ts +20 -0
  683. package/dist/esm/uc/workers/UCOutputFilesProcessor.js +60 -0
  684. package/dist/esm/utils/async/sleep.d.ts +2 -0
  685. package/dist/esm/utils/async/sleep.js +7 -0
  686. package/dist/esm/utils/concerns/Clearable.d.ts +3 -0
  687. package/dist/esm/utils/concerns/Clearable.js +1 -0
  688. package/dist/esm/utils/concerns/Initializable.d.ts +3 -0
  689. package/dist/esm/utils/concerns/Initializable.js +1 -0
  690. package/dist/esm/utils/esm/srcImporter.d.ts +2 -0
  691. package/dist/esm/utils/esm/srcImporter.js +1 -0
  692. package/dist/esm/utils/http/HTTPRequestBuilder.d.ts +17 -0
  693. package/dist/esm/utils/http/HTTPRequestBuilder.js +55 -0
  694. package/dist/esm/utils/http/appendData.d.ts +2 -0
  695. package/dist/esm/utils/http/appendData.js +14 -0
  696. package/dist/esm/utils/http/toFormData.d.ts +3 -0
  697. package/dist/esm/utils/http/toFormData.js +4 -0
  698. package/dist/esm/utils/http/toJSON.d.ts +3 -0
  699. package/dist/esm/utils/http/toJSON.js +3 -0
  700. package/dist/esm/utils/http/toQueryParams.d.ts +2 -0
  701. package/dist/esm/utils/http/toQueryParams.js +4 -0
  702. package/dist/esm/utils/http/types.d.ts +2 -0
  703. package/dist/esm/utils/http/types.js +1 -0
  704. package/dist/esm/utils/index.d.ts +18 -0
  705. package/dist/esm/utils/index.js +12 -0
  706. package/dist/esm/utils/ioc/ContainerPrinter.d.ts +12 -0
  707. package/dist/esm/utils/ioc/ContainerPrinter.js +53 -0
  708. package/dist/esm/utils/ioc/bindCommon.d.ts +6 -0
  709. package/dist/esm/utils/ioc/bindCommon.js +71 -0
  710. package/dist/esm/utils/ioc/bindNodeCLI.d.ts +2 -0
  711. package/dist/esm/utils/ioc/bindNodeCLI.js +8 -0
  712. package/dist/esm/utils/ioc/bindNodeCore.d.ts +2 -0
  713. package/dist/esm/utils/ioc/bindNodeCore.js +16 -0
  714. package/dist/esm/utils/ioc/bindProduct.d.ts +4 -0
  715. package/dist/esm/utils/ioc/bindProduct.js +6 -0
  716. package/dist/esm/utils/ioc/bindProvider.d.ts +2 -0
  717. package/dist/esm/utils/ioc/bindProvider.js +9 -0
  718. package/dist/esm/utils/ioc/bindRN.d.ts +2 -0
  719. package/dist/esm/utils/ioc/bindRN.js +4 -0
  720. package/dist/esm/utils/ioc/bindServer.d.ts +2 -0
  721. package/dist/esm/utils/ioc/bindServer.js +8 -0
  722. package/dist/esm/utils/ioc/bindWeb.d.ts +2 -0
  723. package/dist/esm/utils/ioc/bindWeb.js +12 -0
  724. package/dist/esm/utils/ioc/container.d.ts +2 -0
  725. package/dist/esm/utils/ioc/container.js +3 -0
  726. package/dist/esm/utils/ioc/types.d.ts +2 -0
  727. package/dist/esm/utils/ioc/types.js +1 -0
  728. package/dist/esm/utils/numbers/fmt.d.ts +3 -0
  729. package/dist/esm/utils/numbers/fmt.js +24 -0
  730. package/dist/esm/utils/numbers/units.d.ts +9 -0
  731. package/dist/esm/utils/numbers/units.js +53 -0
  732. package/dist/esm/utils/strings/capitalize.d.ts +2 -0
  733. package/dist/esm/utils/strings/capitalize.js +14 -0
  734. package/dist/esm/utils/strings/humanize.d.ts +1 -0
  735. package/dist/esm/utils/strings/humanize.js +5 -0
  736. package/dist/esm/utils/strings/truncate.d.ts +2 -0
  737. package/dist/esm/utils/strings/truncate.js +3 -0
  738. package/dist/esm/utils/terminal/fmt.d.ts +4 -0
  739. package/dist/esm/utils/terminal/fmt.js +13 -0
  740. package/dist/esm/utils/types/funcs.d.ts +6 -0
  741. package/dist/esm/utils/types/funcs.js +32 -0
  742. package/dist/esm/utils/types/utility-types.d.ts +5 -0
  743. package/dist/esm/utils/types/utility-types.js +1 -0
  744. package/docs/getting-started/001_Create_the_project.md +168 -0
  745. package/docs/getting-started/002_Create_the_App.md +49 -0
  746. package/docs/getting-started/003_Create_the_UseCase.md +205 -0
  747. package/docs/getting-started/004_Test_the_App.md +114 -0
  748. package/docs/getting-started/005_Create_the_Product.md +46 -0
  749. package/docs/getting-started/006_Create_the_server_Target.md +130 -0
  750. package/docs/getting-started/007_Create_the_web_Target.md +262 -0
  751. package/docs/getting-started/008_Switch_to_a_persistent_data_storage.md +55 -0
  752. package/docs/getting-started/009_Define_wording_for_humans.md +42 -0
  753. package/docs/getting-started/010_Create_the_cli_Target.md +102 -0
  754. package/docs/getting-started/011_Create_the_mcp_server_Target.md +157 -0
  755. package/docs/getting-started/012_Summary.md +29 -0
  756. package/package.json +7 -4
@@ -0,0 +1,262 @@
1
+ # Create the web Target
2
+
3
+ We'll use the pre-built [React](https://react.dev) components to build a SPA (Single Page Application), bundled with [vite](https://vite.dev) and served with the server defined above.
4
+
5
+ > [!WARNING]
6
+ > For readers used to "beautiful" websites à la Linear, Vercel and related, your eyes will burn. You're going to discover the simple and pure CSS-less Web. The most beautiful one.
7
+ > Of course, feel free to add CSS if you want to. The main goal here is to focus on the essence of the UI and not the UI design.
8
+
9
+ ```sh
10
+ yarn add --dev "@types/react@^18.3.17" "@types/react-dom@^18.3.5"
11
+ yarn add "react@^18.3.1" "react-dom@^18.3.1"
12
+
13
+ mkdir -p src/products/SuperTrader/web/components
14
+ touch src/products/SuperTrader/vite.config.web.ts
15
+ touch src/products/SuperTrader/web/{container.ts,index.html,index.tsx}
16
+ touch src/products/SuperTrader/web/components/App.tsx
17
+ ```
18
+
19
+ ## vite.config.web.ts
20
+
21
+ ```typescript
22
+ import { join } from 'node:path';
23
+
24
+ import { StripUCDLifecycleServerPlugin } from 'libmodulor/vite';
25
+ import { defineConfig } from 'vite';
26
+
27
+ const base = process.cwd();
28
+ const root = join('src', 'products', 'SuperTrader', 'web');
29
+ const outDir = join(
30
+ base,
31
+ 'dist',
32
+ 'products',
33
+ 'SuperTrader',
34
+ 'server',
35
+ 'public',
36
+ );
37
+
38
+ export default defineConfig({
39
+ build: {
40
+ emptyOutDir: true,
41
+ outDir,
42
+ },
43
+ plugins: [StripUCDLifecycleServerPlugin],
44
+ root,
45
+ });
46
+ ```
47
+
48
+ ## container.ts
49
+
50
+ ```typescript
51
+ import {
52
+ CONTAINER_OPTS,
53
+ type ServerClientManagerSettings,
54
+ TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
55
+ bindCommon,
56
+ bindProduct,
57
+ } from 'libmodulor';
58
+ import { bindWeb } from 'libmodulor/web';
59
+ import { Container } from 'inversify';
60
+
61
+ import { I18n } from '../i18n.js';
62
+ import { Manifest } from '../manifest.js';
63
+
64
+ type S = ServerClientManagerSettings;
65
+
66
+ const container = new Container(CONTAINER_OPTS);
67
+
68
+ bindCommon<S>(container, () => ({
69
+ ...TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
70
+ }));
71
+ bindWeb(container);
72
+ bindProduct(container, Manifest, I18n);
73
+
74
+ export default container;
75
+ ```
76
+
77
+ ## index.html
78
+
79
+ ```html
80
+ <!DOCTYPE html>
81
+ <html lang="en">
82
+ <head>
83
+ <meta charset="utf-8" />
84
+ <meta content="width=device-width, initial-scale=1" name="viewport"
85
+ />
86
+ </head>
87
+ <body>
88
+ <div id="root"></div>
89
+ <script type="module" src="/index.tsx"></script>
90
+ </body>
91
+ </html>
92
+ ```
93
+
94
+ ## App.tsx
95
+
96
+ Update `src/apps/Trading/index.ts` to expose the use case.
97
+
98
+ ```typescript
99
+ export { BuyAssetUCD } from './src/ucds/BuyAssetUCD.js';
100
+ ```
101
+
102
+ Naturally, in real life scenarios, we would never have such a bloated `App.tsx`. Instead, we would create fine-grained components. Everybody does that, right ? Right ?
103
+
104
+ ```tsx
105
+ import { type Logger, type ProductManifest, UCOutputReader } from 'libmodulor';
106
+ import {
107
+ UCPanel,
108
+ type UCPanelOnError,
109
+ useDIContext,
110
+ useUC,
111
+ useUCOR,
112
+ } from 'libmodulor/react';
113
+ import {
114
+ UCAutoExecLoader,
115
+ UCExecTouchable,
116
+ UCForm,
117
+ } from 'libmodulor/react-web-pure';
118
+ import React, { useEffect, useState, type ReactElement } from 'react';
119
+
120
+ import { BuyAssetUCD, Manifest } from '../../../../apps/Trading/index.js';
121
+
122
+ export default function App(): ReactElement {
123
+ const { container, i18nManager, wordingManager } = useDIContext();
124
+ const [logger] = useState(container.get<Logger>('Logger'));
125
+ const [productManifest] = useState(
126
+ container.get<ProductManifest>('ProductManifest'),
127
+ );
128
+
129
+ const [buyAssetUC] = useUC(Manifest, BuyAssetUCD, null);
130
+ const [buyAssetPart0, _buyAssetPart1, { append0 }] = useUCOR(
131
+ new UCOutputReader(BuyAssetUCD, undefined),
132
+ );
133
+
134
+ const [loading, setLoading] = useState(true);
135
+
136
+ useEffect(() => {
137
+ (async () => {
138
+ logger.debug('Initializing i18n');
139
+ await i18nManager.init();
140
+ logger.debug('Done initializing i18n');
141
+ setLoading(false);
142
+ })();
143
+
144
+ const { slogan } = wordingManager.p();
145
+ document.title = `${productManifest.name} : ${slogan}`;
146
+ }, [i18nManager, logger, productManifest, wordingManager]);
147
+
148
+ const onError: UCPanelOnError = async (err) => alert(err.message);
149
+
150
+ const { slogan } = wordingManager.p();
151
+ const { label } = wordingManager.uc(buyAssetUC.def);
152
+ const { label: idLabel } = wordingManager.ucof('id');
153
+ const { label: executedDirectlyLabel } =
154
+ wordingManager.ucof('executedDirectly');
155
+
156
+ return (
157
+ <div>
158
+ {loading && 'Loading...'}
159
+
160
+ {!loading && (
161
+ <>
162
+ <h1>
163
+ {productManifest.name} : {slogan}
164
+ </h1>
165
+
166
+ <h2>{label}</h2>
167
+
168
+ <UCPanel
169
+ clearAfterExec={false}
170
+ onDone={async (ucor) => append0(ucor)}
171
+ onError={onError}
172
+ renderAutoExecLoader={UCAutoExecLoader}
173
+ renderExecTouchable={UCExecTouchable}
174
+ renderForm={UCForm}
175
+ sleepInMs={200} // Fake delay to see submit wording changing
176
+ uc={buyAssetUC}
177
+ />
178
+
179
+ <table>
180
+ <thead>
181
+ <tr>
182
+ <th>{idLabel}</th>
183
+ <th>{executedDirectlyLabel}</th>
184
+ </tr>
185
+ </thead>
186
+ <tbody>
187
+ {buyAssetPart0?.items.map((i) => (
188
+ <tr key={i.id}>
189
+ <td>{i.id}</td>
190
+ <td>{i.executedDirectly ? '✅' : '❌'}</td>
191
+ </tr>
192
+ ))}
193
+ </tbody>
194
+ <tfoot>
195
+ <tr>
196
+ <th>{i18nManager.t('total')}</th>
197
+ <th>{buyAssetPart0?.pagination.total}</th>
198
+ </tr>
199
+ </tfoot>
200
+ </table>
201
+ </>
202
+ )}
203
+ </div>
204
+ );
205
+ }
206
+ ```
207
+
208
+ ## index.tsx
209
+
210
+ ```typescript
211
+ import { DIContextProvider } from 'libmodulor/react';
212
+ import React, { StrictMode } from 'react';
213
+ import ReactDOM from 'react-dom/client';
214
+
215
+ import App from './components/App.js';
216
+ import container from './container.js';
217
+
218
+ const rootElt = document.getElementById('root');
219
+ if (!rootElt) {
220
+ throw new Error('Add a div#root in index.html');
221
+ }
222
+
223
+ ReactDOM.createRoot(rootElt).render(
224
+ <StrictMode>
225
+ <DIContextProvider container={container}>
226
+ <App />
227
+ </DIContextProvider>
228
+ </StrictMode>,
229
+ );
230
+ ```
231
+
232
+ ## Build & Run
233
+
234
+ Update `package.json` to add the `web` build to the `build` command.
235
+
236
+ ```json
237
+ "build": "tsc --project tsconfig.build.json && cp .env dist/products/SuperTrader/server/.env && vite -c src/products/SuperTrader/vite.config.web.ts build",
238
+ ```
239
+
240
+ Update `src/products/SuperTrader/server/container.ts` to mount the `public` directory.
241
+
242
+ ```diff
243
+ ...TARGET_DEFAULT_SERVER_MANAGER_SETTINGS,
244
+ +server_static_dir_path: 'public',
245
+ ```
246
+
247
+ Press <kbd>ctrl</kbd> + <kbd>C</kbd> to stop the server (we'll setup hot reload later).
248
+
249
+ ```sh
250
+ yarn build && yarn run:server
251
+ open http://localhost:7443
252
+ ```
253
+
254
+ Et voilà ! The server is running ! Fill the form and see how it automatically submits to the server with client side and server side validation out of the box.
255
+
256
+ <img src="/docs/assets/trading-target-web.png" width="600px">
257
+
258
+ ```sh
259
+ yarn lint && git add . && git commit -m "feat: add the web target"
260
+ ```
261
+
262
+ Now that's done, let's [Switch to a persistent data storage](./008_Switch_to_a_persistent_data_storage.md).
@@ -0,0 +1,55 @@
1
+ # Switch to a persistent data storage
2
+
3
+ By default, the data is stored in memory on the server. Therefore, whenever we restart it, we lose everything. That is not very practical in real life scenarios. Let's use SQLite instead.
4
+
5
+ ```sh
6
+ yarn add "knex@^3.1.0" "sqlite3@^5.1.7"
7
+ ```
8
+
9
+ Update `src/products/SuperTrader/server/container.ts` to change the implementation.
10
+
11
+ ```diff
12
+ [...]
13
+ TARGET_DEFAULT_SERVER_MANAGER_SETTINGS,
14
+ + type UCDataStore,
15
+ [...]
16
+ +import {
17
+ + KnexUCDataStore,
18
+ + type KnexUCDataStoreSettings,
19
+ +} from 'libmodulor/uc-data-store-knex';
20
+ [...]
21
+ +type S = KnexUCDataStoreSettings & ServerManagerSettings;
22
+ [...]
23
+ ...TARGET_DEFAULT_SERVER_MANAGER_SETTINGS,
24
+ + knex_uc_data_store_conn_string: 'postgresql://toto',
25
+ + knex_uc_data_store_file_path: 'uc-data-store.sqlite',
26
+ + knex_uc_data_store_pool_max: 5,
27
+ + knex_uc_data_store_pool_min: 0,
28
+ + knex_uc_data_store_type: 'sqlite3',
29
+ server_static_dir_path: 'public',
30
+ [...]
31
+ container.rebind<SettingsManager>('SettingsManager').to(EnvSettingsManager);
32
+ +container.rebind<UCDataStore>('UCDataStore').to(KnexUCDataStore);
33
+ ```
34
+
35
+ Press <kbd>ctrl</kbd> + <kbd>C</kbd> to stop the server.
36
+
37
+ ```sh
38
+ yarn build && yarn run:server
39
+ ```
40
+
41
+ Fill and submit the use case multiple times.
42
+
43
+ Open the SQLite database with your favorite DB editor (e.g. TablePlus, DBeaver...).
44
+
45
+ ```sh
46
+ open dist/products/SuperTrader/server/uc-data-store.sqlite
47
+ ```
48
+
49
+ You should see all your submissions stored in the database.
50
+
51
+ ```sh
52
+ yarn lint && git add . && git commit -m "feat: persist data in SQLite"
53
+ ```
54
+
55
+ Now that's done, let's [Define wording for humans](./009_Define_wording_for_humans.md).
@@ -0,0 +1,42 @@
1
+ # Define wording for humans
2
+
3
+ By default, the UI simply "humanizes" the use case field keys. It's fine for technical people, but not for humans.
4
+
5
+ Update `src/apps/Trading/src/i18n.ts` and add the following keys to `en`.
6
+
7
+ ```typescript
8
+ uc_BuyAsset_label: 'Buy an asset',
9
+ uc_BuyAsset_i_submit_idle: 'Send buy order',
10
+ uc_BuyAsset_i_submit_submitting: 'Sending',
11
+ ucif_isin_label: 'ISIN',
12
+ ucif_qty_label: 'Quantity',
13
+ ucof_executedDirectly_label: '🚀 Executed directly',
14
+ ucof_id_label: 'Identifier',
15
+ validation_format_ISIN:
16
+ 'Must be 2 uppercase letters, followed by 9 alphanumeric characters and 1 digit',
17
+ ```
18
+
19
+ Update `src/products/SuperTrader/i18n.ts` and add the following keys to `en`.
20
+
21
+ ```typescript
22
+ total: 'Total',
23
+ ```
24
+
25
+ > [!NOTE]
26
+ > We distinguish what's related to the app from what's related to the product. Usually, in the app's `i18n`, you'll add only translations following a certain convention like `dt_*` (data type choices), `err_*` (error messages), `uc_*` (use cases), `ucif_*` (use case input fields), `ucof_*` (use case output fields), `validation_*` (validation messages), etc.
27
+
28
+ Press <kbd>ctrl</kbd> + <kbd>C</kbd> to stop the server.
29
+
30
+ ```sh
31
+ yarn build && yarn run:server
32
+ ```
33
+
34
+ Refresh the page. You should see a better wording. Try to type an invalid `ISIN` and see how the full validation message is displayed as well.
35
+
36
+ <img src="/docs/assets/trading-target-web-human.png" width="600px">
37
+
38
+ ```sh
39
+ yarn lint && git add . && git commit -m "feat: define wording for humans"
40
+ ```
41
+
42
+ Now that's done, let's [Create the cli Target](./010_Create_the_cli_Target.md).
@@ -0,0 +1,102 @@
1
+ # Create the cli Target
2
+
3
+ We'll use the pre-built [Node.js parseArgs](https://nodejs.org/api/util.html#utilparseargsconfig) `CLIManager`.
4
+
5
+ ```sh
6
+ mkdir src/products/SuperTrader/cli
7
+ touch src/products/SuperTrader/cli/{container.ts,index.ts}
8
+ ```
9
+
10
+ ## container.ts
11
+
12
+ ```typescript
13
+ import {
14
+ CONTAINER_OPTS,
15
+ type ServerClientManagerSettings,
16
+ TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
17
+ bindCommon,
18
+ bindProduct,
19
+ } from 'libmodulor';
20
+ import { bindNodeCLI, bindNodeCore } from 'libmodulor/node';
21
+ import { Container } from 'inversify';
22
+
23
+ import { I18n } from '../i18n.js';
24
+ import { Manifest } from '../manifest.js';
25
+
26
+ const container = new Container(CONTAINER_OPTS);
27
+
28
+ bindCommon<ServerClientManagerSettings>(container, () => ({
29
+ ...TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
30
+ }));
31
+ bindNodeCore(container);
32
+ bindNodeCLI(container);
33
+ bindProduct(container, Manifest, I18n);
34
+
35
+ export default container;
36
+ ```
37
+
38
+ ## index.ts
39
+
40
+ ```typescript
41
+ import {
42
+ APPS_ROOT_DIR_NAME,
43
+ type FSManager,
44
+ type I18nManager,
45
+ } from 'libmodulor';
46
+ import { NodeCoreCLIManager } from 'libmodulor/node';
47
+
48
+ import container from './container.js';
49
+
50
+ await container.get<I18nManager>('I18nManager').init();
51
+
52
+ await container.resolve(NodeCoreCLIManager).handleCommand({
53
+ appsRootPath: container
54
+ .get<FSManager>('FSManager')
55
+ .path('..', '..', '..', APPS_ROOT_DIR_NAME),
56
+ srcImporter: (path) => import(path),
57
+ });
58
+ ```
59
+
60
+ ## Build & Run
61
+
62
+ Update `package.json` to add a new entry to the `scripts`.
63
+
64
+ ```json
65
+ "run:cli": "cd dist/products/SuperTrader/cli && node index.js",
66
+ ```
67
+
68
+ ```sh
69
+ yarn build && yarn run:cli
70
+ ```
71
+
72
+ You can see the CLI help appearing with the available commands.
73
+
74
+ > [!TIP]
75
+ > Update the app's `i18n.ts` to add `uc_BuyAsset_desc` and `ucif_isin_desc` to have a more detailed help section.
76
+
77
+ Start the server if it's not running.
78
+
79
+ ```sh
80
+ yarn run:server
81
+ ```
82
+
83
+ Execute the CLI in another terminal or tab.
84
+
85
+ ```sh
86
+ yarn run:cli Trading_BuyAsset
87
+ # ❌ ISIN must be filled
88
+ yarn run:cli Trading_BuyAsset --isin US02079K3059 --limit 123.5 --qty 150
89
+ # ✅ {"parts":{"_0":{"items":[{"executedDirectly":false,"id":"da3dc295-6d7c-41b1-a00a-62683f3e6ab9"}],"total":1}}}
90
+ ```
91
+
92
+ Open the SQLite database with your favorite DB editor (e.g. TablePlus, DBeaver...).
93
+
94
+ ```sh
95
+ open dist/products/SuperTrader/server/uc-data-store.sqlite
96
+ ```
97
+
98
+ ```sh
99
+ yarn lint && git add . && git commit -m "feat: add the cli target"
100
+ ```
101
+
102
+ Now that's done, let's [Create the mcp-server Target](./011_Create_the_mcp_server_Target.md).
@@ -0,0 +1,157 @@
1
+ # Create the mcp-server Target
2
+
3
+ We'll use the pre-built local [stdio transport](https://modelcontextprotocol.io/docs/concepts/transports#standard-input-output-stdio) `ServerManager`.
4
+
5
+ ```sh
6
+ yarn add "@modelcontextprotocol/sdk@^1.1.1"
7
+ ```
8
+
9
+ ```sh
10
+ mkdir src/products/SuperTrader/mcp-server
11
+ touch src/products/SuperTrader/mcp-server/{container.ts,index.ts}
12
+ ```
13
+
14
+ ## container.ts
15
+
16
+ ```typescript
17
+ import {
18
+ CONTAINER_OPTS,
19
+ type ServerClientManagerSettings,
20
+ type ServerManager,
21
+ TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
22
+ bindCommon,
23
+ bindProduct,
24
+ } from 'libmodulor';
25
+ import { bindNodeCore, bindServer } from 'libmodulor/node';
26
+ import { NodeLocalStdioMCPServerManager } from 'libmodulor/node-mcp';
27
+ import { Container } from 'inversify';
28
+
29
+ import { I18n } from '../i18n.js';
30
+ import { Manifest } from '../manifest.js';
31
+
32
+ type S = ServerClientManagerSettings;
33
+
34
+ const container = new Container(CONTAINER_OPTS);
35
+
36
+ bindCommon<S>(container, () => ({
37
+ ...TARGET_DEFAULT_SERVER_CLIENT_MANAGER_SETTINGS,
38
+ logger_level: 'error',
39
+ }));
40
+ bindNodeCore(container);
41
+ bindServer(container);
42
+ bindProduct(container, Manifest, I18n);
43
+
44
+ container
45
+ .bind<ServerManager>('ServerManager')
46
+ .to(NodeLocalStdioMCPServerManager);
47
+
48
+ export default container;
49
+ ```
50
+
51
+ ## index.ts
52
+
53
+ ```typescript
54
+ import {
55
+ APPS_ROOT_DIR_NAME,
56
+ type FSManager,
57
+ type I18nManager,
58
+ } from 'libmodulor';
59
+ import { MCPServerBooter } from 'libmodulor/node-mcp';
60
+
61
+ import container from './container.js';
62
+
63
+ await container.get<I18nManager>('I18nManager').init();
64
+
65
+ await container.resolve(MCPServerBooter).exec({
66
+ appsRootPath: container
67
+ .get<FSManager>('FSManager')
68
+ .path('..', '..', '..', APPS_ROOT_DIR_NAME),
69
+ srcImporter: (path) => import(path),
70
+ });
71
+ ```
72
+
73
+ > [!NOTE]
74
+ > Note how we increase the level of logs to `error` because logging on stdout [messes with the stdio transport](https://modelcontextprotocol.io/docs/tools/debugging#server-side-logging).
75
+
76
+ ## Claude Desktop
77
+
78
+ If you don't have [Claude Desktop](https://claude.ai/download) on your machine, install it.
79
+
80
+ The following instructions are for macOS. You might need to adapt the paths if you are using another OS.
81
+
82
+ Register the mcp server in Claude (make sure you adapt the absolute path to your `libmodulor-tuto` directory).
83
+
84
+ ```sh
85
+ nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
86
+ ```
87
+
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "libmodulor-tuto": {
92
+ "command": "node",
93
+ "args": [
94
+ "/Users/toto/libmodulor-tuto/dist/products/SuperTrader/mcp-server/index.js"
95
+ ]
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ If you want to enable debugging within Claude Desktop :
102
+
103
+ ```sh
104
+ nano ~/Library/Application\ Support/Claude/developer_settings.json
105
+ ```
106
+
107
+ ```json
108
+ {
109
+ "allowDevTools": true
110
+ }
111
+ ```
112
+
113
+ To vizualize the logs :
114
+
115
+ ```sh
116
+ ls -la ~/Library/Logs/Claude
117
+ tail -f ~/Library/Logs/Claude/mcp.log
118
+ tail -f ~/Library/Logs/Claude/mcp-server-libmodulor-tuto.log
119
+ ```
120
+
121
+ To open the Chrome Developer Tools wihtin Claude, press <kbd>cmd</kbd> + <kbd>option</kbd> + <kbd>shift</kbd> + <kbd>I</kbd> (should be easy if you're an emacs user).
122
+
123
+ ## Build & Run
124
+
125
+ Press <kbd>ctrl</kbd> + <kbd>C</kbd> to stop the server.
126
+
127
+ ```sh
128
+ yarn build && yarn run:server
129
+ ```
130
+
131
+ Launch Claude Desktop.
132
+
133
+ At the bottom right of the prompt you should see a little hammer 🔨 indicating `1 MCP Tool available`.
134
+
135
+ Click on it. You should see the `BuyAsset` use case registered.
136
+
137
+ Now just write a prompt like below :
138
+
139
+ ```txt
140
+ Dear Claude. Please buy 150 shares of Google.
141
+ ```
142
+
143
+ And let the magic happens.
144
+
145
+ <img src="/docs/assets/trading-target-mcp-server.png" width="600px">
146
+
147
+ Open the SQLite database with your favorite DB editor (e.g. TablePlus, DBeaver...).
148
+
149
+ ```sh
150
+ open dist/products/SuperTrader/server/uc-data-store.sqlite
151
+ ```
152
+
153
+ ```sh
154
+ yarn lint && git add . && git commit -m "feat: add the mcp-server target"
155
+ ```
156
+
157
+ For now, we're done. Let's review what we've built : [Summary](./012_Summary.md).
@@ -0,0 +1,29 @@
1
+ # Summary
2
+
3
+ ```sh
4
+ git log --oneline
5
+ ```
6
+
7
+ ```sh
8
+ 7be4e06 (HEAD -> master) feat: add the mcp-server target
9
+ 0fb3d57 feat: add the cli target
10
+ e8a52a6 feat: define wording for humans
11
+ 3d41f82 feat: persist data in SQLite
12
+ d55bc42 feat: add the web target
13
+ 1af90ea feat: add the server target
14
+ dffa202 feat: add the product
15
+ 8b83e1f test: init app tests
16
+ 0f99382 feat: add the use case
17
+ 33ac247 feat: add the app
18
+ 09909aa chore: init source code
19
+ ```
20
+
21
+ That was cool ! In a couple of minutes we have created the foundations of a multi-platform application.
22
+
23
+ And we have only touched the surface as `libmodulor` has much more to offer.
24
+
25
+ We have used the "pre-built" targets, but it's totally possible to do the same with a Hono server, a stricli CLI, a Vue.js SPA and so on. All the targets implement generic interfaces provided by `libmodulor`, making the whole thing fully modular.
26
+
27
+ Coming soon : the Advanced Guide.
28
+
29
+ If you appreciated this Guide or have any feedback, of all kinds, please feel free to send me a message. I'll be happy to discuss and help.
package/package.json CHANGED
@@ -1,17 +1,20 @@
1
1
  {
2
2
  "name": "libmodulor",
3
3
  "description": "An opinionated TypeScript library to create business oriented applications",
4
- "version": "0.1.0",
4
+ "version": "0.3.0",
5
+ "license": "LGPL-3.0",
5
6
  "author": "Chafik H'nini <chafik.hnini@gmail.com>",
6
- "license": "UNLICENSED",
7
+ "homepage": "https://github.com/c100k/libmodulor#readme",
8
+ "bugs": "https://github.com/c100k/libmodulor/issues",
9
+ "keywords": ["library", "typescript", "business application", "use case", "app", "product", "target", "auto-test", "auto-documentation"],
7
10
  "type": "module",
8
11
  "module": "./dist/esm/index.js",
9
12
  "exports": {
10
13
  ".": {
11
14
  "import": "./dist/esm/index.js"
12
15
  },
13
- "./cli": {
14
- "import": "./dist/products/Wizard/index.js"
16
+ "./helper": {
17
+ "import": "./dist/products/Helper/index.js"
15
18
  },
16
19
  "./locales/en": {
17
20
  "import": "./dist/esm/i18n/locales/en.js"