@ug.software/opposer 3.0.10

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 (447) hide show
  1. package/README.md +504 -0
  2. package/lib/bin/commands/build.js +75 -0
  3. package/lib/bin/commands/generate/api-key.js +28 -0
  4. package/lib/bin/commands/generate/jwt-key.js +46 -0
  5. package/lib/bin/commands/init.js +169 -0
  6. package/lib/bin/helpers/crypto.js +33 -0
  7. package/lib/bin/opposer.js +26 -0
  8. package/lib/cjs/examples/full-app/index.d.ts +1 -0
  9. package/lib/cjs/examples/full-app/index.js +102 -0
  10. package/lib/cjs/examples/full-app/models/author.d.ts +7 -0
  11. package/lib/cjs/examples/full-app/models/author.js +42 -0
  12. package/lib/cjs/examples/full-app/models/book.d.ts +9 -0
  13. package/lib/cjs/examples/full-app/models/book.js +51 -0
  14. package/lib/cjs/examples/full-app/models/category.d.ts +4 -0
  15. package/lib/cjs/examples/full-app/models/category.js +26 -0
  16. package/lib/cjs/examples/full-app/schedules/catalog-refresh.d.ts +28 -0
  17. package/lib/cjs/examples/full-app/schedules/catalog-refresh.js +149 -0
  18. package/lib/cjs/examples/full-app/schedules/inventory-sync.d.ts +12 -0
  19. package/lib/cjs/examples/full-app/schedules/inventory-sync.js +61 -0
  20. package/lib/cjs/examples/full-app/schedules/library-alerts.d.ts +11 -0
  21. package/lib/cjs/examples/full-app/schedules/library-alerts.js +55 -0
  22. package/lib/cjs/examples/minimal/src/handlers/book.d.ts +11 -0
  23. package/lib/cjs/examples/minimal/src/handlers/book.js +51 -0
  24. package/lib/cjs/examples/minimal/src/index.d.ts +1 -0
  25. package/lib/cjs/examples/minimal/src/index.js +14 -0
  26. package/lib/cjs/examples/minimal/src/models/books.d.ts +4 -0
  27. package/lib/cjs/examples/minimal/src/models/books.js +26 -0
  28. package/lib/cjs/examples/orm/models/permission.d.ts +6 -0
  29. package/lib/cjs/examples/orm/models/permission.js +38 -0
  30. package/lib/cjs/examples/orm/models/profile.d.ts +7 -0
  31. package/lib/cjs/examples/orm/models/profile.js +42 -0
  32. package/lib/cjs/examples/orm/models/user.d.ts +11 -0
  33. package/lib/cjs/examples/orm/models/user.js +70 -0
  34. package/lib/cjs/examples/orm/mysql/index.d.ts +1 -0
  35. package/lib/cjs/examples/orm/mysql/index.js +44 -0
  36. package/lib/cjs/examples/orm/postgres/index.d.ts +1 -0
  37. package/lib/cjs/examples/orm/postgres/index.js +40 -0
  38. package/lib/cjs/examples/orm/sqlite/index.d.ts +1 -0
  39. package/lib/cjs/examples/orm/sqlite/index.js +41 -0
  40. package/lib/cjs/index.d.ts +2 -0
  41. package/lib/cjs/index.js +23 -0
  42. package/lib/cjs/interfaces/controller.d.ts +109 -0
  43. package/lib/cjs/interfaces/controller.js +2 -0
  44. package/lib/cjs/interfaces/field.d.ts +23 -0
  45. package/lib/cjs/interfaces/field.js +2 -0
  46. package/lib/cjs/interfaces/handler.d.ts +18 -0
  47. package/lib/cjs/interfaces/handler.js +2 -0
  48. package/lib/cjs/interfaces/jwt.d.ts +21 -0
  49. package/lib/cjs/interfaces/jwt.js +2 -0
  50. package/lib/cjs/interfaces/model.d.ts +9 -0
  51. package/lib/cjs/interfaces/model.js +2 -0
  52. package/lib/cjs/interfaces/request.d.ts +13 -0
  53. package/lib/cjs/interfaces/request.js +2 -0
  54. package/lib/cjs/interfaces/schema.d.ts +9 -0
  55. package/lib/cjs/interfaces/schema.js +2 -0
  56. package/lib/cjs/interfaces/security.d.ts +32 -0
  57. package/lib/cjs/interfaces/security.js +2 -0
  58. package/lib/cjs/interfaces/server.d.ts +37 -0
  59. package/lib/cjs/interfaces/server.js +2 -0
  60. package/lib/cjs/interfaces/system.d.ts +41 -0
  61. package/lib/cjs/interfaces/system.js +2 -0
  62. package/lib/cjs/orm/decorators/index.d.ts +33 -0
  63. package/lib/cjs/orm/decorators/index.js +131 -0
  64. package/lib/cjs/orm/driver/mysql.d.ts +14 -0
  65. package/lib/cjs/orm/driver/mysql.js +103 -0
  66. package/lib/cjs/orm/driver/postgres.d.ts +14 -0
  67. package/lib/cjs/orm/driver/postgres.js +105 -0
  68. package/lib/cjs/orm/driver/sqlite.d.ts +14 -0
  69. package/lib/cjs/orm/driver/sqlite.js +143 -0
  70. package/lib/cjs/orm/index.d.ts +8 -0
  71. package/lib/cjs/orm/index.js +28 -0
  72. package/lib/cjs/orm/metadata.d.ts +47 -0
  73. package/lib/cjs/orm/metadata.js +47 -0
  74. package/lib/cjs/orm/opposer.d.ts +30 -0
  75. package/lib/cjs/orm/opposer.js +33 -0
  76. package/lib/cjs/orm/query-builder.d.ts +32 -0
  77. package/lib/cjs/orm/query-builder.js +278 -0
  78. package/lib/cjs/orm/repository.d.ts +54 -0
  79. package/lib/cjs/orm/repository.js +325 -0
  80. package/lib/cjs/orm/validation.d.ts +44 -0
  81. package/lib/cjs/orm/validation.js +128 -0
  82. package/lib/cjs/package.json +3 -0
  83. package/lib/cjs/persistent/cache/core-context.d.ts +17 -0
  84. package/lib/cjs/persistent/cache/core-context.js +39 -0
  85. package/lib/cjs/persistent/cache/global.d.ts +18 -0
  86. package/lib/cjs/persistent/cache/global.js +22 -0
  87. package/lib/cjs/persistent/cache/index.d.ts +3 -0
  88. package/lib/cjs/persistent/cache/index.js +12 -0
  89. package/lib/cjs/persistent/cache/session.d.ts +19 -0
  90. package/lib/cjs/persistent/cache/session.js +39 -0
  91. package/lib/cjs/persistent/cache/storage.d.ts +14 -0
  92. package/lib/cjs/persistent/cache/storage.js +88 -0
  93. package/lib/cjs/persistent/cache/store.d.ts +16 -0
  94. package/lib/cjs/persistent/cache/store.js +112 -0
  95. package/lib/cjs/persistent/context/index.d.ts +3 -0
  96. package/lib/cjs/persistent/context/index.js +5 -0
  97. package/lib/cjs/persistent/decorators/global.d.ts +1 -0
  98. package/lib/cjs/persistent/decorators/global.js +25 -0
  99. package/lib/cjs/persistent/decorators/session.d.ts +1 -0
  100. package/lib/cjs/persistent/decorators/session.js +27 -0
  101. package/lib/cjs/persistent/index.d.ts +6 -0
  102. package/lib/cjs/persistent/index.js +18 -0
  103. package/lib/cjs/persistent/interfaces/context.d.ts +5 -0
  104. package/lib/cjs/persistent/interfaces/context.js +2 -0
  105. package/lib/cjs/persistent/interfaces/system.d.ts +47 -0
  106. package/lib/cjs/persistent/interfaces/system.js +29 -0
  107. package/lib/cjs/persistent/system/index.d.ts +7 -0
  108. package/lib/cjs/persistent/system/index.js +44 -0
  109. package/lib/cjs/persistent/utils/memory.d.ts +8 -0
  110. package/lib/cjs/persistent/utils/memory.js +44 -0
  111. package/lib/cjs/persistent/utils/timer.d.ts +14 -0
  112. package/lib/cjs/persistent/utils/timer.js +21 -0
  113. package/lib/cjs/playground/build/client/assets/AddRounded-ByHfnsiW.js +4 -0
  114. package/lib/cjs/playground/build/client/assets/Button-DLrxHRm7.js +1 -0
  115. package/lib/cjs/playground/build/client/assets/Container-CgITmmbk.js +1 -0
  116. package/lib/cjs/playground/build/client/assets/Divider-B_Wx9srO.js +1 -0
  117. package/lib/cjs/playground/build/client/assets/List-juBjUmfP.js +1 -0
  118. package/lib/cjs/playground/build/client/assets/ListItemText-DgWZmgzc.js +1 -0
  119. package/lib/cjs/playground/build/client/assets/MenuItem-D_5SuVKQ.js +1 -0
  120. package/lib/cjs/playground/build/client/assets/Modal-BwXR_5Bh.js +1 -0
  121. package/lib/cjs/playground/build/client/assets/TableRow-B9hAmlnV.js +2 -0
  122. package/lib/cjs/playground/build/client/assets/TextField-UybdTIGB.js +3 -0
  123. package/lib/cjs/playground/build/client/assets/Tooltip-BGcUWUcF.js +1 -0
  124. package/lib/cjs/playground/build/client/assets/auth-CD1rXHzz.js +1 -0
  125. package/lib/cjs/playground/build/client/assets/auth-GyTIVKy5.js +1 -0
  126. package/lib/cjs/playground/build/client/assets/confirm-Dr0pbiV6.js +1 -0
  127. package/lib/cjs/playground/build/client/assets/dividerClasses-CIiqeEPO.js +1 -0
  128. package/lib/cjs/playground/build/client/assets/entry.client-D6FYz1yh.js +13 -0
  129. package/lib/cjs/playground/build/client/assets/index-CJ0wdt6Z.js +1 -0
  130. package/lib/cjs/playground/build/client/assets/index-CQc11yq_.js +1153 -0
  131. package/lib/cjs/playground/build/client/assets/index-Cr4I-4J2.js +1 -0
  132. package/lib/cjs/playground/build/client/assets/index-CtPqstFl.js +26 -0
  133. package/lib/cjs/playground/build/client/assets/index-Ct_NE85o.js +1 -0
  134. package/lib/cjs/playground/build/client/assets/index-D0I6xwmb.js +1 -0
  135. package/lib/cjs/playground/build/client/assets/index-DmDCpKb3.js +1 -0
  136. package/lib/cjs/playground/build/client/assets/index-DsSkAwyn.js +1 -0
  137. package/lib/cjs/playground/build/client/assets/index-_DMgWZ3Y.js +1 -0
  138. package/lib/cjs/playground/build/client/assets/listItemIconClasses-39Itzgzt.js +1 -0
  139. package/lib/cjs/playground/build/client/assets/listItemTextClasses-EQFLPLzt.js +1 -0
  140. package/lib/cjs/playground/build/client/assets/manifest-c06e9a7f.js +1 -0
  141. package/lib/cjs/playground/build/client/assets/mergeSlotProps-DptgQgAT.js +1 -0
  142. package/lib/cjs/playground/build/client/assets/playground-Hl52p9f5.js +108 -0
  143. package/lib/cjs/playground/build/client/assets/root-CQTBmuv8.js +1 -0
  144. package/lib/cjs/playground/build/client/assets/toast-CsAH5FIf.js +1 -0
  145. package/lib/cjs/playground/build/client/assets/use-request-BZNkzlTr.js +1 -0
  146. package/lib/cjs/playground/build/client/favicon.ico +0 -0
  147. package/lib/cjs/playground/build/client/index.html +6 -0
  148. package/lib/cjs/playground/index.d.ts +2 -0
  149. package/lib/cjs/playground/index.js +135 -0
  150. package/lib/cjs/scheduler/controllers/index.d.ts +19 -0
  151. package/lib/cjs/scheduler/controllers/index.js +62 -0
  152. package/lib/cjs/scheduler/decorators/index.d.ts +9 -0
  153. package/lib/cjs/scheduler/decorators/index.js +21 -0
  154. package/lib/cjs/scheduler/handlers/index.d.ts +19 -0
  155. package/lib/cjs/scheduler/handlers/index.js +62 -0
  156. package/lib/cjs/scheduler/index.d.ts +24 -0
  157. package/lib/cjs/scheduler/index.js +110 -0
  158. package/lib/cjs/scheduler/models/history.d.ts +10 -0
  159. package/lib/cjs/scheduler/models/history.js +50 -0
  160. package/lib/cjs/server/constants/index.d.ts +78 -0
  161. package/lib/cjs/server/constants/index.js +372 -0
  162. package/lib/cjs/server/context/index.d.ts +17 -0
  163. package/lib/cjs/server/context/index.js +33 -0
  164. package/lib/cjs/server/controller/index.d.ts +3 -0
  165. package/lib/cjs/server/controller/index.js +217 -0
  166. package/lib/cjs/server/controllers/index.d.ts +5 -0
  167. package/lib/cjs/server/controllers/index.js +72 -0
  168. package/lib/cjs/server/core/index.d.ts +16 -0
  169. package/lib/cjs/server/core/index.js +110 -0
  170. package/lib/cjs/server/core/middleware/body-parser.d.ts +2 -0
  171. package/lib/cjs/server/core/middleware/body-parser.js +27 -0
  172. package/lib/cjs/server/core/middleware/cors.d.ts +4 -0
  173. package/lib/cjs/server/core/middleware/cors.js +32 -0
  174. package/lib/cjs/server/core/middleware/logger.d.ts +2 -0
  175. package/lib/cjs/server/core/middleware/logger.js +15 -0
  176. package/lib/cjs/server/decorators/controller.d.ts +3 -0
  177. package/lib/cjs/server/decorators/controller.js +14 -0
  178. package/lib/cjs/server/decorators/field.d.ts +2 -0
  179. package/lib/cjs/server/decorators/field.js +36 -0
  180. package/lib/cjs/server/decorators/handler.d.ts +3 -0
  181. package/lib/cjs/server/decorators/handler.js +14 -0
  182. package/lib/cjs/server/decorators/index.d.ts +7 -0
  183. package/lib/cjs/server/decorators/index.js +26 -0
  184. package/lib/cjs/server/decorators/is-public-method.d.ts +3 -0
  185. package/lib/cjs/server/decorators/is-public-method.js +16 -0
  186. package/lib/cjs/server/decorators/is-public.d.ts +3 -0
  187. package/lib/cjs/server/decorators/is-public.js +14 -0
  188. package/lib/cjs/server/decorators/method.d.ts +3 -0
  189. package/lib/cjs/server/decorators/method.js +16 -0
  190. package/lib/cjs/server/decorators/payload.d.ts +3 -0
  191. package/lib/cjs/server/decorators/payload.js +15 -0
  192. package/lib/cjs/server/handlers/index.d.ts +5 -0
  193. package/lib/cjs/server/handlers/index.js +72 -0
  194. package/lib/cjs/server/helpers/index.d.ts +17 -0
  195. package/lib/cjs/server/helpers/index.js +39 -0
  196. package/lib/cjs/server/index.d.ts +12 -0
  197. package/lib/cjs/server/index.js +176 -0
  198. package/lib/cjs/server/security/controller/auth.d.ts +76 -0
  199. package/lib/cjs/server/security/controller/auth.js +346 -0
  200. package/lib/cjs/server/security/index.d.ts +2 -0
  201. package/lib/cjs/server/security/index.js +10 -0
  202. package/lib/cjs/server/security/jwt/index.d.ts +23 -0
  203. package/lib/cjs/server/security/jwt/index.js +108 -0
  204. package/lib/cjs/server/security/middleware/autorization.d.ts +3 -0
  205. package/lib/cjs/server/security/middleware/autorization.js +46 -0
  206. package/lib/cjs/server/security/middleware/permission.d.ts +3 -0
  207. package/lib/cjs/server/security/middleware/permission.js +138 -0
  208. package/lib/cjs/server/security/models/crp.d.ts +8 -0
  209. package/lib/cjs/server/security/models/crp.js +42 -0
  210. package/lib/cjs/server/security/models/ke.d.ts +7 -0
  211. package/lib/cjs/server/security/models/ke.js +38 -0
  212. package/lib/cjs/server/security/models/rl.d.ts +9 -0
  213. package/lib/cjs/server/security/models/rl.js +50 -0
  214. package/lib/cjs/server/security/models/se.d.ts +11 -0
  215. package/lib/cjs/server/security/models/se.js +54 -0
  216. package/lib/cjs/server/security/models/usr.d.ts +14 -0
  217. package/lib/cjs/server/security/models/usr.js +82 -0
  218. package/lib/cjs/server/services/delete.d.ts +13 -0
  219. package/lib/cjs/server/services/delete.js +49 -0
  220. package/lib/cjs/server/services/get.d.ts +4 -0
  221. package/lib/cjs/server/services/get.js +145 -0
  222. package/lib/cjs/server/services/insert.d.ts +13 -0
  223. package/lib/cjs/server/services/insert.js +74 -0
  224. package/lib/cjs/server/services/update.d.ts +13 -0
  225. package/lib/cjs/server/services/update.js +60 -0
  226. package/lib/cjs/system/index.d.ts +13 -0
  227. package/lib/cjs/system/index.js +237 -0
  228. package/lib/esm/examples/full-app/index.d.ts +1 -0
  229. package/lib/esm/examples/full-app/index.js +64 -0
  230. package/lib/esm/examples/full-app/models/author.d.ts +7 -0
  231. package/lib/esm/examples/full-app/models/author.js +37 -0
  232. package/lib/esm/examples/full-app/models/book.d.ts +9 -0
  233. package/lib/esm/examples/full-app/models/book.js +46 -0
  234. package/lib/esm/examples/full-app/models/category.d.ts +4 -0
  235. package/lib/esm/examples/full-app/models/category.js +24 -0
  236. package/lib/esm/examples/full-app/schedules/catalog-refresh.d.ts +28 -0
  237. package/lib/esm/examples/full-app/schedules/catalog-refresh.js +143 -0
  238. package/lib/esm/examples/full-app/schedules/inventory-sync.d.ts +12 -0
  239. package/lib/esm/examples/full-app/schedules/inventory-sync.js +55 -0
  240. package/lib/esm/examples/full-app/schedules/library-alerts.d.ts +11 -0
  241. package/lib/esm/examples/full-app/schedules/library-alerts.js +52 -0
  242. package/lib/esm/examples/minimal/src/handlers/book.d.ts +11 -0
  243. package/lib/esm/examples/minimal/src/handlers/book.js +49 -0
  244. package/lib/esm/examples/minimal/src/index.d.ts +1 -0
  245. package/lib/esm/examples/minimal/src/index.js +9 -0
  246. package/lib/esm/examples/minimal/src/models/books.d.ts +4 -0
  247. package/lib/esm/examples/minimal/src/models/books.js +24 -0
  248. package/lib/esm/examples/orm/models/permission.d.ts +6 -0
  249. package/lib/esm/examples/orm/models/permission.js +33 -0
  250. package/lib/esm/examples/orm/models/profile.d.ts +7 -0
  251. package/lib/esm/examples/orm/models/profile.js +37 -0
  252. package/lib/esm/examples/orm/models/user.d.ts +11 -0
  253. package/lib/esm/examples/orm/models/user.js +65 -0
  254. package/lib/esm/examples/orm/mysql/index.d.ts +1 -0
  255. package/lib/esm/examples/orm/mysql/index.js +39 -0
  256. package/lib/esm/examples/orm/postgres/index.d.ts +1 -0
  257. package/lib/esm/examples/orm/postgres/index.js +35 -0
  258. package/lib/esm/examples/orm/sqlite/index.d.ts +1 -0
  259. package/lib/esm/examples/orm/sqlite/index.js +36 -0
  260. package/lib/esm/index.d.ts +2 -0
  261. package/lib/esm/index.js +2 -0
  262. package/lib/esm/interfaces/controller.d.ts +109 -0
  263. package/lib/esm/interfaces/controller.js +1 -0
  264. package/lib/esm/interfaces/field.d.ts +23 -0
  265. package/lib/esm/interfaces/field.js +1 -0
  266. package/lib/esm/interfaces/handler.d.ts +18 -0
  267. package/lib/esm/interfaces/handler.js +1 -0
  268. package/lib/esm/interfaces/jwt.d.ts +21 -0
  269. package/lib/esm/interfaces/jwt.js +1 -0
  270. package/lib/esm/interfaces/model.d.ts +9 -0
  271. package/lib/esm/interfaces/model.js +1 -0
  272. package/lib/esm/interfaces/request.d.ts +13 -0
  273. package/lib/esm/interfaces/request.js +1 -0
  274. package/lib/esm/interfaces/schema.d.ts +9 -0
  275. package/lib/esm/interfaces/schema.js +1 -0
  276. package/lib/esm/interfaces/security.d.ts +32 -0
  277. package/lib/esm/interfaces/security.js +1 -0
  278. package/lib/esm/interfaces/server.d.ts +37 -0
  279. package/lib/esm/interfaces/server.js +1 -0
  280. package/lib/esm/interfaces/system.d.ts +41 -0
  281. package/lib/esm/interfaces/system.js +1 -0
  282. package/lib/esm/orm/decorators/index.d.ts +33 -0
  283. package/lib/esm/orm/decorators/index.js +118 -0
  284. package/lib/esm/orm/driver/mysql.d.ts +14 -0
  285. package/lib/esm/orm/driver/mysql.js +66 -0
  286. package/lib/esm/orm/driver/postgres.d.ts +14 -0
  287. package/lib/esm/orm/driver/postgres.js +68 -0
  288. package/lib/esm/orm/driver/sqlite.d.ts +14 -0
  289. package/lib/esm/orm/driver/sqlite.js +106 -0
  290. package/lib/esm/orm/index.d.ts +8 -0
  291. package/lib/esm/orm/index.js +8 -0
  292. package/lib/esm/orm/metadata.d.ts +47 -0
  293. package/lib/esm/orm/metadata.js +43 -0
  294. package/lib/esm/orm/opposer.d.ts +30 -0
  295. package/lib/esm/orm/opposer.js +29 -0
  296. package/lib/esm/orm/query-builder.d.ts +32 -0
  297. package/lib/esm/orm/query-builder.js +274 -0
  298. package/lib/esm/orm/repository.d.ts +54 -0
  299. package/lib/esm/orm/repository.js +318 -0
  300. package/lib/esm/orm/validation.d.ts +44 -0
  301. package/lib/esm/orm/validation.js +122 -0
  302. package/lib/esm/persistent/cache/core-context.d.ts +17 -0
  303. package/lib/esm/persistent/cache/core-context.js +34 -0
  304. package/lib/esm/persistent/cache/global.d.ts +18 -0
  305. package/lib/esm/persistent/cache/global.js +17 -0
  306. package/lib/esm/persistent/cache/index.d.ts +3 -0
  307. package/lib/esm/persistent/cache/index.js +3 -0
  308. package/lib/esm/persistent/cache/session.d.ts +19 -0
  309. package/lib/esm/persistent/cache/session.js +34 -0
  310. package/lib/esm/persistent/cache/storage.d.ts +14 -0
  311. package/lib/esm/persistent/cache/storage.js +82 -0
  312. package/lib/esm/persistent/cache/store.d.ts +16 -0
  313. package/lib/esm/persistent/cache/store.js +106 -0
  314. package/lib/esm/persistent/context/index.d.ts +3 -0
  315. package/lib/esm/persistent/context/index.js +3 -0
  316. package/lib/esm/persistent/decorators/global.d.ts +1 -0
  317. package/lib/esm/persistent/decorators/global.js +19 -0
  318. package/lib/esm/persistent/decorators/session.d.ts +1 -0
  319. package/lib/esm/persistent/decorators/session.js +21 -0
  320. package/lib/esm/persistent/index.d.ts +6 -0
  321. package/lib/esm/persistent/index.js +6 -0
  322. package/lib/esm/persistent/interfaces/context.d.ts +5 -0
  323. package/lib/esm/persistent/interfaces/context.js +1 -0
  324. package/lib/esm/persistent/interfaces/system.d.ts +47 -0
  325. package/lib/esm/persistent/interfaces/system.js +26 -0
  326. package/lib/esm/persistent/system/index.d.ts +7 -0
  327. package/lib/esm/persistent/system/index.js +39 -0
  328. package/lib/esm/persistent/utils/memory.d.ts +8 -0
  329. package/lib/esm/persistent/utils/memory.js +42 -0
  330. package/lib/esm/persistent/utils/timer.d.ts +14 -0
  331. package/lib/esm/persistent/utils/timer.js +16 -0
  332. package/lib/esm/playground/build/client/assets/AddRounded-ByHfnsiW.js +4 -0
  333. package/lib/esm/playground/build/client/assets/Button-DLrxHRm7.js +1 -0
  334. package/lib/esm/playground/build/client/assets/Container-CgITmmbk.js +1 -0
  335. package/lib/esm/playground/build/client/assets/Divider-B_Wx9srO.js +1 -0
  336. package/lib/esm/playground/build/client/assets/List-juBjUmfP.js +1 -0
  337. package/lib/esm/playground/build/client/assets/ListItemText-DgWZmgzc.js +1 -0
  338. package/lib/esm/playground/build/client/assets/MenuItem-D_5SuVKQ.js +1 -0
  339. package/lib/esm/playground/build/client/assets/Modal-BwXR_5Bh.js +1 -0
  340. package/lib/esm/playground/build/client/assets/TableRow-B9hAmlnV.js +2 -0
  341. package/lib/esm/playground/build/client/assets/TextField-UybdTIGB.js +3 -0
  342. package/lib/esm/playground/build/client/assets/Tooltip-BGcUWUcF.js +1 -0
  343. package/lib/esm/playground/build/client/assets/auth-CD1rXHzz.js +1 -0
  344. package/lib/esm/playground/build/client/assets/auth-GyTIVKy5.js +1 -0
  345. package/lib/esm/playground/build/client/assets/confirm-Dr0pbiV6.js +1 -0
  346. package/lib/esm/playground/build/client/assets/dividerClasses-CIiqeEPO.js +1 -0
  347. package/lib/esm/playground/build/client/assets/entry.client-D6FYz1yh.js +13 -0
  348. package/lib/esm/playground/build/client/assets/index-CJ0wdt6Z.js +1 -0
  349. package/lib/esm/playground/build/client/assets/index-CQc11yq_.js +1153 -0
  350. package/lib/esm/playground/build/client/assets/index-Cr4I-4J2.js +1 -0
  351. package/lib/esm/playground/build/client/assets/index-CtPqstFl.js +26 -0
  352. package/lib/esm/playground/build/client/assets/index-Ct_NE85o.js +1 -0
  353. package/lib/esm/playground/build/client/assets/index-D0I6xwmb.js +1 -0
  354. package/lib/esm/playground/build/client/assets/index-DmDCpKb3.js +1 -0
  355. package/lib/esm/playground/build/client/assets/index-DsSkAwyn.js +1 -0
  356. package/lib/esm/playground/build/client/assets/index-_DMgWZ3Y.js +1 -0
  357. package/lib/esm/playground/build/client/assets/listItemIconClasses-39Itzgzt.js +1 -0
  358. package/lib/esm/playground/build/client/assets/listItemTextClasses-EQFLPLzt.js +1 -0
  359. package/lib/esm/playground/build/client/assets/manifest-c06e9a7f.js +1 -0
  360. package/lib/esm/playground/build/client/assets/mergeSlotProps-DptgQgAT.js +1 -0
  361. package/lib/esm/playground/build/client/assets/playground-Hl52p9f5.js +108 -0
  362. package/lib/esm/playground/build/client/assets/root-CQTBmuv8.js +1 -0
  363. package/lib/esm/playground/build/client/assets/toast-CsAH5FIf.js +1 -0
  364. package/lib/esm/playground/build/client/assets/use-request-BZNkzlTr.js +1 -0
  365. package/lib/esm/playground/build/client/favicon.ico +0 -0
  366. package/lib/esm/playground/build/client/index.html +6 -0
  367. package/lib/esm/playground/index.d.ts +2 -0
  368. package/lib/esm/playground/index.js +129 -0
  369. package/lib/esm/scheduler/controllers/index.d.ts +19 -0
  370. package/lib/esm/scheduler/controllers/index.js +57 -0
  371. package/lib/esm/scheduler/decorators/index.d.ts +9 -0
  372. package/lib/esm/scheduler/decorators/index.js +16 -0
  373. package/lib/esm/scheduler/handlers/index.d.ts +19 -0
  374. package/lib/esm/scheduler/handlers/index.js +57 -0
  375. package/lib/esm/scheduler/index.d.ts +24 -0
  376. package/lib/esm/scheduler/index.js +89 -0
  377. package/lib/esm/scheduler/models/history.d.ts +10 -0
  378. package/lib/esm/scheduler/models/history.js +48 -0
  379. package/lib/esm/server/constants/index.d.ts +78 -0
  380. package/lib/esm/server/constants/index.js +369 -0
  381. package/lib/esm/server/context/index.d.ts +17 -0
  382. package/lib/esm/server/context/index.js +31 -0
  383. package/lib/esm/server/controller/index.d.ts +3 -0
  384. package/lib/esm/server/controller/index.js +179 -0
  385. package/lib/esm/server/controllers/index.d.ts +5 -0
  386. package/lib/esm/server/controllers/index.js +31 -0
  387. package/lib/esm/server/core/index.d.ts +16 -0
  388. package/lib/esm/server/core/index.js +103 -0
  389. package/lib/esm/server/core/middleware/body-parser.d.ts +2 -0
  390. package/lib/esm/server/core/middleware/body-parser.js +24 -0
  391. package/lib/esm/server/core/middleware/cors.d.ts +4 -0
  392. package/lib/esm/server/core/middleware/cors.js +29 -0
  393. package/lib/esm/server/core/middleware/logger.d.ts +2 -0
  394. package/lib/esm/server/core/middleware/logger.js +12 -0
  395. package/lib/esm/server/decorators/controller.d.ts +3 -0
  396. package/lib/esm/server/decorators/controller.js +10 -0
  397. package/lib/esm/server/decorators/field.d.ts +2 -0
  398. package/lib/esm/server/decorators/field.js +32 -0
  399. package/lib/esm/server/decorators/handler.d.ts +3 -0
  400. package/lib/esm/server/decorators/handler.js +10 -0
  401. package/lib/esm/server/decorators/index.d.ts +7 -0
  402. package/lib/esm/server/decorators/index.js +7 -0
  403. package/lib/esm/server/decorators/is-public-method.d.ts +3 -0
  404. package/lib/esm/server/decorators/is-public-method.js +12 -0
  405. package/lib/esm/server/decorators/is-public.d.ts +3 -0
  406. package/lib/esm/server/decorators/is-public.js +10 -0
  407. package/lib/esm/server/decorators/method.d.ts +3 -0
  408. package/lib/esm/server/decorators/method.js +12 -0
  409. package/lib/esm/server/decorators/payload.d.ts +3 -0
  410. package/lib/esm/server/decorators/payload.js +11 -0
  411. package/lib/esm/server/handlers/index.d.ts +5 -0
  412. package/lib/esm/server/handlers/index.js +31 -0
  413. package/lib/esm/server/helpers/index.d.ts +17 -0
  414. package/lib/esm/server/helpers/index.js +34 -0
  415. package/lib/esm/server/index.d.ts +12 -0
  416. package/lib/esm/server/index.js +147 -0
  417. package/lib/esm/server/security/controller/auth.d.ts +76 -0
  418. package/lib/esm/server/security/controller/auth.js +341 -0
  419. package/lib/esm/server/security/index.d.ts +2 -0
  420. package/lib/esm/server/security/index.js +2 -0
  421. package/lib/esm/server/security/jwt/index.d.ts +23 -0
  422. package/lib/esm/server/security/jwt/index.js +103 -0
  423. package/lib/esm/server/security/middleware/autorization.d.ts +3 -0
  424. package/lib/esm/server/security/middleware/autorization.js +41 -0
  425. package/lib/esm/server/security/middleware/permission.d.ts +3 -0
  426. package/lib/esm/server/security/middleware/permission.js +133 -0
  427. package/lib/esm/server/security/models/crp.d.ts +8 -0
  428. package/lib/esm/server/security/models/crp.js +40 -0
  429. package/lib/esm/server/security/models/ke.d.ts +7 -0
  430. package/lib/esm/server/security/models/ke.js +36 -0
  431. package/lib/esm/server/security/models/rl.d.ts +9 -0
  432. package/lib/esm/server/security/models/rl.js +45 -0
  433. package/lib/esm/server/security/models/se.d.ts +11 -0
  434. package/lib/esm/server/security/models/se.js +52 -0
  435. package/lib/esm/server/security/models/usr.d.ts +14 -0
  436. package/lib/esm/server/security/models/usr.js +77 -0
  437. package/lib/esm/server/services/delete.d.ts +13 -0
  438. package/lib/esm/server/services/delete.js +44 -0
  439. package/lib/esm/server/services/get.d.ts +4 -0
  440. package/lib/esm/server/services/get.js +140 -0
  441. package/lib/esm/server/services/insert.d.ts +13 -0
  442. package/lib/esm/server/services/insert.js +69 -0
  443. package/lib/esm/server/services/update.d.ts +13 -0
  444. package/lib/esm/server/services/update.js +55 -0
  445. package/lib/esm/system/index.d.ts +13 -0
  446. package/lib/esm/system/index.js +197 -0
  447. package/package.json +95 -0
