@jumentix/cli-init 0.0.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 (1146) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +107 -0
  3. package/README.pt-BR.md +112 -0
  4. package/bin/jumentix-init.js +11 -0
  5. package/bin/jumentix.js +8 -0
  6. package/bin/launcher.js +72 -0
  7. package/dist/args.d.ts +46 -0
  8. package/dist/args.js +215 -0
  9. package/dist/args.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.js +116 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/commands/add.d.ts +16 -0
  14. package/dist/commands/add.js +442 -0
  15. package/dist/commands/add.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +34 -0
  17. package/dist/commands/doctor.js +397 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/init.d.ts +8 -0
  20. package/dist/commands/init.js +221 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/upgrade.d.ts +14 -0
  23. package/dist/commands/upgrade.js +280 -0
  24. package/dist/commands/upgrade.js.map +1 -0
  25. package/dist/config.d.ts +16 -0
  26. package/dist/config.js +27 -0
  27. package/dist/config.js.map +1 -0
  28. package/dist/generators/backend.d.ts +45 -0
  29. package/dist/generators/backend.js +182 -0
  30. package/dist/generators/backend.js.map +1 -0
  31. package/dist/generators/domains.d.ts +46 -0
  32. package/dist/generators/domains.js +170 -0
  33. package/dist/generators/domains.js.map +1 -0
  34. package/dist/generators/env.d.ts +26 -0
  35. package/dist/generators/env.js +72 -0
  36. package/dist/generators/env.js.map +1 -0
  37. package/dist/generators/frontend.d.ts +47 -0
  38. package/dist/generators/frontend.js +211 -0
  39. package/dist/generators/frontend.js.map +1 -0
  40. package/dist/generators/frontendModules.d.ts +53 -0
  41. package/dist/generators/frontendModules.js +322 -0
  42. package/dist/generators/frontendModules.js.map +1 -0
  43. package/dist/generators/frontendOas.d.ts +54 -0
  44. package/dist/generators/frontendOas.js +226 -0
  45. package/dist/generators/frontendOas.js.map +1 -0
  46. package/dist/generators/index.d.ts +11 -0
  47. package/dist/generators/index.js +71 -0
  48. package/dist/generators/index.js.map +1 -0
  49. package/dist/generators/jumentixVersions.d.ts +18 -0
  50. package/dist/generators/jumentixVersions.js +52 -0
  51. package/dist/generators/jumentixVersions.js.map +1 -0
  52. package/dist/generators/packageJson.d.ts +16 -0
  53. package/dist/generators/packageJson.js +52 -0
  54. package/dist/generators/packageJson.js.map +1 -0
  55. package/dist/generators/paths.d.ts +19 -0
  56. package/dist/generators/paths.js +80 -0
  57. package/dist/generators/paths.js.map +1 -0
  58. package/dist/generators/slice.d.ts +26 -0
  59. package/dist/generators/slice.js +92 -0
  60. package/dist/generators/slice.js.map +1 -0
  61. package/dist/generators/workspace.d.ts +113 -0
  62. package/dist/generators/workspace.js +508 -0
  63. package/dist/generators/workspace.js.map +1 -0
  64. package/dist/index.d.ts +8 -0
  65. package/dist/index.js +49 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/legacy/bootstrap.d.ts +80 -0
  68. package/dist/legacy/bootstrap.js +276 -0
  69. package/dist/legacy/bootstrap.js.map +1 -0
  70. package/dist/prompt.d.ts +18 -0
  71. package/dist/prompt.js +51 -0
  72. package/dist/prompt.js.map +1 -0
  73. package/dist/sources/catalog.d.ts +7 -0
  74. package/dist/sources/catalog.js +40 -0
  75. package/dist/sources/catalog.js.map +1 -0
  76. package/dist/sources/designerExport.d.ts +10 -0
  77. package/dist/sources/designerExport.js +39 -0
  78. package/dist/sources/designerExport.js.map +1 -0
  79. package/dist/sources/index.d.ts +10 -0
  80. package/dist/sources/index.js +34 -0
  81. package/dist/sources/index.js.map +1 -0
  82. package/dist/sources/messages.d.ts +16 -0
  83. package/dist/sources/messages.js +22 -0
  84. package/dist/sources/messages.js.map +1 -0
  85. package/dist/sources/oas.d.ts +11 -0
  86. package/dist/sources/oas.js +75 -0
  87. package/dist/sources/oas.js.map +1 -0
  88. package/dist/sources/planBuilder.d.ts +79 -0
  89. package/dist/sources/planBuilder.js +307 -0
  90. package/dist/sources/planBuilder.js.map +1 -0
  91. package/dist/sources/preset.d.ts +11 -0
  92. package/dist/sources/preset.js +44 -0
  93. package/dist/sources/preset.js.map +1 -0
  94. package/dist/sources/resolve.d.ts +7 -0
  95. package/dist/sources/resolve.js +66 -0
  96. package/dist/sources/resolve.js.map +1 -0
  97. package/dist/sources/types.d.ts +82 -0
  98. package/dist/sources/types.js +20 -0
  99. package/dist/sources/types.js.map +1 -0
  100. package/dist/sources/validate.d.ts +5 -0
  101. package/dist/sources/validate.js +66 -0
  102. package/dist/sources/validate.js.map +1 -0
  103. package/dist/upgrade/threeWay.d.ts +39 -0
  104. package/dist/upgrade/threeWay.js +165 -0
  105. package/dist/upgrade/threeWay.js.map +1 -0
  106. package/fixtures/designer-export.json +163 -0
  107. package/fixtures/invalid-duplicate-entity.yml +28 -0
  108. package/fixtures/invalid-no-core.yml +21 -0
  109. package/fixtures/invalid-no-primary-key.yml +18 -0
  110. package/fixtures/users-oas.yml +79 -0
  111. package/package.json +63 -0
  112. package/templates/backend/README.md +42 -0
  113. package/templates/backend/README.pt-BR.md +46 -0
  114. package/templates/backend/docker/services/Dockerfile.functions +17 -0
  115. package/templates/backend/docker/services/Dockerfile.graphql +17 -0
  116. package/templates/backend/docker/services/Dockerfile.grpc +17 -0
  117. package/templates/backend/docker/services/Dockerfile.rest +17 -0
  118. package/templates/backend/docker/services/Dockerfile.websocket +17 -0
  119. package/templates/backend/docker-compose-aurora.yml +20 -0
  120. package/templates/backend/docker-compose-cassandra.yml +22 -0
  121. package/templates/backend/docker-compose-dynamodb.yml +18 -0
  122. package/templates/backend/docker-compose-firebase.yml +34 -0
  123. package/templates/backend/docker-compose-messaging.yml +35 -0
  124. package/templates/backend/docker-compose-mongodb.yml +16 -0
  125. package/templates/backend/docker-compose-mssql.yml +26 -0
  126. package/templates/backend/docker-compose-mysql.yml +24 -0
  127. package/templates/backend/docker-compose-oracle.yml +21 -0
  128. package/templates/backend/docker-compose-postgresql.yml +20 -0
  129. package/templates/backend/docker-compose-rds.yml +20 -0
  130. package/templates/backend/docker-compose-redis.yml +30 -0
  131. package/templates/backend/docker-compose-service-templates.yml +40 -0
  132. package/templates/backend/documentation/README.md +65 -0
  133. package/templates/backend/documentation/README.pt-BR.md +68 -0
  134. package/templates/backend/documentation/guides/CREATING-REALTIME-API-WITH-JUMENTIX.md +176 -0
  135. package/templates/backend/documentation/guides/CREATING-REALTIME-API-WITH-JUMENTIX.pt-BR.md +177 -0
  136. package/templates/backend/documentation/guides/CREATING-REST-API-WITH-JUMENTIX.md +189 -0
  137. package/templates/backend/documentation/guides/CREATING-REST-API-WITH-JUMENTIX.pt-BR.md +190 -0
  138. package/templates/backend/package.json +44 -0
  139. package/templates/backend/scripts/purge-tombstones.js +91 -0
  140. package/templates/backend/scripts/run-api-smoke.js +33 -0
  141. package/templates/backend/scripts/run-redis-dead-letter-integration.js +42 -0
  142. package/templates/backend/scripts/run-redis-key-value-integration.js +62 -0
  143. package/templates/backend/scripts/run-security-smoke.js +51 -0
  144. package/templates/backend/seed/accounts-api.json +401 -0
  145. package/templates/backend/seed/accounts.ts +4 -0
  146. package/templates/backend/seed/organizations.ts +88 -0
  147. package/templates/backend/seed/transactions-api.json +5011 -0
  148. package/templates/backend/seed/transactions.ts +4 -0
  149. package/templates/backend/seed/users.ts +191 -0
  150. package/templates/backend/src/config/.env.ci +48 -0
  151. package/templates/backend/src/config/.env.dev +75 -0
  152. package/templates/backend/src/config/.env.dev.example +77 -0
  153. package/templates/backend/src/config/.env.staging +52 -0
  154. package/templates/backend/src/config/auth.ts +14 -0
  155. package/templates/backend/src/config/constants.ts +53 -0
  156. package/templates/backend/src/config/jwt.ts +9 -0
  157. package/templates/backend/src/config/redis.ts +11 -0
  158. package/templates/backend/src/config/security.ts +25 -0
  159. package/templates/backend/src/infra/audit/ISecurityAuditRepository.ts +13 -0
  160. package/templates/backend/src/infra/audit/InMemorySecurityAuditRepository.ts +26 -0
  161. package/templates/backend/src/infra/audit/index.ts +2 -0
  162. package/templates/backend/src/infra/cache/CacheService.ts +74 -0
  163. package/templates/backend/src/infra/cache/ICacheService.ts +7 -0
  164. package/templates/backend/src/infra/cache/index.ts +2 -0
  165. package/templates/backend/src/infra/context/Context.ts +199 -0
  166. package/templates/backend/src/infra/events/InMemoryEventBus.ts +24 -0
  167. package/templates/backend/src/infra/exceptions/BaseError.ts +42 -0
  168. package/templates/backend/src/infra/exceptions/ComposeEventError.ts +9 -0
  169. package/templates/backend/src/infra/exceptions/ConflictError.ts +10 -0
  170. package/templates/backend/src/infra/exceptions/DataBaseNotFoundError.ts +10 -0
  171. package/templates/backend/src/infra/exceptions/DatabasePagingError.ts +10 -0
  172. package/templates/backend/src/infra/exceptions/DomainNotFoundError.ts +9 -0
  173. package/templates/backend/src/infra/exceptions/DomainValidationError.ts +9 -0
  174. package/templates/backend/src/infra/exceptions/ForbiddenError.ts +9 -0
  175. package/templates/backend/src/infra/exceptions/ISerializedError.ts +8 -0
  176. package/templates/backend/src/infra/exceptions/InternalServerError.ts +9 -0
  177. package/templates/backend/src/infra/exceptions/NotFoundError.ts +9 -0
  178. package/templates/backend/src/infra/exceptions/NotImplemented.ts +9 -0
  179. package/templates/backend/src/infra/exceptions/ResourceLockedError.ts +10 -0
  180. package/templates/backend/src/infra/exceptions/UnauthorizedError.ts +9 -0
  181. package/templates/backend/src/infra/exceptions/ValidationError.ts +9 -0
  182. package/templates/backend/src/infra/exceptions/error.codes.ts +23 -0
  183. package/templates/backend/src/infra/exceptions/index.ts +20 -0
  184. package/templates/backend/src/infra/exceptions/registerPersistenceCorrelation.ts +24 -0
  185. package/templates/backend/src/infra/jwt/IJwtService.ts +6 -0
  186. package/templates/backend/src/infra/jwt/JwtService.ts +79 -0
  187. package/templates/backend/src/infra/messages/InMemoryMessageMediator.ts +4 -0
  188. package/templates/backend/src/infra/messages/adapters/BullMqMessageMediatorAdapter.ts +1 -0
  189. package/templates/backend/src/infra/messages/adapters/InMemoryMessageMediatorAdapter.ts +1 -0
  190. package/templates/backend/src/infra/messages/adapters/RabbitMqMessageMediatorAdapter.ts +1 -0
  191. package/templates/backend/src/infra/messages/compileMessageMediator.ts +1 -0
  192. package/templates/backend/src/infra/messages/repositories/QueueRequestResponseRepository.ts +39 -0
  193. package/templates/backend/src/infra/messages/repositories/index.ts +1 -0
  194. package/templates/backend/src/infra/mutex/adapter/MutexService.ts +1 -0
  195. package/templates/backend/src/infra/mutex/port/IMutexService.ts +1 -0
  196. package/templates/backend/src/infra/persistence/InMemoryDatabase/InMemoryDbClient.ts +16 -0
  197. package/templates/backend/src/infra/persistence/InMemoryDatabase/Stores/InMemoryRelationalStore.ts +209 -0
  198. package/templates/backend/src/infra/persistence/InMemoryDatabase/Stores/OrganizationStoreAPI.ts +16 -0
  199. package/templates/backend/src/infra/persistence/InMemoryDatabase/Stores/UserStoreAPI.ts +13 -0
  200. package/templates/backend/src/infra/persistence/InMemoryDatabase/idReservationLedger.ts +4 -0
  201. package/templates/backend/src/infra/persistence/KeyValueStorage/BaseKeyValueStorageClient.ts +1 -0
  202. package/templates/backend/src/infra/persistence/KeyValueStorage/IKeyValueStorageClient.ts +1 -0
  203. package/templates/backend/src/infra/persistence/KeyValueStorage/InMemoryKeyValueStorageClient.ts +1 -0
  204. package/templates/backend/src/infra/persistence/KeyValueStorage/RedisKeyValueStorageClient.ts +1 -0
  205. package/templates/backend/src/infra/persistence/KeyValueStorage/compileKeyValueStorageClient.ts +1 -0
  206. package/templates/backend/src/infra/persistence/compileDatabaseClient.ts +23 -0
  207. package/templates/backend/src/infra/persistence/external/AuroraRepository.ts +1 -0
  208. package/templates/backend/src/infra/persistence/external/BaseExternalDataRepository.ts +6 -0
  209. package/templates/backend/src/infra/persistence/external/CassandraRepository.ts +1 -0
  210. package/templates/backend/src/infra/persistence/external/DynamoDbRepository.ts +1 -0
  211. package/templates/backend/src/infra/persistence/external/ExternalStoreProxy.ts +2 -0
  212. package/templates/backend/src/infra/persistence/external/FirebaseRepository.ts +1 -0
  213. package/templates/backend/src/infra/persistence/external/MongoMongooseRepository.ts +1 -0
  214. package/templates/backend/src/infra/persistence/external/OracleRepository.ts +1 -0
  215. package/templates/backend/src/infra/persistence/external/RdsRepository.ts +1 -0
  216. package/templates/backend/src/infra/persistence/external/SqlSequelizeRepository.ts +7 -0
  217. package/templates/backend/src/infra/persistence/external/index.ts +3 -0
  218. package/templates/backend/src/infra/persistence/port/IDatabaseClient.ts +11 -0
  219. package/templates/backend/src/infra/persistence/purgeStores.ts +47 -0
  220. package/templates/backend/src/infra/ports/persistence/IStore.ts +1 -0
  221. package/templates/backend/src/infra/security/IPasswordCryptoService.ts +28 -0
  222. package/templates/backend/src/infra/security/PasswordCryptoService.ts +51 -0
  223. package/templates/backend/src/infra/security/index.ts +7 -0
  224. package/templates/backend/src/interface/Async/RealtimeAPIBase.ts +417 -0
  225. package/templates/backend/src/interface/Async/RealtimeDomainEvent.ts +3 -0
  226. package/templates/backend/src/interface/CLI/core/catalogStorage.ts +51 -0
  227. package/templates/backend/src/interface/CLI/core/prompt.ts +46 -0
  228. package/templates/backend/src/interface/CLI/index.ts +73 -0
  229. package/templates/backend/src/interface/CLI/subapps/domainManager.ts +202 -0
  230. package/templates/backend/src/interface/CLI/subapps/entityModelManager.ts +472 -0
  231. package/templates/backend/src/interface/CLI/types.ts +56 -0
  232. package/templates/backend/src/interface/GUI/README.md +35 -0
  233. package/templates/backend/src/interface/GUI/README.pt-BR.md +35 -0
  234. package/templates/backend/src/interface/GUI/desktop/README.md +9 -0
  235. package/templates/backend/src/interface/GUI/web/README.md +10 -0
  236. package/templates/backend/src/interface/HTTP/RestAPI.ts +569 -0
  237. package/templates/backend/src/interface/HTTP/adapters/adonis-js/AdonisJsServer.ts +245 -0
  238. package/templates/backend/src/interface/HTTP/adapters/adonis-js/adonis-js.ts +55 -0
  239. package/templates/backend/src/interface/HTTP/adapters/adonis-js/handlers/infraHandlers.ts +3 -0
  240. package/templates/backend/src/interface/HTTP/adapters/adonis-js/responses/sendErrorResponse.ts +9 -0
  241. package/templates/backend/src/interface/HTTP/adapters/aws/lambda/handlers/localhost.ts +12 -0
  242. package/templates/backend/src/interface/HTTP/adapters/aws/lambda/responses/sendErrorResponse.ts +9 -0
  243. package/templates/backend/src/interface/HTTP/adapters/cloudflare-workers/cloudflare-workers.ts +277 -0
  244. package/templates/backend/src/interface/HTTP/adapters/cloudflare-workers/responses/sendErrorResponse.ts +9 -0
  245. package/templates/backend/src/interface/HTTP/adapters/derby-js/DerbyJsServer.ts +242 -0
  246. package/templates/backend/src/interface/HTTP/adapters/derby-js/derby-js.ts +55 -0
  247. package/templates/backend/src/interface/HTTP/adapters/derby-js/handlers/infraHandlers.ts +3 -0
  248. package/templates/backend/src/interface/HTTP/adapters/derby-js/responses/sendErrorResponse.ts +9 -0
  249. package/templates/backend/src/interface/HTTP/adapters/express/ExpressServer.ts +94 -0
  250. package/templates/backend/src/interface/HTTP/adapters/express/express.ts +56 -0
  251. package/templates/backend/src/interface/HTTP/adapters/express/handlers/apiDocGetHandlerFactory.ts +22 -0
  252. package/templates/backend/src/interface/HTTP/adapters/express/handlers/apiversions.get.ts +23 -0
  253. package/templates/backend/src/interface/HTTP/adapters/express/handlers/infraHandlers.ts +9 -0
  254. package/templates/backend/src/interface/HTTP/adapters/express/handlers/localhost.get.ts +23 -0
  255. package/templates/backend/src/interface/HTTP/adapters/express/responses/sendErrorResponse.ts +10 -0
  256. package/templates/backend/src/interface/HTTP/adapters/fastify/FastifyServer.ts +113 -0
  257. package/templates/backend/src/interface/HTTP/adapters/fastify/fastify.ts +56 -0
  258. package/templates/backend/src/interface/HTTP/adapters/fastify/handlers/apiDocGetHandlerFactory.ts +23 -0
  259. package/templates/backend/src/interface/HTTP/adapters/fastify/handlers/apiversions.get.ts +24 -0
  260. package/templates/backend/src/interface/HTTP/adapters/fastify/handlers/infraHandlers.ts +9 -0
  261. package/templates/backend/src/interface/HTTP/adapters/fastify/handlers/localhost.get.ts +15 -0
  262. package/templates/backend/src/interface/HTTP/adapters/fastify/responses/sendErrorResponse.ts +10 -0
  263. package/templates/backend/src/interface/HTTP/adapters/feathers/FeathersServer.ts +218 -0
  264. package/templates/backend/src/interface/HTTP/adapters/feathers/feathers.ts +55 -0
  265. package/templates/backend/src/interface/HTTP/adapters/feathers/handlers/infraHandlers.ts +3 -0
  266. package/templates/backend/src/interface/HTTP/adapters/feathers/responses/sendErrorResponse.ts +9 -0
  267. package/templates/backend/src/interface/HTTP/adapters/loopback/LoopBackServer.ts +165 -0
  268. package/templates/backend/src/interface/HTTP/adapters/loopback/handlers/infraHandlers.ts +3 -0
  269. package/templates/backend/src/interface/HTTP/adapters/loopback/loopback.ts +55 -0
  270. package/templates/backend/src/interface/HTTP/adapters/loopback/responses/sendErrorResponse.ts +9 -0
  271. package/templates/backend/src/interface/HTTP/adapters/restify/RestifyServer.ts +117 -0
  272. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/apiDocGetHandlerFactory.ts +21 -0
  273. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/apiversions.get.ts +24 -0
  274. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/auth/login.ts +39 -0
  275. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/auth/logout.ts +40 -0
  276. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/auth/register.ts +41 -0
  277. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/auth/updatePassword.ts +42 -0
  278. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/infraHandlers.ts +9 -0
  279. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/localhost.get.ts +17 -0
  280. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/create.ts +40 -0
  281. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/createDocument.ts +42 -0
  282. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/createEmail.ts +42 -0
  283. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/createPhone.ts +42 -0
  284. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/deleteDocument.ts +41 -0
  285. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/deleteEmail.ts +41 -0
  286. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/deleteOne.ts +37 -0
  287. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/deletePhone.ts +41 -0
  288. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/getAll.ts +46 -0
  289. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/getOneById.ts +40 -0
  290. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/update.ts +38 -0
  291. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/updateDocument.ts +43 -0
  292. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/updateEmail.ts +43 -0
  293. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/updatePassword.ts +43 -0
  294. package/templates/backend/src/interface/HTTP/adapters/restify/handlers/users/updatePhone.ts +43 -0
  295. package/templates/backend/src/interface/HTTP/adapters/restify/responses/sendErrorResponse.ts +8 -0
  296. package/templates/backend/src/interface/HTTP/adapters/restify/restify.ts +58 -0
  297. package/templates/backend/src/interface/HTTP/adapters/sails-js/SailsJsServer.ts +205 -0
  298. package/templates/backend/src/interface/HTTP/adapters/sails-js/handlers/infraHandlers.ts +3 -0
  299. package/templates/backend/src/interface/HTTP/adapters/sails-js/responses/sendErrorResponse.ts +9 -0
  300. package/templates/backend/src/interface/HTTP/adapters/sails-js/sails-js.ts +55 -0
  301. package/templates/backend/src/interface/HTTP/adapters/start-rest-api.ts +65 -0
  302. package/templates/backend/src/interface/HTTP/adapters/total-js/TotalJsServer.ts +245 -0
  303. package/templates/backend/src/interface/HTTP/adapters/total-js/handlers/infraHandlers.ts +3 -0
  304. package/templates/backend/src/interface/HTTP/adapters/total-js/responses/sendErrorResponse.ts +9 -0
  305. package/templates/backend/src/interface/HTTP/adapters/total-js/total-js.ts +55 -0
  306. package/templates/backend/src/interface/HTTP/adapters/vercel-functions/responses/sendErrorResponse.ts +9 -0
  307. package/templates/backend/src/interface/HTTP/adapters/vercel-functions/vercel-functions.ts +252 -0
  308. package/templates/backend/src/interface/HTTP/adapters/vercel-functions/vercelFunctionsSecurity.ts +14 -0
  309. package/templates/backend/src/interface/HTTP/ports/BaseController.ts +110 -0
  310. package/templates/backend/src/interface/HTTP/ports/EHTTPFrameworks.ts +14 -0
  311. package/templates/backend/src/interface/HTTP/ports/EndPointFactory.ts +4 -0
  312. package/templates/backend/src/interface/HTTP/ports/HTTPBaseServer.ts +46 -0
  313. package/templates/backend/src/interface/HTTP/ports/IAPIFactory.ts +22 -0
  314. package/templates/backend/src/interface/HTTP/ports/IController.ts +39 -0
  315. package/templates/backend/src/interface/HTTP/ports/IControllerFactory.ts +23 -0
  316. package/templates/backend/src/interface/HTTP/ports/IHTTPRequest.ts +5 -0
  317. package/templates/backend/src/interface/HTTP/ports/IHTTPResponse.ts +5 -0
  318. package/templates/backend/src/interface/HTTP/ports/IHTTPServer.ts +9 -0
  319. package/templates/backend/src/interface/HTTP/ports/IHandlerFactory.ts +16 -0
  320. package/templates/backend/src/interface/HTTP/ports/IbaseHandler.ts +9 -0
  321. package/templates/backend/src/interface/HTTP/ports/IbaseHandlerFactory.ts +8 -0
  322. package/templates/backend/src/interface/HTTP/ports/index.ts +39 -0
  323. package/templates/backend/src/interface/HTTP/validators/checkRequiredProperties.ts +22 -0
  324. package/templates/backend/src/interface/HTTP/validators/getSchema.ts +34 -0
  325. package/templates/backend/src/interface/HTTP/validators/index.ts +6 -0
  326. package/templates/backend/src/interface/HTTP/validators/isPropertiesMatching.ts +20 -0
  327. package/templates/backend/src/interface/HTTP/validators/throwIfOASInputValidationFails.ts +94 -0
  328. package/templates/backend/src/interface/HTTP/validators/validateRequestAgainstOAS.ts +29 -0
  329. package/templates/backend/src/interface/HTTP/validators/validateRequestParams.ts +78 -0
  330. package/templates/backend/src/interface/WebSocket/WebSocketAPI.ts +189 -0
  331. package/templates/backend/src/interface/WebSocket/adapters/socket-io/clusterAdapter.ts +35 -0
  332. package/templates/backend/src/interface/WebSocket/adapters/socket-io/redisStreamsAdapter.ts +49 -0
  333. package/templates/backend/src/interface/WebSocket/adapters/socket-io/socket-io.ts +93 -0
  334. package/templates/backend/src/interface/WebSocket/adapters/start-websocket-api.ts +34 -0
  335. package/templates/backend/src/interface/gRPC/adapters/grpc/grpc.ts +73 -0
  336. package/templates/backend/src/interface/gRPC/adapters/start-grpc-api.ts +13 -0
  337. package/templates/backend/src/interface/gRPC/gRPCAPI.ts +211 -0
  338. package/templates/backend/src/interface/gRPC/resolveGrpcProtoPath.ts +42 -0
  339. package/templates/backend/src/interface/index.ts +0 -0
  340. package/templates/backend/src/interface/runtime/RuntimeEnvironment.ts +77 -0
  341. package/templates/backend/src/modules/Users/adapters/in/http/controllers/AuthController.ts +96 -0
  342. package/templates/backend/src/modules/Users/adapters/in/http/controllers/OrganizationController.ts +350 -0
  343. package/templates/backend/src/modules/Users/adapters/in/http/controllers/UserController.ts +383 -0
  344. package/templates/backend/src/modules/Users/adapters/in/http/controllers/index.ts +3 -0
  345. package/templates/backend/src/modules/Users/adapters/out/persistence/OrganizationDataRepository.ts +192 -0
  346. package/templates/backend/src/modules/Users/adapters/out/persistence/UserDataRepository.ts +215 -0
  347. package/templates/backend/src/modules/Users/adapters/out/persistence/index.ts +1 -0
  348. package/templates/backend/src/modules/Users/application/AuthUseCases.ts +103 -0
  349. package/templates/backend/src/modules/Users/application/UserUseCases.ts +89 -0
  350. package/templates/backend/src/modules/Users/application/ports/IAuthUseCases.ts +19 -0
  351. package/templates/backend/src/modules/Users/application/ports/IOrganizationUseCases.ts +48 -0
  352. package/templates/backend/src/modules/Users/application/ports/IUserUseCases.ts +51 -0
  353. package/templates/backend/src/modules/Users/application/use-cases/AuthUseCases.ts +1 -0
  354. package/templates/backend/src/modules/Users/application/use-cases/OrganizationUseCases.ts +124 -0
  355. package/templates/backend/src/modules/Users/application/use-cases/UserUseCases.ts +1 -0
  356. package/templates/backend/src/modules/Users/application/use-cases/index.ts +2 -0
  357. package/templates/backend/src/modules/Users/composition/composeUserDeadLetterReplay.ts +116 -0
  358. package/templates/backend/src/modules/Users/composition/composeUsersAuthServices.ts +145 -0
  359. package/templates/backend/src/modules/Users/domain/Entity/IOrganization.ts +17 -0
  360. package/templates/backend/src/modules/Users/domain/Entity/IUser.ts +22 -0
  361. package/templates/backend/src/modules/Users/domain/Model/Organization.ts +280 -0
  362. package/templates/backend/src/modules/Users/domain/Model/User.ts +445 -0
  363. package/templates/backend/src/modules/Users/domain/security/Rbac.ts +87 -0
  364. package/templates/backend/src/modules/Users/domain/security/TenantAuthorizationPolicy.ts +126 -0
  365. package/templates/backend/src/modules/Users/events/LoginRequestEvent.ts +18 -0
  366. package/templates/backend/src/modules/Users/events/LogoutRequestEvent.ts +18 -0
  367. package/templates/backend/src/modules/Users/events/OrganizationAddressCreateRequestEvent.ts +19 -0
  368. package/templates/backend/src/modules/Users/events/OrganizationAddressDeleteRequestEvent.ts +19 -0
  369. package/templates/backend/src/modules/Users/events/OrganizationAddressUpdateRequestEvent.ts +20 -0
  370. package/templates/backend/src/modules/Users/events/OrganizationCreateRequestEvent.ts +18 -0
  371. package/templates/backend/src/modules/Users/events/OrganizationDeleteRequestEvent.ts +18 -0
  372. package/templates/backend/src/modules/Users/events/OrganizationEmailCreateRequestEvent.ts +19 -0
  373. package/templates/backend/src/modules/Users/events/OrganizationEmailDeleteRequestEvent.ts +19 -0
  374. package/templates/backend/src/modules/Users/events/OrganizationEmailUpdateRequestEvent.ts +20 -0
  375. package/templates/backend/src/modules/Users/events/OrganizationGetAllRequestEvent.ts +18 -0
  376. package/templates/backend/src/modules/Users/events/OrganizationGetMetricsRequestEvent.ts +18 -0
  377. package/templates/backend/src/modules/Users/events/OrganizationGetOneRequestEvent.ts +18 -0
  378. package/templates/backend/src/modules/Users/events/OrganizationPhoneCreateRequestEvent.ts +19 -0
  379. package/templates/backend/src/modules/Users/events/OrganizationPhoneDeleteRequestEvent.ts +19 -0
  380. package/templates/backend/src/modules/Users/events/OrganizationPhoneUpdateRequestEvent.ts +20 -0
  381. package/templates/backend/src/modules/Users/events/OrganizationUpdateRequestEvent.ts +19 -0
  382. package/templates/backend/src/modules/Users/events/RegisterRequestEvent.ts +18 -0
  383. package/templates/backend/src/modules/Users/events/UpdatePasswordRequestEvent.ts +18 -0
  384. package/templates/backend/src/modules/Users/events/UserCreateRequestEvent.ts +18 -0
  385. package/templates/backend/src/modules/Users/events/UserDeleteRequestEvent.ts +19 -0
  386. package/templates/backend/src/modules/Users/events/UserDocumentCreateRequestEvent.ts +19 -0
  387. package/templates/backend/src/modules/Users/events/UserDocumentDeleteRequestEvent.ts +19 -0
  388. package/templates/backend/src/modules/Users/events/UserDocumentUpdateRequestEvent.ts +19 -0
  389. package/templates/backend/src/modules/Users/events/UserEmailCreateRequestEvent.ts +19 -0
  390. package/templates/backend/src/modules/Users/events/UserEmailDeleteRequestEvent.ts +19 -0
  391. package/templates/backend/src/modules/Users/events/UserEmailUpdateRequestEvent.ts +19 -0
  392. package/templates/backend/src/modules/Users/events/UserGetAllRequestEvent.ts +19 -0
  393. package/templates/backend/src/modules/Users/events/UserGetMetricsRequestEvent.ts +18 -0
  394. package/templates/backend/src/modules/Users/events/UserGetOneRequestEvent.ts +19 -0
  395. package/templates/backend/src/modules/Users/events/UserPasswordUpdateRequestEvent.ts +19 -0
  396. package/templates/backend/src/modules/Users/events/UserPhoneCreateRequestEvent.ts +19 -0
  397. package/templates/backend/src/modules/Users/events/UserPhoneDeleteRequestEvent.ts +19 -0
  398. package/templates/backend/src/modules/Users/events/UserPhoneUpdateRequestEvent.ts +19 -0
  399. package/templates/backend/src/modules/Users/events/UserUpdateRequestEvent.ts +19 -0
  400. package/templates/backend/src/modules/Users/events/contracts/IUserEventListeners.ts +8 -0
  401. package/templates/backend/src/modules/Users/events/contracts/UserIntegrationEventName.ts +10 -0
  402. package/templates/backend/src/modules/Users/events/contracts/UserMessageContracts.ts +4 -0
  403. package/templates/backend/src/modules/Users/events/listeners/registerUserEventListeners.ts +25 -0
  404. package/templates/backend/src/modules/Users/events/listeners/registerUserMessageHandlers.ts +60 -0
  405. package/templates/backend/src/modules/Users/features/createDocument.ts +14 -0
  406. package/templates/backend/src/modules/Users/features/createEmail.ts +14 -0
  407. package/templates/backend/src/modules/Users/features/createPhone.ts +14 -0
  408. package/templates/backend/src/modules/Users/features/createUser.ts +16 -0
  409. package/templates/backend/src/modules/Users/features/deleteDocument.ts +13 -0
  410. package/templates/backend/src/modules/Users/features/deleteEmail.ts +13 -0
  411. package/templates/backend/src/modules/Users/features/deletePhone.ts +13 -0
  412. package/templates/backend/src/modules/Users/features/deleteUserById.ts +9 -0
  413. package/templates/backend/src/modules/Users/features/getAllUsers.ts +21 -0
  414. package/templates/backend/src/modules/Users/features/getUserById.ts +12 -0
  415. package/templates/backend/src/modules/Users/features/updateDocument.ts +15 -0
  416. package/templates/backend/src/modules/Users/features/updateEmail.ts +15 -0
  417. package/templates/backend/src/modules/Users/features/updatePassword.ts +14 -0
  418. package/templates/backend/src/modules/Users/features/updatePhone.ts +15 -0
  419. package/templates/backend/src/modules/Users/features/updateUser.ts +14 -0
  420. package/templates/backend/src/modules/Users/index.ts +114 -0
  421. package/templates/backend/src/modules/Users/infra/repository/UserDataRepository.ts +1 -0
  422. package/templates/backend/src/modules/Users/interface/controller/AuthController.ts +1 -0
  423. package/templates/backend/src/modules/Users/interface/controller/UserController.ts +1 -0
  424. package/templates/backend/src/modules/Users/interface/dto/ILoginRequest.ts +7 -0
  425. package/templates/backend/src/modules/Users/interface/dto/ILogoutRequest.ts +3 -0
  426. package/templates/backend/src/modules/Users/interface/dto/IRegisterRequest.ts +9 -0
  427. package/templates/backend/src/modules/Users/interface/dto/IUpdatePasswordRequest.ts +5 -0
  428. package/templates/backend/src/modules/Users/interface/dto/RequestCreateAddress.ts +5 -0
  429. package/templates/backend/src/modules/Users/interface/dto/RequestCreateDocument.ts +7 -0
  430. package/templates/backend/src/modules/Users/interface/dto/RequestCreateEmail.ts +7 -0
  431. package/templates/backend/src/modules/Users/interface/dto/RequestCreateOrganization.ts +12 -0
  432. package/templates/backend/src/modules/Users/interface/dto/RequestCreatePhone.ts +6 -0
  433. package/templates/backend/src/modules/Users/interface/dto/RequestCreateUser.ts +20 -0
  434. package/templates/backend/src/modules/Users/interface/dto/RequestUpdateAddress.ts +5 -0
  435. package/templates/backend/src/modules/Users/interface/dto/RequestUpdateDocument.ts +8 -0
  436. package/templates/backend/src/modules/Users/interface/dto/RequestUpdateEmail.ts +8 -0
  437. package/templates/backend/src/modules/Users/interface/dto/RequestUpdateOrganization.ts +5 -0
  438. package/templates/backend/src/modules/Users/interface/dto/RequestUpdatePassword.ts +5 -0
  439. package/templates/backend/src/modules/Users/interface/dto/RequestUpdatePhone.ts +7 -0
  440. package/templates/backend/src/modules/Users/interface/dto/RequestUpdateUser.ts +19 -0
  441. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/_createGrpcOperationHandler.ts +34 -0
  442. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/create.ts +5 -0
  443. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createDocument.ts +5 -0
  444. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createEmail.ts +5 -0
  445. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createOrganization.ts +5 -0
  446. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createOrganizationAddress.ts +5 -0
  447. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createOrganizationEmail.ts +5 -0
  448. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createOrganizationPhone.ts +5 -0
  449. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/createPhone.ts +5 -0
  450. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteDocument.ts +5 -0
  451. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteEmail.ts +5 -0
  452. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteOne.ts +5 -0
  453. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteOrganization.ts +5 -0
  454. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteOrganizationAddress.ts +5 -0
  455. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteOrganizationEmail.ts +5 -0
  456. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deleteOrganizationPhone.ts +5 -0
  457. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/deletePhone.ts +5 -0
  458. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/getAll.ts +5 -0
  459. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/getAllOrganizations.ts +5 -0
  460. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/getOneById.ts +5 -0
  461. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/getOrganizationById.ts +5 -0
  462. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/login.ts +5 -0
  463. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/logout.ts +5 -0
  464. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/register.ts +5 -0
  465. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/update.ts +5 -0
  466. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateDocument.ts +5 -0
  467. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateEmail.ts +5 -0
  468. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateOrganization.ts +5 -0
  469. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateOrganizationAddress.ts +5 -0
  470. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateOrganizationEmail.ts +5 -0
  471. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateOrganizationPhone.ts +5 -0
  472. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updatePassword.ts +5 -0
  473. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updatePhone.ts +5 -0
  474. package/templates/backend/src/modules/Users/interface/grpcapi/frameworks/grpc/handlers/updateUserPassword.ts +5 -0
  475. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/_documentMutationHandlerFactory.ts +70 -0
  476. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/_organizationMutationHandlerFactory.ts +76 -0
  477. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/create.ts +37 -0
  478. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createDocument.ts +10 -0
  479. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createEmail.ts +41 -0
  480. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createOrganization.ts +38 -0
  481. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createOrganizationAddress.ts +10 -0
  482. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createOrganizationEmail.ts +10 -0
  483. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createOrganizationPhone.ts +10 -0
  484. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/createPhone.ts +41 -0
  485. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteDocument.ts +11 -0
  486. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteEmail.ts +40 -0
  487. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteOne.ts +38 -0
  488. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteOrganization.ts +39 -0
  489. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteOrganizationAddress.ts +11 -0
  490. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteOrganizationEmail.ts +11 -0
  491. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deleteOrganizationPhone.ts +11 -0
  492. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/deletePhone.ts +40 -0
  493. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/getAll.ts +45 -0
  494. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/getAllOrganizations.ts +43 -0
  495. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/getOneById.ts +39 -0
  496. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/getOrganizationById.ts +39 -0
  497. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/login.ts +37 -0
  498. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/logout.ts +38 -0
  499. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/register.ts +39 -0
  500. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/update.ts +39 -0
  501. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateDocument.ts +10 -0
  502. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateEmail.ts +42 -0
  503. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateOrganization.ts +40 -0
  504. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateOrganizationAddress.ts +10 -0
  505. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateOrganizationEmail.ts +10 -0
  506. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateOrganizationPhone.ts +10 -0
  507. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updatePassword.ts +42 -0
  508. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updatePhone.ts +42 -0
  509. package/templates/backend/src/modules/Users/interface/restapi/frameworks/adonis-js/handlers/updateUserPassword.ts +40 -0
  510. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/create.ts +3 -0
  511. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createDocument.ts +3 -0
  512. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createEmail.ts +3 -0
  513. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createLambdaOperationHandler.ts +306 -0
  514. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createOrganization.ts +3 -0
  515. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createOrganizationAddress.ts +3 -0
  516. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createOrganizationEmail.ts +3 -0
  517. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createOrganizationPhone.ts +3 -0
  518. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/createPhone.ts +3 -0
  519. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteDocument.ts +3 -0
  520. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteEmail.ts +3 -0
  521. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteOne.ts +3 -0
  522. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteOrganization.ts +3 -0
  523. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteOrganizationAddress.ts +3 -0
  524. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteOrganizationEmail.ts +3 -0
  525. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deleteOrganizationPhone.ts +3 -0
  526. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/deletePhone.ts +3 -0
  527. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/getAll.ts +3 -0
  528. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/getAllOrganizations.ts +3 -0
  529. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/getOneById.ts +3 -0
  530. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/getOrganizationById.ts +3 -0
  531. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/login.ts +3 -0
  532. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/logout.ts +3 -0
  533. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/register.ts +3 -0
  534. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/runtime.ts +106 -0
  535. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/update.ts +3 -0
  536. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateDocument.ts +3 -0
  537. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateEmail.ts +3 -0
  538. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateOrganization.ts +3 -0
  539. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateOrganizationAddress.ts +3 -0
  540. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateOrganizationEmail.ts +3 -0
  541. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateOrganizationPhone.ts +3 -0
  542. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updatePassword.ts +3 -0
  543. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updatePhone.ts +3 -0
  544. package/templates/backend/src/modules/Users/interface/restapi/frameworks/aws/lambda/handlers/updateUserPassword.ts +3 -0
  545. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/_documentMutationHandlerFactory.ts +73 -0
  546. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/_organizationMutationHandlerFactory.ts +79 -0
  547. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/create.ts +37 -0
  548. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createDocument.ts +10 -0
  549. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createEmail.ts +41 -0
  550. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createOrganization.ts +38 -0
  551. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createOrganizationAddress.ts +10 -0
  552. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createOrganizationEmail.ts +10 -0
  553. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createOrganizationPhone.ts +10 -0
  554. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/createPhone.ts +41 -0
  555. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteDocument.ts +11 -0
  556. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteEmail.ts +40 -0
  557. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteOne.ts +38 -0
  558. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteOrganization.ts +39 -0
  559. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteOrganizationAddress.ts +11 -0
  560. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteOrganizationEmail.ts +11 -0
  561. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deleteOrganizationPhone.ts +11 -0
  562. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/deletePhone.ts +40 -0
  563. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/getAll.ts +45 -0
  564. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/getAllOrganizations.ts +43 -0
  565. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/getOneById.ts +39 -0
  566. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/getOrganizationById.ts +39 -0
  567. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/login.ts +37 -0
  568. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/logout.ts +38 -0
  569. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/register.ts +39 -0
  570. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/update.ts +39 -0
  571. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateDocument.ts +10 -0
  572. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateEmail.ts +42 -0
  573. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateOrganization.ts +40 -0
  574. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateOrganizationAddress.ts +10 -0
  575. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateOrganizationEmail.ts +10 -0
  576. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateOrganizationPhone.ts +10 -0
  577. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updatePassword.ts +42 -0
  578. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updatePhone.ts +42 -0
  579. package/templates/backend/src/modules/Users/interface/restapi/frameworks/cloudflare-workers/handlers/updateUserPassword.ts +40 -0
  580. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/_documentMutationHandlerFactory.ts +70 -0
  581. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/_organizationMutationHandlerFactory.ts +76 -0
  582. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/create.ts +37 -0
  583. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createDocument.ts +10 -0
  584. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createEmail.ts +41 -0
  585. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createOrganization.ts +38 -0
  586. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createOrganizationAddress.ts +10 -0
  587. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createOrganizationEmail.ts +10 -0
  588. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createOrganizationPhone.ts +10 -0
  589. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/createPhone.ts +41 -0
  590. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteDocument.ts +11 -0
  591. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteEmail.ts +40 -0
  592. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteOne.ts +38 -0
  593. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteOrganization.ts +39 -0
  594. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteOrganizationAddress.ts +11 -0
  595. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteOrganizationEmail.ts +11 -0
  596. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deleteOrganizationPhone.ts +11 -0
  597. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/deletePhone.ts +40 -0
  598. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/getAll.ts +45 -0
  599. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/getAllOrganizations.ts +43 -0
  600. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/getOneById.ts +39 -0
  601. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/getOrganizationById.ts +39 -0
  602. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/login.ts +37 -0
  603. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/logout.ts +38 -0
  604. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/register.ts +39 -0
  605. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/update.ts +39 -0
  606. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateDocument.ts +10 -0
  607. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateEmail.ts +42 -0
  608. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateOrganization.ts +40 -0
  609. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateOrganizationAddress.ts +10 -0
  610. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateOrganizationEmail.ts +10 -0
  611. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateOrganizationPhone.ts +10 -0
  612. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updatePassword.ts +42 -0
  613. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updatePhone.ts +42 -0
  614. package/templates/backend/src/modules/Users/interface/restapi/frameworks/derby-js/handlers/updateUserPassword.ts +40 -0
  615. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/_organizationMutationHandlerFactory.ts +67 -0
  616. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/create.ts +37 -0
  617. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createDocument.ts +41 -0
  618. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createEmail.ts +41 -0
  619. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createOrganization.ts +38 -0
  620. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createOrganizationAddress.ts +10 -0
  621. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createOrganizationEmail.ts +10 -0
  622. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createOrganizationPhone.ts +10 -0
  623. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/createPhone.ts +41 -0
  624. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteDocument.ts +40 -0
  625. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteEmail.ts +40 -0
  626. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteOne.ts +38 -0
  627. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteOrganization.ts +39 -0
  628. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteOrganizationAddress.ts +11 -0
  629. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteOrganizationEmail.ts +11 -0
  630. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deleteOrganizationPhone.ts +11 -0
  631. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/deletePhone.ts +40 -0
  632. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getAll.ts +45 -0
  633. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getAllOrganizations.ts +43 -0
  634. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getOneById.ts +39 -0
  635. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getOrganizationById.ts +39 -0
  636. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getOrganizationsMetrics.ts +41 -0
  637. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/getUsersMetrics.ts +41 -0
  638. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/login.ts +37 -0
  639. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/logout.ts +38 -0
  640. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/register.ts +39 -0
  641. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/update.ts +39 -0
  642. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateDocument.ts +42 -0
  643. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateEmail.ts +42 -0
  644. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateOrganization.ts +40 -0
  645. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateOrganizationAddress.ts +10 -0
  646. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateOrganizationEmail.ts +10 -0
  647. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateOrganizationPhone.ts +10 -0
  648. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updatePassword.ts +42 -0
  649. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updatePhone.ts +42 -0
  650. package/templates/backend/src/modules/Users/interface/restapi/frameworks/express/handlers/updateUserPassword.ts +40 -0
  651. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/_organizationMutationHandlerFactory.ts +68 -0
  652. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/create.ts +38 -0
  653. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createDocument.ts +42 -0
  654. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createEmail.ts +42 -0
  655. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createOrganization.ts +39 -0
  656. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createOrganizationAddress.ts +10 -0
  657. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createOrganizationEmail.ts +10 -0
  658. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createOrganizationPhone.ts +10 -0
  659. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/createPhone.ts +42 -0
  660. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteDocument.ts +41 -0
  661. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteEmail.ts +41 -0
  662. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteOne.ts +39 -0
  663. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteOrganization.ts +40 -0
  664. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteOrganizationAddress.ts +11 -0
  665. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteOrganizationEmail.ts +11 -0
  666. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deleteOrganizationPhone.ts +11 -0
  667. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/deletePhone.ts +41 -0
  668. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getAll.ts +46 -0
  669. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getAllOrganizations.ts +44 -0
  670. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getOneById.ts +40 -0
  671. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getOrganizationById.ts +40 -0
  672. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getOrganizationsMetrics.ts +42 -0
  673. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/getUsersMetrics.ts +42 -0
  674. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/login.ts +38 -0
  675. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/logout.ts +39 -0
  676. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/register.ts +40 -0
  677. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/update.ts +41 -0
  678. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateDocument.ts +43 -0
  679. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateEmail.ts +43 -0
  680. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateOrganization.ts +41 -0
  681. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateOrganizationAddress.ts +10 -0
  682. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateOrganizationEmail.ts +10 -0
  683. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateOrganizationPhone.ts +10 -0
  684. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updatePassword.ts +43 -0
  685. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updatePhone.ts +43 -0
  686. package/templates/backend/src/modules/Users/interface/restapi/frameworks/fastify/handlers/updateUserPassword.ts +41 -0
  687. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/_documentMutationHandlerFactory.ts +70 -0
  688. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/_organizationMutationHandlerFactory.ts +76 -0
  689. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/create.ts +37 -0
  690. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createDocument.ts +10 -0
  691. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createEmail.ts +41 -0
  692. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createOrganization.ts +38 -0
  693. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createOrganizationAddress.ts +10 -0
  694. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createOrganizationEmail.ts +10 -0
  695. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createOrganizationPhone.ts +10 -0
  696. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/createPhone.ts +41 -0
  697. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteDocument.ts +11 -0
  698. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteEmail.ts +40 -0
  699. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteOne.ts +38 -0
  700. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteOrganization.ts +39 -0
  701. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteOrganizationAddress.ts +11 -0
  702. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteOrganizationEmail.ts +11 -0
  703. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deleteOrganizationPhone.ts +11 -0
  704. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/deletePhone.ts +40 -0
  705. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/getAll.ts +45 -0
  706. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/getAllOrganizations.ts +43 -0
  707. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/getOneById.ts +39 -0
  708. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/getOrganizationById.ts +39 -0
  709. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/login.ts +37 -0
  710. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/logout.ts +38 -0
  711. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/register.ts +39 -0
  712. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/update.ts +39 -0
  713. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateDocument.ts +10 -0
  714. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateEmail.ts +42 -0
  715. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateOrganization.ts +40 -0
  716. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateOrganizationAddress.ts +10 -0
  717. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateOrganizationEmail.ts +10 -0
  718. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateOrganizationPhone.ts +10 -0
  719. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updatePassword.ts +42 -0
  720. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updatePhone.ts +42 -0
  721. package/templates/backend/src/modules/Users/interface/restapi/frameworks/feathers/handlers/updateUserPassword.ts +40 -0
  722. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/_documentMutationHandlerFactory.ts +70 -0
  723. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/_organizationMutationHandlerFactory.ts +76 -0
  724. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/create.ts +37 -0
  725. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createDocument.ts +10 -0
  726. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createEmail.ts +41 -0
  727. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createOrganization.ts +38 -0
  728. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createOrganizationAddress.ts +10 -0
  729. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createOrganizationEmail.ts +10 -0
  730. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createOrganizationPhone.ts +10 -0
  731. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/createPhone.ts +41 -0
  732. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteDocument.ts +11 -0
  733. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteEmail.ts +40 -0
  734. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteOne.ts +38 -0
  735. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteOrganization.ts +39 -0
  736. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteOrganizationAddress.ts +11 -0
  737. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteOrganizationEmail.ts +11 -0
  738. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deleteOrganizationPhone.ts +11 -0
  739. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/deletePhone.ts +40 -0
  740. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/getAll.ts +45 -0
  741. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/getAllOrganizations.ts +43 -0
  742. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/getOneById.ts +39 -0
  743. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/getOrganizationById.ts +39 -0
  744. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/login.ts +37 -0
  745. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/logout.ts +38 -0
  746. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/register.ts +39 -0
  747. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/update.ts +39 -0
  748. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateDocument.ts +10 -0
  749. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateEmail.ts +42 -0
  750. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateOrganization.ts +40 -0
  751. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateOrganizationAddress.ts +10 -0
  752. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateOrganizationEmail.ts +10 -0
  753. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateOrganizationPhone.ts +10 -0
  754. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updatePassword.ts +42 -0
  755. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updatePhone.ts +42 -0
  756. package/templates/backend/src/modules/Users/interface/restapi/frameworks/loopback/handlers/updateUserPassword.ts +40 -0
  757. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/_organizationMutationHandlerFactory.ts +68 -0
  758. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/create.ts +38 -0
  759. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createDocument.ts +42 -0
  760. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createEmail.ts +42 -0
  761. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createOrganization.ts +39 -0
  762. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createOrganizationAddress.ts +10 -0
  763. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createOrganizationEmail.ts +10 -0
  764. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createOrganizationPhone.ts +10 -0
  765. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/createPhone.ts +42 -0
  766. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteDocument.ts +41 -0
  767. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteEmail.ts +41 -0
  768. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteOne.ts +39 -0
  769. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteOrganization.ts +39 -0
  770. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteOrganizationAddress.ts +11 -0
  771. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteOrganizationEmail.ts +11 -0
  772. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deleteOrganizationPhone.ts +11 -0
  773. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/deletePhone.ts +41 -0
  774. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getAll.ts +46 -0
  775. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getAllOrganizations.ts +43 -0
  776. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getOneById.ts +40 -0
  777. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getOrganizationById.ts +39 -0
  778. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getOrganizationsMetrics.ts +42 -0
  779. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/getUsersMetrics.ts +42 -0
  780. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/login.ts +38 -0
  781. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/logout.ts +39 -0
  782. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/register.ts +40 -0
  783. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/update.ts +40 -0
  784. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateDocument.ts +43 -0
  785. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateEmail.ts +43 -0
  786. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateOrganization.ts +40 -0
  787. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateOrganizationAddress.ts +10 -0
  788. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateOrganizationEmail.ts +10 -0
  789. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateOrganizationPhone.ts +10 -0
  790. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updatePassword.ts +43 -0
  791. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updatePhone.ts +43 -0
  792. package/templates/backend/src/modules/Users/interface/restapi/frameworks/restify/handlers/updateUserPassword.ts +41 -0
  793. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/_documentMutationHandlerFactory.ts +70 -0
  794. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/_organizationMutationHandlerFactory.ts +76 -0
  795. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/create.ts +37 -0
  796. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createDocument.ts +10 -0
  797. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createEmail.ts +41 -0
  798. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createOrganization.ts +38 -0
  799. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createOrganizationAddress.ts +10 -0
  800. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createOrganizationEmail.ts +10 -0
  801. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createOrganizationPhone.ts +10 -0
  802. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/createPhone.ts +41 -0
  803. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteDocument.ts +11 -0
  804. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteEmail.ts +40 -0
  805. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteOne.ts +38 -0
  806. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteOrganization.ts +39 -0
  807. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteOrganizationAddress.ts +11 -0
  808. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteOrganizationEmail.ts +11 -0
  809. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deleteOrganizationPhone.ts +11 -0
  810. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/deletePhone.ts +40 -0
  811. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/getAll.ts +45 -0
  812. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/getAllOrganizations.ts +43 -0
  813. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/getOneById.ts +39 -0
  814. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/getOrganizationById.ts +39 -0
  815. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/login.ts +37 -0
  816. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/logout.ts +38 -0
  817. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/register.ts +39 -0
  818. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/update.ts +39 -0
  819. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateDocument.ts +10 -0
  820. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateEmail.ts +42 -0
  821. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateOrganization.ts +40 -0
  822. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateOrganizationAddress.ts +10 -0
  823. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateOrganizationEmail.ts +10 -0
  824. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateOrganizationPhone.ts +10 -0
  825. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updatePassword.ts +42 -0
  826. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updatePhone.ts +42 -0
  827. package/templates/backend/src/modules/Users/interface/restapi/frameworks/sails-js/handlers/updateUserPassword.ts +40 -0
  828. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/_documentMutationHandlerFactory.ts +70 -0
  829. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/_organizationMutationHandlerFactory.ts +76 -0
  830. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/create.ts +37 -0
  831. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createDocument.ts +10 -0
  832. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createEmail.ts +41 -0
  833. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createOrganization.ts +38 -0
  834. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createOrganizationAddress.ts +10 -0
  835. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createOrganizationEmail.ts +10 -0
  836. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createOrganizationPhone.ts +10 -0
  837. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/createPhone.ts +41 -0
  838. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteDocument.ts +11 -0
  839. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteEmail.ts +40 -0
  840. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteOne.ts +38 -0
  841. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteOrganization.ts +39 -0
  842. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteOrganizationAddress.ts +11 -0
  843. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteOrganizationEmail.ts +11 -0
  844. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deleteOrganizationPhone.ts +11 -0
  845. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/deletePhone.ts +40 -0
  846. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/getAll.ts +45 -0
  847. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/getAllOrganizations.ts +43 -0
  848. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/getOneById.ts +39 -0
  849. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/getOrganizationById.ts +39 -0
  850. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/login.ts +37 -0
  851. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/logout.ts +38 -0
  852. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/register.ts +39 -0
  853. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/update.ts +39 -0
  854. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateDocument.ts +10 -0
  855. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateEmail.ts +42 -0
  856. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateOrganization.ts +40 -0
  857. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateOrganizationAddress.ts +10 -0
  858. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateOrganizationEmail.ts +10 -0
  859. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateOrganizationPhone.ts +10 -0
  860. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updatePassword.ts +42 -0
  861. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updatePhone.ts +42 -0
  862. package/templates/backend/src/modules/Users/interface/restapi/frameworks/total-js/handlers/updateUserPassword.ts +40 -0
  863. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/_documentMutationHandlerFactory.ts +70 -0
  864. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/_organizationMutationHandlerFactory.ts +76 -0
  865. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/create.ts +37 -0
  866. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createDocument.ts +10 -0
  867. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createEmail.ts +41 -0
  868. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createOrganization.ts +38 -0
  869. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createOrganizationAddress.ts +10 -0
  870. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createOrganizationEmail.ts +10 -0
  871. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createOrganizationPhone.ts +10 -0
  872. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/createPhone.ts +41 -0
  873. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteDocument.ts +11 -0
  874. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteEmail.ts +40 -0
  875. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteOne.ts +38 -0
  876. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteOrganization.ts +39 -0
  877. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteOrganizationAddress.ts +11 -0
  878. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteOrganizationEmail.ts +11 -0
  879. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deleteOrganizationPhone.ts +11 -0
  880. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/deletePhone.ts +40 -0
  881. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/getAll.ts +45 -0
  882. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/getAllOrganizations.ts +43 -0
  883. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/getOneById.ts +39 -0
  884. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/getOrganizationById.ts +39 -0
  885. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/login.ts +37 -0
  886. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/logout.ts +38 -0
  887. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/register.ts +39 -0
  888. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/update.ts +39 -0
  889. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateDocument.ts +10 -0
  890. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateEmail.ts +42 -0
  891. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateOrganization.ts +40 -0
  892. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateOrganizationAddress.ts +10 -0
  893. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateOrganizationEmail.ts +10 -0
  894. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateOrganizationPhone.ts +10 -0
  895. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updatePassword.ts +42 -0
  896. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updatePhone.ts +42 -0
  897. package/templates/backend/src/modules/Users/interface/restapi/frameworks/vercel-functions/handlers/updateUserPassword.ts +40 -0
  898. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/_createWebSocketOperationHandler.ts +34 -0
  899. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/create.ts +5 -0
  900. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createDocument.ts +5 -0
  901. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createEmail.ts +5 -0
  902. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createOrganization.ts +5 -0
  903. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createOrganizationAddress.ts +5 -0
  904. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createOrganizationEmail.ts +5 -0
  905. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createOrganizationPhone.ts +5 -0
  906. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/createPhone.ts +5 -0
  907. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteDocument.ts +5 -0
  908. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteEmail.ts +5 -0
  909. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteOne.ts +5 -0
  910. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteOrganization.ts +5 -0
  911. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteOrganizationAddress.ts +5 -0
  912. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteOrganizationEmail.ts +5 -0
  913. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deleteOrganizationPhone.ts +5 -0
  914. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/deletePhone.ts +5 -0
  915. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/getAll.ts +5 -0
  916. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/getAllOrganizations.ts +5 -0
  917. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/getOneById.ts +5 -0
  918. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/getOrganizationById.ts +5 -0
  919. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/login.ts +5 -0
  920. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/logout.ts +5 -0
  921. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/register.ts +5 -0
  922. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/update.ts +5 -0
  923. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateDocument.ts +5 -0
  924. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateEmail.ts +5 -0
  925. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateOrganization.ts +5 -0
  926. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateOrganizationAddress.ts +5 -0
  927. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateOrganizationEmail.ts +5 -0
  928. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateOrganizationPhone.ts +5 -0
  929. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updatePassword.ts +5 -0
  930. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updatePhone.ts +5 -0
  931. package/templates/backend/src/modules/Users/interface/websocketapi/frameworks/socket-io/handlers/updateUserPassword.ts +5 -0
  932. package/templates/backend/src/modules/Users/service/AuthService.ts +535 -0
  933. package/templates/backend/src/modules/Users/service/OrganizationService.ts +348 -0
  934. package/templates/backend/src/modules/Users/service/UserProviderLocal.ts +45 -0
  935. package/templates/backend/src/modules/Users/service/UserService.ts +696 -0
  936. package/templates/backend/src/modules/Users/service/ports/EAuthSchemaType.ts +5 -0
  937. package/templates/backend/src/modules/Users/service/ports/IAuthSchema.ts +6 -0
  938. package/templates/backend/src/modules/Users/service/ports/IAuthService.ts +35 -0
  939. package/templates/backend/src/modules/Users/service/ports/IAuthorizationHeader.ts +4 -0
  940. package/templates/backend/src/modules/Users/service/ports/IOrganizationRepository.ts +42 -0
  941. package/templates/backend/src/modules/Users/service/ports/ITokenObject.ts +10 -0
  942. package/templates/backend/src/modules/Users/service/ports/IUserProvider.ts +10 -0
  943. package/templates/backend/src/modules/Users/service/ports/IUserRepository.ts +33 -0
  944. package/templates/backend/src/modules/ddd/valueObjects/AddressValueObject.ts +39 -0
  945. package/templates/backend/src/modules/ddd/valueObjects/DocumentValueObject.ts +78 -0
  946. package/templates/backend/src/modules/ddd/valueObjects/EAddressType.ts +6 -0
  947. package/templates/backend/src/modules/ddd/valueObjects/EDocumentType.ts +7 -0
  948. package/templates/backend/src/modules/ddd/valueObjects/EEmailType.ts +5 -0
  949. package/templates/backend/src/modules/ddd/valueObjects/EmailValueObject.ts +36 -0
  950. package/templates/backend/src/modules/ddd/valueObjects/LoginCustomValueObject.ts +4 -0
  951. package/templates/backend/src/modules/ddd/valueObjects/PhoneValueObject.ts +36 -0
  952. package/templates/backend/src/modules/ddd/valueObjects/index.ts +9 -0
  953. package/templates/backend/src/modules/port/BaseDomainEvent.ts +70 -0
  954. package/templates/backend/src/modules/port/BaseModel.ts +119 -0
  955. package/templates/backend/src/modules/port/BaseRepo.ts +33 -0
  956. package/templates/backend/src/modules/port/BaseService.ts +50 -0
  957. package/templates/backend/src/modules/port/IDomainEventMetadata.ts +18 -0
  958. package/templates/backend/src/modules/port/IEventBus.ts +1 -0
  959. package/templates/backend/src/modules/port/IEventMessage.ts +12 -0
  960. package/templates/backend/src/modules/port/IFilter.ts +7 -0
  961. package/templates/backend/src/modules/port/IIntegrationEvent.ts +1 -0
  962. package/templates/backend/src/modules/port/IMessage.ts +5 -0
  963. package/templates/backend/src/modules/port/IMessageMediator.ts +8 -0
  964. package/templates/backend/src/modules/port/IPagingRequest.ts +14 -0
  965. package/templates/backend/src/modules/port/IPagingResponse.ts +6 -0
  966. package/templates/backend/src/modules/port/IRepoConfig.ts +8 -0
  967. package/templates/backend/src/modules/port/ISearch.ts +6 -0
  968. package/templates/backend/src/modules/port/IServiceConfig.ts +12 -0
  969. package/templates/backend/src/modules/port/IServiceResponse.ts +9 -0
  970. package/templates/backend/src/modules/port/ServiceResponse.ts +16 -0
  971. package/templates/backend/src/modules/port/TRepos.ts +1 -0
  972. package/templates/backend/src/modules/port/TServices.ts +1 -0
  973. package/templates/backend/src/modules/port/UUID.ts +33 -0
  974. package/templates/backend/src/modules/port/index.ts +47 -0
  975. package/templates/backend/src/modules/port/operators.ts +4 -0
  976. package/templates/backend/src/modules/port/relations.ts +51 -0
  977. package/templates/backend/src/modules/port/setFilter.ts +18 -0
  978. package/templates/backend/src/modules/port/setFilterAndPaging.ts +28 -0
  979. package/templates/backend/src/modules/port/setListQuery.ts +128 -0
  980. package/templates/backend/src/modules/port/setMetricsQuery.ts +50 -0
  981. package/templates/backend/src/modules/port/setPaging.ts +25 -0
  982. package/templates/backend/src/shared/decorators/guard/Authorize.ts +42 -0
  983. package/templates/backend/src/shared/openapi/OpenApi31DataEntity.ts +733 -0
  984. package/templates/backend/src/shared/utils.ts +77 -0
  985. package/templates/backend/src/shared/validators/index.ts +118 -0
  986. package/templates/frontend/.browserslistrc +3 -0
  987. package/templates/frontend/.editorconfig +14 -0
  988. package/templates/frontend/.gitattributes +2 -0
  989. package/templates/frontend/.prettierrc.js +7 -0
  990. package/templates/frontend/README.md +76 -0
  991. package/templates/frontend/README.pt-BR.md +79 -0
  992. package/templates/frontend/cypress/e2e/auth.cy.ts +46 -0
  993. package/templates/frontend/cypress/e2e/dashboard-a11y.cy.ts +32 -0
  994. package/templates/frontend/cypress/e2e/offline-boot.cy.ts +16 -0
  995. package/templates/frontend/cypress/e2e/offline-pwa.cy.ts +15 -0
  996. package/templates/frontend/cypress/e2e/offline-sync.cy.ts +28 -0
  997. package/templates/frontend/cypress/e2e/offline-writes.cy.ts +20 -0
  998. package/templates/frontend/cypress/e2e/organizations-dashboard.cy.ts +64 -0
  999. package/templates/frontend/cypress/e2e/shell-multitask.cy.ts +21 -0
  1000. package/templates/frontend/cypress/e2e/shell-responsive.cy.ts +36 -0
  1001. package/templates/frontend/cypress/e2e/users-crud.cy.ts +76 -0
  1002. package/templates/frontend/cypress/support/e2e.ts +63 -0
  1003. package/templates/frontend/cypress/tsconfig.json +14 -0
  1004. package/templates/frontend/cypress.config.js +20 -0
  1005. package/templates/frontend/e2e/Dockerfile.backend +44 -0
  1006. package/templates/frontend/e2e/docker-compose.yml +12 -0
  1007. package/templates/frontend/eslint.config.mjs +46 -0
  1008. package/templates/frontend/index.html +43 -0
  1009. package/templates/frontend/package.json +61 -0
  1010. package/templates/frontend/public/android-icon-144x144.png +0 -0
  1011. package/templates/frontend/public/android-icon-192x192.png +0 -0
  1012. package/templates/frontend/public/android-icon-36x36.png +0 -0
  1013. package/templates/frontend/public/android-icon-48x48.png +0 -0
  1014. package/templates/frontend/public/android-icon-512x512.png +0 -0
  1015. package/templates/frontend/public/android-icon-72x72.png +0 -0
  1016. package/templates/frontend/public/android-icon-96x96.png +0 -0
  1017. package/templates/frontend/public/apple-icon-114x114.png +0 -0
  1018. package/templates/frontend/public/apple-icon-120x120.png +0 -0
  1019. package/templates/frontend/public/apple-icon-144x144.png +0 -0
  1020. package/templates/frontend/public/apple-icon-152x152.png +0 -0
  1021. package/templates/frontend/public/apple-icon-180x180.png +0 -0
  1022. package/templates/frontend/public/apple-icon-57x57.png +0 -0
  1023. package/templates/frontend/public/apple-icon-60x60.png +0 -0
  1024. package/templates/frontend/public/apple-icon-72x72.png +0 -0
  1025. package/templates/frontend/public/apple-icon-76x76.png +0 -0
  1026. package/templates/frontend/public/apple-icon-precomposed.png +0 -0
  1027. package/templates/frontend/public/apple-icon.png +0 -0
  1028. package/templates/frontend/public/browserconfig.xml +2 -0
  1029. package/templates/frontend/public/favicon-16x16.png +0 -0
  1030. package/templates/frontend/public/favicon-32x32.png +0 -0
  1031. package/templates/frontend/public/favicon-96x96.png +0 -0
  1032. package/templates/frontend/public/favicon.ico +0 -0
  1033. package/templates/frontend/public/manifest.json +52 -0
  1034. package/templates/frontend/public/ms-icon-144x144.png +0 -0
  1035. package/templates/frontend/public/ms-icon-150x150.png +0 -0
  1036. package/templates/frontend/public/ms-icon-310x310.png +0 -0
  1037. package/templates/frontend/public/ms-icon-70x70.png +0 -0
  1038. package/templates/frontend/public/sw.js +34 -0
  1039. package/templates/frontend/scripts/check-coverage.js +157 -0
  1040. package/templates/frontend/scripts/run-e2e.mjs +75 -0
  1041. package/templates/frontend/scripts/sync-contracts.mjs +31 -0
  1042. package/templates/frontend/src/.gitkeep +1 -0
  1043. package/templates/frontend/src/App.vue +28 -0
  1044. package/templates/frontend/src/components/AppBreadcrumb.vue +69 -0
  1045. package/templates/frontend/src/components/AppFooter.vue +18 -0
  1046. package/templates/frontend/src/components/AppHeader.vue +132 -0
  1047. package/templates/frontend/src/components/AppHeaderDropdownAccnt.vue +86 -0
  1048. package/templates/frontend/src/components/AppSidebar.vue +37 -0
  1049. package/templates/frontend/src/components/AppSidebarNav.vue +91 -0
  1050. package/templates/frontend/src/components/AppTaskbar.vue +152 -0
  1051. package/templates/frontend/src/components/ModuleLayout.vue +115 -0
  1052. package/templates/frontend/src/components/NetworkActivity.vue +64 -0
  1053. package/templates/frontend/src/components/OasFormField.vue +108 -0
  1054. package/templates/frontend/src/components/SearchableEnumInput.vue +117 -0
  1055. package/templates/frontend/src/components/dashboard/AdminUserRatioWidget.vue +66 -0
  1056. package/templates/frontend/src/components/dashboard/ChartCard.vue +97 -0
  1057. package/templates/frontend/src/components/dashboard/DashboardGrid.vue +58 -0
  1058. package/templates/frontend/src/components/dashboard/MetricWidget.vue +80 -0
  1059. package/templates/frontend/src/components/dashboard/genericWidgets.ts +124 -0
  1060. package/templates/frontend/src/components/dashboard/loadMetrics.ts +88 -0
  1061. package/templates/frontend/src/components/dashboard/types.ts +26 -0
  1062. package/templates/frontend/src/components/x-crud/XCrud.vue +152 -0
  1063. package/templates/frontend/src/components/x-crud/XCrudArrayEditor.vue +108 -0
  1064. package/templates/frontend/src/components/x-crud/XCrudChart.vue +48 -0
  1065. package/templates/frontend/src/components/x-crud/XCrudFilters.vue +69 -0
  1066. package/templates/frontend/src/components/x-crud/XCrudForm.vue +261 -0
  1067. package/templates/frontend/src/components/x-crud/XCrudGrid.vue +399 -0
  1068. package/templates/frontend/src/components/x-crud/XCrudPanels.vue +58 -0
  1069. package/templates/frontend/src/components/x-crud/XCrudReferenceInput.vue +75 -0
  1070. package/templates/frontend/src/components/x-crud/XCrudRowDetail.vue +169 -0
  1071. package/templates/frontend/src/components/x-crud/XCrudRowMenu.vue +48 -0
  1072. package/templates/frontend/src/components/x-crud/XCrudToolbar.vue +156 -0
  1073. package/templates/frontend/src/components/x-crud/useXCrud.ts +554 -0
  1074. package/templates/frontend/src/components/x-crud/xCrudFormat.ts +76 -0
  1075. package/templates/frontend/src/components/x-crud/xCrudTypes.ts +72 -0
  1076. package/templates/frontend/src/contracts/apiClient.ts +48 -0
  1077. package/templates/frontend/src/contracts/appOperations.ts +74 -0
  1078. package/templates/frontend/src/contracts/errors.ts +51 -0
  1079. package/templates/frontend/src/contracts/formSchema.ts +202 -0
  1080. package/templates/frontend/src/contracts/labels.ts +41 -0
  1081. package/templates/frontend/src/contracts/listSchema.ts +115 -0
  1082. package/templates/frontend/src/contracts/metricsSchema.ts +84 -0
  1083. package/templates/frontend/src/contracts/oasForm.ts +82 -0
  1084. package/templates/frontend/src/contracts/openapi.json +4467 -0
  1085. package/templates/frontend/src/contracts/rbac.ts +83 -0
  1086. package/templates/frontend/src/contracts/relationLabels.ts +68 -0
  1087. package/templates/frontend/src/contracts/sessionGuard.ts +59 -0
  1088. package/templates/frontend/src/contracts/sharedContractsBrowserShim.ts +14 -0
  1089. package/templates/frontend/src/contracts/usePermissions.ts +25 -0
  1090. package/templates/frontend/src/contracts/validation.ts +195 -0
  1091. package/templates/frontend/src/data/canaSchema.ts +146 -0
  1092. package/templates/frontend/src/data/db.ts +114 -0
  1093. package/templates/frontend/src/data/localRepository.ts +125 -0
  1094. package/templates/frontend/src/data/outbox.ts +258 -0
  1095. package/templates/frontend/src/data/pwa.ts +26 -0
  1096. package/templates/frontend/src/data/sync.ts +280 -0
  1097. package/templates/frontend/src/env.d.ts +8 -0
  1098. package/templates/frontend/src/features/auth/LoginView.vue +98 -0
  1099. package/templates/frontend/src/features/auth/RegisterView.vue +102 -0
  1100. package/templates/frontend/src/features/dashboard/DashboardView.vue +80 -0
  1101. package/templates/frontend/src/features/dashboard/NotFoundView.vue +15 -0
  1102. package/templates/frontend/src/features/dashboard/usersDomainWidgets.ts +59 -0
  1103. package/templates/frontend/src/features/organizations/OrganizationsView.vue +20 -0
  1104. package/templates/frontend/src/features/organizations/organizationsCrudConfig.ts +27 -0
  1105. package/templates/frontend/src/features/profile/ProfileDocuments.vue +157 -0
  1106. package/templates/frontend/src/features/profile/ProfileEmails.vue +142 -0
  1107. package/templates/frontend/src/features/profile/ProfilePasswordForm.vue +66 -0
  1108. package/templates/frontend/src/features/profile/ProfilePhones.vue +165 -0
  1109. package/templates/frontend/src/features/profile/ProfileScalarsForm.vue +62 -0
  1110. package/templates/frontend/src/features/profile/ProfileView.vue +63 -0
  1111. package/templates/frontend/src/features/profile/useSectionNotify.ts +37 -0
  1112. package/templates/frontend/src/features/users/UsersView.vue +40 -0
  1113. package/templates/frontend/src/features/users/usersCrudConfig.ts +55 -0
  1114. package/templates/frontend/src/i18n/index.ts +87 -0
  1115. package/templates/frontend/src/i18n/messages.ts +369 -0
  1116. package/templates/frontend/src/layouts/DefaultLayout.vue +82 -0
  1117. package/templates/frontend/src/main.ts +157 -0
  1118. package/templates/frontend/src/modules/index.ts +7 -0
  1119. package/templates/frontend/src/modules/manifest.ts +115 -0
  1120. package/templates/frontend/src/modules/nav.ts +13 -0
  1121. package/templates/frontend/src/modules/navTypes.ts +19 -0
  1122. package/templates/frontend/src/modules/users.ts +28 -0
  1123. package/templates/frontend/src/router/guards.ts +68 -0
  1124. package/templates/frontend/src/router/index.ts +91 -0
  1125. package/templates/frontend/src/shell/LocaleWidget.vue +27 -0
  1126. package/templates/frontend/src/shell/NotificationCenter.vue +65 -0
  1127. package/templates/frontend/src/shell/OnlineOfflineWidget.vue +36 -0
  1128. package/templates/frontend/src/shell/ReservedToolbarSlot.vue +7 -0
  1129. package/templates/frontend/src/shell/breakpoints.ts +50 -0
  1130. package/templates/frontend/src/shell/registerShellWidgets.ts +39 -0
  1131. package/templates/frontend/src/shell/toolbarWidgets.ts +57 -0
  1132. package/templates/frontend/src/stores/auth.ts +157 -0
  1133. package/templates/frontend/src/stores/entityStore.ts +109 -0
  1134. package/templates/frontend/src/stores/network.ts +61 -0
  1135. package/templates/frontend/src/stores/notifications.ts +75 -0
  1136. package/templates/frontend/src/stores/profile.ts +260 -0
  1137. package/templates/frontend/src/stores/sidebar.ts +19 -0
  1138. package/templates/frontend/src/stores/tasks.ts +114 -0
  1139. package/templates/frontend/src/stores/theme.ts +14 -0
  1140. package/templates/frontend/src/styles/breakpoints.scss +6 -0
  1141. package/templates/frontend/src/styles/style.scss +85 -0
  1142. package/templates/frontend/src/views/BootErrorView.vue +18 -0
  1143. package/templates/frontend/src/views/SyncProgressView.vue +55 -0
  1144. package/templates/frontend/tsconfig.json +59 -0
  1145. package/templates/frontend/vite.config.mjs +78 -0
  1146. package/templates.manifest.json +4199 -0
