xansql 1.0.1 → 1.0.3

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 (397) hide show
  1. package/core/Xansql.cjs +133 -0
  2. package/core/Xansql.cjs.map +1 -0
  3. package/core/Xansql.d.ts +15 -25
  4. package/core/Xansql.mjs +46 -47
  5. package/core/Xansql.mjs.map +1 -1
  6. package/core/{XansqlError.js → XansqlError.cjs} +7 -2
  7. package/core/XansqlError.cjs.map +1 -0
  8. package/core/XansqlError.d.ts +11 -0
  9. package/core/XansqlError.mjs +4 -1
  10. package/core/XansqlError.mjs.map +1 -1
  11. package/core/classes/{EventManager.js → EventManager.cjs} +7 -2
  12. package/core/classes/EventManager.cjs.map +1 -0
  13. package/core/classes/EventManager.d.ts +22 -35
  14. package/core/classes/EventManager.mjs +4 -1
  15. package/core/classes/EventManager.mjs.map +1 -1
  16. package/core/classes/{ForeignInfo.js → ForeignInfo.cjs} +14 -5
  17. package/core/classes/ForeignInfo.cjs.map +1 -0
  18. package/core/classes/ForeignInfo.d.ts +26 -0
  19. package/core/classes/ForeignInfo.mjs +9 -2
  20. package/core/classes/ForeignInfo.mjs.map +1 -1
  21. package/core/classes/Migration/{ForeingMigration.js → ForeingMigration.cjs} +12 -4
  22. package/core/classes/Migration/ForeingMigration.cjs.map +1 -0
  23. package/core/classes/Migration/ForeingMigration.d.ts +2 -4
  24. package/core/classes/Migration/ForeingMigration.mjs +8 -2
  25. package/core/classes/Migration/ForeingMigration.mjs.map +1 -1
  26. package/core/classes/Migration/{IndexMigration.js → IndexMigration.cjs} +10 -3
  27. package/core/classes/Migration/IndexMigration.cjs.map +1 -0
  28. package/core/classes/Migration/IndexMigration.d.ts +2 -4
  29. package/core/classes/Migration/IndexMigration.mjs +7 -2
  30. package/core/classes/Migration/IndexMigration.mjs.map +1 -1
  31. package/core/classes/Migration/{TableMigration.js → TableMigration.cjs} +49 -25
  32. package/core/classes/Migration/TableMigration.cjs.map +1 -0
  33. package/core/classes/Migration/TableMigration.d.ts +5 -7
  34. package/core/classes/Migration/TableMigration.mjs +24 -2
  35. package/core/classes/Migration/TableMigration.mjs.map +1 -1
  36. package/core/classes/Migration/{index.js → index.cjs} +34 -77
  37. package/core/classes/Migration/index.cjs.map +1 -0
  38. package/core/classes/Migration/index.d.ts +4 -6
  39. package/core/classes/Migration/index.mjs +18 -63
  40. package/core/classes/Migration/index.mjs.map +1 -1
  41. package/core/classes/{ModelFormatter.js → ModelFormatter.cjs} +30 -31
  42. package/core/classes/ModelFormatter.cjs.map +1 -0
  43. package/core/classes/ModelFormatter.d.ts +16 -0
  44. package/core/classes/ModelFormatter.mjs +13 -16
  45. package/core/classes/ModelFormatter.mjs.map +1 -1
  46. package/core/classes/{XansqlConfig.js → XansqlConfig.cjs} +13 -6
  47. package/core/classes/XansqlConfig.cjs.map +1 -0
  48. package/core/classes/XansqlConfig.d.ts +10 -0
  49. package/core/classes/XansqlConfig.mjs +7 -2
  50. package/core/classes/XansqlConfig.mjs.map +1 -1
  51. package/core/classes/{XansqlTransaction.js → XansqlTransaction.cjs} +7 -2
  52. package/core/classes/XansqlTransaction.cjs.map +1 -0
  53. package/core/classes/XansqlTransaction.d.ts +4 -4
  54. package/core/classes/XansqlTransaction.mjs +4 -1
  55. package/core/classes/XansqlTransaction.mjs.map +1 -1
  56. package/core/types.cjs +3 -0
  57. package/core/types.cjs.map +1 -0
  58. package/core/types.d.ts +94 -0
  59. package/core/types.mjs +2 -0
  60. package/core/types.mjs.map +1 -0
  61. package/dialect/MysqlDialect.cjs +74 -0
  62. package/dialect/MysqlDialect.cjs.map +1 -0
  63. package/dialect/MysqlDialect.d.ts +8 -0
  64. package/dialect/MysqlDialect.mjs +72 -0
  65. package/dialect/MysqlDialect.mjs.map +1 -0
  66. package/dialect/PostgresDialect.cjs +114 -0
  67. package/dialect/PostgresDialect.cjs.map +1 -0
  68. package/dialect/PostgresDialect.d.ts +8 -0
  69. package/dialect/PostgresDialect.mjs +112 -0
  70. package/dialect/PostgresDialect.mjs.map +1 -0
  71. package/dialect/SqliteDialect.cjs +57 -0
  72. package/dialect/SqliteDialect.cjs.map +1 -0
  73. package/dialect/SqliteDialect.d.ts +7 -0
  74. package/dialect/SqliteDialect.mjs +55 -0
  75. package/dialect/SqliteDialect.mjs.map +1 -0
  76. package/dialect/XansqlBridge/FileInDirectory.cjs +26 -0
  77. package/dialect/XansqlBridge/FileInDirectory.cjs.map +1 -0
  78. package/dialect/XansqlBridge/FileInDirectory.d.ts +15 -0
  79. package/dialect/XansqlBridge/FileInDirectory.mjs +24 -0
  80. package/dialect/XansqlBridge/FileInDirectory.mjs.map +1 -0
  81. package/dialect/XansqlBridge/XansqlBridgeServer.cjs +110 -0
  82. package/dialect/XansqlBridge/XansqlBridgeServer.cjs.map +1 -0
  83. package/dialect/XansqlBridge/XansqlBridgeServer.d.ts +16 -0
  84. package/dialect/XansqlBridge/XansqlBridgeServer.mjs +108 -0
  85. package/dialect/XansqlBridge/XansqlBridgeServer.mjs.map +1 -0
  86. package/dialect/XansqlBridge/base.cjs +118 -0
  87. package/dialect/XansqlBridge/base.cjs.map +1 -0
  88. package/dialect/XansqlBridge/base.d.ts +9 -0
  89. package/dialect/XansqlBridge/base.mjs +114 -0
  90. package/dialect/XansqlBridge/base.mjs.map +1 -0
  91. package/dialect/XansqlBridge/index.cjs +89 -0
  92. package/dialect/XansqlBridge/index.cjs.map +1 -0
  93. package/dialect/XansqlBridge/index.d.ts +12 -0
  94. package/dialect/XansqlBridge/index.mjs +87 -0
  95. package/dialect/XansqlBridge/index.mjs.map +1 -0
  96. package/dialect/XansqlBridge/types.cjs +3 -0
  97. package/dialect/XansqlBridge/types.cjs.map +1 -0
  98. package/dialect/XansqlBridge/types.d.ts +27 -0
  99. package/dialect/XansqlBridge/types.mjs +2 -0
  100. package/dialect/XansqlBridge/types.mjs.map +1 -0
  101. package/index.cjs +14 -0
  102. package/index.cjs.map +1 -0
  103. package/index.d.ts +8 -6
  104. package/index.mjs +5 -1
  105. package/index.mjs.map +1 -1
  106. package/model/Args/RelationExcuteArgs.cjs +10 -0
  107. package/model/Args/RelationExcuteArgs.cjs.map +1 -0
  108. package/model/Args/RelationExcuteArgs.d.ts +5 -0
  109. package/model/Args/RelationExcuteArgs.mjs +4 -1
  110. package/model/Args/RelationExcuteArgs.mjs.map +1 -1
  111. package/model/Args/{WhereArgs.js → WhereArgs.cjs} +47 -33
  112. package/model/Args/WhereArgs.cjs.map +1 -0
  113. package/model/Args/WhereArgs.d.ts +15 -0
  114. package/model/Args/WhereArgs.mjs +14 -2
  115. package/model/Args/WhereArgs.mjs.map +1 -1
  116. package/model/{Base.js → Base.cjs} +23 -11
  117. package/model/Base.cjs.map +1 -0
  118. package/model/Base.d.ts +9 -11
  119. package/model/Base.mjs +16 -6
  120. package/model/Base.mjs.map +1 -1
  121. package/model/Executer/Aggregate/{SelectArgs.js → SelectArgs.cjs} +16 -6
  122. package/model/Executer/Aggregate/SelectArgs.cjs.map +1 -0
  123. package/model/Executer/Aggregate/SelectArgs.d.ts +9 -0
  124. package/model/Executer/Aggregate/SelectArgs.mjs +10 -2
  125. package/model/Executer/Aggregate/SelectArgs.mjs.map +1 -1
  126. package/model/Executer/Aggregate/{index.js → index.cjs} +23 -20
  127. package/model/Executer/Aggregate/index.cjs.map +1 -0
  128. package/model/Executer/Aggregate/index.d.ts +9 -0
  129. package/model/Executer/Aggregate/index.mjs +14 -13
  130. package/model/Executer/Aggregate/index.mjs.map +1 -1
  131. package/model/Executer/Create/{CreateDataArgs.js → CreateDataArgs.cjs} +33 -22
  132. package/model/Executer/Create/CreateDataArgs.cjs.map +1 -0
  133. package/model/Executer/Create/CreateDataArgs.d.ts +42 -0
  134. package/model/Executer/Create/CreateDataArgs.mjs +11 -2
  135. package/model/Executer/Create/CreateDataArgs.mjs.map +1 -1
  136. package/model/Executer/Create/{index.js → index.cjs} +19 -37
  137. package/model/Executer/Create/index.cjs.map +1 -0
  138. package/model/Executer/Create/index.d.ts +8 -0
  139. package/model/Executer/Create/index.mjs +13 -33
  140. package/model/Executer/Create/index.mjs.map +1 -1
  141. package/model/Executer/Delete/{index.js → index.cjs} +24 -31
  142. package/model/Executer/Delete/index.cjs.map +1 -0
  143. package/model/Executer/Delete/index.d.ts +8 -0
  144. package/model/Executer/Delete/index.mjs +14 -23
  145. package/model/Executer/Delete/index.mjs.map +1 -1
  146. package/model/Executer/Find/{DistinctArgs.js → DistinctArgs.cjs} +15 -8
  147. package/model/Executer/Find/DistinctArgs.cjs.map +1 -0
  148. package/model/Executer/Find/DistinctArgs.d.ts +12 -0
  149. package/model/Executer/Find/DistinctArgs.mjs +12 -7
  150. package/model/Executer/Find/DistinctArgs.mjs.map +1 -1
  151. package/model/Executer/Find/{LimitArgs.js → LimitArgs.cjs} +11 -4
  152. package/model/Executer/Find/LimitArgs.cjs.map +1 -0
  153. package/model/Executer/Find/LimitArgs.d.ts +13 -0
  154. package/model/Executer/Find/LimitArgs.mjs +7 -2
  155. package/model/Executer/Find/LimitArgs.mjs.map +1 -1
  156. package/model/Executer/Find/{OrderByArgs.js → OrderByArgs.cjs} +11 -4
  157. package/model/Executer/Find/OrderByArgs.cjs.map +1 -0
  158. package/model/Executer/Find/OrderByArgs.d.ts +11 -0
  159. package/model/Executer/Find/OrderByArgs.mjs +7 -2
  160. package/model/Executer/Find/OrderByArgs.mjs.map +1 -1
  161. package/model/Executer/Find/{SelectArgs.js → SelectArgs.cjs} +33 -13
  162. package/model/Executer/Find/SelectArgs.cjs.map +1 -0
  163. package/model/Executer/Find/SelectArgs.d.ts +53 -0
  164. package/model/Executer/Find/SelectArgs.mjs +20 -2
  165. package/model/Executer/Find/SelectArgs.mjs.map +1 -1
  166. package/model/Executer/Find/{index.js → index.cjs} +48 -62
  167. package/model/Executer/Find/index.cjs.map +1 -0
  168. package/model/Executer/Find/index.d.ts +13 -0
  169. package/model/Executer/Find/index.mjs +27 -43
  170. package/model/Executer/Find/index.mjs.map +1 -1
  171. package/model/Executer/Update/{UpdateDataArgs.js → UpdateDataArgs.cjs} +35 -24
  172. package/model/Executer/Update/UpdateDataArgs.cjs.map +1 -0
  173. package/model/Executer/Update/UpdateDataArgs.d.ts +33 -0
  174. package/model/Executer/Update/UpdateDataArgs.mjs +11 -2
  175. package/model/Executer/Update/UpdateDataArgs.mjs.map +1 -1
  176. package/model/Executer/Update/{index.js → index.cjs} +31 -57
  177. package/model/Executer/Update/index.cjs.map +1 -0
  178. package/model/Executer/Update/index.d.ts +8 -0
  179. package/model/Executer/Update/index.mjs +15 -43
  180. package/model/Executer/Update/index.mjs.map +1 -1
  181. package/model/Schema.cjs +15 -0
  182. package/model/Schema.cjs.map +1 -0
  183. package/model/Schema.d.ts +10 -0
  184. package/model/Schema.mjs +13 -0
  185. package/model/Schema.mjs.map +1 -0
  186. package/model/include/{ValueFormatter.js → ValueFormatter.cjs} +34 -14
  187. package/model/include/ValueFormatter.cjs.map +1 -0
  188. package/model/include/ValueFormatter.d.ts +8 -0
  189. package/model/include/ValueFormatter.mjs +20 -2
  190. package/model/include/ValueFormatter.mjs.map +1 -1
  191. package/model/{index.js → index.cjs} +87 -69
  192. package/model/index.cjs.map +1 -0
  193. package/model/index.d.ts +12 -13
  194. package/model/index.mjs +71 -55
  195. package/model/index.mjs.map +1 -1
  196. package/model/types.cjs +3 -0
  197. package/model/types.cjs.map +1 -0
  198. package/model/{type.d.ts → types.d.ts} +35 -22
  199. package/model/types.mjs +2 -0
  200. package/model/types.mjs.map +1 -0
  201. package/package.json +5 -21
  202. package/readme.md +359 -359
  203. package/utils/{chunker.js → chunker.cjs} +8 -2
  204. package/utils/chunker.cjs.map +1 -0
  205. package/utils/chunker.d.ts +18 -0
  206. package/utils/chunker.mjs +4 -1
  207. package/utils/chunker.mjs.map +1 -1
  208. package/utils/file.cjs +67 -0
  209. package/utils/file.cjs.map +1 -0
  210. package/utils/file.d.ts +22 -0
  211. package/utils/file.mjs +63 -0
  212. package/utils/file.mjs.map +1 -0
  213. package/utils/{index.js → index.cjs} +61 -2
  214. package/utils/index.cjs.map +1 -0
  215. package/utils/index.d.ts +15 -0
  216. package/utils/index.mjs +46 -1
  217. package/utils/index.mjs.map +1 -1
  218. package/utils/{sha256.js → sha256.cjs} +8 -3
  219. package/utils/sha256.cjs.map +1 -0
  220. package/utils/sha256.d.ts +2 -0
  221. package/utils/sha256.mjs +5 -2
  222. package/utils/sha256.mjs.map +1 -1
  223. package/xt/fields/Array.cjs +13 -0
  224. package/xt/fields/Array.cjs.map +1 -0
  225. package/xt/fields/Array.d.ts +5 -0
  226. package/xt/fields/Array.mjs +11 -0
  227. package/xt/fields/Array.mjs.map +1 -0
  228. package/xt/fields/Boolean.cjs +18 -0
  229. package/xt/fields/Boolean.cjs.map +1 -0
  230. package/{Types → xt}/fields/Boolean.d.ts +2 -4
  231. package/{Types → xt}/fields/Boolean.mjs +7 -2
  232. package/xt/fields/Boolean.mjs.map +1 -0
  233. package/{Types/fields/Date.js → xt/fields/Date.cjs} +9 -2
  234. package/xt/fields/Date.cjs.map +1 -0
  235. package/{Types → xt}/fields/Date.d.ts +2 -4
  236. package/{Types → xt}/fields/Date.mjs +7 -2
  237. package/xt/fields/Date.mjs.map +1 -0
  238. package/xt/fields/Enum.cjs +17 -0
  239. package/xt/fields/Enum.cjs.map +1 -0
  240. package/{Types → xt}/fields/Enum.d.ts +2 -4
  241. package/{Types → xt}/fields/Enum.mjs +7 -2
  242. package/xt/fields/Enum.mjs.map +1 -0
  243. package/xt/fields/File.cjs +13 -0
  244. package/xt/fields/File.cjs.map +1 -0
  245. package/xt/fields/File.d.ts +5 -0
  246. package/xt/fields/File.mjs +11 -0
  247. package/xt/fields/File.mjs.map +1 -0
  248. package/xt/fields/IDField.cjs +9 -0
  249. package/xt/fields/IDField.cjs.map +1 -0
  250. package/xt/fields/IDField.d.ts +4 -0
  251. package/xt/fields/IDField.mjs +7 -0
  252. package/xt/fields/IDField.mjs.map +1 -0
  253. package/xt/fields/Number.cjs +18 -0
  254. package/xt/fields/Number.cjs.map +1 -0
  255. package/{Types → xt}/fields/Number.d.ts +2 -4
  256. package/{Types → xt}/fields/Number.mjs +7 -2
  257. package/xt/fields/Number.mjs.map +1 -0
  258. package/xt/fields/Object.cjs +18 -0
  259. package/xt/fields/Object.cjs.map +1 -0
  260. package/{Types → xt}/fields/Object.d.ts +2 -4
  261. package/{Types → xt}/fields/Object.mjs +7 -2
  262. package/xt/fields/Object.mjs.map +1 -0
  263. package/xt/fields/Record.cjs +18 -0
  264. package/xt/fields/Record.cjs.map +1 -0
  265. package/{Types → xt}/fields/Record.d.ts +2 -4
  266. package/{Types → xt}/fields/Record.mjs +7 -2
  267. package/xt/fields/Record.mjs.map +1 -0
  268. package/{Types/fields/Schema.js → xt/fields/Schema.cjs} +11 -3
  269. package/xt/fields/Schema.cjs.map +1 -0
  270. package/{Types → xt}/fields/Schema.d.ts +2 -4
  271. package/{Types → xt}/fields/Schema.mjs +8 -2
  272. package/xt/fields/Schema.mjs.map +1 -0
  273. package/{Types/fields/String.js → xt/fields/String.cjs} +9 -2
  274. package/xt/fields/String.cjs.map +1 -0
  275. package/{Types → xt}/fields/String.d.ts +2 -4
  276. package/{Types → xt}/fields/String.mjs +7 -2
  277. package/xt/fields/String.mjs.map +1 -0
  278. package/xt/fields/Tuple.cjs +18 -0
  279. package/xt/fields/Tuple.cjs.map +1 -0
  280. package/{Types → xt}/fields/Tuple.d.ts +2 -4
  281. package/{Types → xt}/fields/Tuple.mjs +7 -2
  282. package/xt/fields/Tuple.mjs.map +1 -0
  283. package/xt/fields/Union.cjs +18 -0
  284. package/xt/fields/Union.cjs.map +1 -0
  285. package/{Types → xt}/fields/Union.d.ts +2 -4
  286. package/{Types → xt}/fields/Union.mjs +7 -2
  287. package/xt/fields/Union.mjs.map +1 -0
  288. package/{Types/index.js → xt/index.cjs} +36 -16
  289. package/xt/index.cjs.map +1 -0
  290. package/{Types → xt}/index.d.ts +16 -18
  291. package/{Types → xt}/index.mjs +20 -2
  292. package/xt/index.mjs.map +1 -0
  293. package/xt/types.cjs +3 -0
  294. package/xt/types.cjs.map +1 -0
  295. package/xt/types.d.ts +17 -0
  296. package/xt/types.mjs +2 -0
  297. package/xt/types.mjs.map +1 -0
  298. package/Types/fields/Array.d.ts +0 -7
  299. package/Types/fields/Array.js +0 -6
  300. package/Types/fields/Array.js.map +0 -1
  301. package/Types/fields/Array.mjs +0 -6
  302. package/Types/fields/Array.mjs.map +0 -1
  303. package/Types/fields/Boolean.js +0 -11
  304. package/Types/fields/Boolean.js.map +0 -1
  305. package/Types/fields/Boolean.mjs.map +0 -1
  306. package/Types/fields/Date.js.map +0 -1
  307. package/Types/fields/Date.mjs.map +0 -1
  308. package/Types/fields/Enum.js +0 -10
  309. package/Types/fields/Enum.js.map +0 -1
  310. package/Types/fields/Enum.mjs.map +0 -1
  311. package/Types/fields/File.d.ts +0 -7
  312. package/Types/fields/File.js +0 -6
  313. package/Types/fields/File.js.map +0 -1
  314. package/Types/fields/File.mjs +0 -6
  315. package/Types/fields/File.mjs.map +0 -1
  316. package/Types/fields/IDField.d.ts +0 -6
  317. package/Types/fields/IDField.js +0 -2
  318. package/Types/fields/IDField.js.map +0 -1
  319. package/Types/fields/IDField.mjs +0 -2
  320. package/Types/fields/IDField.mjs.map +0 -1
  321. package/Types/fields/Number.js +0 -11
  322. package/Types/fields/Number.js.map +0 -1
  323. package/Types/fields/Number.mjs.map +0 -1
  324. package/Types/fields/Object.js +0 -11
  325. package/Types/fields/Object.js.map +0 -1
  326. package/Types/fields/Object.mjs.map +0 -1
  327. package/Types/fields/Record.js +0 -11
  328. package/Types/fields/Record.js.map +0 -1
  329. package/Types/fields/Record.mjs.map +0 -1
  330. package/Types/fields/Schema.js.map +0 -1
  331. package/Types/fields/Schema.mjs.map +0 -1
  332. package/Types/fields/String.js.map +0 -1
  333. package/Types/fields/String.mjs.map +0 -1
  334. package/Types/fields/Tuple.js +0 -11
  335. package/Types/fields/Tuple.js.map +0 -1
  336. package/Types/fields/Tuple.mjs.map +0 -1
  337. package/Types/fields/Union.js +0 -11
  338. package/Types/fields/Union.js.map +0 -1
  339. package/Types/fields/Union.mjs.map +0 -1
  340. package/Types/index.js.map +0 -1
  341. package/Types/index.mjs.map +0 -1
  342. package/Types/types.d.ts +0 -20
  343. package/core/ExcuteMeta.d.ts +0 -11
  344. package/core/ExcuteMeta.js +0 -22
  345. package/core/ExcuteMeta.js.map +0 -1
  346. package/core/ExcuteMeta.mjs +0 -22
  347. package/core/ExcuteMeta.mjs.map +0 -1
  348. package/core/Xansql.js +0 -132
  349. package/core/Xansql.js.map +0 -1
  350. package/core/XansqlError.js.map +0 -1
  351. package/core/XansqlResult.d.ts +0 -12
  352. package/core/XansqlResult.js +0 -32
  353. package/core/XansqlResult.js.map +0 -1
  354. package/core/XansqlResult.mjs +0 -32
  355. package/core/XansqlResult.mjs.map +0 -1
  356. package/core/classes/EventManager.js.map +0 -1
  357. package/core/classes/ForeignInfo.js.map +0 -1
  358. package/core/classes/Migration/ForeingMigration.js.map +0 -1
  359. package/core/classes/Migration/IndexMigration.js.map +0 -1
  360. package/core/classes/Migration/TableMigration.js.map +0 -1
  361. package/core/classes/Migration/index.js.map +0 -1
  362. package/core/classes/ModelFormatter.js.map +0 -1
  363. package/core/classes/TypesGenerator.d.ts +0 -13
  364. package/core/classes/TypesGenerator.js +0 -170
  365. package/core/classes/TypesGenerator.js.map +0 -1
  366. package/core/classes/TypesGenerator.mjs +0 -170
  367. package/core/classes/TypesGenerator.mjs.map +0 -1
  368. package/core/classes/XansqlConfig.js.map +0 -1
  369. package/core/classes/XansqlFetch.js +0 -304
  370. package/core/classes/XansqlFetch.js.map +0 -1
  371. package/core/classes/XansqlFetch.mjs +0 -304
  372. package/core/classes/XansqlFetch.mjs.map +0 -1
  373. package/core/classes/XansqlTransaction.js.map +0 -1
  374. package/core/type.d.ts +0 -135
  375. package/index.js +0 -1
  376. package/index.js.map +0 -1
  377. package/model/Args/RelationExcuteArgs.js +0 -5
  378. package/model/Args/RelationExcuteArgs.js.map +0 -1
  379. package/model/Args/WhereArgs.js.map +0 -1
  380. package/model/Base.js.map +0 -1
  381. package/model/Executer/Aggregate/SelectArgs.js.map +0 -1
  382. package/model/Executer/Aggregate/index.js.map +0 -1
  383. package/model/Executer/Create/CreateDataArgs.js.map +0 -1
  384. package/model/Executer/Create/index.js.map +0 -1
  385. package/model/Executer/Delete/index.js.map +0 -1
  386. package/model/Executer/Find/DistinctArgs.js.map +0 -1
  387. package/model/Executer/Find/LimitArgs.js.map +0 -1
  388. package/model/Executer/Find/OrderByArgs.js.map +0 -1
  389. package/model/Executer/Find/SelectArgs.js.map +0 -1
  390. package/model/Executer/Find/index.js.map +0 -1
  391. package/model/Executer/Update/UpdateDataArgs.js.map +0 -1
  392. package/model/Executer/Update/index.js.map +0 -1
  393. package/model/include/ValueFormatter.js.map +0 -1
  394. package/model/index.js.map +0 -1
  395. package/utils/chunker.js.map +0 -1
  396. package/utils/index.js.map +0 -1
  397. package/utils/sha256.js.map +0 -1