@@ -0,0 +1,103 @@
1
+ import http from 'http';
2
+ import system from '../../system/index.js';
3
+ import Context from '../../persistent/context/index.js';
4
+ export class OpposerServer {
5
+ constructor() {
6
+ this.middlewares = [];
7
+ this.settings = system.getSettingsFile();
8
+ }
9
+ use(middleware) {
10
+ this.middlewares.push(middleware);
11
+ return this;
12
+ }
13
+ async runMiddlewares(req, res) {
14
+ let index = 0;
15
+ const next = async () => {
16
+ if (index < this.middlewares.length) {
17
+ const middleware = this.middlewares[index++];
18
+ await middleware(req, res, next);
19
+ }
20
+ };
21
+ await next();
22
+ }
23
+ async handleRequest(req, res) {
24
+ const extendedReq = req;
25
+ const extendedRes = res;
26
+ await Context.run({ server: this, req: extendedReq, res: extendedRes }, async () => {
27
+ // Inject server instance into request for easy access
28
+ extendedReq.server = this;
29
+ // Request properties
30
+ extendedReq.ip = req.socket.remoteAddress;
31
+ extendedReq.cookies = this.parseCookies(req.headers.cookie || '');
32
+ // Response helpers
33
+ extendedRes.status = (code) => {
34
+ extendedRes.statusCode = code;
35
+ return extendedRes;
36
+ };
37
+ extendedRes.json = (data) => {
38
+ if (!res.writableEnded) {
39
+ extendedRes.setHeader('Content-Type', 'application/json');
40
+ extendedRes.end(JSON.stringify(data));
41
+ }
42
+ };
43
+ extendedRes.send = (data) => {
44
+ if (!res.writableEnded) {
45
+ if (typeof data === 'object')
46
+ return extendedRes.json(data);
47
+ extendedRes.end(data);
48
+ }
49
+ };
50
+ extendedRes.cookie = (name, value, options = {}) => {
51
+ let cookieStr = `${name}=${value}`;
52
+ if (options.httpOnly)
53
+ cookieStr += '; HttpOnly';
54
+ if (options.secure)
55
+ cookieStr += '; Secure';
56
+ if (options.path)
57
+ cookieStr += `; Path=${options.path}`;
58
+ if (options.expires)
59
+ cookieStr += `; Expires=${options.expires.toUTCString()}`;
60
+ if (options.sameSite)
61
+ cookieStr += `; SameSite=${options.sameSite}`;
62
+ const existing = res.getHeader('Set-Cookie');
63
+ if (!existing) {
64
+ res.setHeader('Set-Cookie', [cookieStr]);
65
+ }
66
+ else {
67
+ const cookies = Array.isArray(existing) ? existing : [String(existing)];
68
+ cookies.push(cookieStr);
69
+ res.setHeader('Set-Cookie', cookies);
70
+ }
71
+ };
72
+ extendedRes.clearCookie = (name, options = {}) => {
73
+ extendedRes.cookie(name, '', { ...options, expires: new Date(0) });
74
+ };
75
+ try {
76
+ await this.runMiddlewares(extendedReq, extendedRes);
77
+ }
78
+ catch (error) {
79
+ console.error('[core] Server error:', error);
80
+ if (!res.writableEnded) {
81
+ extendedRes.status(500).json({ message: error.message || 'Internal Server Error' });
82
+ }
83
+ }
84
+ });
85
+ }
86
+ parseCookies(cookieHeader) {
87
+ const cookies = {};
88
+ cookieHeader.split(';').forEach((cookie) => {
89
+ const parts = cookie.split('=');
90
+ if (parts.length === 2) {
91
+ cookies[parts[0].trim()] = parts[1].trim();
92
+ }
93
+ });
94
+ return cookies;
95
+ }
96
+ listen(port, callback) {
97
+ const server = http.createServer((req, res) => this.handleRequest(req, res));
98
+ server.listen(port, callback);
99
+ return server;
100
+ }
101
+ }
102
+ const instance = new OpposerServer();
103
+ export default instance;
@@ -0,0 +1,2 @@
1
+ import { Middleware } from "../index.js";
2
+ export default function bodyParser(): Middleware;
@@ -0,0 +1,24 @@
1
+ export default function bodyParser() {
2
+ return async (req, res, next) => {
3
+ if (req.method === "POST" || req.method === "PUT") {
4
+ const chunks = [];
5
+ req.on("data", (chunk) => chunks.push(chunk));
6
+ req.on("end", () => {
7
+ const bodyStr = Buffer.concat(chunks).toString();
8
+ try {
9
+ if (bodyStr) {
10
+ req.body = JSON.parse(bodyStr);
11
+ }
12
+ }
13
+ catch (e) {
14
+ console.error("[core] JSON parsing error:", e);
15
+ req.body = {};
16
+ }
17
+ next();
18
+ });
19
+ }
20
+ else {
21
+ next();
22
+ }
23
+ };
24
+ }
@@ -0,0 +1,4 @@
1
+ import { Middleware } from "../index.js";
2
+ export default function cors(options?: {
3
+ origin: string | string[];
4
+ }): Middleware;
@@ -0,0 +1,29 @@
1
+ export default function cors(options) {
2
+ return (req, res, next) => {
3
+ const originHeader = req.headers.origin;
4
+ let allowedOrigin = "*";
5
+ if (options?.origin) {
6
+ if (Array.isArray(options.origin)) {
7
+ if (originHeader && options.origin.includes(originHeader)) {
8
+ allowedOrigin = originHeader;
9
+ }
10
+ else {
11
+ allowedOrigin = options.origin[0]; // Fallback to first one
12
+ }
13
+ }
14
+ else {
15
+ allowedOrigin = options.origin;
16
+ }
17
+ }
18
+ res.setHeader("Access-Control-Allow-Origin", allowedOrigin);
19
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
20
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, opposer-key");
21
+ res.setHeader("Access-Control-Allow-Credentials", "true");
22
+ if (req.method === "OPTIONS") {
23
+ res.statusCode = 204;
24
+ res.end();
25
+ return;
26
+ }
27
+ next();
28
+ };
29
+ }
@@ -0,0 +1,2 @@
1
+ import { Middleware } from "../index.js";
2
+ export default function logger(): Middleware;
@@ -0,0 +1,12 @@
1
+ export default function logger() {
2
+ return (req, res, next) => {
3
+ const start = Date.now();
4
+ const { method, url } = req;
5
+ res.on("finish", () => {
6
+ const duration = Date.now() - start;
7
+ const status = res.statusCode;
8
+ console.log(`[${new Date().toISOString()}] ${method} ${url} - ${status} (${duration}ms)`);
9
+ });
10
+ next();
11
+ };
12
+ }
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export default function Controller(name: string): (constructor: Object) => void;
3
+ export declare function getControllerMetadata(target: Object): any;
@@ -0,0 +1,10 @@
1
+ import "reflect-metadata";
2
+ const CONTROLLER_KEY = Symbol("controller");
3
+ export default function Controller(name) {
4
+ return function (constructor) {
5
+ Reflect.defineMetadata(CONTROLLER_KEY, { name }, constructor);
6
+ };
7
+ }
8
+ export function getControllerMetadata(target) {
9
+ return Reflect.getMetadata(CONTROLLER_KEY, target) || [];
10
+ }
@@ -0,0 +1,2 @@
1
+ export default function Field(model: any): (target: Object, name: string, context?: any) => void;
2
+ export declare function getFieldsMetadata(target: Object): any[];
@@ -0,0 +1,32 @@
1
+ import { Field as OrmField, MetadataStore } from "../../orm/index.js";
2
+ const FIELD_KEY = Symbol("field");
3
+ export default function Field(model) {
4
+ return (target, name, context) => {
5
+ // 1. Legacy server metadata (for existing code that uses getFieldsMetadata)
6
+ const fields = Reflect.getMetadata(FIELD_KEY, target.constructor) || [];
7
+ fields.push({ name, model: typeof model === 'function' ? model() : model });
8
+ Reflect.defineMetadata(FIELD_KEY, fields, target.constructor);
9
+ // 2. ORM metadata (calling the ORM decorator logic)
10
+ const ormDecorator = OrmField(typeof model === 'function' ? { validation: model } : model);
11
+ return ormDecorator(target, name);
12
+ };
13
+ }
14
+ export function getFieldsMetadata(target) {
15
+ // Try to get from the constructor if target is an instance
16
+ const constructor = typeof target === 'function' ? target : target.constructor;
17
+ // 1. Get from legacy metadata
18
+ const legacyFields = Reflect.getMetadata(FIELD_KEY, constructor) || [];
19
+ // 2. Get from ORM MetadataStore
20
+ const ormFields = MetadataStore.getFields(constructor).map(f => ({
21
+ name: f.name,
22
+ model: { type: f.type }
23
+ }));
24
+ // Combine and remove duplicates (by name)
25
+ const allFields = [...legacyFields];
26
+ ormFields.forEach(of => {
27
+ if (!allFields.find(lf => lf.name === of.name)) {
28
+ allFields.push(of);
29
+ }
30
+ });
31
+ return allFields;
32
+ }
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export default function Controller(name: string): (constructor: Object) => void;
3
+ export declare function getControllerMetadata(target: Object): any;
@@ -0,0 +1,10 @@
1
+ import "reflect-metadata";
2
+ const CONTROLLER_KEY = Symbol("controller");
3
+ export default function Controller(name) {
4
+ return function (constructor) {
5
+ Reflect.defineMetadata(CONTROLLER_KEY, { name }, constructor);
6
+ };
7
+ }
8
+ export function getControllerMetadata(target) {
9
+ return Reflect.getMetadata(CONTROLLER_KEY, target) || [];
10
+ }
@@ -0,0 +1,7 @@
1
+ export { default as Method, getMethodMetadata } from "./method.js";
2
+ export { default as Controller, getControllerMetadata } from "./controller.js";
3
+ export { default as Payload, getPayloadMetadata } from "./payload.js";
4
+ export { default as IsPublic, getIsPublicMetadata } from "./is-public.js";
5
+ export { default as IsPublicMethod, getIsPublicMethodMetadata, } from "./is-public-method.js";
6
+ export { default as Field, getFieldsMetadata } from "./field.js";
7
+ export { f } from "../../orm/index.js";
@@ -0,0 +1,7 @@
1
+ export { default as Method, getMethodMetadata } from "./method.js";
2
+ export { default as Controller, getControllerMetadata } from "./controller.js";
3
+ export { default as Payload, getPayloadMetadata } from "./payload.js";
4
+ export { default as IsPublic, getIsPublicMetadata } from "./is-public.js";
5
+ export { default as IsPublicMethod, getIsPublicMethodMetadata, } from "./is-public-method.js";
6
+ export { default as Field, getFieldsMetadata } from "./field.js";
7
+ export { f } from "../../orm/index.js";
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export default function IsPublicMethod(): (target: Object, name: string, context: any) => void;
3
+ export declare function getIsPublicMethodMetadata(target: Object): any;
@@ -0,0 +1,12 @@
1
+ import "reflect-metadata";
2
+ const PUBLIC_METHOD_KEY = Symbol("method");
3
+ export default function IsPublicMethod() {
4
+ return function (target, name, context) {
5
+ const methods = Reflect.getMetadata(PUBLIC_METHOD_KEY, target.constructor) || [];
6
+ methods.push({ name });
7
+ Reflect.defineMetadata(PUBLIC_METHOD_KEY, methods, target.constructor);
8
+ };
9
+ }
10
+ export function getIsPublicMethodMetadata(target) {
11
+ return Reflect.getMetadata(PUBLIC_METHOD_KEY, target) || [];
12
+ }
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export default function IsPublic(): ClassDecorator;
3
+ export declare function getIsPublicMetadata(target: Object): boolean;
@@ -0,0 +1,10 @@
1
+ import "reflect-metadata";
2
+ const PUBLIC_KEY = Symbol("is-public");
3
+ export default function IsPublic() {
4
+ return (target) => {
5
+ Reflect.defineMetadata(PUBLIC_KEY, true, target);
6
+ };
7
+ }
8
+ export function getIsPublicMetadata(target) {
9
+ return Reflect.getMetadata(PUBLIC_KEY, target) === true;
10
+ }
@@ -0,0 +1,3 @@
1
+ import "reflect-metadata";
2
+ export default function Method(): (target: Object, name: string, context: any) => void;
3
+ export declare function getMethodMetadata(target: Object): any;
@@ -0,0 +1,12 @@
1
+ import "reflect-metadata";
2
+ const METHOD_KEY = Symbol("method");
3
+ export default function Method() {
4
+ return function (target, name, context) {
5
+ const methods = Reflect.getMetadata(METHOD_KEY, target.constructor) || [];
6
+ methods.push({ name });
7
+ Reflect.defineMetadata(METHOD_KEY, methods, target.constructor);
8
+ };
9
+ }
10
+ export function getMethodMetadata(target) {
11
+ return Reflect.getMetadata(METHOD_KEY, target) || [];
12
+ }
@@ -0,0 +1,3 @@
1
+ import { ClassType } from "../../interfaces/system";
2
+ export default function Payload<T>(dto: ClassType<T>): (target: Object, name: string, context: any) => void;
3
+ export declare function getPayloadMetadata(target: Object): any;
@@ -0,0 +1,11 @@
1
+ const PAYLOAD_KEY = Symbol("method");
2
+ export default function Payload(dto) {
3
+ return function (target, name, context) {
4
+ const payloads = Reflect.getMetadata(PAYLOAD_KEY, target.constructor) || [];
5
+ payloads.push({ name, dto });
6
+ Reflect.defineMetadata(PAYLOAD_KEY, payloads, target.constructor);
7
+ };
8
+ }
9
+ export function getPayloadMetadata(target) {
10
+ return Reflect.getMetadata(PAYLOAD_KEY, target) || [];
11
+ }
@@ -0,0 +1,5 @@
1
+ import { ResultGetAllControllers } from "../../interfaces/controller.js";
2
+ import { ClassType } from "../../interfaces/system.js";
3
+ export declare function toKebabCase(str: string): string;
4
+ export declare function toCamelCase(str: string): string;
5
+ export declare function loadControllers(customControllers?: string | ClassType<unknown>[]): Promise<ResultGetAllControllers>;
@@ -0,0 +1,31 @@
1
+ import system from "../../system/index.js";
2
+ import * as decorator from "../decorators/index.js";
3
+ const controllers = {};
4
+ export function toKebabCase(str) {
5
+ return str
6
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2") // adiciona hífen antes de maiúsculas
7
+ .replace(/([A-Z])([A-Z][a-z])/g, "$1-$2") // caso AAAa
8
+ .toLowerCase();
9
+ }
10
+ export function toCamelCase(str) {
11
+ return str
12
+ .toLowerCase()
13
+ .replace(/-([a-z0-9])/g, (_, char) => char.toUpperCase());
14
+ }
15
+ // function responsible per cache controllers in project;
16
+ export async function loadControllers(customControllers) {
17
+ var __allControllers = await system.getAllControllers(customControllers);
18
+ if (Array.isArray(__allControllers) && Object.keys(controllers).length === 0) {
19
+ return __allControllers.reduce((controllers, controller) => {
20
+ var controllerMetadata = decorator.getControllerMetadata(controller);
21
+ var methodsMetadata = decorator.getMethodMetadata(controller);
22
+ controllers[controllerMetadata.name] = {
23
+ metadata: controllerMetadata,
24
+ methods: Array.isArray(methodsMetadata) ? methodsMetadata : [],
25
+ controller: controller,
26
+ };
27
+ return controllers;
28
+ }, controllers);
29
+ }
30
+ return controllers;
31
+ }
@@ -0,0 +1,17 @@
1
+ import { HandleRequestResultError } from "../../interfaces/request.js";
2
+ export declare function Success(data: any): {
3
+ readonly success: true;
4
+ readonly data: any;
5
+ };
6
+ export declare function Exception(error: HandleRequestResultError["error"]): {
7
+ readonly success: false;
8
+ readonly error: {
9
+ name: string;
10
+ code: number;
11
+ message: any;
12
+ };
13
+ };
14
+ /**
15
+ * Validates data against a model (Entity or DTO) decorated with @Field
16
+ */
17
+ export declare function validateData(model: any, values: Record<string, any>): Record<string, string[]>;
@@ -0,0 +1,34 @@
1
+ import { MetadataStore } from "../../orm/index.js";
2
+ export function Success(data) {
3
+ return {
4
+ success: true,
5
+ data,
6
+ };
7
+ }
8
+ export function Exception(error) {
9
+ return {
10
+ success: false,
11
+ error: error,
12
+ };
13
+ }
14
+ /**
15
+ * Validates data against a model (Entity or DTO) decorated with @Field
16
+ */
17
+ export function validateData(model, values) {
18
+ const errors = {};
19
+ // Get fields from MetadataStore (supports both legacy and new ORM decorators)
20
+ const fields = MetadataStore.getFields(model);
21
+ for (const field of fields) {
22
+ const value = values[field.name || field.propertyKey];
23
+ if (field.validation) {
24
+ const validator = typeof field.validation === 'function' ? field.validation() : field.validation;
25
+ if (validator && typeof validator.validate === 'function') {
26
+ const fieldErrors = validator.validate(value, values);
27
+ if (fieldErrors && fieldErrors.length > 0) {
28
+ errors[field.name || field.propertyKey] = fieldErrors;
29
+ }
30
+ }
31
+ }
32
+ }
33
+ return errors;
34
+ }
@@ -0,0 +1,12 @@
1
+ import { CreateServerProps, ServerInstance } from '../interfaces/server.js';
2
+ import Auth from './security/controller/auth.js';
3
+ export default function Server(props: CreateServerProps): Promise<ServerInstance>;
4
+ export declare const auth: {
5
+ social: typeof Auth.social;
6
+ };
7
+ export * from './constants/index.js';
8
+ export * from './helpers/index.js';
9
+ export type { ModelResult } from '../interfaces/model.js';
10
+ export { Method, Controller, Field, Payload, IsPublic, IsPublicMethod, f } from './decorators/index.js';
11
+ export type { PayloadRequest } from '../interfaces/controller.js';
12
+ export { default as Context } from './context/index.js';
@@ -0,0 +1,147 @@
1
+ import Controller from './controller/index.js';
2
+ import system from '../system/index.js';
3
+ import permission from './security/middleware/permission.js';
4
+ import autorization from './security/middleware/autorization.js';
5
+ import Auth from './security/controller/auth.js';
6
+ import scheduler from '../scheduler/index.js';
7
+ import { OpposerDatabase, PostgresDriver, SQLiteDriver, MySQLDriver } from '../orm/index.js';
8
+ // Core
9
+ import opposerServer from './core/index.js';
10
+ import corsMiddleware from './core/middleware/cors.js';
11
+ import bodyParser from './core/middleware/body-parser.js';
12
+ import loggerMiddleware from './core/middleware/logger.js';
13
+ import Context from './context/index.js';
14
+ // Playground
15
+ import Playground from '../playground/index.js';
16
+ async function initializeDatabase(props, models) {
17
+ const settings = system.getSettingsFile();
18
+ const allModels = await system.getAllModels(models);
19
+ const entities = allModels.map((x) => x.entity);
20
+ let driver;
21
+ const type = props.type || settings.database?.type;
22
+ switch (type) {
23
+ case 'postgres':
24
+ driver = new PostgresDriver(props);
25
+ break;
26
+ case 'sqlite':
27
+ driver = new SQLiteDriver(props);
28
+ break;
29
+ case 'mysql':
30
+ driver = new MySQLDriver(props);
31
+ break;
32
+ default:
33
+ throw new Error(`[database] Unsupported database type: ${type}`);
34
+ }
35
+ const db = new OpposerDatabase(driver, entities);
36
+ await db.connect();
37
+ return db;
38
+ }
39
+ async function ensureManager(db, settings, models) {
40
+ if (!settings.auth)
41
+ return;
42
+ try {
43
+ const allModels = await system.getAllModels(models);
44
+ const userEntity = allModels.find((x) => x.name === 'User' || x.name === 'usr');
45
+ const roleEntity = allModels.find((x) => x.name === 'Role' || x.name === 'rl');
46
+ if (userEntity && roleEntity) {
47
+ const userRepository = db.getRepository(userEntity.entity);
48
+ const roleRepository = db.getRepository(roleEntity.entity);
49
+ let login = process.env.MANAGER_LOGIN || settings.manager?.login;
50
+ let firstName = process.env.MANAGER_FIRST_NAME || settings.manager?.firstName;
51
+ let lastName = process.env.MANAGER_LAST_NAME || settings.manager?.lastName;
52
+ let password = process.env.MANAGER_PASSWORD || settings.manager?.password;
53
+ let manager = await userRepository.findOne({
54
+ where: { lg: login },
55
+ });
56
+ if (!manager) {
57
+ console.log('-> Creating manager account.');
58
+ manager = await userRepository.insert({
59
+ fn: firstName,
60
+ ln: lastName,
61
+ lg: login,
62
+ ps: password,
63
+ ac: true,
64
+ });
65
+ }
66
+ const hasAllRole = await roleRepository.findOne({
67
+ where: { usr: manager.id, sm: 'all', mt: 'all' },
68
+ });
69
+ if (!hasAllRole) {
70
+ console.log('-> Creating all-access role for manager.');
71
+ await roleRepository.insert({
72
+ usr: manager.id,
73
+ sm: 'all',
74
+ mt: 'all',
75
+ });
76
+ }
77
+ }
78
+ }
79
+ catch (error) {
80
+ console.error('[database] Manager creation failed:', error);
81
+ }
82
+ }
83
+ export default async function Server(props) {
84
+ console.log('-> Initializing database connection.');
85
+ const settings = system.getSettingsFile();
86
+ if (!settings.database) {
87
+ throw new Error('-> It is necessary to inform database properties.');
88
+ }
89
+ const db = await initializeDatabase(settings.database, props.models);
90
+ await ensureManager(db, settings, props.models);
91
+ // Store database in server context
92
+ Context.set('db', db);
93
+ Context.set('models', props.models);
94
+ Context.set('controllers', props.controllers);
95
+ console.log('-> Initializing scheduler.');
96
+ await scheduler.initialize(props.schedules);
97
+ scheduler.start();
98
+ console.log('-> Initializing core server.');
99
+ let url = '/opposer';
100
+ if (settings.url) {
101
+ url = settings.url;
102
+ }
103
+ // 1. Logger
104
+ if (settings.logger) {
105
+ opposerServer.use(loggerMiddleware());
106
+ }
107
+ // 2. CORS (Global)
108
+ if (props.cors || settings.cors) {
109
+ opposerServer.use(corsMiddleware(props.cors || settings.cors));
110
+ }
111
+ // 3. Body Parser
112
+ opposerServer.use(bodyParser());
113
+ // 4. Playground
114
+ opposerServer.use(Playground);
115
+ // 5. Auth/Security Middlewares
116
+ if (settings.auth) {
117
+ opposerServer.use(autorization);
118
+ opposerServer.use(permission);
119
+ }
120
+ // 6. Main Route Handler
121
+ opposerServer.use(async (req, res, next) => {
122
+ if (req.url === url && req.method === 'POST') {
123
+ await Controller(req, res);
124
+ }
125
+ else {
126
+ next();
127
+ }
128
+ });
129
+ // 7. 404 Handler
130
+ opposerServer.use((req, res) => {
131
+ res.status(404).json({ message: `Route ${req.method} ${req.url} not found` });
132
+ });
133
+ function initialize() {
134
+ opposerServer.listen(settings.port, () => {
135
+ console.log(`⚡Opposer Core is running in port ${settings.port}`);
136
+ });
137
+ }
138
+ return {
139
+ opposer: opposerServer,
140
+ initialize,
141
+ };
142
+ }
143
+ export const auth = { social: Auth.social };
144
+ export * from './constants/index.js';
145
+ export * from './helpers/index.js';
146
+ export { Method, Controller, Field, Payload, IsPublic, IsPublicMethod, f } from './decorators/index.js';
147
+ export { default as Context } from './context/index.js';