@typetron/websockets 0.3.2 → 0.3.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 (412) hide show
  1. package/Container/ClassResolver.d.ts +9 -0
  2. package/Container/ClassResolver.d.ts.map +1 -0
  3. package/Container/ClassResolver.js +88 -0
  4. package/Container/ClassResolver.js.map +1 -0
  5. package/Container/Container.d.ts +25 -0
  6. package/Container/Container.d.ts.map +1 -0
  7. package/Container/Container.js +122 -0
  8. package/Container/Container.js.map +1 -0
  9. package/Container/Contracts.d.ts +3 -0
  10. package/Container/Contracts.d.ts.map +1 -0
  11. package/Container/Contracts.js +3 -0
  12. package/Container/Contracts.js.map +1 -0
  13. package/Container/Decorators.d.ts +5 -0
  14. package/Container/Decorators.d.ts.map +1 -0
  15. package/Container/Decorators.js +22 -0
  16. package/Container/Decorators.js.map +1 -0
  17. package/Container/Metadata.d.ts +21 -0
  18. package/Container/Metadata.d.ts.map +1 -0
  19. package/Container/Metadata.js +19 -0
  20. package/Container/Metadata.js.map +1 -0
  21. package/Container/Resolver.d.ts +19 -0
  22. package/Container/Resolver.d.ts.map +1 -0
  23. package/Container/Resolver.js +16 -0
  24. package/Container/Resolver.js.map +1 -0
  25. package/Container/index.d.ts +6 -0
  26. package/Container/index.d.ts.map +1 -0
  27. package/Container/index.js +18 -0
  28. package/Container/index.js.map +1 -0
  29. package/Database/Connection.d.ts +24 -0
  30. package/Database/Connection.d.ts.map +1 -0
  31. package/Database/Connection.js +43 -0
  32. package/Database/Connection.js.map +1 -0
  33. package/Database/Decorators.d.ts +32 -0
  34. package/Database/Decorators.d.ts.map +1 -0
  35. package/Database/Decorators.js +114 -0
  36. package/Database/Decorators.js.map +1 -0
  37. package/Database/Drivers/DatabaseDriver.d.ts +31 -0
  38. package/Database/Drivers/DatabaseDriver.d.ts.map +1 -0
  39. package/Database/Drivers/DatabaseDriver.js +7 -0
  40. package/Database/Drivers/DatabaseDriver.js.map +1 -0
  41. package/Database/Drivers/MySQL/MysqlDriver.d.ts +38 -0
  42. package/Database/Drivers/MySQL/MysqlDriver.d.ts.map +1 -0
  43. package/Database/Drivers/MySQL/MysqlDriver.js +81 -0
  44. package/Database/Drivers/MySQL/MysqlDriver.js.map +1 -0
  45. package/Database/Drivers/MySQL/Schema.d.ts +6 -0
  46. package/Database/Drivers/MySQL/Schema.d.ts.map +1 -0
  47. package/Database/Drivers/MySQL/Schema.js +12 -0
  48. package/Database/Drivers/MySQL/Schema.js.map +1 -0
  49. package/Database/Drivers/SQL/Schema.d.ts +12 -0
  50. package/Database/Drivers/SQL/Schema.d.ts.map +1 -0
  51. package/Database/Drivers/SQL/Schema.js +100 -0
  52. package/Database/Drivers/SQL/Schema.js.map +1 -0
  53. package/Database/Drivers/SQL/Statements/Alter.d.ts +8 -0
  54. package/Database/Drivers/SQL/Statements/Alter.d.ts.map +1 -0
  55. package/Database/Drivers/SQL/Statements/Alter.js +25 -0
  56. package/Database/Drivers/SQL/Statements/Alter.js.map +1 -0
  57. package/Database/Drivers/SQL/Statements/BaseStatement.d.ts +13 -0
  58. package/Database/Drivers/SQL/Statements/BaseStatement.d.ts.map +1 -0
  59. package/Database/Drivers/SQL/Statements/BaseStatement.js +47 -0
  60. package/Database/Drivers/SQL/Statements/BaseStatement.js.map +1 -0
  61. package/Database/Drivers/SQL/Statements/Create.d.ts +7 -0
  62. package/Database/Drivers/SQL/Statements/Create.d.ts.map +1 -0
  63. package/Database/Drivers/SQL/Statements/Create.js +22 -0
  64. package/Database/Drivers/SQL/Statements/Create.js.map +1 -0
  65. package/Database/Drivers/SQL/Statements/Delete.d.ts +6 -0
  66. package/Database/Drivers/SQL/Statements/Delete.d.ts.map +1 -0
  67. package/Database/Drivers/SQL/Statements/Delete.js +22 -0
  68. package/Database/Drivers/SQL/Statements/Delete.js.map +1 -0
  69. package/Database/Drivers/SQL/Statements/Insert.d.ts +7 -0
  70. package/Database/Drivers/SQL/Statements/Insert.d.ts.map +1 -0
  71. package/Database/Drivers/SQL/Statements/Insert.js +24 -0
  72. package/Database/Drivers/SQL/Statements/Insert.js.map +1 -0
  73. package/Database/Drivers/SQL/Statements/Select.d.ts +8 -0
  74. package/Database/Drivers/SQL/Statements/Select.d.ts.map +1 -0
  75. package/Database/Drivers/SQL/Statements/Select.js +54 -0
  76. package/Database/Drivers/SQL/Statements/Select.js.map +1 -0
  77. package/Database/Drivers/SQL/Statements/Update.d.ts +7 -0
  78. package/Database/Drivers/SQL/Statements/Update.d.ts.map +1 -0
  79. package/Database/Drivers/SQL/Statements/Update.js +35 -0
  80. package/Database/Drivers/SQL/Statements/Update.js.map +1 -0
  81. package/Database/Drivers/SQLite/Schema.d.ts +6 -0
  82. package/Database/Drivers/SQLite/Schema.d.ts.map +1 -0
  83. package/Database/Drivers/SQLite/Schema.js +12 -0
  84. package/Database/Drivers/SQLite/Schema.js.map +1 -0
  85. package/Database/Drivers/SQLite/SqliteDriver.d.ts +39 -0
  86. package/Database/Drivers/SQLite/SqliteDriver.d.ts.map +1 -0
  87. package/Database/Drivers/SQLite/SqliteDriver.js +98 -0
  88. package/Database/Drivers/SQLite/SqliteDriver.js.map +1 -0
  89. package/Database/Drivers/SchemaContract.d.ts +11 -0
  90. package/Database/Drivers/SchemaContract.d.ts.map +1 -0
  91. package/Database/Drivers/SchemaContract.js +10 -0
  92. package/Database/Drivers/SchemaContract.js.map +1 -0
  93. package/Database/Drivers/Statement.d.ts +9 -0
  94. package/Database/Drivers/Statement.d.ts.map +1 -0
  95. package/Database/Drivers/Statement.js +14 -0
  96. package/Database/Drivers/Statement.js.map +1 -0
  97. package/Database/Drivers/index.d.ts +5 -0
  98. package/Database/Drivers/index.d.ts.map +1 -0
  99. package/Database/Drivers/index.js +17 -0
  100. package/Database/Drivers/index.js.map +1 -0
  101. package/Database/Entity.d.ts +65 -0
  102. package/Database/Entity.d.ts.map +1 -0
  103. package/Database/Entity.js +252 -0
  104. package/Database/Entity.js.map +1 -0
  105. package/Database/EntityNotFoundError.d.ts +6 -0
  106. package/Database/EntityNotFoundError.d.ts.map +1 -0
  107. package/Database/EntityNotFoundError.js +11 -0
  108. package/Database/EntityNotFoundError.js.map +1 -0
  109. package/Database/EntityProxyHandler.d.ts +6 -0
  110. package/Database/EntityProxyHandler.d.ts.map +1 -0
  111. package/Database/EntityProxyHandler.js +31 -0
  112. package/Database/EntityProxyHandler.js.map +1 -0
  113. package/Database/EntityQuery.d.ts +29 -0
  114. package/Database/EntityQuery.d.ts.map +1 -0
  115. package/Database/EntityQuery.js +157 -0
  116. package/Database/EntityQuery.js.map +1 -0
  117. package/Database/Expression.d.ts +6 -0
  118. package/Database/Expression.d.ts.map +1 -0
  119. package/Database/Expression.js +13 -0
  120. package/Database/Expression.js.map +1 -0
  121. package/Database/Fields.d.ts +156 -0
  122. package/Database/Fields.d.ts.map +1 -0
  123. package/Database/Fields.js +549 -0
  124. package/Database/Fields.js.map +1 -0
  125. package/Database/Helpers.d.ts +2 -0
  126. package/Database/Helpers.d.ts.map +1 -0
  127. package/Database/Helpers.js +11 -0
  128. package/Database/Helpers.js.map +1 -0
  129. package/Database/List.d.ts +25 -0
  130. package/Database/List.d.ts.map +1 -0
  131. package/Database/List.js +50 -0
  132. package/Database/List.js.map +1 -0
  133. package/Database/ORM/BaseRelationship.d.ts +8 -0
  134. package/Database/ORM/BaseRelationship.d.ts.map +1 -0
  135. package/Database/ORM/BaseRelationship.js +11 -0
  136. package/Database/ORM/BaseRelationship.js.map +1 -0
  137. package/Database/Query.d.ts +62 -0
  138. package/Database/Query.d.ts.map +1 -0
  139. package/Database/Query.js +263 -0
  140. package/Database/Query.js.map +1 -0
  141. package/Database/Types.d.ts +118 -0
  142. package/Database/Types.d.ts.map +1 -0
  143. package/Database/Types.js +95 -0
  144. package/Database/Types.js.map +1 -0
  145. package/Database/index.d.ts +20 -0
  146. package/Database/index.d.ts.map +1 -0
  147. package/Database/index.js +20 -0
  148. package/Database/index.js.map +1 -0
  149. package/Forms/Decorators.d.ts +7 -0
  150. package/Forms/Decorators.d.ts.map +1 -0
  151. package/Forms/Decorators.js +29 -0
  152. package/Forms/Decorators.js.map +1 -0
  153. package/Forms/Form.d.ts +18 -0
  154. package/Forms/Form.d.ts.map +1 -0
  155. package/Forms/Form.js +70 -0
  156. package/Forms/Form.js.map +1 -0
  157. package/Forms/FormFields.d.ts +10 -0
  158. package/Forms/FormFields.d.ts.map +1 -0
  159. package/Forms/FormFields.js +36 -0
  160. package/Forms/FormFields.js.map +1 -0
  161. package/Forms/index.d.ts +4 -0
  162. package/Forms/index.d.ts.map +1 -0
  163. package/Forms/index.js +16 -0
  164. package/Forms/index.js.map +1 -0
  165. package/Framework/App.d.ts +7 -0
  166. package/Framework/App.d.ts.map +1 -0
  167. package/Framework/App.js +10 -0
  168. package/Framework/App.js.map +1 -0
  169. package/Framework/Application.d.ts +18 -0
  170. package/Framework/Application.d.ts.map +1 -0
  171. package/Framework/Application.js +94 -0
  172. package/Framework/Application.js.map +1 -0
  173. package/Framework/Auth/Auth.d.ts +25 -0
  174. package/Framework/Auth/Auth.d.ts.map +1 -0
  175. package/Framework/Auth/Auth.js +114 -0
  176. package/Framework/Auth/Auth.js.map +1 -0
  177. package/Framework/Auth/Authenticatable.d.ts +7 -0
  178. package/Framework/Auth/Authenticatable.d.ts.map +1 -0
  179. package/Framework/Auth/Authenticatable.js +3 -0
  180. package/Framework/Auth/Authenticatable.js.map +1 -0
  181. package/Framework/Auth/User.d.ts +11 -0
  182. package/Framework/Auth/User.d.ts.map +1 -0
  183. package/Framework/Auth/User.js +38 -0
  184. package/Framework/Auth/User.js.map +1 -0
  185. package/Framework/Auth/index.d.ts +6 -0
  186. package/Framework/Auth/index.d.ts.map +1 -0
  187. package/Framework/Auth/index.js +46 -0
  188. package/Framework/Auth/index.js.map +1 -0
  189. package/Framework/Config/AppConfig.d.ts +19 -0
  190. package/Framework/Config/AppConfig.d.ts.map +1 -0
  191. package/Framework/Config/AppConfig.js +12 -0
  192. package/Framework/Config/AppConfig.js.map +1 -0
  193. package/Framework/Config/AuthConfig.d.ts +9 -0
  194. package/Framework/Config/AuthConfig.d.ts.map +1 -0
  195. package/Framework/Config/AuthConfig.js +8 -0
  196. package/Framework/Config/AuthConfig.js.map +1 -0
  197. package/Framework/Config/BaseConfig.d.ts +7 -0
  198. package/Framework/Config/BaseConfig.d.ts.map +1 -0
  199. package/Framework/Config/BaseConfig.js +13 -0
  200. package/Framework/Config/BaseConfig.js.map +1 -0
  201. package/Framework/Config/DatabaseConfig.d.ts +10 -0
  202. package/Framework/Config/DatabaseConfig.d.ts.map +1 -0
  203. package/Framework/Config/DatabaseConfig.js +25 -0
  204. package/Framework/Config/DatabaseConfig.js.map +1 -0
  205. package/Framework/Config/index.d.ts +5 -0
  206. package/Framework/Config/index.d.ts.map +1 -0
  207. package/Framework/Config/index.js +17 -0
  208. package/Framework/Config/index.js.map +1 -0
  209. package/Framework/Middleware/StaticAssetsMiddleware.d.ts +15 -0
  210. package/Framework/Middleware/StaticAssetsMiddleware.d.ts.map +1 -0
  211. package/Framework/Middleware/StaticAssetsMiddleware.js +105 -0
  212. package/Framework/Middleware/StaticAssetsMiddleware.js.map +1 -0
  213. package/Framework/Provider.d.ts +6 -0
  214. package/Framework/Provider.d.ts.map +1 -0
  215. package/Framework/Provider.js +21 -0
  216. package/Framework/Provider.js.map +1 -0
  217. package/Framework/Providers/DatabaseProvider.d.ts +10 -0
  218. package/Framework/Providers/DatabaseProvider.d.ts.map +1 -0
  219. package/Framework/Providers/DatabaseProvider.js +64 -0
  220. package/Framework/Providers/DatabaseProvider.js.map +1 -0
  221. package/Framework/Providers/WebsocketsProvider.d.ts +13 -0
  222. package/Framework/Providers/WebsocketsProvider.d.ts.map +1 -0
  223. package/Framework/Providers/WebsocketsProvider.js +123 -0
  224. package/Framework/Providers/WebsocketsProvider.js.map +1 -0
  225. package/Framework/Resolvers/AuthResolver.d.ts +6 -0
  226. package/Framework/Resolvers/AuthResolver.d.ts.map +1 -0
  227. package/Framework/Resolvers/AuthResolver.js +15 -0
  228. package/Framework/Resolvers/AuthResolver.js.map +1 -0
  229. package/Framework/Resolvers/EntityResolver.d.ts +10 -0
  230. package/Framework/Resolvers/EntityResolver.d.ts.map +1 -0
  231. package/Framework/Resolvers/EntityResolver.js +41 -0
  232. package/Framework/Resolvers/EntityResolver.js.map +1 -0
  233. package/Framework/Resolvers/FormResolver.d.ts +10 -0
  234. package/Framework/Resolvers/FormResolver.d.ts.map +1 -0
  235. package/Framework/Resolvers/FormResolver.js +33 -0
  236. package/Framework/Resolvers/FormResolver.js.map +1 -0
  237. package/Framework/RootDir.d.ts +3 -0
  238. package/Framework/RootDir.d.ts.map +1 -0
  239. package/Framework/RootDir.js +7 -0
  240. package/Framework/RootDir.js.map +1 -0
  241. package/Framework/index.d.ts +7 -0
  242. package/Framework/index.d.ts.map +1 -0
  243. package/Framework/index.js +19 -0
  244. package/Framework/index.js.map +1 -0
  245. package/Frontend/Websockets/index.d.ts +3 -2
  246. package/Frontend/Websockets/index.d.ts.map +1 -1
  247. package/Frontend/Websockets/index.js +3 -2
  248. package/Frontend/Websockets/index.js.map +1 -1
  249. package/Readme.md +52 -5
  250. package/Router/BaseController.d.ts +5 -0
  251. package/Router/BaseController.d.ts.map +1 -0
  252. package/Router/BaseController.js +21 -0
  253. package/Router/BaseController.js.map +1 -0
  254. package/Router/Decorators.d.ts +22 -0
  255. package/Router/Decorators.d.ts.map +1 -0
  256. package/Router/Decorators.js +171 -0
  257. package/Router/Decorators.js.map +1 -0
  258. package/Router/Guard.d.ts +5 -0
  259. package/Router/Guard.d.ts.map +1 -0
  260. package/Router/Guard.js +11 -0
  261. package/Router/Guard.js.map +1 -0
  262. package/Router/Http/Contracts.d.ts +4 -0
  263. package/Router/Http/Contracts.d.ts.map +1 -0
  264. package/Router/Http/Contracts.js +3 -0
  265. package/Router/Http/Contracts.js.map +1 -0
  266. package/Router/Http/ErrorHandler.d.ts +10 -0
  267. package/Router/Http/ErrorHandler.d.ts.map +1 -0
  268. package/Router/Http/ErrorHandler.js +52 -0
  269. package/Router/Http/ErrorHandler.js.map +1 -0
  270. package/Router/Http/ErrorHandlerInterface.d.ts +6 -0
  271. package/Router/Http/ErrorHandlerInterface.d.ts.map +1 -0
  272. package/Router/Http/ErrorHandlerInterface.js +7 -0
  273. package/Router/Http/ErrorHandlerInterface.js.map +1 -0
  274. package/Router/Http/Errors/HttpError.d.ts +8 -0
  275. package/Router/Http/Errors/HttpError.d.ts.map +1 -0
  276. package/Router/Http/Errors/HttpError.js +16 -0
  277. package/Router/Http/Errors/HttpError.js.map +1 -0
  278. package/Router/Http/Handler.d.ts +16 -0
  279. package/Router/Http/Handler.d.ts.map +1 -0
  280. package/Router/Http/Handler.js +132 -0
  281. package/Router/Http/Handler.js.map +1 -0
  282. package/Router/Http/Request.d.ts +23 -0
  283. package/Router/Http/Request.d.ts.map +1 -0
  284. package/Router/Http/Request.js +152 -0
  285. package/Router/Http/Request.js.map +1 -0
  286. package/Router/Http/Response.d.ts +18 -0
  287. package/Router/Http/Response.d.ts.map +1 -0
  288. package/Router/Http/Response.js +52 -0
  289. package/Router/Http/Response.js.map +1 -0
  290. package/Router/Http/index.d.ts +84 -0
  291. package/Router/Http/index.d.ts.map +1 -0
  292. package/Router/Http/index.js +100 -0
  293. package/Router/Http/index.js.map +1 -0
  294. package/Router/Metadata.d.ts +32 -0
  295. package/Router/Metadata.d.ts.map +1 -0
  296. package/Router/Metadata.js +26 -0
  297. package/Router/Metadata.js.map +1 -0
  298. package/Router/Middleware.d.ts +6 -0
  299. package/Router/Middleware.d.ts.map +1 -0
  300. package/Router/Middleware.js +3 -0
  301. package/Router/Middleware.js.map +1 -0
  302. package/Router/Route.d.ts +24 -0
  303. package/Router/Route.d.ts.map +1 -0
  304. package/Router/Route.js +111 -0
  305. package/Router/Route.js.map +1 -0
  306. package/Router/RouteNotFoundError.d.ts +4 -0
  307. package/Router/RouteNotFoundError.d.ts.map +1 -0
  308. package/Router/RouteNotFoundError.js +10 -0
  309. package/Router/RouteNotFoundError.js.map +1 -0
  310. package/Router/Router.d.ts +13 -0
  311. package/Router/Router.d.ts.map +1 -0
  312. package/Router/Router.js +33 -0
  313. package/Router/Router.js.map +1 -0
  314. package/Router/Websockets/Handler.d.ts +13 -0
  315. package/Router/Websockets/Handler.d.ts.map +1 -0
  316. package/Router/Websockets/Handler.js +60 -0
  317. package/Router/Websockets/Handler.js.map +1 -0
  318. package/Router/Websockets/WebsocketEvent.d.ts +16 -0
  319. package/Router/Websockets/WebsocketEvent.d.ts.map +1 -0
  320. package/Router/Websockets/WebsocketEvent.js +54 -0
  321. package/Router/Websockets/WebsocketEvent.js.map +1 -0
  322. package/Router/Websockets/index.d.ts +17 -0
  323. package/Router/Websockets/index.d.ts.map +1 -0
  324. package/Router/Websockets/index.js +58 -0
  325. package/Router/Websockets/index.js.map +1 -0
  326. package/Router/Websockets/types.d.ts +4 -0
  327. package/Router/Websockets/types.d.ts.map +1 -1
  328. package/Router/index.d.ts +7 -0
  329. package/Router/index.d.ts.map +1 -0
  330. package/Router/index.js +19 -0
  331. package/Router/index.js.map +1 -0
  332. package/Storage/File.d.ts +12 -0
  333. package/Storage/File.d.ts.map +1 -0
  334. package/Storage/File.js +47 -0
  335. package/Storage/File.js.map +1 -0
  336. package/Storage/Image.d.ts +4 -0
  337. package/Storage/Image.d.ts.map +1 -0
  338. package/Storage/Image.js +8 -0
  339. package/Storage/Image.js.map +1 -0
  340. package/Storage/Storage.d.ts +13 -0
  341. package/Storage/Storage.d.ts.map +1 -0
  342. package/Storage/Storage.js +111 -0
  343. package/Storage/Storage.js.map +1 -0
  344. package/Storage/index.d.ts +5 -0
  345. package/Storage/index.d.ts.map +1 -0
  346. package/Storage/index.js +17 -0
  347. package/Storage/index.js.map +1 -0
  348. package/Storage/utils.d.ts +6 -0
  349. package/Storage/utils.d.ts.map +1 -0
  350. package/Storage/utils.js +21 -0
  351. package/Storage/utils.js.map +1 -0
  352. package/Support/Array.d.ts +25 -0
  353. package/Support/Array.d.ts.map +1 -0
  354. package/Support/Array.js +91 -0
  355. package/Support/Array.js.map +1 -0
  356. package/Support/Math.d.ts +7 -0
  357. package/Support/Math.d.ts.map +1 -0
  358. package/Support/Math.js +8 -0
  359. package/Support/Math.js.map +1 -0
  360. package/Support/Metadata.d.ts +15 -0
  361. package/Support/Metadata.d.ts.map +1 -0
  362. package/Support/Metadata.js +21 -0
  363. package/Support/Metadata.js.map +1 -0
  364. package/Support/String.d.ts +12 -0
  365. package/Support/String.d.ts.map +1 -0
  366. package/Support/String.js +24 -0
  367. package/Support/String.js.map +1 -0
  368. package/Support/index.d.ts +14 -0
  369. package/Support/index.d.ts.map +1 -0
  370. package/Support/index.js +6 -0
  371. package/Support/index.js.map +1 -0
  372. package/Validation/Rule.d.ts +7 -0
  373. package/Validation/Rule.d.ts.map +1 -0
  374. package/Validation/Rule.js +7 -0
  375. package/Validation/Rule.js.map +1 -0
  376. package/Validation/RuleInterface.d.ts +7 -0
  377. package/Validation/RuleInterface.d.ts.map +1 -0
  378. package/Validation/RuleInterface.js +3 -0
  379. package/Validation/RuleInterface.js.map +1 -0
  380. package/Validation/Rules/Email.d.ts +4 -0
  381. package/Validation/Rules/Email.d.ts.map +1 -0
  382. package/Validation/Rules/Email.js +21 -0
  383. package/Validation/Rules/Email.js.map +1 -0
  384. package/Validation/Rules/MaxLength.d.ts +4 -0
  385. package/Validation/Rules/MaxLength.d.ts.map +1 -0
  386. package/Validation/Rules/MaxLength.js +20 -0
  387. package/Validation/Rules/MaxLength.js.map +1 -0
  388. package/Validation/Rules/MinLength.d.ts +4 -0
  389. package/Validation/Rules/MinLength.d.ts.map +1 -0
  390. package/Validation/Rules/MinLength.js +20 -0
  391. package/Validation/Rules/MinLength.js.map +1 -0
  392. package/Validation/Rules/Optional.d.ts +4 -0
  393. package/Validation/Rules/Optional.d.ts.map +1 -0
  394. package/Validation/Rules/Optional.js +20 -0
  395. package/Validation/Rules/Optional.js.map +1 -0
  396. package/Validation/Rules/Required.d.ts +4 -0
  397. package/Validation/Rules/Required.d.ts.map +1 -0
  398. package/Validation/Rules/Required.js +27 -0
  399. package/Validation/Rules/Required.js.map +1 -0
  400. package/Validation/Validator.d.ts +12 -0
  401. package/Validation/Validator.d.ts.map +1 -0
  402. package/Validation/Validator.js +11 -0
  403. package/Validation/Validator.js.map +1 -0
  404. package/Validation/index.d.ts +10 -0
  405. package/Validation/index.d.ts.map +1 -0
  406. package/Validation/index.js +22 -0
  407. package/Validation/index.js.map +1 -0
  408. package/index.d.ts +4 -1
  409. package/index.d.ts.map +1 -1
  410. package/index.js +2 -1
  411. package/index.js.map +1 -1
  412. package/package.json +13 -3
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entity = void 0;
4
+ const EntityProxyHandler_1 = require("./EntityProxyHandler");
5
+ const EntityQuery_1 = require("./EntityQuery");
6
+ const Decorators_1 = require("./Decorators");
7
+ const EntityNotFoundError_1 = require("./EntityNotFoundError");
8
+ class Entity {
9
+ constructor() {
10
+ this.exists = false;
11
+ // tslint:disable-next-line:no-any
12
+ this.original = {};
13
+ const entityProxyHandler = new EntityProxyHandler_1.EntityProxyHandler();
14
+ const proxy = new Proxy(this, entityProxyHandler);
15
+ // Weird JS issues: "filling" an instance with data is not possible since the default values of child entities
16
+ // are assigned after the constructor of base class (this constructor exactly) is called.
17
+ // Calling "proxy.fill will update the instance but then the default values will overwrite them"
18
+ // proxy.fill(this.original = data || {})
19
+ this.hydrateWithRelationships();
20
+ return proxy;
21
+ }
22
+ static get metadata() {
23
+ return Reflect.getMetadata(Decorators_1.EntityMetadataKey, this.prototype);
24
+ }
25
+ get metadata() {
26
+ return this.static.metadata;
27
+ }
28
+ get static() {
29
+ return this.constructor;
30
+ }
31
+ static where(column, operator, value, boolean) {
32
+ const columnMetadata = {
33
+ ...this.metadata.columns,
34
+ ...this.metadata.relationships
35
+ }[column];
36
+ return this.newQuery().where(columnMetadata.column, operator, value, boolean);
37
+ }
38
+ static whereIn(column, value, boolean) {
39
+ const columnMetadata = {
40
+ ...this.metadata.columns,
41
+ ...this.metadata.relationships
42
+ }[column];
43
+ return this.newQuery().whereIn(columnMetadata.column, value, boolean);
44
+ }
45
+ static whereNotIn(column, value) {
46
+ const columnMetadata = {
47
+ ...this.metadata.columns,
48
+ ...this.metadata.relationships
49
+ }[column];
50
+ return this.newQuery().whereNotIn(columnMetadata.column, value);
51
+ }
52
+ static whereLike(column, value, boolean) {
53
+ const columnMetadata = {
54
+ ...this.metadata.columns,
55
+ ...this.metadata.relationships
56
+ }[column];
57
+ return this.newQuery().whereLike(columnMetadata.column, value, boolean);
58
+ }
59
+ static async first(...columns) {
60
+ return this.newQuery().first(...columns);
61
+ }
62
+ // static first2: <T extends Entity>(this: EntityConstructor<T>, ...params: Parameters<Query<T>['first']>) => Query<T>['first'];
63
+ // tslint:disable-next-line:no-any
64
+ static async firstOrNew(properties, values) {
65
+ return this.newQuery().firstOrNew(properties, values);
66
+ }
67
+ // tslint:disable-next-line:no-any
68
+ static async firstOrCreate(properties, values) {
69
+ return (await this.firstOrNew(properties, values)).save();
70
+ }
71
+ static orderBy(column, direction) {
72
+ return this.newQuery().orderBy(column, direction);
73
+ }
74
+ static getTable() {
75
+ return this.metadata.table || this.name.toLowerCase(); // TODO make metadata.table un-optional
76
+ }
77
+ static new(data, exists = false) {
78
+ const instance = new this();
79
+ instance.fill(instance.original = data);
80
+ instance.exists = exists;
81
+ return instance;
82
+ }
83
+ static create(data) {
84
+ return this.new(data).save();
85
+ }
86
+ static async insert(data) {
87
+ const dataToSave = data.map(piece => {
88
+ const instance = new this();
89
+ return instance.getDataToSave(piece);
90
+ });
91
+ const query = this.newQuery();
92
+ await query.insert(dataToSave);
93
+ }
94
+ static async get(...columns) {
95
+ return this.newQuery().get(...columns);
96
+ }
97
+ static with(...relations) {
98
+ return this.newQuery().with(...relations);
99
+ }
100
+ static withCount(...relations) {
101
+ return this.newQuery().withCount(...relations);
102
+ }
103
+ static async find(id) {
104
+ return this.newQuery().where('id', id).first();
105
+ }
106
+ static async findOrFail(id) {
107
+ const query = this.newQuery().where('id', id);
108
+ const instance = await query.first();
109
+ if (!instance || !Object.entries(instance).length) {
110
+ throw new EntityNotFoundError_1.EntityNotFoundError(this, `No records found for entity '${this.name}' when querying with parameters [${query.getBindings().join(', ')}]`);
111
+ }
112
+ return instance;
113
+ }
114
+ static getPrimaryKey() {
115
+ return 'id';
116
+ }
117
+ static hydrate(modelType, models, exist = false) {
118
+ return models.map(data => {
119
+ return modelType.new(data, exist);
120
+ });
121
+ }
122
+ static newQuery() {
123
+ return (new EntityQuery_1.EntityQuery(this)).table(this.getTable());
124
+ }
125
+ getTable() {
126
+ return this.static.getTable();
127
+ }
128
+ async load(...relations) {
129
+ await this.newQuery().with(...relations).eagerLoadRelationships([this]);
130
+ return this;
131
+ }
132
+ async loadCount(...relations) {
133
+ await this.newQuery().withCount(...relations).eagerLoadRelationshipsCounts([this]);
134
+ return this;
135
+ }
136
+ newQuery() {
137
+ return this.static.newQuery();
138
+ }
139
+ static async delete(...ids) {
140
+ await this.newQuery().whereIn(this.getPrimaryKey(), ids).delete();
141
+ }
142
+ getDataToSave(data) {
143
+ this.fill(data);
144
+ this.updateTimestamps();
145
+ // tslint:disable-next-line:no-any
146
+ const dataToSave = {};
147
+ // TODO diff the values so we don't update every value from the entity
148
+ Object.values({ ...this.metadata.columns, ...this.metadata.relationships }).forEach(field => {
149
+ dataToSave[field.column] = field.value(this, field.property);
150
+ });
151
+ return dataToSave;
152
+ }
153
+ hydrateWithRelationships() {
154
+ const relationships = this.metadata.allRelationships;
155
+ Object.keys(relationships).forEach(key => {
156
+ if (!this[key]) {
157
+ // @ts-ignore
158
+ this[key] = new relationships[key].relationClass(relationships[key], this);
159
+ }
160
+ });
161
+ }
162
+ fill(data) {
163
+ const relationships = this.metadata.relationships;
164
+ Object.keys(relationships).forEach(key => {
165
+ relationships[key].update(this);
166
+ });
167
+ const fields = { ...this.metadata.columns, ...this.metadata.relationships, ...this.metadata.inverseRelationships };
168
+ Object.keys(data).forEach(key => {
169
+ const field = fields[key];
170
+ if (field) {
171
+ const value = data[key];
172
+ field.set(this, this.convertValueByType(value, field));
173
+ }
174
+ });
175
+ return this;
176
+ }
177
+ async delete() {
178
+ if (!this.exists) {
179
+ return;
180
+ }
181
+ await this.newQuery().where(this.getPrimaryKey(), this[this.getPrimaryKey()]).delete();
182
+ }
183
+ static async truncate() {
184
+ await this.newQuery().truncate();
185
+ }
186
+ async save(data = {}) {
187
+ const dataToSave = this.getDataToSave(data);
188
+ const query = this.newQuery();
189
+ if (this.exists) {
190
+ delete dataToSave[this.getPrimaryKey()];
191
+ await query.where(this.getPrimaryKey(), this[this.getPrimaryKey()]).update(dataToSave);
192
+ }
193
+ else {
194
+ const id = await query.insertOne(dataToSave);
195
+ this.exists = true;
196
+ this.fill({ id });
197
+ }
198
+ return this;
199
+ }
200
+ getPrimaryKey() {
201
+ return this.static.getPrimaryKey();
202
+ }
203
+ getPrimaryKeyValue() {
204
+ return this[this.static.getPrimaryKey()];
205
+ }
206
+ toJSON() {
207
+ return Object.keys({ ...this.metadata.columns, ...this.metadata.allRelationships })
208
+ .reduce((obj, key) => {
209
+ if (this.hasOwnProperty(key)) {
210
+ obj[key] = this[key];
211
+ }
212
+ return obj;
213
+ }, {});
214
+ }
215
+ updateTimestamps() {
216
+ const metadata = this.metadata;
217
+ const columnsToFill = {};
218
+ const createdAtValue = metadata.createdAtColumn ? this[metadata.createdAtColumn] : undefined;
219
+ if (metadata.createdAtColumn && !createdAtValue) {
220
+ columnsToFill[metadata.createdAtColumn] = new Date();
221
+ }
222
+ const updatedAtValue = metadata.updatedAtColumn ? this[metadata.updatedAtColumn] : undefined;
223
+ if (metadata.updatedAtColumn &&
224
+ (!updatedAtValue || (updatedAtValue === null || updatedAtValue === void 0 ? void 0 : updatedAtValue.getTime()) === new Date(this.original[metadata.updatedAtColumn]).getTime())) {
225
+ columnsToFill[metadata.updatedAtColumn] = new Date();
226
+ }
227
+ this.fill(columnsToFill);
228
+ }
229
+ convertValueByType(value, property) {
230
+ const converter = types.get(property.type()) || (() => value);
231
+ return converter(value);
232
+ }
233
+ }
234
+ exports.Entity = Entity;
235
+ const types = new Map();
236
+ types.set(Date, (value) => value ? new Date(value) : value);
237
+ types.set(String, (value) => value ? String(value) : value);
238
+ types.set(Boolean, (value) => Boolean(value));
239
+ // let handler = {
240
+ // set: (target, prop, value) => {
241
+ // console.log(target, prop, value);
242
+ // target[prop] = value;
243
+ // return true;
244
+ // },
245
+ // get: (target, prop) => {
246
+ // if(!(prop in Entity))
247
+ // return () => {return new Query};
248
+ // return target[prop];
249
+ // }
250
+ // };
251
+ // Object.setPrototypeOf(Entity, new Proxy({}, new EntityProxyHandler(Entity)));
252
+ //# sourceMappingURL=Entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../../Database/Entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Entity } from './Entity';
2
+ export declare class EntityNotFoundError extends Error {
3
+ entity: typeof Entity;
4
+ constructor(entity: typeof Entity, message: string);
5
+ }
6
+ //# sourceMappingURL=EntityNotFoundError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityNotFoundError.d.ts","sourceRoot":"","sources":["../../../../Database/EntityNotFoundError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,qBAAa,mBAAoB,SAAQ,KAAK;IACvB,MAAM,EAAE,OAAO,MAAM;gBAArB,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,EAAE,MAAM;CAC5D"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityNotFoundError = void 0;
4
+ class EntityNotFoundError extends Error {
5
+ constructor(entity, message) {
6
+ super(message);
7
+ this.entity = entity;
8
+ }
9
+ }
10
+ exports.EntityNotFoundError = EntityNotFoundError;
11
+ //# sourceMappingURL=EntityNotFoundError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityNotFoundError.js","sourceRoot":"","sources":["../../../../Database/EntityNotFoundError.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAoB,SAAQ,KAAK;IAC1C,YAAmB,MAAqB,EAAE,OAAe;QAAG,KAAK,CAAC,OAAO,CAAC,CAAA;QAAvD,WAAM,GAAN,MAAM,CAAe;IAAkC,CAAC;CAC9E;AAFD,kDAEC"}
@@ -0,0 +1,6 @@
1
+ import { Entity } from './Entity';
2
+ export declare class EntityProxyHandler<T extends Entity> {
3
+ set<K extends keyof T>(target: T, property: string, value: T[K]): boolean;
4
+ get(target: T, property: string): T[keyof T] | ((...args: object[]) => any);
5
+ }
6
+ //# sourceMappingURL=EntityProxyHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityProxyHandler.d.ts","sourceRoot":"","sources":["../../../../Database/EntityProxyHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAE5C,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAK/D,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,2BAQF,MAAM,EAAE;CAYxC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityProxyHandler = void 0;
4
+ const EntityQuery_1 = require("./EntityQuery");
5
+ class EntityProxyHandler {
6
+ set(target, property, value) {
7
+ target[property] = value;
8
+ return true;
9
+ }
10
+ get(target, property) {
11
+ if (!(property in target)) {
12
+ const targetConstructor = target.constructor;
13
+ const query = new EntityQuery_1.EntityQuery(targetConstructor);
14
+ const queryProperty = query[property];
15
+ if (typeof queryProperty === 'function') {
16
+ // @ts-ignore
17
+ query.table(target.constructor.getTable());
18
+ return (...args) => {
19
+ return queryProperty.apply(query, args);
20
+ };
21
+ }
22
+ }
23
+ return target[property];
24
+ // if (typeof value === 'function') {
25
+ // return value.bind(target);
26
+ // }
27
+ // return value;
28
+ }
29
+ }
30
+ exports.EntityProxyHandler = EntityProxyHandler;
31
+ //# sourceMappingURL=EntityProxyHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityProxyHandler.js","sourceRoot":"","sources":["../../../../Database/EntityProxyHandler.ts"],"names":[],"mappings":";;;AACA,+CAA2C;AAG3C,MAAa,kBAAkB;IAE3B,GAAG,CAAoB,MAAS,EAAE,QAAgB,EAAE,KAAW;QAC3D,MAAM,CAAC,QAAmB,CAAC,GAAG,KAAK,CAAA;QACnC,OAAO,IAAI,CAAA;IACf,CAAC;IAED,GAAG,CAAC,MAAS,EAAE,QAAgB;QAC3B,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE;YACvB,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAmC,CAAA;YACpE,MAAM,KAAK,GAAG,IAAI,yBAAW,CAAC,iBAAiB,CAAC,CAAA;YAChD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAgC,CAAa,CAAA;YACzE,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE;gBACrC,aAAa;gBACb,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC1C,OAAO,CAAC,GAAG,IAAc,EAAE,EAAE;oBACzB,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAC3C,CAAC,CAAA;aACJ;SACJ;QAED,OAAO,MAAM,CAAC,QAAmB,CAAC,CAAA;QAClC,qCAAqC;QACrC,iCAAiC;QACjC,IAAI;QACJ,gBAAgB;IACpB,CAAC;CACJ;AA3BD,gDA2BC"}
@@ -0,0 +1,29 @@
1
+ import { Query } from './Query';
2
+ import { Entity } from './Entity';
3
+ import { DotNotationProperties, EntityConstructor, EntityObject, Expression } from './index';
4
+ import { KeysOfType } from '../Support';
5
+ import { BelongsTo, BelongsToMany, HasMany, HasOne } from './Fields';
6
+ import { List } from './List';
7
+ import { RelationsTreeQuery } from './Types';
8
+ export declare class EntityQuery<T extends Entity> extends Query<T> {
9
+ entity: EntityConstructor<T>;
10
+ eagerLoad: (string | [string, RelationsTreeQuery])[];
11
+ eagerLoadCount: (string | [string, RelationsTreeQuery])[];
12
+ constructor(entity: EntityConstructor<T>);
13
+ get<K extends keyof T>(...columns: (K | string | Expression)[]): Promise<T[]>;
14
+ eagerLoadRelationships(entities: T[]): Promise<T[]>;
15
+ eagerLoadRelationshipsCounts(entities: T[]): Promise<T[]>;
16
+ first<K extends keyof T>(...columns: (K | string | Expression)[]): Promise<T | undefined>;
17
+ firstOrNew<K extends keyof T>(properties: Partial<EntityObject<T> | Record<string, any>>, values?: Partial<EntityObject<T>>): Promise<T>;
18
+ with(...relations: (KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this> | [
19
+ KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this>,
20
+ RelationsTreeQuery
21
+ ])[]): this;
22
+ withCount<K extends KeysOfType<T, List<Entity>>>(...relations: (KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this> | [
23
+ KeysOfType<T, BelongsTo<any> | HasOne<any> | HasMany<any> | BelongsToMany<any>> | DotNotationProperties<this>,
24
+ RelationsTreeQuery
25
+ ])[]): this;
26
+ private tree;
27
+ private treeBack;
28
+ }
29
+ //# sourceMappingURL=EntityQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityQuery.d.ts","sourceRoot":"","sources":["../../../../Database/EntityQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAiB,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE3D,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAOpC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAJ/C,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAK;IAEzD,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAK;gBAE3C,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAIzC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAUtE,sBAAsB,CAAC,QAAQ,EAAE,CAAC,EAAE;IA8CpC,4BAA4B,CAAC,QAAQ,EAAE,CAAC,EAAE;IAoBjD,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAYzF,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAE9B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;IAkBb,IAAI,CACA,GAAG,SAAS,EAAE,CAEV,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAE7G;QAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAAE,kBAAkB;KAAC,CAClI,EAAE;IAWX,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAC3C,GAAG,SAAS,EAAE,CAEV,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAE7G;QAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC;QAAE,kBAAkB;KAAC,CAClI,EAAE;IAQX,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,QAAQ;CAWnB"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityQuery = void 0;
4
+ const Query_1 = require("./Query");
5
+ const Entity_1 = require("./Entity");
6
+ class EntityQuery extends Query_1.Query {
7
+ constructor(entity) {
8
+ super();
9
+ this.entity = entity;
10
+ // tslint:disable-next-line:no-any
11
+ this.eagerLoad = [];
12
+ // tslint:disable-next-line:no-any
13
+ this.eagerLoadCount = [];
14
+ }
15
+ async get(...columns) {
16
+ let entities = await super.get(...columns);
17
+ entities = this.entity.hydrate(this.entity, entities, true);
18
+ entities = await this.eagerLoadRelationships(entities);
19
+ return await this.eagerLoadRelationshipsCounts(entities);
20
+ }
21
+ async eagerLoadRelationships(entities) {
22
+ const relationsTree = this.tree(this.eagerLoad);
23
+ await Object.keys(relationsTree).forEachAsync(async (relationName) => {
24
+ const relationValue = relationsTree[relationName];
25
+ const relation = this.entity.metadata.allRelationships[relationName];
26
+ if (!relation) {
27
+ throw new Error(`Relation '${relationName}' doesn't not exist on entity '${this.entity.name}'`);
28
+ }
29
+ // tslint:disable-next-line:no-any
30
+ let fieldQueryFunction;
31
+ let otherRelations = [];
32
+ if (relationValue instanceof Function) {
33
+ fieldQueryFunction = relationValue;
34
+ }
35
+ else {
36
+ otherRelations = this.treeBack(relationValue);
37
+ }
38
+ const results = await relation.getRelatedValue(entities, otherRelations, fieldQueryFunction);
39
+ if (results.length) {
40
+ entities = relation.match(entities, results);
41
+ }
42
+ });
43
+ // await this.eagerLoad.forEachAsync(async (field) => {
44
+ // // tslint:disable-next-line:no-any
45
+ // let fieldName: string, fieldQueryFunction: undefined | RelationsTreeQuery
46
+ // if (field instanceof Array) {
47
+ // fieldName = field[0]
48
+ // fieldQueryFunction = field[1]
49
+ // } else {
50
+ // fieldName = field
51
+ // }
52
+ // const [first, ...rest] = fieldName.split('.')
53
+ // const relation = this.entity.metadata.allRelationships[first]
54
+ // const results = await relation.getRelatedValue(entities, [rest.join('.')], fieldQueryFunction as (query: Query) => void)
55
+ // if (results.length) {
56
+ // entities = relation.match(entities, results) as T[]
57
+ // }
58
+ // })
59
+ return entities;
60
+ }
61
+ async eagerLoadRelationshipsCounts(entities) {
62
+ await this.eagerLoadCount.forEachAsync(async (field) => {
63
+ // tslint:disable-next-line:no-any
64
+ let fieldName, fieldQueryFunction;
65
+ if (field instanceof Array) {
66
+ fieldName = field[0];
67
+ fieldQueryFunction = field[1];
68
+ }
69
+ else {
70
+ fieldName = field;
71
+ }
72
+ const relation = this.entity.metadata.allRelationships[fieldName];
73
+ const results = await relation.getRelatedCount(entities, fieldQueryFunction);
74
+ if (results.length) {
75
+ entities = relation.matchCounts(entities, results);
76
+ }
77
+ });
78
+ return entities;
79
+ }
80
+ async first(...columns) {
81
+ const entityData = await super.first(...columns);
82
+ if (!entityData) {
83
+ return undefined;
84
+ }
85
+ let entity = this.entity.new(entityData, true);
86
+ entity = (await this.eagerLoadRelationships([entity])).first();
87
+ return (await this.eagerLoadRelationshipsCounts([entity])).first();
88
+ }
89
+ async firstOrNew(
90
+ // tslint:disable-next-line:no-any
91
+ properties, values) {
92
+ Object.entries(properties).forEach(([property, value]) => {
93
+ const field = this.entity.metadata.columns[property] || this.entity.metadata.relationships[property];
94
+ const finalValue = value instanceof Entity_1.Entity ? value[value.getPrimaryKey()] : value;
95
+ if (finalValue === undefined) {
96
+ this.andWhereNull(field.column);
97
+ }
98
+ else {
99
+ this.andWhere(field.column, finalValue);
100
+ }
101
+ });
102
+ const instance = await this.first();
103
+ if (!instance) {
104
+ return this.entity.new({ ...properties, ...values });
105
+ }
106
+ instance.exists = true;
107
+ return instance;
108
+ }
109
+ with(...relations) {
110
+ relations = relations.filter(Boolean);
111
+ if (relations.length) {
112
+ // tslint:disable-next-line:no-any
113
+ this.eagerLoad = this.eagerLoad.concat(relations).unique();
114
+ }
115
+ return this;
116
+ }
117
+ withCount(...relations) {
118
+ // @ts-ignore
119
+ this.eagerLoadCount = this.eagerLoadCount.concat(relations);
120
+ return this;
121
+ }
122
+ tree(relations) {
123
+ const tree = {};
124
+ relations.forEach(relation => {
125
+ let relationName;
126
+ let relationValue = {};
127
+ if (relation instanceof Array) {
128
+ relationName = relation[0];
129
+ relationValue = relation[1];
130
+ }
131
+ else {
132
+ relationName = relation;
133
+ }
134
+ let container = tree;
135
+ const relationStringParts = relationName.split('.');
136
+ relationStringParts.forEach((part, index) => {
137
+ const value = index === relationStringParts.length - 1 ? relationValue : {};
138
+ // @ts-ignore
139
+ container = (container[part] ? container[part] : container[part] = value);
140
+ });
141
+ });
142
+ return tree;
143
+ }
144
+ treeBack(relationsTree) {
145
+ return Object.keys(relationsTree).map(relationName => {
146
+ const item = relationsTree[relationName];
147
+ if (item instanceof Function) {
148
+ return [relationName, item];
149
+ }
150
+ else {
151
+ return [relationName, this.treeBack(item)].filter(Boolean).join('.');
152
+ }
153
+ });
154
+ }
155
+ }
156
+ exports.EntityQuery = EntityQuery;
157
+ //# sourceMappingURL=EntityQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityQuery.js","sourceRoot":"","sources":["../../../../Database/EntityQuery.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,qCAAiC;AAOjC,MAAa,WAA8B,SAAQ,aAAQ;IAOvD,YAAmB,MAA4B;QAC3C,KAAK,EAAE,CAAA;QADQ,WAAM,GAAN,MAAM,CAAsB;QAL/C,kCAAkC;QAClC,cAAS,GAA8C,EAAE,CAAA;QACzD,kCAAkC;QAClC,mBAAc,GAA8C,EAAE,CAAA;IAI9D,CAAC;IAED,KAAK,CAAC,GAAG,CAAoB,GAAG,OAAoC;QAChE,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAE1C,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QAE3D,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAEtD,OAAO,MAAM,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAA;IAC5D,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,QAAa;QAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE/C,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;YACjE,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;YAEpE,IAAI,CAAC,QAAQ,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,kCAAkC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA;aAClG;YAED,kCAAkC;YAClC,IAAI,kBAAkD,CAAA;YACtD,IAAI,cAAc,GAAsB,EAAE,CAAA;YAC1C,IAAI,aAAa,YAAY,QAAQ,EAAE;gBACnC,kBAAkB,GAAG,aAAa,CAAA;aACrC;iBAAM;gBACH,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;aAChD;YAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,kBAA4C,CAAC,CAAA;YAEtH,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAQ,CAAA;aACtD;QACL,CAAC,CAAC,CAAA;QACF,uDAAuD;QACvD,yCAAyC;QACzC,gFAAgF;QAChF,oCAAoC;QACpC,+BAA+B;QAC/B,wCAAwC;QACxC,eAAe;QACf,4BAA4B;QAC5B,QAAQ;QACR,oDAAoD;QACpD,oEAAoE;QACpE,+HAA+H;QAC/H,4BAA4B;QAC5B,8DAA8D;QAC9D,QAAQ;QACR,KAAK;QACL,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,QAAa;QACnD,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACnD,kCAAkC;YAClC,IAAI,SAAiB,EAAE,kBAAkD,CAAA;YACzE,IAAI,KAAK,YAAY,KAAK,EAAE;gBACxB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpB,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;aAChC;iBAAM;gBACH,SAAS,GAAG,KAAK,CAAA;aACpB;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,kBAA8C,CAAC,CAAA;YACxG,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChB,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAQ,CAAA;aAC5D;QACL,CAAC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAoB,GAAG,OAAoC;QAClE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,UAAU,EAAE;YACb,OAAO,SAAS,CAAA;SACnB;QACD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAE9C,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAO,CAAA;QAEnE,OAAO,CAAC,MAAM,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;IACZ,kCAAkC;IAClC,UAA0D,EAC1D,MAAiC;QAEjC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACpG,MAAM,UAAU,GAAG,KAAK,YAAY,eAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YACjF,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;aAClC;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;aAC1C;QACL,CAAC,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC,GAAG,UAAU,EAAE,GAAG,MAAM,EAAC,CAAC,CAAA;SACrD;QACD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAA;QACtB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,IAAI,CACA,GAAG,SAKI;QAEP,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,kCAAkC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAkD,CAAC,CAAC,MAAM,EAAE,CAAA;SACtG;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,SAAS,CACL,GAAG,SAKI;QAEP,aAAa;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,IAAI,CAAC,SAA4B;QACrC,MAAM,IAAI,GAAkB,EAAE,CAAA;QAE9B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,IAAI,YAAoB,CAAA;YACxB,IAAI,aAAa,GAA4B,EAAE,CAAA;YAC/C,IAAI,QAAQ,YAAY,KAAK,EAAE;gBAC3B,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;gBAC1B,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;aAC9B;iBAAM;gBACH,YAAY,GAAG,QAAQ,CAAA;aAC1B;YAED,IAAI,SAAS,GAAG,IAAI,CAAA;YACpB,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnD,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACxC,MAAM,KAAK,GAAG,KAAK,KAAK,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC3E,aAAa;gBACb,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;YAC7E,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,QAAQ,CAAC,aAA4B;QACzC,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACjD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;YAExC,IAAI,IAAI,YAAY,QAAQ,EAAE;gBAC1B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;aAC9B;iBAAM;gBACH,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACvE;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA5LD,kCA4LC"}
@@ -0,0 +1,6 @@
1
+ export declare class Expression {
2
+ value: string;
3
+ constructor(value: string);
4
+ toSQL(): string;
5
+ }
6
+ //# sourceMappingURL=Expression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expression.d.ts","sourceRoot":"","sources":["../../../../Database/Expression.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACA,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;IAEhC,KAAK;CAGR"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Expression = void 0;
4
+ class Expression {
5
+ constructor(value) {
6
+ this.value = value;
7
+ }
8
+ toSQL() {
9
+ return this.value;
10
+ }
11
+ }
12
+ exports.Expression = Expression;
13
+ //# sourceMappingURL=Expression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Expression.js","sourceRoot":"","sources":["../../../../Database/Expression.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAU;IACnB,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEpC,KAAK;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ;AAND,gCAMC"}