@@ -0,0 +1,733 @@
1
+ export type OpenApiDataType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
2
+
3
+ export interface IOpenApiFieldDefinitionLike {
4
+ name: string;
5
+ type: OpenApiDataType | string;
6
+ required?: boolean;
7
+ format?: string;
8
+ validations?: string[];
9
+ }
10
+
11
+ export interface IOpenApiDataEntityLike {
12
+ name: string;
13
+ fields: IOpenApiFieldDefinitionLike[];
14
+ }
15
+
16
+ export const OPEN_API_31_ALLOWED_TYPES: OpenApiDataType[] = [
17
+ 'string',
18
+ 'number',
19
+ 'integer',
20
+ 'boolean',
21
+ 'array',
22
+ 'object'
23
+ ];
24
+
25
+ const COMMON_FORMATS = ['none'];
26
+
27
+ export const OPEN_API_31_FORMATS_BY_TYPE: Record<OpenApiDataType, string[]> = {
28
+ string: [
29
+ ...COMMON_FORMATS,
30
+ 'date-time',
31
+ 'date',
32
+ 'time',
33
+ 'duration',
34
+ 'email',
35
+ 'hostname',
36
+ 'idn-email',
37
+ 'idn-hostname',
38
+ 'ipv4',
39
+ 'ipv6',
40
+ 'uri',
41
+ 'uri-reference',
42
+ 'iri',
43
+ 'iri-reference',
44
+ 'uri-template',
45
+ 'json-pointer',
46
+ 'relative-json-pointer',
47
+ 'uuid',
48
+ 'regex',
49
+ 'byte',
50
+ 'binary',
51
+ 'password'
52
+ ],
53
+ number: [...COMMON_FORMATS, 'float', 'double'],
54
+ integer: [...COMMON_FORMATS, 'int32', 'int64'],
55
+ boolean: [...COMMON_FORMATS],
56
+ array: [...COMMON_FORMATS],
57
+ object: [...COMMON_FORMATS]
58
+ };
59
+
60
+ export const OPEN_API_31_VALIDATIONS_BY_TYPE: Record<OpenApiDataType, string[]> = {
61
+ string: ['minLength', 'maxLength', 'pattern', 'enum'],
62
+ number: ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum', 'multipleOf', 'enum'],
63
+ integer: ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum', 'multipleOf', 'enum'],
64
+ boolean: ['enum'],
65
+ array: ['minItems', 'maxItems', 'uniqueItems'],
66
+ object: ['minProperties', 'maxProperties', 'required']
67
+ };
68
+
69
+ const splitValidation = (entry: string): { key: string; value: string } => {
70
+ const separator = entry.includes('=') ? '=' : ':';
71
+ const [rawKey, ...rest] = entry.split(separator);
72
+ return {
73
+ key: rawKey.trim(),
74
+ value: rest.join(separator).trim()
75
+ };
76
+ };
77
+
78
+ const parseValidationValue = (rawValue: string): unknown => {
79
+ const value = rawValue.trim();
80
+ if (value === 'true') return true;
81
+ if (value === 'false') return false;
82
+ if (value === '') return '';
83
+
84
+ const numeric = Number(value);
85
+ if (!Number.isNaN(numeric) && Number.isFinite(numeric)) {
86
+ return numeric;
87
+ }
88
+
89
+ if ((value.startsWith('[') && value.endsWith(']')) || (value.startsWith('{') && value.endsWith('}'))) {
90
+ try {
91
+ return JSON.parse(value);
92
+ } catch {
93
+ return value;
94
+ }
95
+ }
96
+
97
+ if (value.includes('|')) {
98
+ return value.split('|').map((entry) => entry.trim());
99
+ }
100
+
101
+ if (value.includes(',')) {
102
+ return value.split(',').map((entry) => entry.trim());
103
+ }
104
+
105
+ return value;
106
+ };
107
+
108
+ const normalizeEnumValues = (value: unknown): unknown[] => {
109
+ if (Array.isArray(value)) return value;
110
+ return [value];
111
+ };
112
+
113
+ const resolveRef = (spec: Record<string, any>, ref: string): Record<string, any> | undefined => {
114
+ if (!ref.startsWith('#/')) return undefined;
115
+ const path = ref.slice(2).split('/');
116
+ let current: any = spec;
117
+ for (const entry of path) {
118
+ if (!current || typeof current !== 'object') {
119
+ return undefined;
120
+ }
121
+ current = current[entry];
122
+ }
123
+ return current && typeof current === 'object' ? current : undefined;
124
+ };
125
+
126
+ const resolveSchemaNode = (
127
+ spec: Record<string, any>,
128
+ schema: Record<string, any>
129
+ ): Record<string, any> => {
130
+ if (schema && schema.$ref && typeof schema.$ref === 'string') {
131
+ const resolved = resolveRef(spec, schema.$ref);
132
+ if (!resolved) {
133
+ throw new Error(`OpenAPI schema reference "${schema.$ref}" could not be resolved.`);
134
+ }
135
+ return resolveSchemaNode(spec, resolved);
136
+ }
137
+ return schema || {};
138
+ };
139
+
140
+ const isDateString = (value: string): boolean => /^\d{4}-\d{2}-\d{2}$/.test(value);
141
+ const isDateTimeString = (value: string): boolean => !Number.isNaN(Date.parse(value));
142
+ const isUuidString = (value: string): boolean => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
143
+ const isEmailString = (value: string): boolean => /^[^\s@]+@[^\s@.]+\.[^\s@]+$/.test(value);
144
+ const isUriString = (value: string): boolean => {
145
+ try {
146
+ // eslint-disable-next-line no-new
147
+ new URL(value);
148
+ return true;
149
+ } catch {
150
+ return false;
151
+ }
152
+ };
153
+ const isIpv4String = (value: string): boolean => /^(25[0-5]|2[0-4]\d|[01]?\d?\d)(\.(25[0-5]|2[0-4]\d|[01]?\d?\d)){3}$/.test(value);
154
+ const isIpv6String = (value: string): boolean => /^[0-9a-f:]+$/i.test(value) && value.includes(':');
155
+
156
+ const throwValidationError = (path: string, message: string): never => {
157
+ const location = path || 'value';
158
+ throw new Error(`OpenAPI validation failed at "${location}": ${message}`);
159
+ };
160
+
161
+ /**
162
+ * The longest pattern a `format: regex` value may carry — keeps validation
163
+ * work bounded even though the syntax scan below is linear.
164
+ */
165
+ const MAX_REGEX_PATTERN_LENGTH = 500;
166
+
167
+ const isDecimalDigitChar = (ch: string): boolean => ch >= '0' && ch <= '9';
168
+ const isHexDigitChar = (ch: string): boolean => (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F');
169
+ const isAsciiLetter = (ch: string): boolean => (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
170
+
171
+ const REGEXP_CLASS_SET_ESCAPES = 'dDsSwW';
172
+ const REGEXP_CONTROL_ESCAPE_CODES: Record<string, number> = {
173
+ f: 12, n: 10, r: 13, t: 9, v: 11
174
+ };
175
+
176
+ /**
177
+ * Length of the escape sequence starting at `start` (`value[start]` is `\`),
178
+ * or 0 when the backslash dangles at the end. Annex B fallbacks are honored:
179
+ * `\x`/`\u`/`\k` without their full payload degrade to identity escapes.
180
+ */
181
+ const regexEscapeLength = (value: string, start: number): number => {
182
+ const ch = value.charAt(start + 1);
183
+ if (ch === '') return 0;
184
+ if (ch === 'x') {
185
+ const hasHexPair = isHexDigitChar(value.charAt(start + 2))
186
+ && isHexDigitChar(value.charAt(start + 3));
187
+ return hasHexPair ? 4 : 2;
188
+ }
189
+ if (ch === 'u') {
190
+ if (value.charAt(start + 2) === '{') {
191
+ let i = start + 3;
192
+ while (isHexDigitChar(value.charAt(i))) i += 1;
193
+ if (i > start + 3 && value.charAt(i) === '}') return i + 1 - start;
194
+ return 2;
195
+ }
196
+ let digits = 0;
197
+ while (digits < 4 && isHexDigitChar(value.charAt(start + 2 + digits))) digits += 1;
198
+ return digits === 4 ? 6 : 2;
199
+ }
200
+ if (ch === 'k' && value.charAt(start + 2) === '<') {
201
+ const close = value.indexOf('>', start + 3);
202
+ if (close > start + 3) return close + 1 - start;
203
+ return 2;
204
+ }
205
+ if (ch === 'c' && isAsciiLetter(value.charAt(start + 2))) return 3;
206
+ if (ch >= '1' && ch <= '9') {
207
+ let i = start + 1;
208
+ while (isDecimalDigitChar(value.charAt(i))) i += 1;
209
+ return i - start;
210
+ }
211
+ return 2;
212
+ };
213
+
214
+ interface RegexClassAtom {
215
+ end: number;
216
+ /** The character code for single-char atoms; null for set-type escapes (`\d`, `\w`, …). */
217
+ code: number | null;
218
+ }
219
+
220
+ /** Read the class atom starting at `start`; null on a dangling escape. */
221
+ const readRegexClassAtom = (value: string, start: number): RegexClassAtom | null => {
222
+ const ch = value.charAt(start);
223
+ if (ch !== '\\') {
224
+ // `start` is always in bounds — every caller checks the index first.
225
+ return { end: start + 1, code: value.codePointAt(start) as number };
226
+ }
227
+ const len = regexEscapeLength(value, start);
228
+ if (len === 0) return null;
229
+ if (REGEXP_CLASS_SET_ESCAPES.includes(value.charAt(start + 1))) {
230
+ return { end: start + len, code: null };
231
+ }
232
+ const esc = value.charAt(start + 1);
233
+ if (esc === 'b') return { end: start + len, code: 8 };
234
+ if (esc in REGEXP_CONTROL_ESCAPE_CODES) {
235
+ return { end: start + len, code: REGEXP_CONTROL_ESCAPE_CODES[esc]! };
236
+ }
237
+ if (esc === '0') return { end: start + len, code: 0 };
238
+ if (esc === 'c' && len === 3) {
239
+ return { end: start + len, code: value.charAt(start + 2).toUpperCase().charCodeAt(0) % 32 };
240
+ }
241
+ if (esc === 'x' && len === 4) {
242
+ return { end: start + len, code: Number.parseInt(value.slice(start + 2, start + 4), 16) };
243
+ }
244
+ if (esc === 'u' && len > 2) {
245
+ const hex = value.charAt(start + 2) === '{'
246
+ ? value.slice(start + 3, start + len - 1)
247
+ : value.slice(start + 2, start + len);
248
+ return { end: start + len, code: Number.parseInt(hex, 16) };
249
+ }
250
+ // Identity escapes (`\.`, `\8`, …): the escaped character itself. The escape
251
+ // has a payload by construction (`regexEscapeLength` returned non-zero).
252
+ return { end: start + len, code: value.codePointAt(start + 1) as number };
253
+ };
254
+
255
+ /** Index just past the class starting at `start` (`value[start]` is `[`), or -1 when malformed. */
256
+ const regexClassEnd = (value: string, start: number): number => {
257
+ let i = start + 1;
258
+ if (value.charAt(i) === '^') i += 1;
259
+ let previous: RegexClassAtom | null = null;
260
+ while (i < value.length) {
261
+ const ch = value.charAt(i);
262
+ if (ch === ']') return i + 1;
263
+ if (ch === '-' && previous !== null && value.charAt(i + 1) !== ']' && i + 1 < value.length) {
264
+ const upper = readRegexClassAtom(value, i + 1);
265
+ if (upper === null) return -1;
266
+ // Only two concrete characters can be out of order; Annex B tolerates
267
+ // set-type escapes (`[a-\d]`) in range positions, and so do we.
268
+ if (previous.code !== null && upper.code !== null && upper.code < previous.code) return -1;
269
+ previous = null; // a range does not start another range (`[a-b-c]`: the dash is a literal)
270
+ i = upper.end;
271
+ } else {
272
+ const atom = readRegexClassAtom(value, i);
273
+ if (atom === null) return -1;
274
+ previous = atom;
275
+ i = atom.end;
276
+ }
277
+ }
278
+ return -1;
279
+ };
280
+
281
+ /**
282
+ * Length of the `{n}` / `{n,}` / `{n,m}` quantifier starting at `start`, 0
283
+ * when the brace is a literal, or -1 when the numbers are out of order.
284
+ */
285
+ const regexBraceQuantifierLength = (value: string, start: number): number => {
286
+ let i = start + 1;
287
+ let lowerDigits = 0;
288
+ while (isDecimalDigitChar(value.charAt(i))) {
289
+ i += 1;
290
+ lowerDigits += 1;
291
+ }
292
+ if (lowerDigits === 0) return 0;
293
+ const lower = Number(value.slice(start + 1, i));
294
+ if (value.charAt(i) === '}') return i + 1 - start;
295
+ if (value.charAt(i) !== ',') return 0;
296
+ i += 1;
297
+ let upperDigits = 0;
298
+ while (isDecimalDigitChar(value.charAt(i))) {
299
+ i += 1;
300
+ upperDigits += 1;
301
+ }
302
+ if (value.charAt(i) !== '}') return 0;
303
+ if (upperDigits > 0 && Number(value.slice(i - upperDigits, i)) < lower) return -1;
304
+ return i + 1 - start;
305
+ };
306
+
307
+ /**
308
+ * Linear-time syntax check for ECMA-262 regular expression patterns.
309
+ *
310
+ * `format: regex` asks "is this string a valid regex?". Compiling the value
311
+ * with `new RegExp` answered it precisely, but the value is request data —
312
+ * feeding remote input to the regex compiler is a regex-injection surface —
313
+ * so the check is reimplemented as a scanner that never builds or runs an
314
+ * expression. The scanner was calibrated against the engine on a 127-case
315
+ * battery (groups, classes, ranges, escapes, quantifiers, Annex B corners)
316
+ * with zero divergences; a false acceptance would cost nothing here anyway —
317
+ * a format assertion is advisory — while a false rejection would block a
318
+ * legitimate payload.
319
+ */
320
+ const isRegexPatternSyntaxValid = (value: string): boolean => {
321
+ let depth = 0;
322
+ let i = 0;
323
+ let previousWasAtom = false;
324
+ while (i < value.length) {
325
+ const ch = value.charAt(i);
326
+ if (ch === '\\') {
327
+ const len = regexEscapeLength(value, i);
328
+ if (len === 0) return false;
329
+ i += len;
330
+ // Anchors (`\b`, `\B`) are not atoms: a quantifier cannot follow them.
331
+ previousWasAtom = value.charAt(i - len + 1) !== 'b' && value.charAt(i - len + 1) !== 'B';
332
+ } else if (ch === '[') {
333
+ const end = regexClassEnd(value, i);
334
+ if (end === -1) return false;
335
+ i = end;
336
+ previousWasAtom = true;
337
+ } else if (ch === '(') {
338
+ if (value.charAt(i + 1) === '?') {
339
+ const marker = value.charAt(i + 2);
340
+ if (marker === ':' || marker === '=' || marker === '!') {
341
+ i += 3;
342
+ } else if (marker === '<') {
343
+ const after = value.charAt(i + 3);
344
+ if (after === '=' || after === '!') {
345
+ i += 4;
346
+ } else {
347
+ const close = value.indexOf('>', i + 3);
348
+ if (close <= i + 3) return false;
349
+ i = close + 1;
350
+ }
351
+ } else {
352
+ return false;
353
+ }
354
+ } else {
355
+ i += 1;
356
+ }
357
+ depth += 1;
358
+ previousWasAtom = false;
359
+ } else if (ch === ')') {
360
+ if (depth === 0) return false;
361
+ depth -= 1;
362
+ i += 1;
363
+ previousWasAtom = true;
364
+ } else if (ch === '*' || ch === '+' || ch === '?') {
365
+ if (!previousWasAtom) return false;
366
+ i += 1;
367
+ if (value.charAt(i) === '?') i += 1;
368
+ previousWasAtom = false;
369
+ } else if (ch === '{') {
370
+ const len = regexBraceQuantifierLength(value, i);
371
+ if (len !== 0) {
372
+ if (len === -1 || !previousWasAtom) return false;
373
+ i += len;
374
+ if (value.charAt(i) === '?') i += 1;
375
+ previousWasAtom = false;
376
+ } else {
377
+ i += 1;
378
+ previousWasAtom = true;
379
+ }
380
+ } else if (ch === '|' || ch === '^' || ch === '$') {
381
+ previousWasAtom = false;
382
+ i += 1;
383
+ } else {
384
+ i += 1;
385
+ previousWasAtom = true;
386
+ }
387
+ }
388
+ return depth === 0;
389
+ };
390
+
391
+ const validateFormat = (value: string, format: string, path: string): void => {
392
+ if (!format || format === 'none' || value === '') return;
393
+ if (format === 'date' && !isDateString(value)) {
394
+ throwValidationError(path, `expected date format, got "${value}"`);
395
+ }
396
+ if (format === 'date-time' && !isDateTimeString(value)) {
397
+ throwValidationError(path, `expected date-time format, got "${value}"`);
398
+ }
399
+ if (format === 'email' && !isEmailString(value)) {
400
+ throwValidationError(path, `expected email format, got "${value}"`);
401
+ }
402
+ if (format === 'uuid' && !isUuidString(value)) {
403
+ throwValidationError(path, `expected uuid format, got "${value}"`);
404
+ }
405
+ if ((format === 'uri' || format === 'uri-reference') && !isUriString(value)) {
406
+ throwValidationError(path, `expected uri format, got "${value}"`);
407
+ }
408
+ if (format === 'ipv4' && !isIpv4String(value)) {
409
+ throwValidationError(path, `expected ipv4 format, got "${value}"`);
410
+ }
411
+ if (format === 'ipv6' && !isIpv6String(value)) {
412
+ throwValidationError(path, `expected ipv6 format, got "${value}"`);
413
+ }
414
+ if (format === 'regex') {
415
+ if (value.length > MAX_REGEX_PATTERN_LENGTH) {
416
+ throwValidationError(path, `expected regex pattern of at most ${MAX_REGEX_PATTERN_LENGTH} characters, got ${value.length}`);
417
+ }
418
+ if (!isRegexPatternSyntaxValid(value)) {
419
+ throwValidationError(path, `expected regex pattern, got "${value}"`);
420
+ }
421
+ }
422
+ };
423
+
424
+ const validatePrimitiveType = (
425
+ value: unknown,
426
+ expectedType: OpenApiDataType,
427
+ path: string
428
+ ): void => {
429
+ if (expectedType === 'string' && typeof value !== 'string') {
430
+ throwValidationError(path, `expected string, got ${typeof value}`);
431
+ }
432
+ if (expectedType === 'number' && (typeof value !== 'number' || Number.isNaN(value))) {
433
+ throwValidationError(path, `expected number, got ${typeof value}`);
434
+ }
435
+ if (expectedType === 'integer' && !Number.isInteger(value)) {
436
+ throwValidationError(path, `expected integer, got ${String(value)}`);
437
+ }
438
+ if (expectedType === 'boolean' && typeof value !== 'boolean') {
439
+ throwValidationError(path, `expected boolean, got ${typeof value}`);
440
+ }
441
+ if (expectedType === 'array' && !Array.isArray(value)) {
442
+ throwValidationError(path, `expected array, got ${typeof value}`);
443
+ }
444
+ if (
445
+ expectedType === 'object'
446
+ && (typeof value !== 'object' || value === null || Array.isArray(value))
447
+ ) {
448
+ const receivedType = Array.isArray(value) ? 'array' : typeof value;
449
+ throwValidationError(path, `expected object, got ${receivedType}`);
450
+ }
451
+ };
452
+
453
+ const validateStringConstraints = (
454
+ value: string,
455
+ schema: Record<string, any>,
456
+ path: string
457
+ ): void => {
458
+ if (typeof schema.minLength === 'number' && value.length < schema.minLength) {
459
+ throwValidationError(path, `minLength is ${schema.minLength}, got ${value.length}`);
460
+ }
461
+ if (typeof schema.maxLength === 'number' && value.length > schema.maxLength) {
462
+ throwValidationError(path, `maxLength is ${schema.maxLength}, got ${value.length}`);
463
+ }
464
+ if (typeof schema.pattern === 'string') {
465
+ const regex = new RegExp(schema.pattern);
466
+ if (!regex.test(value)) {
467
+ throwValidationError(path, `pattern "${schema.pattern}" does not match`);
468
+ }
469
+ }
470
+ };
471
+
472
+ const validateNumericConstraints = (
473
+ value: number,
474
+ schema: Record<string, any>,
475
+ path: string
476
+ ): void => {
477
+ if (typeof schema.minimum === 'number' && value < schema.minimum) {
478
+ throwValidationError(path, `minimum is ${schema.minimum}, got ${value}`);
479
+ }
480
+ if (typeof schema.maximum === 'number' && value > schema.maximum) {
481
+ throwValidationError(path, `maximum is ${schema.maximum}, got ${value}`);
482
+ }
483
+ if (typeof schema.exclusiveMinimum === 'number' && value <= schema.exclusiveMinimum) {
484
+ throwValidationError(path, `exclusiveMinimum is ${schema.exclusiveMinimum}, got ${value}`);
485
+ }
486
+ if (typeof schema.exclusiveMaximum === 'number' && value >= schema.exclusiveMaximum) {
487
+ throwValidationError(path, `exclusiveMaximum is ${schema.exclusiveMaximum}, got ${value}`);
488
+ }
489
+ if (typeof schema.multipleOf === 'number' && schema.multipleOf > 0) {
490
+ const quotient = value / schema.multipleOf;
491
+ if (!Number.isInteger(quotient)) {
492
+ throwValidationError(path, `multipleOf is ${schema.multipleOf}, got ${value}`);
493
+ }
494
+ }
495
+ };
496
+
497
+ export const validateValueAgainstOpenApiSchema = (
498
+ value: unknown,
499
+ schemaInput: Record<string, any>,
500
+ spec: Record<string, any>,
501
+ path: string = 'payload'
502
+ ): void => {
503
+ const schema = resolveSchemaNode(spec, schemaInput);
504
+ const hasNullableFlag = schema.nullable === true;
505
+ let typeList: string[] = [];
506
+ if (Array.isArray(schema.type)) {
507
+ typeList = schema.type;
508
+ } else if (schema.type) {
509
+ typeList = [schema.type];
510
+ }
511
+
512
+ const hasObjectKeywords = !!schema.properties || !!schema.required;
513
+ if (typeList.length === 0 && hasObjectKeywords) {
514
+ typeList = ['object'];
515
+ }
516
+ const allowsNull = hasNullableFlag || typeList.includes('null');
517
+
518
+ if (value === null) {
519
+ if (allowsNull) return;
520
+ throwValidationError(path, 'null is not allowed');
521
+ }
522
+
523
+ if (schema.oneOf && Array.isArray(schema.oneOf)) {
524
+ const matches = schema.oneOf.some((entry: Record<string, any>) => {
525
+ try {
526
+ validateValueAgainstOpenApiSchema(value, entry, spec, path);
527
+ return true;
528
+ } catch {
529
+ return false;
530
+ }
531
+ });
532
+ if (!matches) throwValidationError(path, 'does not match any schema in oneOf');
533
+ return;
534
+ }
535
+
536
+ if (schema.anyOf && Array.isArray(schema.anyOf)) {
537
+ const matches = schema.anyOf.some((entry: Record<string, any>) => {
538
+ try {
539
+ validateValueAgainstOpenApiSchema(value, entry, spec, path);
540
+ return true;
541
+ } catch {
542
+ return false;
543
+ }
544
+ });
545
+ if (!matches) throwValidationError(path, 'does not match any schema in anyOf');
546
+ return;
547
+ }
548
+
549
+ if (schema.allOf && Array.isArray(schema.allOf)) {
550
+ for (const entry of schema.allOf) {
551
+ validateValueAgainstOpenApiSchema(value, entry, spec, path);
552
+ }
553
+ return;
554
+ }
555
+
556
+ if (schema.enum && Array.isArray(schema.enum) && !schema.enum.includes(value)) {
557
+ throwValidationError(path, `value must be one of: ${schema.enum.join(', ')}`);
558
+ }
559
+
560
+ if (typeList.length > 0) {
561
+ const nonNullTypes = typeList.filter((entry) => entry !== 'null');
562
+ const match = nonNullTypes.some((entry) => {
563
+ try {
564
+ validatePrimitiveType(value, entry as OpenApiDataType, path);
565
+ return true;
566
+ } catch {
567
+ return false;
568
+ }
569
+ });
570
+ if (!match && nonNullTypes.length > 0) {
571
+ throwValidationError(path, `expected one of [${nonNullTypes.join(', ')}]`);
572
+ }
573
+ }
574
+
575
+ const firstNonNullType = typeList.find((entry) => entry !== 'null');
576
+ const primaryType = (firstNonNullType || schema.type) as OpenApiDataType | undefined;
577
+
578
+ if (primaryType === 'string' && typeof value === 'string') {
579
+ validateStringConstraints(value, schema, path);
580
+ validateFormat(value, schema.format || 'none', path);
581
+ }
582
+
583
+ if ((primaryType === 'number' || primaryType === 'integer') && typeof value === 'number') {
584
+ validateNumericConstraints(value, schema, path);
585
+ }
586
+
587
+ if (primaryType === 'array' && Array.isArray(value)) {
588
+ if (typeof schema.minItems === 'number' && value.length < schema.minItems) {
589
+ throwValidationError(path, `minItems is ${schema.minItems}, got ${value.length}`);
590
+ }
591
+ if (typeof schema.maxItems === 'number' && value.length > schema.maxItems) {
592
+ throwValidationError(path, `maxItems is ${schema.maxItems}, got ${value.length}`);
593
+ }
594
+ if (schema.uniqueItems === true) {
595
+ const normalized = value.map((entry) => JSON.stringify(entry));
596
+ if (new Set(normalized).size !== normalized.length) {
597
+ throwValidationError(path, 'uniqueItems requires all items to be unique');
598
+ }
599
+ }
600
+ if (schema.items) {
601
+ value.forEach((entry, index) => {
602
+ validateValueAgainstOpenApiSchema(entry, schema.items, spec, `${path}[${index}]`);
603
+ });
604
+ }
605
+ }
606
+
607
+ if (primaryType === 'object' && typeof value === 'object' && value !== null && !Array.isArray(value)) {
608
+ const objectValue = value as Record<string, any>;
609
+ const properties = schema.properties || {};
610
+ const required = schema.required || [];
611
+ const { additionalProperties } = schema;
612
+
613
+ if (typeof schema.minProperties === 'number' && Object.keys(objectValue).length < schema.minProperties) {
614
+ throwValidationError(path, `minProperties is ${schema.minProperties}`);
615
+ }
616
+ if (typeof schema.maxProperties === 'number' && Object.keys(objectValue).length > schema.maxProperties) {
617
+ throwValidationError(path, `maxProperties is ${schema.maxProperties}`);
618
+ }
619
+
620
+ required.forEach((key: string) => {
621
+ const isMissing = !Object.prototype.hasOwnProperty.call(objectValue, key);
622
+ const isNullish = objectValue[key] === undefined || objectValue[key] === null;
623
+ if (isMissing || isNullish) {
624
+ throwValidationError(`${path}.${key}`, 'is required');
625
+ }
626
+ });
627
+
628
+ for (const [key, raw] of Object.entries(objectValue)) {
629
+ const nextPath = `${path}.${key}`;
630
+ if (Object.prototype.hasOwnProperty.call(properties, key)) {
631
+ validateValueAgainstOpenApiSchema(raw, properties[key], spec, nextPath);
632
+ } else if (additionalProperties === false) {
633
+ throwValidationError(nextPath, 'is not allowed by schema');
634
+ } else if (additionalProperties && typeof additionalProperties === 'object') {
635
+ validateValueAgainstOpenApiSchema(raw, additionalProperties, spec, nextPath);
636
+ }
637
+ }
638
+ }
639
+ };
640
+
641
+ export const isOpenApiDataType = (value: string): value is OpenApiDataType => {
642
+ return OPEN_API_31_ALLOWED_TYPES.includes(value as OpenApiDataType);
643
+ };
644
+
645
+ export const throwIfFieldDefinitionIsNotOpenApi31Compliant = (
646
+ field: IOpenApiFieldDefinitionLike
647
+ ): void => {
648
+ if (!field.name || field.name.trim() === '') {
649
+ throw new Error('OpenAPI 3.1 field name is required.');
650
+ }
651
+
652
+ if (!isOpenApiDataType(field.type)) {
653
+ throw new Error(`OpenAPI 3.1 invalid field type "${field.type}" for "${field.name}".`);
654
+ }
655
+
656
+ if (field.required !== undefined && typeof field.required !== 'boolean') {
657
+ throw new Error(`OpenAPI 3.1 invalid required flag for "${field.name}".`);
658
+ }
659
+
660
+ const allowedFormats = OPEN_API_31_FORMATS_BY_TYPE[field.type];
661
+ const normalizedFormat = field.format && field.format.trim() !== '' ? field.format.trim() : 'none';
662
+ if (!allowedFormats.includes(normalizedFormat)) {
663
+ throw new Error(`OpenAPI 3.1 invalid format "${field.format}" for type "${field.type}".`);
664
+ }
665
+
666
+ for (const entry of field.validations || []) {
667
+ const { key } = splitValidation(entry);
668
+ if (!OPEN_API_31_VALIDATIONS_BY_TYPE[field.type].includes(key)) {
669
+ throw new Error(`OpenAPI 3.1 invalid validation "${key}" for type "${field.type}".`);
670
+ }
671
+ }
672
+ };
673
+
674
+ export const throwIfDataEntityIsNotOpenApi31Compliant = (entity: IOpenApiDataEntityLike): void => {
675
+ if (!entity.name || entity.name.trim() === '') {
676
+ throw new Error('OpenAPI 3.1 entity name is required.');
677
+ }
678
+
679
+ for (const field of entity.fields || []) {
680
+ throwIfFieldDefinitionIsNotOpenApi31Compliant(field);
681
+ }
682
+ };
683
+
684
+ export const mapDataEntityToOpenApiSchema = (
685
+ entity: IOpenApiDataEntityLike
686
+ ): Record<string, any> => {
687
+ throwIfDataEntityIsNotOpenApi31Compliant(entity);
688
+
689
+ const required: string[] = [];
690
+ const properties: Record<string, any> = {};
691
+
692
+ for (const field of entity.fields) {
693
+ const type = field.type as OpenApiDataType;
694
+ const format = field.format && field.format.trim() !== '' && field.format !== 'none'
695
+ ? field.format.trim()
696
+ : undefined;
697
+
698
+ if (field.required) {
699
+ required.push(field.name);
700
+ }
701
+
702
+ const schema: Record<string, any> = { type };
703
+ if (format) {
704
+ schema.format = format;
705
+ }
706
+
707
+ for (const entry of field.validations || []) {
708
+ const { key, value } = splitValidation(entry);
709
+ if (key === 'enum') {
710
+ schema.enum = normalizeEnumValues(parseValidationValue(value));
711
+ } else {
712
+ schema[key] = parseValidationValue(value);
713
+ }
714
+ }
715
+
716
+ properties[field.name] = schema;
717
+ }
718
+
719
+ return {
720
+ type: 'object',
721
+ properties,
722
+ required,
723
+ additionalProperties: false
724
+ };
725
+ };
726
+
727
+ export const throwIfDataEntityPayloadIsNotOpenApi31Compliant = (
728
+ payload: Record<string, any>,
729
+ entity: IOpenApiDataEntityLike
730
+ ): void => {
731
+ const schema = mapDataEntityToOpenApiSchema(entity);
732
+ validateValueAgainstOpenApiSchema(payload, schema, { components: { schemas: {} } }, entity.name);
733
+ };