@@ -0,0 +1,133 @@
1
+ 'use strict';
2
+
3
+ var model_index = require('../model/index.cjs');
4
+ var core_classes_XansqlTransaction = require('./classes/XansqlTransaction.cjs');
5
+ var core_classes_XansqlConfig = require('./classes/XansqlConfig.cjs');
6
+ var core_classes_ModelFormatter = require('./classes/ModelFormatter.cjs');
7
+ var core_classes_Migration_index = require('./classes/Migration/index.cjs');
8
+ var core_classes_EventManager = require('./classes/EventManager.cjs');
9
+ var core_XansqlError = require('./XansqlError.cjs');
10
+ var model_Schema = require('../model/Schema.cjs');
11
+
12
+ class Xansql {
13
+ constructor(config) {
14
+ this.ModelFactory = new Map();
15
+ this.XANFETCH_CONTENT_TYPE = 'application/octet-stream';
16
+ this._aliases = new Map();
17
+ this._timer = null;
18
+ this.XansqlConfig = new core_classes_XansqlConfig(this, config);
19
+ this.config = this.XansqlConfig.parse();
20
+ this.XansqlTransaction = new core_classes_XansqlTransaction(this);
21
+ this.ModelFormatter = new core_classes_ModelFormatter(this);
22
+ this.XansqlMigration = new core_classes_Migration_index(this);
23
+ this.EventManager = new core_classes_EventManager();
24
+ }
25
+ get dialect() {
26
+ return this.config.dialect;
27
+ }
28
+ get models() {
29
+ return this.ModelFormatter.format();
30
+ }
31
+ clone(config) {
32
+ const self = new XansqlClone(Object.assign(Object.assign({}, this.config), (config || {})));
33
+ for (let [table, model] of this.ModelFactory) {
34
+ const schema = new model_Schema(table, model.schema);
35
+ for (let hook in model.hooks) {
36
+ schema.addHook(hook, model.hooks[hook]);
37
+ }
38
+ self.model(schema);
39
+ }
40
+ return self;
41
+ }
42
+ makeAlias(table) {
43
+ let wordLength = 1;
44
+ table = table.toLowerCase().replace(/[^a-z0-9_]/g, '_');
45
+ let alias = table.slice(0, wordLength);
46
+ while (true) {
47
+ if (!this._aliases.has(alias) || wordLength > table.length)
48
+ break;
49
+ wordLength++;
50
+ alias = table.slice(0, wordLength);
51
+ }
52
+ if (this._aliases.has(alias)) {
53
+ throw new core_XansqlError({
54
+ message: `Cannot create alias for table ${table}, please rename the table to avoid conflicts.`,
55
+ model: table,
56
+ });
57
+ }
58
+ this._aliases.set(table, alias);
59
+ return alias;
60
+ }
61
+ model(schema) {
62
+ const model = new model_index(schema.table, schema.schema);
63
+ if (!model.IDColumn) {
64
+ throw new core_XansqlError({
65
+ message: `Model ${schema.table} must have an ID column.`,
66
+ model: schema.table,
67
+ });
68
+ }
69
+ if (this.ModelFactory.has(schema.table)) {
70
+ throw new core_XansqlError({
71
+ message: `Model for table ${schema.table} already exists.`,
72
+ model: schema.table,
73
+ });
74
+ }
75
+ model.alias = this.makeAlias(schema.table);
76
+ model.xansql = this;
77
+ model.hooks = schema.hooks;
78
+ this.ModelFactory.set(schema.table, model);
79
+ // this will delay the model formatting to allow multiple models to be added before formatting
80
+ clearTimeout(this._timer);
81
+ this._timer = setTimeout(() => {
82
+ this.ModelFormatter.format();
83
+ }, 5);
84
+ return model;
85
+ }
86
+ getModel(table) {
87
+ if (!this.models.has(table)) {
88
+ throw new core_XansqlError({
89
+ message: `Model for table ${table} does not exist.`,
90
+ model: table,
91
+ });
92
+ }
93
+ return this.models.get(table);
94
+ }
95
+ async execute(sql) {
96
+ sql = sql.trim().replace(/\s+/g, ' ');
97
+ return await this.dialect.execute(sql, this);
98
+ }
99
+ async getRawSchema() {
100
+ return await this.dialect.getSchema(this);
101
+ }
102
+ async uploadFile(file) {
103
+ var _a;
104
+ if (!((_a = this.dialect.file) === null || _a === void 0 ? void 0 : _a.upload)) {
105
+ throw new core_XansqlError(`File upload is not supported by the current dialect.`);
106
+ }
107
+ return await this.dialect.file.upload(file, this);
108
+ }
109
+ async deleteFile(filename) {
110
+ var _a;
111
+ if (!((_a = this.dialect.file) === null || _a === void 0 ? void 0 : _a.delete)) {
112
+ throw new core_XansqlError(`File delete is not supported by the current dialect.`);
113
+ }
114
+ return await this.dialect.file.delete(filename, this);
115
+ }
116
+ async transaction(callback) {
117
+ return await this.XansqlTransaction.transaction(callback);
118
+ }
119
+ async migrate(force) {
120
+ return await this.XansqlMigration.migrate(force);
121
+ }
122
+ async generateMigration() {
123
+ return await this.XansqlMigration.generate();
124
+ }
125
+ on(event, handler) {
126
+ this.EventManager.on(event, handler);
127
+ }
128
+ }
129
+ class XansqlClone extends Xansql {
130
+ }
131
+
132
+ module.exports = Xansql;
133
+ //# sourceMappingURL=Xansql.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Xansql.cjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\r\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired } from \"./types\";\r\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\r\nimport XansqlConfig from \"./classes/XansqlConfig\";\r\nimport ModelFormatter from \"./classes/ModelFormatter\";\r\nimport XansqlMigration from \"./classes/Migration\";\r\nimport EventManager, { EventHandler, EventPayloads } from \"./classes/EventManager\";\r\nimport XansqlError from \"./XansqlError\";\r\nimport Schema from \"../model/Schema\";\r\nimport { XansqlModelHooks } from \"../model/types\";\r\n\r\nclass Xansql {\r\n readonly config: XansqlConfigTypeRequired;\r\n readonly ModelFactory = new Map<string, Model>()\r\n readonly XANFETCH_CONTENT_TYPE = 'application/octet-stream';\r\n private _aliases = new Map<string, string>();\r\n private ModelFormatter: ModelFormatter;\r\n private XansqlConfig: XansqlConfig;\r\n readonly XansqlTransaction: XansqlTransaction;\r\n readonly EventManager: EventManager\r\n\r\n // SQL Generator Instances can be added here\r\n readonly XansqlMigration: XansqlMigration\r\n\r\n constructor(config: XansqlConfigType) {\r\n this.XansqlConfig = new XansqlConfig(this, config);\r\n this.config = this.XansqlConfig.parse()\r\n this.XansqlTransaction = new XansqlTransaction(this);\r\n this.ModelFormatter = new ModelFormatter(this);\r\n\r\n this.XansqlMigration = new XansqlMigration(this);\r\n this.EventManager = new EventManager();\r\n }\r\n\r\n get dialect() {\r\n return this.config.dialect;\r\n }\r\n\r\n get models() {\r\n return this.ModelFormatter.format()\r\n }\r\n\r\n clone(config?: Partial<XansqlConfigType>) {\r\n const self = new XansqlClone({ ...this.config, ...(config || {}) });\r\n for (let [table, model] of this.ModelFactory) {\r\n const schema = new Schema(table, model.schema)\r\n for (let hook in model.hooks) {\r\n schema.addHook(hook as any, model.hooks[hook as keyof XansqlModelHooks] as any)\r\n }\r\n self.model(schema);\r\n }\r\n return self;\r\n }\r\n\r\n private makeAlias(table: string) {\r\n let wordLength = 1;\r\n table = table.toLowerCase().replace(/[^a-z0-9_]/g, '_')\r\n let alias = table.slice(0, wordLength)\r\n while (true) {\r\n if (!this._aliases.has(alias) || wordLength > table.length) break;\r\n wordLength++;\r\n alias = table.slice(0, wordLength);\r\n }\r\n if (this._aliases.has(alias)) {\r\n throw new XansqlError({\r\n message: `Cannot create alias for table ${table}, please rename the table to avoid conflicts.`,\r\n model: table,\r\n });\r\n }\r\n this._aliases.set(table, alias);\r\n return alias;\r\n }\r\n\r\n _timer: any = null;\r\n model(schema: Schema): Model {\r\n const model = new Model(schema.table, schema.schema);\r\n if (!model.IDColumn) {\r\n throw new XansqlError({\r\n message: `Model ${schema.table} must have an ID column.`,\r\n model: schema.table,\r\n });\r\n }\r\n if (this.ModelFactory.has(schema.table)) {\r\n throw new XansqlError({\r\n message: `Model for table ${schema.table} already exists.`,\r\n model: schema.table,\r\n });\r\n }\r\n model.alias = this.makeAlias(schema.table);\r\n model.xansql = this;\r\n model.hooks = schema.hooks;\r\n this.ModelFactory.set(schema.table, model);\r\n\r\n // this will delay the model formatting to allow multiple models to be added before formatting\r\n clearTimeout(this._timer);\r\n this._timer = setTimeout(() => {\r\n this.ModelFormatter.format()\r\n }, 5);\r\n return model\r\n }\r\n\r\n getModel(table: string): Model {\r\n if (!this.models.has(table)) {\r\n throw new XansqlError({\r\n message: `Model for table ${table} does not exist.`,\r\n model: table,\r\n });\r\n }\r\n return this.models.get(table) as Model;\r\n }\r\n\r\n async execute(sql: string): Promise<ExecuterResult> {\r\n sql = sql.trim().replace(/\\s+/g, ' ');\r\n return await this.dialect.execute(sql, this) as any\r\n }\r\n\r\n async getRawSchema() {\r\n return await this.dialect.getSchema(this);\r\n }\r\n\r\n async uploadFile(file: File) {\r\n if (!this.dialect.file?.upload) {\r\n throw new XansqlError(`File upload is not supported by the current dialect.`);\r\n }\r\n return await this.dialect.file.upload(file, this);\r\n }\r\n\r\n async deleteFile(filename: string) {\r\n if (!this.dialect.file?.delete) {\r\n throw new XansqlError(`File delete is not supported by the current dialect.`);\r\n }\r\n return await this.dialect.file.delete(filename, this);\r\n }\r\n\r\n async transaction(callback: () => Promise<any>) {\r\n return await this.XansqlTransaction.transaction(callback);\r\n }\r\n\r\n async migrate(force?: boolean) {\r\n return await this.XansqlMigration.migrate(force);\r\n }\r\n\r\n async generateMigration() {\r\n return await this.XansqlMigration.generate();\r\n }\r\n\r\n on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>) {\r\n this.EventManager.on(event, handler);\r\n }\r\n\r\n}\r\n\r\nclass XansqlClone extends Xansql { }\r\n\r\n\r\nexport default Xansql"],"names":["XansqlConfig","XansqlTransaction","ModelFormatter","XansqlMigration","EventManager","Schema","XansqlError","Model"],"mappings":"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"}
package/core/Xansql.d.ts CHANGED
@@ -1,12 +1,9 @@
1
- import * as securequ from 'securequ';
2
- import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialect, XansqlModelOptions, ExecuterResult, XansqlOnFetchInfo } from './type.js';
3
- import Model from '../model/index.js';
4
- import XansqlTransection from './classes/XansqlTransaction.js';
5
- import XansqlMigration from './classes/Migration/index.js';
6
- import { XansqlSchemaObject } from '../Types/types.js';
7
- import EventManager, { EventNames, EventHandler } from './classes/EventManager.js';
8
- import TypesGenerator from './classes/TypesGenerator.js';
9
-
1
+ import Model from "../model";
2
+ import { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired } from "./types";
3
+ import XansqlTransaction from "./classes/XansqlTransaction";
4
+ import XansqlMigration from "./classes/Migration";
5
+ import EventManager, { EventHandler, EventPayloads } from "./classes/EventManager";
6
+ import Schema from "../model/Schema";
10
7
  declare class Xansql {
11
8
  readonly config: XansqlConfigTypeRequired;
12
9
  readonly ModelFactory: Map<string, Model>;
@@ -14,33 +11,26 @@ declare class Xansql {
14
11
  private _aliases;
15
12
  private ModelFormatter;
16
13
  private XansqlConfig;
17
- readonly XansqlTransaction: XansqlTransection;
18
- private XansqlFetch;
14
+ readonly XansqlTransaction: XansqlTransaction;
19
15
  readonly EventManager: EventManager;
20
- readonly TypesGenerator: TypesGenerator;
21
16
  readonly XansqlMigration: XansqlMigration;
22
17
  constructor(config: XansqlConfigType);
23
- get dialect(): XansqlDialect;
18
+ get dialect(): import("./types").XansqlDialect;
24
19
  get models(): Map<string, Model>;
25
20
  clone(config?: Partial<XansqlConfigType>): XansqlClone;
26
21
  private makeAlias;
27
22
  _timer: any;
28
- model(table: string, schema: XansqlSchemaObject, options?: Partial<XansqlModelOptions>): Model;
23
+ model(schema: Schema): Model;
29
24
  getModel(table: string): Model;
30
- execute(sql: string, executeId?: string): Promise<ExecuterResult>;
31
- getRawSchema(): Promise<any>;
32
- uploadFile(file: File, executeId?: string): Promise<securequ.UploadFileMeta>;
33
- deleteFile(filename: string, executeId?: string): Promise<void | securequ.SecurequClientResponse>;
25
+ execute(sql: string): Promise<ExecuterResult>;
26
+ getRawSchema(): Promise<void | import("./types").XansqlDialectSchemaType>;
27
+ uploadFile(file: File): Promise<import("./types").XansqlFileMeta>;
28
+ deleteFile(filename: string): Promise<void>;
34
29
  transaction(callback: () => Promise<any>): Promise<any>;
35
30
  migrate(force?: boolean): Promise<boolean>;
36
31
  generateMigration(): Promise<string[]>;
37
- onFetch(url: string, info: XansqlOnFetchInfo): Promise<{
38
- status: number;
39
- body: string | Uint8Array<ArrayBufferLike>;
40
- }>;
41
- on<K extends EventNames>(event: K, handler: EventHandler<K>): void;
32
+ on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>): void;
42
33
  }
43
34
  declare class XansqlClone extends Xansql {
44
35
  }
45
-
46
- export { Xansql as default };
36
+ export default Xansql;
package/core/Xansql.mjs CHANGED
@@ -1,4 +1,13 @@
1
- import Model from'../model/index.mjs';import XansqlTransection from'./classes/XansqlTransaction.mjs';import XansqlConfig from'./classes/XansqlConfig.mjs';import ModelFormatter from'./classes/ModelFormatter.mjs';import XansqlFetch from'./classes/XansqlFetch.mjs';import ExecuteMeta from'./ExcuteMeta.mjs';import XansqlMigration from'./classes/Migration/index.mjs';import EventManager from'./classes/EventManager.mjs';import TypesGenerator from'./classes/TypesGenerator.mjs';import XansqlError from'./XansqlError.mjs';class Xansql {
1
+ import Model from '../model/index.mjs';
2
+ import XansqlTransection from './classes/XansqlTransaction.mjs';
3
+ import XansqlConfig from './classes/XansqlConfig.mjs';
4
+ import ModelFormatter from './classes/ModelFormatter.mjs';
5
+ import XansqlMigration from './classes/Migration/index.mjs';
6
+ import EventManager from './classes/EventManager.mjs';
7
+ import XansqlError from './XansqlError.mjs';
8
+ import Schema from '../model/Schema.mjs';
9
+
10
+ class Xansql {
2
11
  constructor(config) {
3
12
  this.ModelFactory = new Map();
4
13
  this.XANFETCH_CONTENT_TYPE = 'application/octet-stream';
@@ -9,9 +18,7 @@ import Model from'../model/index.mjs';import XansqlTransection from'./classes/Xa
9
18
  this.XansqlTransaction = new XansqlTransection(this);
10
19
  this.ModelFormatter = new ModelFormatter(this);
11
20
  this.XansqlMigration = new XansqlMigration(this);
12
- this.XansqlFetch = new XansqlFetch(this);
13
21
  this.EventManager = new EventManager();
14
- this.TypesGenerator = new TypesGenerator(this);
15
22
  }
16
23
  get dialect() {
17
24
  return this.config.dialect;
@@ -22,7 +29,11 @@ import Model from'../model/index.mjs';import XansqlTransection from'./classes/Xa
22
29
  clone(config) {
23
30
  const self = new XansqlClone(Object.assign(Object.assign({}, this.config), (config || {})));
24
31
  for (let [table, model] of this.ModelFactory) {
25
- self.model(table, model.schema, model.options);
32
+ const schema = new Schema(table, model.schema);
33
+ for (let hook in model.hooks) {
34
+ schema.addHook(hook, model.hooks[hook]);
35
+ }
36
+ self.model(schema);
26
37
  }
27
38
  return self;
28
39
  }
@@ -45,24 +56,24 @@ import Model from'../model/index.mjs';import XansqlTransection from'./classes/Xa
45
56
  this._aliases.set(table, alias);
46
57
  return alias;
47
58
  }
48
- model(table, schema, options) {
49
- const model = new Model(table, schema);
59
+ model(schema) {
60
+ const model = new Model(schema.table, schema.schema);
50
61
  if (!model.IDColumn) {
51
62
  throw new XansqlError({
52
- message: `Model ${table} must have an ID column.`,
53
- model: table,
63
+ message: `Model ${schema.table} must have an ID column.`,
64
+ model: schema.table,
54
65
  });
55
66
  }
56
- if (this.ModelFactory.has(model.table)) {
67
+ if (this.ModelFactory.has(schema.table)) {
57
68
  throw new XansqlError({
58
- message: `Model for table ${table} already exists.`,
59
- model: table,
69
+ message: `Model for table ${schema.table} already exists.`,
70
+ model: schema.table,
60
71
  });
61
72
  }
62
- model.alias = this.makeAlias(model.table);
73
+ model.alias = this.makeAlias(schema.table);
63
74
  model.xansql = this;
64
- model.options = Object.assign({ hooks: {} }, options);
65
- this.ModelFactory.set(model.table, model);
75
+ model.hooks = schema.hooks;
76
+ this.ModelFactory.set(schema.table, model);
66
77
  // this will delay the model formatting to allow multiple models to be added before formatting
67
78
  clearTimeout(this._timer);
68
79
  this._timer = setTimeout(() => {
@@ -71,46 +82,34 @@ import Model from'../model/index.mjs';import XansqlTransection from'./classes/Xa
71
82
  return model;
72
83
  }
73
84
  getModel(table) {
74
- if (!this.ModelFactory.has(table)) {
85
+ if (!this.models.has(table)) {
75
86
  throw new XansqlError({
76
87
  message: `Model for table ${table} does not exist.`,
77
88
  model: table,
78
89
  });
79
90
  }
80
- return this.ModelFactory.get(table);
91
+ return this.models.get(table);
81
92
  }
82
- async execute(sql, executeId) {
83
- if (typeof window !== "undefined" && !this.config.fetch) {
84
- throw new XansqlError({
85
- message: `In browser environment, fetch implementation is required in config.`,
86
- });
87
- }
93
+ async execute(sql) {
88
94
  sql = sql.trim().replace(/\s+/g, ' ');
89
- if (typeof window !== "undefined") {
90
- if (!executeId || !ExecuteMeta.has(executeId)) {
91
- throw new XansqlError({
92
- message: `Execute ID is required for browser execution.`,
93
- });
94
- }
95
- const res = await this.XansqlFetch.execute(sql, executeId);
96
- ExecuteMeta.delete(executeId);
97
- return res;
98
- }
99
- else {
100
- return await this.dialect.execute(sql);
101
- }
95
+ return await this.dialect.execute(sql, this);
102
96
  }
103
97
  async getRawSchema() {
104
- if (typeof window !== "undefined") {
105
- return await this.XansqlFetch.getSchema();
106
- }
107
- return await this.dialect.getSchema();
98
+ return await this.dialect.getSchema(this);
108
99
  }
109
- async uploadFile(file, executeId) {
110
- return await this.XansqlFetch.uploadFile(file, executeId);
100
+ async uploadFile(file) {
101
+ var _a;
102
+ if (!((_a = this.dialect.file) === null || _a === void 0 ? void 0 : _a.upload)) {
103
+ throw new XansqlError(`File upload is not supported by the current dialect.`);
104
+ }
105
+ return await this.dialect.file.upload(file, this);
111
106
  }
112
- async deleteFile(filename, executeId) {
113
- return await this.XansqlFetch.deleteFile(filename, executeId);
107
+ async deleteFile(filename) {
108
+ var _a;
109
+ if (!((_a = this.dialect.file) === null || _a === void 0 ? void 0 : _a.delete)) {
110
+ throw new XansqlError(`File delete is not supported by the current dialect.`);
111
+ }
112
+ return await this.dialect.file.delete(filename, this);
114
113
  }
115
114
  async transaction(callback) {
116
115
  return await this.XansqlTransaction.transaction(callback);
@@ -121,12 +120,12 @@ import Model from'../model/index.mjs';import XansqlTransection from'./classes/Xa
121
120
  async generateMigration() {
122
121
  return await this.XansqlMigration.generate();
123
122
  }
124
- async onFetch(url, info) {
125
- return await this.XansqlFetch.onFetch(url, info);
126
- }
127
123
  on(event, handler) {
128
124
  this.EventManager.on(event, handler);
129
125
  }
130
126
  }
131
127
  class XansqlClone extends Xansql {
132
- }export{Xansql as default};//# sourceMappingURL=Xansql.mjs.map
128
+ }
129
+
130
+ export { Xansql as default };
131
+ //# sourceMappingURL=Xansql.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Xansql.mjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired, XansqlModelOptions, XansqlOnFetchInfo } from \"./type\";\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\nimport XansqlConfig from \"./classes/XansqlConfig\";\nimport ModelFormatter from \"./classes/ModelFormatter\";\nimport XansqlFetch from \"./classes/XansqlFetch\";\nimport ExecuteMeta from \"./ExcuteMeta\";\nimport XansqlMigration from \"./classes/Migration\";\nimport { XansqlSchemaObject } from \"../Types/types\";\nimport EventManager, { EventHandler, EventNames } from \"./classes/EventManager\";\nimport TypesGenerator from \"./classes/TypesGenerator\";\nimport XansqlError from \"./XansqlError\";\n\nclass Xansql {\n readonly config: XansqlConfigTypeRequired;\n readonly ModelFactory = new Map<string, Model>()\n readonly XANFETCH_CONTENT_TYPE = 'application/octet-stream';\n private _aliases = new Map<string, string>();\n private ModelFormatter: ModelFormatter;\n private XansqlConfig: XansqlConfig;\n readonly XansqlTransaction: XansqlTransaction;\n private XansqlFetch: XansqlFetch\n readonly EventManager: EventManager\n readonly TypesGenerator: TypesGenerator\n\n // SQL Generator Instances can be added here\n readonly XansqlMigration: XansqlMigration\n\n constructor(config: XansqlConfigType) {\n this.XansqlConfig = new XansqlConfig(this, config);\n this.config = this.XansqlConfig.parse()\n this.XansqlTransaction = new XansqlTransaction(this);\n this.ModelFormatter = new ModelFormatter(this);\n\n this.XansqlMigration = new XansqlMigration(this);\n this.XansqlFetch = new XansqlFetch(this);\n this.EventManager = new EventManager();\n this.TypesGenerator = new TypesGenerator(this);\n }\n\n get dialect() {\n return this.config.dialect;\n }\n\n get models() {\n return this.ModelFormatter.format()\n }\n\n clone(config?: Partial<XansqlConfigType>) {\n const self = new XansqlClone({ ...this.config, ...(config || {}) });\n for (let [table, model] of this.ModelFactory) {\n self.model(table, model.schema, model.options);\n }\n return self;\n }\n\n private makeAlias(table: string) {\n let wordLength = 1;\n table = table.toLowerCase().replace(/[^a-z0-9_]/g, '_')\n let alias = table.slice(0, wordLength)\n while (true) {\n if (!this._aliases.has(alias) || wordLength > table.length) break;\n wordLength++;\n alias = table.slice(0, wordLength);\n }\n if (this._aliases.has(alias)) {\n throw new XansqlError({\n message: `Cannot create alias for table ${table}, please rename the table to avoid conflicts.`,\n model: table,\n });\n }\n this._aliases.set(table, alias);\n return alias;\n }\n\n _timer: any = null;\n model(table: string, schema: XansqlSchemaObject, options?: Partial<XansqlModelOptions>): Model {\n const model = new Model(table, schema);\n if (!model.IDColumn) {\n throw new XansqlError({\n message: `Model ${table} must have an ID column.`,\n model: table,\n });\n }\n if (this.ModelFactory.has(model.table)) {\n throw new XansqlError({\n message: `Model for table ${table} already exists.`,\n model: table,\n });\n }\n model.alias = this.makeAlias(model.table);\n model.xansql = this;\n model.options = {\n hooks: {},\n ...options\n };\n this.ModelFactory.set(model.table, model);\n\n // this will delay the model formatting to allow multiple models to be added before formatting\n clearTimeout(this._timer);\n this._timer = setTimeout(() => {\n this.ModelFormatter.format()\n }, 5);\n return model\n }\n\n getModel(table: string): Model {\n if (!this.ModelFactory.has(table)) {\n throw new XansqlError({\n message: `Model for table ${table} does not exist.`,\n model: table,\n });\n }\n return this.ModelFactory.get(table) as Model;\n }\n\n async execute(sql: string, executeId?: string): Promise<ExecuterResult> {\n if (typeof window !== \"undefined\" && !this.config.fetch) {\n throw new XansqlError({\n message: `In browser environment, fetch implementation is required in config.`,\n });\n }\n\n sql = sql.trim().replace(/\\s+/g, ' ');\n\n if (typeof window !== \"undefined\") {\n if (!executeId || !ExecuteMeta.has(executeId)) {\n throw new XansqlError({\n message: `Execute ID is required for browser execution.`,\n })\n }\n const res = await this.XansqlFetch.execute(sql, executeId);\n ExecuteMeta.delete(executeId);\n return res\n } else {\n return await this.dialect.execute(sql) as any\n }\n }\n\n async getRawSchema() {\n if (typeof window !== \"undefined\") {\n return await this.XansqlFetch.getSchema();\n }\n return await this.dialect.getSchema();\n }\n\n async uploadFile(file: File, executeId?: string) {\n return await this.XansqlFetch.uploadFile(file, executeId);\n }\n\n async deleteFile(filename: string, executeId?: string) {\n return await this.XansqlFetch.deleteFile(filename, executeId);\n }\n\n async transaction(callback: () => Promise<any>) {\n return await this.XansqlTransaction.transaction(callback);\n }\n\n async migrate(force?: boolean) {\n return await this.XansqlMigration.migrate(force);\n }\n\n async generateMigration() {\n return await this.XansqlMigration.generate();\n }\n\n async onFetch(url: string, info: XansqlOnFetchInfo) {\n return await this.XansqlFetch.onFetch(url, info);\n }\n\n on<K extends EventNames>(event: K, handler: EventHandler<K>) {\n this.EventManager.on(event, handler);\n }\n\n}\n\nclass XansqlClone extends Xansql { }\n\n\nexport default Xansql"],"names":["XansqlTransaction"],"mappings":"ogBAaA,MAAM,MAAM,CAAA;AAeT,IAAA,WAAA,CAAY,MAAwB,EAAA;AAb3B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAiB;QACvC,IAAA,CAAA,qBAAqB,GAAG,0BAA0B;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB;QA0D5C,IAAA,CAAA,MAAM,GAAQ,IAAI;QA9Cf,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAIA,iBAAiB,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC;QAE9C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC;IACjD;AAEA,IAAA,IAAI,OAAO,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;IAC7B;AAEA,IAAA,IAAI,MAAM,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;IACtC;AAEA,IAAA,KAAK,CAAC,MAAkC,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,WAAW,iCAAM,IAAI,CAAC,MAAM,CAAA,GAAM,MAAM,IAAI,EAAE,GAAI;QACnE,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;QACjD;AACA,QAAA,OAAO,IAAI;IACd;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;QAC5B,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;QACvD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QACtC,OAAO,IAAI,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM;gBAAE;AAC5D,YAAA,UAAU,EAAE;YACZ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;QACrC;QACA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC;gBACnB,OAAO,EAAE,CAAA,8BAAA,EAAiC,KAAK,CAAA,6CAAA,CAA+C;AAC9F,gBAAA,KAAK,EAAE,KAAK;AACd,aAAA,CAAC;QACL;QACA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/B,QAAA,OAAO,KAAK;IACf;AAGA,IAAA,KAAK,CAAC,KAAa,EAAE,MAA0B,EAAE,OAAqC,EAAA;QACnF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,IAAI,WAAW,CAAC;gBACnB,OAAO,EAAE,CAAA,MAAA,EAAS,KAAK,CAAA,wBAAA,CAA0B;AACjD,gBAAA,KAAK,EAAE,KAAK;AACd,aAAA,CAAC;QACL;QACA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,IAAI,WAAW,CAAC;gBACnB,OAAO,EAAE,CAAA,gBAAA,EAAmB,KAAK,CAAA,gBAAA,CAAkB;AACnD,gBAAA,KAAK,EAAE,KAAK;AACd,aAAA,CAAC;QACL;QACA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,QAAA,KAAK,CAAC,MAAM,GAAG,IAAI;QACnB,KAAK,CAAC,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EACV,KAAK,EAAE,EAAE,EAAA,EACN,OAAO,CACZ;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;;AAGzC,QAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QAC/B,CAAC,EAAE,CAAC,CAAC;AACL,QAAA,OAAO,KAAK;IACf;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChC,MAAM,IAAI,WAAW,CAAC;gBACnB,OAAO,EAAE,CAAA,gBAAA,EAAmB,KAAK,CAAA,gBAAA,CAAkB;AACnD,gBAAA,KAAK,EAAE,KAAK;AACd,aAAA,CAAC;QACL;QACA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAU;IAC/C;AAEA,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,SAAkB,EAAA;AAC1C,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACtD,MAAM,IAAI,WAAW,CAAC;AACnB,gBAAA,OAAO,EAAE,CAAA,mEAAA,CAAqE;AAChF,aAAA,CAAC;QACL;AAEA,QAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAErC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YAChC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC5C,MAAM,IAAI,WAAW,CAAC;AACnB,oBAAA,OAAO,EAAE,CAAA,6CAAA,CAA+C;AAC1D,iBAAA,CAAC;YACL;AACA,YAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC;AAC1D,YAAA,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7B,YAAA,OAAO,GAAG;QACb;aAAO;YACJ,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAQ;QAChD;IACH;AAEA,IAAA,MAAM,YAAY,GAAA;AACf,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAChC,YAAA,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC5C;AACA,QAAA,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACxC;AAEA,IAAA,MAAM,UAAU,CAAC,IAAU,EAAE,SAAkB,EAAA;QAC5C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;IAC5D;AAEA,IAAA,MAAM,UAAU,CAAC,QAAgB,EAAE,SAAkB,EAAA;QAClD,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;IAChE;IAEA,MAAM,WAAW,CAAC,QAA4B,EAAA;QAC3C,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC5D;IAEA,MAAM,OAAO,CAAC,KAAe,EAAA;QAC1B,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;IACnD;AAEA,IAAA,MAAM,iBAAiB,GAAA;AACpB,QAAA,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IAC/C;AAEA,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,IAAuB,EAAA;QAC/C,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IACnD;IAEA,EAAE,CAAuB,KAAQ,EAAE,OAAwB,EAAA;QACxD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;IACvC;AAEF;AAED,MAAM,WAAY,SAAQ,MAAM,CAAA;AAAI"}
1
+ {"version":3,"file":"Xansql.mjs","sources":["../../src/core/Xansql.ts"],"sourcesContent":["import Model from \"../model\";\r\nimport { ExecuterResult, XansqlConfigType, XansqlConfigTypeRequired } from \"./types\";\r\nimport XansqlTransaction from \"./classes/XansqlTransaction\";\r\nimport XansqlConfig from \"./classes/XansqlConfig\";\r\nimport ModelFormatter from \"./classes/ModelFormatter\";\r\nimport XansqlMigration from \"./classes/Migration\";\r\nimport EventManager, { EventHandler, EventPayloads } from \"./classes/EventManager\";\r\nimport XansqlError from \"./XansqlError\";\r\nimport Schema from \"../model/Schema\";\r\nimport { XansqlModelHooks } from \"../model/types\";\r\n\r\nclass Xansql {\r\n readonly config: XansqlConfigTypeRequired;\r\n readonly ModelFactory = new Map<string, Model>()\r\n readonly XANFETCH_CONTENT_TYPE = 'application/octet-stream';\r\n private _aliases = new Map<string, string>();\r\n private ModelFormatter: ModelFormatter;\r\n private XansqlConfig: XansqlConfig;\r\n readonly XansqlTransaction: XansqlTransaction;\r\n readonly EventManager: EventManager\r\n\r\n // SQL Generator Instances can be added here\r\n readonly XansqlMigration: XansqlMigration\r\n\r\n constructor(config: XansqlConfigType) {\r\n this.XansqlConfig = new XansqlConfig(this, config);\r\n this.config = this.XansqlConfig.parse()\r\n this.XansqlTransaction = new XansqlTransaction(this);\r\n this.ModelFormatter = new ModelFormatter(this);\r\n\r\n this.XansqlMigration = new XansqlMigration(this);\r\n this.EventManager = new EventManager();\r\n }\r\n\r\n get dialect() {\r\n return this.config.dialect;\r\n }\r\n\r\n get models() {\r\n return this.ModelFormatter.format()\r\n }\r\n\r\n clone(config?: Partial<XansqlConfigType>) {\r\n const self = new XansqlClone({ ...this.config, ...(config || {}) });\r\n for (let [table, model] of this.ModelFactory) {\r\n const schema = new Schema(table, model.schema)\r\n for (let hook in model.hooks) {\r\n schema.addHook(hook as any, model.hooks[hook as keyof XansqlModelHooks] as any)\r\n }\r\n self.model(schema);\r\n }\r\n return self;\r\n }\r\n\r\n private makeAlias(table: string) {\r\n let wordLength = 1;\r\n table = table.toLowerCase().replace(/[^a-z0-9_]/g, '_')\r\n let alias = table.slice(0, wordLength)\r\n while (true) {\r\n if (!this._aliases.has(alias) || wordLength > table.length) break;\r\n wordLength++;\r\n alias = table.slice(0, wordLength);\r\n }\r\n if (this._aliases.has(alias)) {\r\n throw new XansqlError({\r\n message: `Cannot create alias for table ${table}, please rename the table to avoid conflicts.`,\r\n model: table,\r\n });\r\n }\r\n this._aliases.set(table, alias);\r\n return alias;\r\n }\r\n\r\n _timer: any = null;\r\n model(schema: Schema): Model {\r\n const model = new Model(schema.table, schema.schema);\r\n if (!model.IDColumn) {\r\n throw new XansqlError({\r\n message: `Model ${schema.table} must have an ID column.`,\r\n model: schema.table,\r\n });\r\n }\r\n if (this.ModelFactory.has(schema.table)) {\r\n throw new XansqlError({\r\n message: `Model for table ${schema.table} already exists.`,\r\n model: schema.table,\r\n });\r\n }\r\n model.alias = this.makeAlias(schema.table);\r\n model.xansql = this;\r\n model.hooks = schema.hooks;\r\n this.ModelFactory.set(schema.table, model);\r\n\r\n // this will delay the model formatting to allow multiple models to be added before formatting\r\n clearTimeout(this._timer);\r\n this._timer = setTimeout(() => {\r\n this.ModelFormatter.format()\r\n }, 5);\r\n return model\r\n }\r\n\r\n getModel(table: string): Model {\r\n if (!this.models.has(table)) {\r\n throw new XansqlError({\r\n message: `Model for table ${table} does not exist.`,\r\n model: table,\r\n });\r\n }\r\n return this.models.get(table) as Model;\r\n }\r\n\r\n async execute(sql: string): Promise<ExecuterResult> {\r\n sql = sql.trim().replace(/\\s+/g, ' ');\r\n return await this.dialect.execute(sql, this) as any\r\n }\r\n\r\n async getRawSchema() {\r\n return await this.dialect.getSchema(this);\r\n }\r\n\r\n async uploadFile(file: File) {\r\n if (!this.dialect.file?.upload) {\r\n throw new XansqlError(`File upload is not supported by the current dialect.`);\r\n }\r\n return await this.dialect.file.upload(file, this);\r\n }\r\n\r\n async deleteFile(filename: string) {\r\n if (!this.dialect.file?.delete) {\r\n throw new XansqlError(`File delete is not supported by the current dialect.`);\r\n }\r\n return await this.dialect.file.delete(filename, this);\r\n }\r\n\r\n async transaction(callback: () => Promise<any>) {\r\n return await this.XansqlTransaction.transaction(callback);\r\n }\r\n\r\n async migrate(force?: boolean) {\r\n return await this.XansqlMigration.migrate(force);\r\n }\r\n\r\n async generateMigration() {\r\n return await this.XansqlMigration.generate();\r\n }\r\n\r\n on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>) {\r\n this.EventManager.on(event, handler);\r\n }\r\n\r\n}\r\n\r\nclass XansqlClone extends Xansql { }\r\n\r\n\r\nexport default Xansql"],"names":["XansqlTransaction"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});class XansqlError extends Error {
1
+ 'use strict';
2
+
3
+ class XansqlError extends Error {
2
4
  constructor(opt) {
3
5
  let model = typeof opt === 'string' ? undefined : opt.model;
4
6
  let column = typeof opt === 'string' ? undefined : opt.column;
@@ -8,4 +10,7 @@
8
10
  this.model = model;
9
11
  this.column = column;
10
12
  }
11
- }exports.default=XansqlError;//# sourceMappingURL=XansqlError.js.map
13
+ }
14
+
15
+ module.exports = XansqlError;
16
+ //# sourceMappingURL=XansqlError.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XansqlError.cjs","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["type XanErrorOption = {\r\n model?: string;\r\n column?: string;\r\n message: string;\r\n}\r\n\r\n\r\nclass XansqlError extends Error {\r\n model?: string\r\n column?: string\r\n\r\n constructor(opt: XanErrorOption | string) {\r\n let model = typeof opt === 'string' ? undefined : opt.model;\r\n let column = typeof opt === 'string' ? undefined : opt.column;\r\n let message = typeof opt === 'string' ? (opt as string) : opt.message;\r\n super(message);\r\n this.name = \"XansqlError\";\r\n this.model = model;\r\n this.column = column;\r\n }\r\n}\r\n\r\nexport default XansqlError;"],"names":[],"mappings":";;AAOA,MAAM,WAAY,SAAQ,KAAK,CAAA;AAI5B,IAAA,WAAA,CAAY,GAA4B,EAAA;AACrC,QAAA,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,KAAK;AAC3D,QAAA,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM;AAC7D,QAAA,IAAI,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAI,GAAc,GAAG,GAAG,CAAC,OAAO;QACrE,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AACF;;;;"}
@@ -0,0 +1,11 @@
1
+ type XanErrorOption = {
2
+ model?: string;
3
+ column?: string;
4
+ message: string;
5
+ };
6
+ declare class XansqlError extends Error {
7
+ model?: string;
8
+ column?: string;
9
+ constructor(opt: XanErrorOption | string);
10
+ }
11
+ export default XansqlError;
@@ -8,4 +8,7 @@ class XansqlError extends Error {
8
8
  this.model = model;
9
9
  this.column = column;
10
10
  }
11
- }export{XansqlError as default};//# sourceMappingURL=XansqlError.mjs.map
11
+ }
12
+
13
+ export { XansqlError as default };
14
+ //# sourceMappingURL=XansqlError.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"XansqlError.mjs","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["type XanErrorOption = {\n model?: string;\n column?: string;\n message: string;\n}\n\n\nclass XansqlError extends Error {\n model?: string\n column?: string\n\n constructor(opt: XanErrorOption | string) {\n let model = typeof opt === 'string' ? undefined : opt.model;\n let column = typeof opt === 'string' ? undefined : opt.column;\n let message = typeof opt === 'string' ? (opt as string) : opt.message;\n super(message);\n this.name = \"XansqlError\";\n this.model = model;\n this.column = column;\n }\n}\n\nexport default XansqlError;"],"names":[],"mappings":"AAOA,MAAM,WAAY,SAAQ,KAAK,CAAA;AAI5B,IAAA,WAAA,CAAY,GAA4B,EAAA;AACrC,QAAA,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,KAAK;AAC3D,QAAA,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM;AAC7D,QAAA,IAAI,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAI,GAAc,GAAG,GAAG,CAAC,OAAO;QACrE,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AACF"}
1
+ {"version":3,"file":"XansqlError.mjs","sources":["../../src/core/XansqlError.ts"],"sourcesContent":["type XanErrorOption = {\r\n model?: string;\r\n column?: string;\r\n message: string;\r\n}\r\n\r\n\r\nclass XansqlError extends Error {\r\n model?: string\r\n column?: string\r\n\r\n constructor(opt: XanErrorOption | string) {\r\n let model = typeof opt === 'string' ? undefined : opt.model;\r\n let column = typeof opt === 'string' ? undefined : opt.column;\r\n let message = typeof opt === 'string' ? (opt as string) : opt.message;\r\n super(message);\r\n this.name = \"XansqlError\";\r\n this.model = model;\r\n this.column = column;\r\n }\r\n}\r\n\r\nexport default XansqlError;"],"names":[],"mappings":"AAOA,MAAM,WAAY,SAAQ,KAAK,CAAA;AAI5B,IAAA,WAAA,CAAY,GAA4B,EAAA;AACrC,QAAA,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,KAAK;AAC3D,QAAA,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM;AAC7D,QAAA,IAAI,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAI,GAAc,GAAG,GAAG,CAAC,OAAO;QACrE,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AACF;;;;"}
@@ -1,4 +1,6 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});class EventManager {
1
+ 'use strict';
2
+
3
+ class EventManager {
2
4
  constructor() {
3
5
  this.events = {};
4
6
  }
@@ -18,4 +20,7 @@
18
20
  }
19
21
  return this;
20
22
  }
21
- }exports.default=EventManager;//# sourceMappingURL=EventManager.js.map
23
+ }
24
+
25
+ module.exports = EventManager;
26
+ //# sourceMappingURL=EventManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventManager.cjs","sources":["../../../src/core/classes/EventManager.ts"],"sourcesContent":["import Model from \"../../model\";\r\nimport { CreateArgsType, DeleteArgsType, FindArgsType, UpdateArgsType } from \"../../model/types\";\r\n\r\ntype Result = { [key: string]: any };\r\n\r\nexport type EventPayloads = {\r\n BEFORE_CREATE: { model: Model; args: CreateArgsType };\r\n BEFORE_UPDATE: { model: Model; args: UpdateArgsType };\r\n BEFORE_DELETE: { model: Model; args: DeleteArgsType };\r\n BEFORE_FIND: { model: Model; args: FindArgsType };\r\n BEFORE_AGGREGATE: { model: Model; args: any };\r\n\r\n CREATE: { model: Model; results: Result[]; args: CreateArgsType };\r\n UPDATE: { model: Model; results: Result[], args: UpdateArgsType };\r\n DELETE: { model: Model; results: Result[], args: DeleteArgsType };\r\n FIND: { model: Model; results: Result[], args: FindArgsType };\r\n AGGREGATE: { model: Model; results: any; args: any };\r\n\r\n};\r\n\r\n// correct type: handler only gets its OWN event payload\r\nexport type EventHandler<K extends keyof EventPayloads> = (payload: EventPayloads[K]) => void | Promise<void>;\r\n\r\nclass EventManager {\r\n private events: {\r\n [K in keyof EventPayloads]?: EventHandler<K>[];\r\n } = {};\r\n\r\n on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>) {\r\n if (!this.events[event]) {\r\n this.events[event] = [];\r\n }\r\n this.events[event]!.push(handler);\r\n return this;\r\n }\r\n\r\n async emit<K extends keyof EventPayloads>(event: K, payload: EventPayloads[K]) {\r\n const handlers = this.events[event];\r\n if (!handlers) return this;\r\n for (const handler of handlers) {\r\n await handler(payload);\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nexport default EventManager;\r\n"],"names":[],"mappings":";;AAuBA,MAAM,YAAY,CAAA;AAAlB,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,MAAM,GAEV,EAAE;IAkBT;IAhBG,EAAE,CAAgC,KAAQ,EAAE,OAAwB,EAAA;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;QAC1B;QACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,MAAM,IAAI,CAAgC,KAAQ,EAAE,OAAyB,EAAA;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;AAC1B,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,OAAO,IAAI;IACd;AACF;;;;"}
@@ -1,72 +1,59 @@
1
- import Model from '../../model/index.js';
2
- import { CreateArgsType, UpdateArgsType, DeleteArgsType, FindArgsType } from '../../model/type.js';
3
-
4
- type EventNames = "CREATE" | "UPDATE" | "DELETE" | "FIND" | "AGGREGATE" | "BEFORE_CREATE" | "BEFORE_UPDATE" | "BEFORE_DELETE" | "BEFORE_FIND" | "BEFORE_AGGREGATE" | "BEFORE_FETCH" | "FETCH";
1
+ import Model from "../../model";
2
+ import { CreateArgsType, DeleteArgsType, FindArgsType, UpdateArgsType } from "../../model/types";
5
3
  type Result = {
6
4
  [key: string]: any;
7
5
  };
8
- type EventPayloads = {
9
- CREATE: {
6
+ export type EventPayloads = {
7
+ BEFORE_CREATE: {
10
8
  model: Model;
11
- results: Result[];
12
9
  args: CreateArgsType;
13
10
  };
14
- UPDATE: {
11
+ BEFORE_UPDATE: {
15
12
  model: Model;
16
- results: Result[];
17
13
  args: UpdateArgsType;
18
14
  };
19
- DELETE: {
15
+ BEFORE_DELETE: {
20
16
  model: Model;
21
- results: Result[];
22
17
  args: DeleteArgsType;
23
18
  };
24
- FIND: {
19
+ BEFORE_FIND: {
25
20
  model: Model;
26
- results: Result[];
27
21
  args: FindArgsType;
28
22
  };
29
- AGGREGATE: {
23
+ BEFORE_AGGREGATE: {
30
24
  model: Model;
31
- results: any;
32
25
  args: any;
33
26
  };
34
- BEFORE_CREATE: {
27
+ CREATE: {
35
28
  model: Model;
29
+ results: Result[];
36
30
  args: CreateArgsType;
37
31
  };
38
- BEFORE_UPDATE: {
32
+ UPDATE: {
39
33
  model: Model;
34
+ results: Result[];
40
35
  args: UpdateArgsType;
41
36
  };
42
- BEFORE_DELETE: {
37
+ DELETE: {
43
38
  model: Model;
39
+ results: Result[];
44
40
  args: DeleteArgsType;
45
41
  };
46
- BEFORE_FIND: {
42
+ FIND: {
47
43
  model: Model;
44
+ results: Result[];
48
45
  args: FindArgsType;
49
46
  };
50
- BEFORE_AGGREGATE: {
47
+ AGGREGATE: {
51
48
  model: Model;
49
+ results: any;
52
50
  args: any;
53
51
  };
54
- BEFORE_FETCH: {
55
- url: string;
56
- info: any;
57
- };
58
- FETCH: {
59
- url: string;
60
- info: any;
61
- response: any;
62
- };
63
52
  };
64
- type EventHandler<K extends EventNames> = (payload: EventPayloads[K]) => void | Promise<void>;
53
+ export type EventHandler<K extends keyof EventPayloads> = (payload: EventPayloads[K]) => void | Promise<void>;
65
54
  declare class EventManager {
66
55
  private events;
67
- on<K extends EventNames>(event: K, handler: EventHandler<K>): this;
68
- emit<K extends EventNames>(event: K, payload: EventPayloads[K]): Promise<this>;
56
+ on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>): this;
57
+ emit<K extends keyof EventPayloads>(event: K, payload: EventPayloads[K]): Promise<this>;
69
58
  }
70
-
71
- export { EventManager as default };
72
- export type { EventHandler, EventNames, EventPayloads };
59
+ export default EventManager;
@@ -18,4 +18,7 @@ class EventManager {
18
18
  }
19
19
  return this;
20
20
  }
21
- }export{EventManager as default};//# sourceMappingURL=EventManager.mjs.map
21
+ }
22
+
23
+ export { EventManager as default };
24
+ //# sourceMappingURL=EventManager.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventManager.mjs","sources":["../../../src/core/classes/EventManager.ts"],"sourcesContent":["import Model from \"../../model\";\nimport { CreateArgsType, DeleteArgsType, FindArgsType, UpdateArgsType } from \"../../model/type\";\n\nexport type EventNames =\n | \"CREATE\"\n | \"UPDATE\"\n | \"DELETE\"\n | \"FIND\"\n | \"AGGREGATE\"\n\n | \"BEFORE_CREATE\"\n | \"BEFORE_UPDATE\"\n | \"BEFORE_DELETE\"\n | \"BEFORE_FIND\"\n | \"BEFORE_AGGREGATE\"\n\n | \"BEFORE_FETCH\"\n | \"FETCH\";\n\n\ntype Result = { [key: string]: any };\n\nexport type EventPayloads = {\n CREATE: { model: Model; results: Result[]; args: CreateArgsType };\n UPDATE: { model: Model; results: Result[], args: UpdateArgsType };\n DELETE: { model: Model; results: Result[], args: DeleteArgsType };\n FIND: { model: Model; results: Result[], args: FindArgsType };\n AGGREGATE: { model: Model; results: any; args: any };\n\n BEFORE_CREATE: { model: Model; args: CreateArgsType };\n BEFORE_UPDATE: { model: Model; args: UpdateArgsType };\n BEFORE_DELETE: { model: Model; args: DeleteArgsType };\n BEFORE_FIND: { model: Model; args: FindArgsType };\n BEFORE_AGGREGATE: { model: Model; args: any };\n\n BEFORE_FETCH: { url: string; info: any };\n FETCH: { url: string; info: any; response: any };\n\n};\n\n// correct type: handler only gets its OWN event payload\nexport type EventHandler<K extends EventNames> = (payload: EventPayloads[K]) => void | Promise<void>;\n\nclass EventManager {\n private events: {\n [K in EventNames]?: EventHandler<K>[];\n } = {};\n\n on<K extends EventNames>(event: K, handler: EventHandler<K>) {\n if (!this.events[event]) {\n this.events[event] = [];\n }\n this.events[event]!.push(handler);\n return this;\n }\n\n async emit<K extends EventNames>(event: K, payload: EventPayloads[K]) {\n const handlers = this.events[event];\n if (!handlers) return this;\n for (const handler of handlers) {\n await handler(payload);\n }\n return this;\n }\n}\n\nexport default EventManager;\n"],"names":[],"mappings":"AA2CA,MAAM,YAAY,CAAA;AAAlB,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,MAAM,GAEV,EAAE;IAkBT;IAhBG,EAAE,CAAuB,KAAQ,EAAE,OAAwB,EAAA;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;QAC1B;QACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,MAAM,IAAI,CAAuB,KAAQ,EAAE,OAAyB,EAAA;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;AAC1B,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,OAAO,IAAI;IACd;AACF"}
1
+ {"version":3,"file":"EventManager.mjs","sources":["../../../src/core/classes/EventManager.ts"],"sourcesContent":["import Model from \"../../model\";\r\nimport { CreateArgsType, DeleteArgsType, FindArgsType, UpdateArgsType } from \"../../model/types\";\r\n\r\ntype Result = { [key: string]: any };\r\n\r\nexport type EventPayloads = {\r\n BEFORE_CREATE: { model: Model; args: CreateArgsType };\r\n BEFORE_UPDATE: { model: Model; args: UpdateArgsType };\r\n BEFORE_DELETE: { model: Model; args: DeleteArgsType };\r\n BEFORE_FIND: { model: Model; args: FindArgsType };\r\n BEFORE_AGGREGATE: { model: Model; args: any };\r\n\r\n CREATE: { model: Model; results: Result[]; args: CreateArgsType };\r\n UPDATE: { model: Model; results: Result[], args: UpdateArgsType };\r\n DELETE: { model: Model; results: Result[], args: DeleteArgsType };\r\n FIND: { model: Model; results: Result[], args: FindArgsType };\r\n AGGREGATE: { model: Model; results: any; args: any };\r\n\r\n};\r\n\r\n// correct type: handler only gets its OWN event payload\r\nexport type EventHandler<K extends keyof EventPayloads> = (payload: EventPayloads[K]) => void | Promise<void>;\r\n\r\nclass EventManager {\r\n private events: {\r\n [K in keyof EventPayloads]?: EventHandler<K>[];\r\n } = {};\r\n\r\n on<K extends keyof EventPayloads>(event: K, handler: EventHandler<K>) {\r\n if (!this.events[event]) {\r\n this.events[event] = [];\r\n }\r\n this.events[event]!.push(handler);\r\n return this;\r\n }\r\n\r\n async emit<K extends keyof EventPayloads>(event: K, payload: EventPayloads[K]) {\r\n const handlers = this.events[event];\r\n if (!handlers) return this;\r\n for (const handler of handlers) {\r\n await handler(payload);\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nexport default EventManager;\r\n"],"names":[],"mappings":"AAuBA,MAAM,YAAY,CAAA;AAAlB,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,MAAM,GAEV,EAAE;IAkBT;IAhBG,EAAE,CAAgC,KAAQ,EAAE,OAAwB,EAAA;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;QAC1B;QACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,OAAO,IAAI;IACd;AAEA,IAAA,MAAM,IAAI,CAAgC,KAAQ,EAAE,OAAyB,EAAA;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;AAC1B,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC7B,YAAA,MAAM,OAAO,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,OAAO,IAAI;IACd;AACF;;;;"}