velocious 1.0.427 → 1.0.429

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 (933) hide show
  1. package/README.md +2 -0
  2. package/build/src/application.d.ts +96 -9
  3. package/build/src/application.d.ts.map +1 -1
  4. package/build/src/application.js +127 -28
  5. package/build/src/authorization/ability.d.ts +72 -31
  6. package/build/src/authorization/ability.d.ts.map +1 -1
  7. package/build/src/authorization/ability.js +59 -22
  8. package/build/src/authorization/base-resource.d.ts +47 -20
  9. package/build/src/authorization/base-resource.d.ts.map +1 -1
  10. package/build/src/authorization/base-resource.js +43 -14
  11. package/build/src/background-jobs/client.d.ts +4 -2
  12. package/build/src/background-jobs/client.d.ts.map +1 -1
  13. package/build/src/background-jobs/client.js +4 -2
  14. package/build/src/background-jobs/cron-expression.d.ts +9 -5
  15. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  16. package/build/src/background-jobs/cron-expression.js +16 -6
  17. package/build/src/background-jobs/forked-runner-child.js +12 -5
  18. package/build/src/background-jobs/job-registry.d.ts +7 -1
  19. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  20. package/build/src/background-jobs/job-registry.js +8 -2
  21. package/build/src/background-jobs/job-runner.d.ts +1 -0
  22. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  23. package/build/src/background-jobs/job-runner.js +8 -3
  24. package/build/src/background-jobs/job.d.ts +12 -8
  25. package/build/src/background-jobs/job.d.ts.map +1 -1
  26. package/build/src/background-jobs/job.js +12 -6
  27. package/build/src/background-jobs/json-socket.d.ts +17 -5
  28. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  29. package/build/src/background-jobs/json-socket.js +18 -6
  30. package/build/src/background-jobs/main.d.ts +118 -32
  31. package/build/src/background-jobs/main.d.ts.map +1 -1
  32. package/build/src/background-jobs/main.js +123 -35
  33. package/build/src/background-jobs/normalize-error.d.ts +2 -1
  34. package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
  35. package/build/src/background-jobs/normalize-error.js +5 -3
  36. package/build/src/background-jobs/scheduler.d.ts +31 -10
  37. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  38. package/build/src/background-jobs/scheduler.js +33 -11
  39. package/build/src/background-jobs/socket-request.d.ts +2 -0
  40. package/build/src/background-jobs/socket-request.d.ts.map +1 -1
  41. package/build/src/background-jobs/socket-request.js +11 -3
  42. package/build/src/background-jobs/status-reporter.d.ts +5 -2
  43. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  44. package/build/src/background-jobs/status-reporter.js +6 -3
  45. package/build/src/background-jobs/store.d.ts +57 -19
  46. package/build/src/background-jobs/store.d.ts.map +1 -1
  47. package/build/src/background-jobs/store.js +70 -20
  48. package/build/src/background-jobs/types.d.ts +7 -7
  49. package/build/src/background-jobs/types.d.ts.map +1 -1
  50. package/build/src/background-jobs/types.js +6 -6
  51. package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
  52. package/build/src/background-jobs/web/authorization.js +3 -1
  53. package/build/src/background-jobs/web/controller.d.ts +40 -14
  54. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  55. package/build/src/background-jobs/web/controller.js +46 -15
  56. package/build/src/background-jobs/web/registry.d.ts +5 -0
  57. package/build/src/background-jobs/web/registry.d.ts.map +1 -1
  58. package/build/src/background-jobs/web/registry.js +4 -1
  59. package/build/src/background-jobs/worker.d.ts +41 -8
  60. package/build/src/background-jobs/worker.d.ts.map +1 -1
  61. package/build/src/background-jobs/worker.js +64 -16
  62. package/build/src/beacon/client.d.ts +39 -12
  63. package/build/src/beacon/client.d.ts.map +1 -1
  64. package/build/src/beacon/client.js +45 -15
  65. package/build/src/beacon/in-process-broker.d.ts +4 -0
  66. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  67. package/build/src/beacon/in-process-broker.js +8 -3
  68. package/build/src/beacon/in-process-client.d.ts +28 -9
  69. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  70. package/build/src/beacon/in-process-client.js +27 -9
  71. package/build/src/beacon/server.d.ts +13 -2
  72. package/build/src/beacon/server.d.ts.map +1 -1
  73. package/build/src/beacon/server.js +21 -5
  74. package/build/src/beacon/types.d.ts +3 -3
  75. package/build/src/beacon/types.d.ts.map +1 -1
  76. package/build/src/beacon/types.js +2 -2
  77. package/build/src/cli/base-command.d.ts +18 -4
  78. package/build/src/cli/base-command.d.ts.map +1 -1
  79. package/build/src/cli/base-command.js +15 -4
  80. package/build/src/cli/browser-cli.d.ts +3 -0
  81. package/build/src/cli/browser-cli.d.ts.map +1 -1
  82. package/build/src/cli/browser-cli.js +7 -2
  83. package/build/src/cli/commands/background-jobs-main.d.ts +0 -1
  84. package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
  85. package/build/src/cli/commands/background-jobs-runner.d.ts +0 -1
  86. package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
  87. package/build/src/cli/commands/background-jobs-worker.d.ts +0 -1
  88. package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
  89. package/build/src/cli/commands/beacon.d.ts +0 -1
  90. package/build/src/cli/commands/beacon.d.ts.map +1 -1
  91. package/build/src/cli/commands/console.d.ts +0 -2
  92. package/build/src/cli/commands/console.d.ts.map +1 -1
  93. package/build/src/cli/commands/console.js +5 -2
  94. package/build/src/cli/commands/db/base-command.d.ts +11 -2
  95. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  96. package/build/src/cli/commands/db/base-command.js +12 -3
  97. package/build/src/cli/commands/db/create.d.ts +3 -0
  98. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  99. package/build/src/cli/commands/db/create.js +4 -1
  100. package/build/src/cli/commands/db/drop.d.ts +3 -0
  101. package/build/src/cli/commands/db/drop.d.ts.map +1 -1
  102. package/build/src/cli/commands/db/drop.js +4 -1
  103. package/build/src/cli/commands/db/schema/dump.d.ts +0 -2
  104. package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
  105. package/build/src/cli/commands/db/schema/dump.js +5 -2
  106. package/build/src/cli/commands/db/schema/load.d.ts +0 -2
  107. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
  108. package/build/src/cli/commands/db/schema/load.js +5 -2
  109. package/build/src/cli/commands/db/seed.d.ts +0 -2
  110. package/build/src/cli/commands/db/seed.d.ts.map +1 -1
  111. package/build/src/cli/commands/db/seed.js +5 -2
  112. package/build/src/cli/commands/db/tenants/check.d.ts +4 -1
  113. package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
  114. package/build/src/cli/commands/db/tenants/check.js +5 -2
  115. package/build/src/cli/commands/db/tenants/create.d.ts +4 -1
  116. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  117. package/build/src/cli/commands/db/tenants/create.js +5 -2
  118. package/build/src/cli/commands/db/tenants/migrate.d.ts +4 -1
  119. package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
  120. package/build/src/cli/commands/db/tenants/migrate.js +5 -2
  121. package/build/src/cli/commands/destroy/migration.d.ts +0 -1
  122. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  123. package/build/src/cli/commands/generate/base-models.d.ts +0 -1
  124. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  125. package/build/src/cli/commands/generate/frontend-models.d.ts +0 -2
  126. package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
  127. package/build/src/cli/commands/generate/frontend-models.js +5 -2
  128. package/build/src/cli/commands/generate/migration.d.ts +0 -1
  129. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  130. package/build/src/cli/commands/generate/model.d.ts +0 -1
  131. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  132. package/build/src/cli/commands/init.d.ts +0 -1
  133. package/build/src/cli/commands/init.d.ts.map +1 -1
  134. package/build/src/cli/commands/routes.d.ts +0 -1
  135. package/build/src/cli/commands/routes.d.ts.map +1 -1
  136. package/build/src/cli/commands/run-script.d.ts +0 -2
  137. package/build/src/cli/commands/run-script.d.ts.map +1 -1
  138. package/build/src/cli/commands/run-script.js +5 -2
  139. package/build/src/cli/commands/runner.d.ts +0 -2
  140. package/build/src/cli/commands/runner.d.ts.map +1 -1
  141. package/build/src/cli/commands/runner.js +5 -2
  142. package/build/src/cli/commands/server.d.ts +0 -1
  143. package/build/src/cli/commands/server.d.ts.map +1 -1
  144. package/build/src/cli/commands/test.d.ts +0 -1
  145. package/build/src/cli/commands/test.d.ts.map +1 -1
  146. package/build/src/cli/index.d.ts +18 -5
  147. package/build/src/cli/index.d.ts.map +1 -1
  148. package/build/src/cli/index.js +25 -8
  149. package/build/src/cli/tenant-database-command-helper.d.ts +24 -9
  150. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  151. package/build/src/cli/tenant-database-command-helper.js +30 -11
  152. package/build/src/cli/use-browser-cli.d.ts +1 -0
  153. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  154. package/build/src/cli/use-browser-cli.js +5 -2
  155. package/build/src/configuration-resolver.d.ts +1 -0
  156. package/build/src/configuration-resolver.d.ts.map +1 -1
  157. package/build/src/configuration-resolver.js +2 -1
  158. package/build/src/configuration-types.d.ts +44 -44
  159. package/build/src/configuration-types.d.ts.map +1 -1
  160. package/build/src/configuration-types.js +27 -27
  161. package/build/src/configuration.d.ts +350 -114
  162. package/build/src/configuration.d.ts.map +1 -1
  163. package/build/src/configuration.js +416 -128
  164. package/build/src/controller.d.ts +67 -18
  165. package/build/src/controller.d.ts.map +1 -1
  166. package/build/src/controller.js +88 -23
  167. package/build/src/current-configuration.d.ts +2 -0
  168. package/build/src/current-configuration.d.ts.map +1 -1
  169. package/build/src/current-configuration.js +6 -2
  170. package/build/src/current.d.ts +16 -9
  171. package/build/src/current.d.ts.map +1 -1
  172. package/build/src/current.js +15 -8
  173. package/build/src/database/annotations-async-hooks.js +13 -6
  174. package/build/src/database/annotations.d.ts +7 -1
  175. package/build/src/database/annotations.d.ts.map +1 -1
  176. package/build/src/database/annotations.js +12 -5
  177. package/build/src/database/drivers/base-column.d.ts +21 -3
  178. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  179. package/build/src/database/drivers/base-column.js +21 -3
  180. package/build/src/database/drivers/base-columns-index.d.ts +9 -0
  181. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  182. package/build/src/database/drivers/base-columns-index.js +10 -1
  183. package/build/src/database/drivers/base-foreign-key.d.ts +15 -3
  184. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  185. package/build/src/database/drivers/base-foreign-key.js +15 -3
  186. package/build/src/database/drivers/base-table.d.ts +16 -3
  187. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  188. package/build/src/database/drivers/base-table.js +16 -3
  189. package/build/src/database/drivers/base.d.ts +174 -37
  190. package/build/src/database/drivers/base.d.ts.map +1 -1
  191. package/build/src/database/drivers/base.js +156 -40
  192. package/build/src/database/drivers/mssql/column.d.ts +3 -2
  193. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  194. package/build/src/database/drivers/mssql/column.js +3 -2
  195. package/build/src/database/drivers/mssql/index.d.ts +5 -6
  196. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  197. package/build/src/database/drivers/mssql/index.js +38 -7
  198. package/build/src/database/drivers/mssql/options.d.ts +1 -0
  199. package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
  200. package/build/src/database/drivers/mssql/options.js +8 -2
  201. package/build/src/database/drivers/mssql/sql/create-database.d.ts +1 -0
  202. package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
  203. package/build/src/database/drivers/mssql/sql/create-database.js +2 -1
  204. package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
  205. package/build/src/database/drivers/mssql/sql/drop-database.js +2 -1
  206. package/build/src/database/drivers/mssql/structure-sql.d.ts +5 -2
  207. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  208. package/build/src/database/drivers/mssql/structure-sql.js +5 -2
  209. package/build/src/database/drivers/mssql/table.d.ts +1 -0
  210. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  211. package/build/src/database/drivers/mssql/table.js +9 -4
  212. package/build/src/database/drivers/mysql/column.d.ts +3 -2
  213. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  214. package/build/src/database/drivers/mysql/column.js +4 -3
  215. package/build/src/database/drivers/mysql/index.d.ts +11 -3
  216. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  217. package/build/src/database/drivers/mysql/index.js +54 -10
  218. package/build/src/database/drivers/mysql/options.d.ts +1 -0
  219. package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
  220. package/build/src/database/drivers/mysql/options.js +4 -2
  221. package/build/src/database/drivers/mysql/query.d.ts +3 -2
  222. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  223. package/build/src/database/drivers/mysql/query.js +6 -3
  224. package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
  225. package/build/src/database/drivers/mysql/sql/create-database.js +3 -1
  226. package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -2
  227. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  228. package/build/src/database/drivers/mysql/structure-sql.js +7 -2
  229. package/build/src/database/drivers/mysql/table.d.ts +1 -0
  230. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  231. package/build/src/database/drivers/mysql/table.js +7 -3
  232. package/build/src/database/drivers/pgsql/column.d.ts +3 -2
  233. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  234. package/build/src/database/drivers/pgsql/column.js +3 -2
  235. package/build/src/database/drivers/pgsql/index.d.ts +1 -1
  236. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  237. package/build/src/database/drivers/pgsql/index.js +36 -11
  238. package/build/src/database/drivers/pgsql/options.d.ts +2 -0
  239. package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
  240. package/build/src/database/drivers/pgsql/options.js +3 -1
  241. package/build/src/database/drivers/pgsql/structure-sql.d.ts +5 -2
  242. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  243. package/build/src/database/drivers/pgsql/structure-sql.js +5 -2
  244. package/build/src/database/drivers/pgsql/table.d.ts +1 -0
  245. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  246. package/build/src/database/drivers/pgsql/table.js +6 -2
  247. package/build/src/database/drivers/sqlite/base.d.ts +15 -5
  248. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  249. package/build/src/database/drivers/sqlite/base.js +79 -27
  250. package/build/src/database/drivers/sqlite/column.d.ts +3 -2
  251. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  252. package/build/src/database/drivers/sqlite/column.js +3 -2
  253. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +4 -2
  254. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  255. package/build/src/database/drivers/sqlite/connection-sql-js.js +4 -2
  256. package/build/src/database/drivers/sqlite/foreign-key.d.ts +3 -2
  257. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  258. package/build/src/database/drivers/sqlite/foreign-key.js +3 -2
  259. package/build/src/database/drivers/sqlite/index.d.ts +18 -5
  260. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  261. package/build/src/database/drivers/sqlite/index.js +40 -16
  262. package/build/src/database/drivers/sqlite/index.native.d.ts +1 -1
  263. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  264. package/build/src/database/drivers/sqlite/index.native.js +6 -3
  265. package/build/src/database/drivers/sqlite/index.web.d.ts +16 -4
  266. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  267. package/build/src/database/drivers/sqlite/index.web.js +17 -7
  268. package/build/src/database/drivers/sqlite/options.d.ts +2 -0
  269. package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
  270. package/build/src/database/drivers/sqlite/options.js +3 -1
  271. package/build/src/database/drivers/sqlite/query.d.ts +3 -2
  272. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  273. package/build/src/database/drivers/sqlite/query.js +6 -3
  274. package/build/src/database/drivers/sqlite/query.native.d.ts +2 -2
  275. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  276. package/build/src/database/drivers/sqlite/query.native.js +3 -3
  277. package/build/src/database/drivers/sqlite/query.web.d.ts +3 -2
  278. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  279. package/build/src/database/drivers/sqlite/query.web.js +6 -3
  280. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  281. package/build/src/database/drivers/sqlite/sql/alter-table.js +9 -3
  282. package/build/src/database/drivers/sqlite/structure-sql.d.ts +2 -0
  283. package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
  284. package/build/src/database/drivers/sqlite/structure-sql.js +3 -1
  285. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +2 -0
  286. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
  287. package/build/src/database/drivers/sqlite/table-rebuilder.js +3 -1
  288. package/build/src/database/drivers/sqlite/table.d.ts +2 -0
  289. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  290. package/build/src/database/drivers/sqlite/table.js +14 -4
  291. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -0
  292. package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
  293. package/build/src/database/drivers/structure-sql/utils.js +3 -1
  294. package/build/src/database/handler.d.ts +1 -0
  295. package/build/src/database/handler.d.ts.map +1 -1
  296. package/build/src/database/handler.js +2 -1
  297. package/build/src/database/initializer-from-require-context.d.ts +8 -0
  298. package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
  299. package/build/src/database/initializer-from-require-context.js +4 -1
  300. package/build/src/database/migration/index.d.ts +40 -5
  301. package/build/src/database/migration/index.d.ts.map +1 -1
  302. package/build/src/database/migration/index.js +34 -6
  303. package/build/src/database/migrator/files-finder.d.ts +2 -0
  304. package/build/src/database/migrator/files-finder.d.ts.map +1 -1
  305. package/build/src/database/migrator/files-finder.js +6 -2
  306. package/build/src/database/migrator.d.ts +29 -4
  307. package/build/src/database/migrator.d.ts.map +1 -1
  308. package/build/src/database/migrator.js +45 -10
  309. package/build/src/database/pool/async-tracked-multi-connection.d.ts +126 -37
  310. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  311. package/build/src/database/pool/async-tracked-multi-connection.js +187 -57
  312. package/build/src/database/pool/base-methods-forward.d.ts +1 -0
  313. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  314. package/build/src/database/pool/base-methods-forward.js +12 -3
  315. package/build/src/database/pool/base.d.ts +39 -7
  316. package/build/src/database/pool/base.d.ts.map +1 -1
  317. package/build/src/database/pool/base.js +59 -18
  318. package/build/src/database/pool/single-multi-use.d.ts +1 -0
  319. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  320. package/build/src/database/pool/single-multi-use.js +16 -4
  321. package/build/src/database/query/alter-table-base.d.ts +1 -0
  322. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  323. package/build/src/database/query/alter-table-base.js +3 -1
  324. package/build/src/database/query/base.d.ts +3 -0
  325. package/build/src/database/query/base.d.ts.map +1 -1
  326. package/build/src/database/query/base.js +4 -1
  327. package/build/src/database/query/create-database-base.d.ts +5 -0
  328. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  329. package/build/src/database/query/create-database-base.js +4 -1
  330. package/build/src/database/query/create-index-base.d.ts +5 -0
  331. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  332. package/build/src/database/query/create-index-base.js +4 -1
  333. package/build/src/database/query/create-table-base.d.ts +2 -0
  334. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  335. package/build/src/database/query/create-table-base.js +3 -1
  336. package/build/src/database/query/delete-base.d.ts +3 -2
  337. package/build/src/database/query/delete-base.d.ts.map +1 -1
  338. package/build/src/database/query/delete-base.js +3 -2
  339. package/build/src/database/query/drop-database-base.d.ts +5 -0
  340. package/build/src/database/query/drop-database-base.d.ts.map +1 -1
  341. package/build/src/database/query/drop-database-base.js +4 -1
  342. package/build/src/database/query/drop-table-base.d.ts +1 -0
  343. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  344. package/build/src/database/query/drop-table-base.js +3 -1
  345. package/build/src/database/query/from-base.d.ts +6 -1
  346. package/build/src/database/query/from-base.d.ts.map +1 -1
  347. package/build/src/database/query/from-base.js +7 -2
  348. package/build/src/database/query/from-plain.d.ts +1 -0
  349. package/build/src/database/query/from-plain.d.ts.map +1 -1
  350. package/build/src/database/query/from-plain.js +2 -1
  351. package/build/src/database/query/from-table.d.ts +1 -0
  352. package/build/src/database/query/from-table.d.ts.map +1 -1
  353. package/build/src/database/query/from-table.js +2 -1
  354. package/build/src/database/query/index.d.ts +72 -12
  355. package/build/src/database/query/index.d.ts.map +1 -1
  356. package/build/src/database/query/index.js +79 -19
  357. package/build/src/database/query/insert-base.d.ts +13 -8
  358. package/build/src/database/query/insert-base.d.ts.map +1 -1
  359. package/build/src/database/query/insert-base.js +10 -5
  360. package/build/src/database/query/join-base.d.ts +4 -0
  361. package/build/src/database/query/join-base.d.ts.map +1 -1
  362. package/build/src/database/query/join-base.js +5 -1
  363. package/build/src/database/query/join-object.d.ts +11 -0
  364. package/build/src/database/query/join-object.d.ts.map +1 -1
  365. package/build/src/database/query/join-object.js +15 -4
  366. package/build/src/database/query/join-plain.d.ts +1 -0
  367. package/build/src/database/query/join-plain.d.ts.map +1 -1
  368. package/build/src/database/query/join-plain.js +2 -1
  369. package/build/src/database/query/join-tracker.d.ts +7 -0
  370. package/build/src/database/query/join-tracker.d.ts.map +1 -1
  371. package/build/src/database/query/join-tracker.js +8 -1
  372. package/build/src/database/query/model-class-query.d.ts +92 -26
  373. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  374. package/build/src/database/query/model-class-query.js +230 -76
  375. package/build/src/database/query/order-base.d.ts +3 -0
  376. package/build/src/database/query/order-base.d.ts.map +1 -1
  377. package/build/src/database/query/order-base.js +4 -1
  378. package/build/src/database/query/order-column.d.ts +9 -1
  379. package/build/src/database/query/order-column.d.ts.map +1 -1
  380. package/build/src/database/query/order-column.js +10 -2
  381. package/build/src/database/query/order-plain.d.ts +1 -0
  382. package/build/src/database/query/order-plain.d.ts.map +1 -1
  383. package/build/src/database/query/order-plain.js +2 -1
  384. package/build/src/database/query/preloader/belongs-to.d.ts +1 -0
  385. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  386. package/build/src/database/query/preloader/belongs-to.js +68 -23
  387. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +1 -0
  388. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
  389. package/build/src/database/query/preloader/ensure-model-class-initialized.js +2 -1
  390. package/build/src/database/query/preloader/has-many.d.ts +5 -3
  391. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  392. package/build/src/database/query/preloader/has-many.js +66 -24
  393. package/build/src/database/query/preloader/has-one.d.ts +1 -0
  394. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  395. package/build/src/database/query/preloader/has-one.js +26 -9
  396. package/build/src/database/query/preloader/selection.d.ts +7 -1
  397. package/build/src/database/query/preloader/selection.d.ts.map +1 -1
  398. package/build/src/database/query/preloader/selection.js +13 -5
  399. package/build/src/database/query/preloader.d.ts +1 -0
  400. package/build/src/database/query/preloader.d.ts.map +1 -1
  401. package/build/src/database/query/preloader.js +28 -9
  402. package/build/src/database/query/query-data.d.ts +21 -7
  403. package/build/src/database/query/query-data.d.ts.map +1 -1
  404. package/build/src/database/query/query-data.js +37 -18
  405. package/build/src/database/query/select-base.d.ts +3 -0
  406. package/build/src/database/query/select-base.d.ts.map +1 -1
  407. package/build/src/database/query/select-base.js +4 -1
  408. package/build/src/database/query/select-plain.d.ts +1 -0
  409. package/build/src/database/query/select-plain.d.ts.map +1 -1
  410. package/build/src/database/query/select-plain.js +2 -1
  411. package/build/src/database/query/select-table-and-column.d.ts +1 -0
  412. package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
  413. package/build/src/database/query/select-table-and-column.js +2 -1
  414. package/build/src/database/query/update-base.d.ts +9 -6
  415. package/build/src/database/query/update-base.d.ts.map +1 -1
  416. package/build/src/database/query/update-base.js +7 -4
  417. package/build/src/database/query/upsert-base.d.ts +13 -4
  418. package/build/src/database/query/upsert-base.d.ts.map +1 -1
  419. package/build/src/database/query/upsert-base.js +12 -3
  420. package/build/src/database/query/where-base.d.ts +4 -0
  421. package/build/src/database/query/where-base.d.ts.map +1 -1
  422. package/build/src/database/query/where-base.js +5 -1
  423. package/build/src/database/query/where-combinator.d.ts +1 -0
  424. package/build/src/database/query/where-combinator.d.ts.map +1 -1
  425. package/build/src/database/query/where-combinator.js +6 -2
  426. package/build/src/database/query/where-hash.d.ts +6 -0
  427. package/build/src/database/query/where-hash.d.ts.map +1 -1
  428. package/build/src/database/query/where-hash.js +5 -1
  429. package/build/src/database/query/where-model-class-hash.d.ts +30 -16
  430. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  431. package/build/src/database/query/where-model-class-hash.js +55 -20
  432. package/build/src/database/query/where-not.d.ts +1 -0
  433. package/build/src/database/query/where-not.d.ts.map +1 -1
  434. package/build/src/database/query/where-not.js +3 -1
  435. package/build/src/database/query/where-plain.d.ts +1 -0
  436. package/build/src/database/query/where-plain.d.ts.map +1 -1
  437. package/build/src/database/query/where-plain.js +2 -1
  438. package/build/src/database/query/with-count.d.ts +11 -5
  439. package/build/src/database/query/with-count.d.ts.map +1 -1
  440. package/build/src/database/query/with-count.js +36 -15
  441. package/build/src/database/query-parser/base-query-parser.d.ts +1 -0
  442. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  443. package/build/src/database/query-parser/base-query-parser.js +2 -1
  444. package/build/src/database/query-parser/from-parser.d.ts +5 -1
  445. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  446. package/build/src/database/query-parser/from-parser.js +6 -2
  447. package/build/src/database/query-parser/group-parser.d.ts +2 -0
  448. package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
  449. package/build/src/database/query-parser/group-parser.js +3 -1
  450. package/build/src/database/query-parser/joins-parser.d.ts +1 -0
  451. package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
  452. package/build/src/database/query-parser/joins-parser.js +2 -1
  453. package/build/src/database/query-parser/limit-parser.d.ts +1 -0
  454. package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
  455. package/build/src/database/query-parser/limit-parser.js +2 -1
  456. package/build/src/database/query-parser/options.d.ts +15 -4
  457. package/build/src/database/query-parser/options.d.ts.map +1 -1
  458. package/build/src/database/query-parser/options.js +11 -3
  459. package/build/src/database/query-parser/order-parser.d.ts +1 -0
  460. package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
  461. package/build/src/database/query-parser/order-parser.js +2 -1
  462. package/build/src/database/query-parser/select-parser.d.ts +1 -0
  463. package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
  464. package/build/src/database/query-parser/select-parser.js +2 -1
  465. package/build/src/database/query-parser/where-parser.d.ts +1 -0
  466. package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
  467. package/build/src/database/query-parser/where-parser.js +2 -1
  468. package/build/src/database/record/acts-as-list.d.ts +0 -1
  469. package/build/src/database/record/acts-as-list.d.ts.map +1 -1
  470. package/build/src/database/record/acts-as-list.js +61 -23
  471. package/build/src/database/record/attachments/download.d.ts +34 -15
  472. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  473. package/build/src/database/record/attachments/download.js +34 -22
  474. package/build/src/database/record/attachments/handle.d.ts +17 -5
  475. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  476. package/build/src/database/record/attachments/handle.js +25 -9
  477. package/build/src/database/record/attachments/normalize-input.d.ts +6 -1
  478. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  479. package/build/src/database/record/attachments/normalize-input.js +54 -17
  480. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +7 -1
  481. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  482. package/build/src/database/record/attachments/storage-drivers/filesystem.js +10 -2
  483. package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -7
  484. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  485. package/build/src/database/record/attachments/storage-drivers/native.js +13 -6
  486. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +18 -9
  487. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  488. package/build/src/database/record/attachments/storage-drivers/s3.js +38 -13
  489. package/build/src/database/record/attachments/store.d.ts +48 -25
  490. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  491. package/build/src/database/record/attachments/store.js +63 -25
  492. package/build/src/database/record/index.d.ts +388 -146
  493. package/build/src/database/record/index.d.ts.map +1 -1
  494. package/build/src/database/record/index.js +686 -248
  495. package/build/src/database/record/instance-relationships/base.d.ts +78 -19
  496. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  497. package/build/src/database/record/instance-relationships/base.js +98 -26
  498. package/build/src/database/record/instance-relationships/belongs-to.d.ts +1 -0
  499. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  500. package/build/src/database/record/instance-relationships/belongs-to.js +13 -5
  501. package/build/src/database/record/instance-relationships/has-many.d.ts +27 -7
  502. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  503. package/build/src/database/record/instance-relationships/has-many.js +50 -16
  504. package/build/src/database/record/instance-relationships/has-one.d.ts +4 -1
  505. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  506. package/build/src/database/record/instance-relationships/has-one.js +28 -10
  507. package/build/src/database/record/relationships/base.d.ts +61 -14
  508. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  509. package/build/src/database/record/relationships/base.js +60 -15
  510. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  511. package/build/src/database/record/relationships/belongs-to.js +9 -3
  512. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  513. package/build/src/database/record/relationships/has-many.js +9 -3
  514. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  515. package/build/src/database/record/relationships/has-one.js +9 -3
  516. package/build/src/database/record/state-machine.d.ts +9 -1
  517. package/build/src/database/record/state-machine.d.ts.map +1 -1
  518. package/build/src/database/record/state-machine.js +35 -14
  519. package/build/src/database/record/user-module.d.ts +2 -0
  520. package/build/src/database/record/user-module.d.ts.map +1 -1
  521. package/build/src/database/record/user-module.js +3 -1
  522. package/build/src/database/record/validators/base.d.ts +4 -2
  523. package/build/src/database/record/validators/base.d.ts.map +1 -1
  524. package/build/src/database/record/validators/base.js +4 -2
  525. package/build/src/database/record/validators/format.d.ts.map +1 -1
  526. package/build/src/database/record/validators/format.js +2 -1
  527. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  528. package/build/src/database/record/validators/presence.js +5 -2
  529. package/build/src/database/record/validators/uniqueness.d.ts +0 -2
  530. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  531. package/build/src/database/record/validators/uniqueness.js +18 -8
  532. package/build/src/database/table-data/index.d.ts +40 -4
  533. package/build/src/database/table-data/index.d.ts.map +1 -1
  534. package/build/src/database/table-data/index.js +38 -5
  535. package/build/src/database/table-data/table-column.d.ts +43 -5
  536. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  537. package/build/src/database/table-data/table-column.js +37 -4
  538. package/build/src/database/table-data/table-foreign-key.d.ts +8 -0
  539. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  540. package/build/src/database/table-data/table-foreign-key.js +9 -1
  541. package/build/src/database/table-data/table-index.d.ts +8 -0
  542. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  543. package/build/src/database/table-data/table-index.js +6 -1
  544. package/build/src/database/table-data/table-reference.d.ts +1 -0
  545. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  546. package/build/src/database/table-data/table-reference.js +2 -1
  547. package/build/src/database/use-database.d.ts +1 -0
  548. package/build/src/database/use-database.d.ts.map +1 -1
  549. package/build/src/database/use-database.js +2 -1
  550. package/build/src/environment-handlers/base.d.ts +94 -36
  551. package/build/src/environment-handlers/base.d.ts.map +1 -1
  552. package/build/src/environment-handlers/base.js +90 -36
  553. package/build/src/environment-handlers/browser.d.ts +33 -3
  554. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  555. package/build/src/environment-handlers/browser.js +36 -9
  556. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +5 -0
  557. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
  558. package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +6 -2
  559. package/build/src/environment-handlers/node/cli/commands/console.d.ts +3 -2
  560. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  561. package/build/src/environment-handlers/node/cli/commands/console.js +23 -9
  562. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +4 -1
  563. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  564. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +5 -2
  565. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +6 -2
  566. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  567. package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +11 -5
  568. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +15 -5
  569. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  570. package/build/src/environment-handlers/node/cli/commands/db/seed.js +20 -6
  571. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +5 -0
  572. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  573. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +3 -1
  574. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +2 -0
  575. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  576. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +6 -4
  577. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +43 -29
  578. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  579. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +99 -40
  580. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +5 -0
  581. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  582. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +3 -1
  583. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +5 -0
  584. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  585. package/build/src/environment-handlers/node/cli/commands/generate/model.js +3 -1
  586. package/build/src/environment-handlers/node/cli/commands/init.d.ts +5 -0
  587. package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
  588. package/build/src/environment-handlers/node/cli/commands/init.js +3 -1
  589. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +3 -0
  590. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  591. package/build/src/environment-handlers/node/cli/commands/routes.js +4 -1
  592. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +15 -5
  593. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  594. package/build/src/environment-handlers/node/cli/commands/run-script.js +20 -6
  595. package/build/src/environment-handlers/node/cli/commands/runner.d.ts +18 -6
  596. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  597. package/build/src/environment-handlers/node/cli/commands/runner.js +20 -6
  598. package/build/src/environment-handlers/node/cli/commands/server.d.ts +13 -1
  599. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  600. package/build/src/environment-handlers/node/cli/commands/server.js +23 -6
  601. package/build/src/environment-handlers/node.d.ts +14 -2
  602. package/build/src/environment-handlers/node.d.ts.map +1 -1
  603. package/build/src/environment-handlers/node.js +107 -39
  604. package/build/src/error-logger.d.ts +4 -3
  605. package/build/src/error-logger.d.ts.map +1 -1
  606. package/build/src/error-logger.js +4 -3
  607. package/build/src/frontend-model-controller.d.ts +239 -90
  608. package/build/src/frontend-model-controller.d.ts.map +1 -1
  609. package/build/src/frontend-model-controller.js +577 -787
  610. package/build/src/frontend-model-resource/base-resource.d.ts +118 -66
  611. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  612. package/build/src/frontend-model-resource/base-resource.js +205 -82
  613. package/build/src/frontend-models/base.d.ts +319 -163
  614. package/build/src/frontend-models/base.d.ts.map +1 -1
  615. package/build/src/frontend-models/base.js +717 -366
  616. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -1
  617. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
  618. package/build/src/frontend-models/clear-pending-debounced-callback.js +6 -3
  619. package/build/src/frontend-models/event-hook-models.d.ts +5 -0
  620. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  621. package/build/src/frontend-models/event-hook-models.js +10 -3
  622. package/build/src/frontend-models/model-registry.d.ts +5 -5
  623. package/build/src/frontend-models/model-registry.d.ts.map +1 -1
  624. package/build/src/frontend-models/model-registry.js +5 -5
  625. package/build/src/frontend-models/outgoing-event-buffer.d.ts +11 -3
  626. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  627. package/build/src/frontend-models/outgoing-event-buffer.js +13 -5
  628. package/build/src/frontend-models/preloader.d.ts +9 -6
  629. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  630. package/build/src/frontend-models/preloader.js +21 -9
  631. package/build/src/frontend-models/query.d.ts +283 -73
  632. package/build/src/frontend-models/query.d.ts.map +1 -1
  633. package/build/src/frontend-models/query.js +331 -203
  634. package/build/src/frontend-models/resource-config-validation.d.ts +2 -0
  635. package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
  636. package/build/src/frontend-models/resource-config-validation.js +3 -1
  637. package/build/src/frontend-models/resource-definition.d.ts +12 -5
  638. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  639. package/build/src/frontend-models/resource-definition.js +39 -13
  640. package/build/src/frontend-models/transport-serialization.d.ts +14 -11
  641. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  642. package/build/src/frontend-models/transport-serialization.js +80 -53
  643. package/build/src/frontend-models/use-destroyed-event.d.ts +21 -0
  644. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  645. package/build/src/frontend-models/use-destroyed-event.js +34 -11
  646. package/build/src/frontend-models/use-model-class-event.d.ts +24 -0
  647. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  648. package/build/src/frontend-models/use-model-class-event.js +39 -12
  649. package/build/src/frontend-models/use-updated-event.d.ts +21 -0
  650. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  651. package/build/src/frontend-models/use-updated-event.js +37 -12
  652. package/build/src/frontend-models/websocket-channel.d.ts +51 -9
  653. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  654. package/build/src/frontend-models/websocket-channel.js +96 -26
  655. package/build/src/frontend-models/websocket-publishers.d.ts +2 -0
  656. package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
  657. package/build/src/frontend-models/websocket-publishers.js +33 -11
  658. package/build/src/http-client/header.d.ts +1 -0
  659. package/build/src/http-client/header.d.ts.map +1 -1
  660. package/build/src/http-client/header.js +2 -1
  661. package/build/src/http-client/index.d.ts +4 -0
  662. package/build/src/http-client/index.d.ts.map +1 -1
  663. package/build/src/http-client/index.js +5 -1
  664. package/build/src/http-client/request.d.ts +5 -0
  665. package/build/src/http-client/request.d.ts.map +1 -1
  666. package/build/src/http-client/request.js +6 -1
  667. package/build/src/http-client/response.d.ts +14 -4
  668. package/build/src/http-client/response.d.ts.map +1 -1
  669. package/build/src/http-client/response.js +14 -4
  670. package/build/src/http-client/websocket-client.d.ts +1 -0
  671. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  672. package/build/src/http-client/websocket-client.js +2 -1
  673. package/build/src/http-server/client/index.d.ts +16 -2
  674. package/build/src/http-server/client/index.d.ts.map +1 -1
  675. package/build/src/http-server/client/index.js +44 -13
  676. package/build/src/http-server/client/params-to-object.d.ts +16 -10
  677. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  678. package/build/src/http-server/client/params-to-object.js +46 -17
  679. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +10 -6
  680. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  681. package/build/src/http-server/client/request-buffer/form-data-part.js +11 -7
  682. package/build/src/http-server/client/request-buffer/header.d.ts +1 -0
  683. package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
  684. package/build/src/http-server/client/request-buffer/header.js +2 -1
  685. package/build/src/http-server/client/request-buffer/index.d.ts +29 -4
  686. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  687. package/build/src/http-server/client/request-buffer/index.js +43 -9
  688. package/build/src/http-server/client/request-parser.d.ts +52 -13
  689. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  690. package/build/src/http-server/client/request-parser.js +58 -15
  691. package/build/src/http-server/client/request-runner.d.ts +5 -1
  692. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  693. package/build/src/http-server/client/request-runner.js +32 -8
  694. package/build/src/http-server/client/request-timing.d.ts +37 -7
  695. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  696. package/build/src/http-server/client/request-timing.js +32 -8
  697. package/build/src/http-server/client/request.d.ts +15 -5
  698. package/build/src/http-server/client/request.d.ts.map +1 -1
  699. package/build/src/http-server/client/request.js +17 -5
  700. package/build/src/http-server/client/response.d.ts +22 -4
  701. package/build/src/http-server/client/response.d.ts.map +1 -1
  702. package/build/src/http-server/client/response.js +29 -7
  703. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +1 -0
  704. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
  705. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +3 -1
  706. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +1 -0
  707. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
  708. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +3 -1
  709. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -0
  710. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  711. package/build/src/http-server/client/uploaded-file/uploaded-file.js +3 -1
  712. package/build/src/http-server/client/websocket-request.d.ts +24 -12
  713. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  714. package/build/src/http-server/client/websocket-request.js +24 -10
  715. package/build/src/http-server/client/websocket-session.d.ts +101 -62
  716. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  717. package/build/src/http-server/client/websocket-session.js +118 -61
  718. package/build/src/http-server/cookie.d.ts +36 -8
  719. package/build/src/http-server/cookie.d.ts.map +1 -1
  720. package/build/src/http-server/cookie.js +37 -9
  721. package/build/src/http-server/development-reloader.d.ts +32 -7
  722. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  723. package/build/src/http-server/development-reloader.js +39 -10
  724. package/build/src/http-server/index.d.ts +102 -25
  725. package/build/src/http-server/index.d.ts.map +1 -1
  726. package/build/src/http-server/index.js +117 -32
  727. package/build/src/http-server/remote-address.d.ts +1 -0
  728. package/build/src/http-server/remote-address.d.ts.map +1 -1
  729. package/build/src/http-server/remote-address.js +15 -4
  730. package/build/src/http-server/server-client.d.ts +37 -8
  731. package/build/src/http-server/server-client.d.ts.map +1 -1
  732. package/build/src/http-server/server-client.js +48 -12
  733. package/build/src/http-server/server-lock.d.ts +76 -0
  734. package/build/src/http-server/server-lock.d.ts.map +1 -0
  735. package/build/src/http-server/server-lock.js +164 -0
  736. package/build/src/http-server/websocket-channel-subscribers.d.ts +13 -8
  737. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  738. package/build/src/http-server/websocket-channel-subscribers.js +16 -7
  739. package/build/src/http-server/websocket-channel.d.ts +13 -11
  740. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  741. package/build/src/http-server/websocket-channel.js +8 -12
  742. package/build/src/http-server/websocket-connection.d.ts +10 -14
  743. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  744. package/build/src/http-server/websocket-connection.js +8 -12
  745. package/build/src/http-server/websocket-event-log-store.d.ts +48 -10
  746. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  747. package/build/src/http-server/websocket-event-log-store.js +76 -34
  748. package/build/src/http-server/websocket-events-host.d.ts +21 -15
  749. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  750. package/build/src/http-server/websocket-events-host.js +20 -11
  751. package/build/src/http-server/websocket-events.d.ts +8 -7
  752. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  753. package/build/src/http-server/websocket-events.js +6 -5
  754. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +3 -2
  755. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
  756. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +3 -2
  757. package/build/src/http-server/worker-handler/in-process.d.ts +18 -18
  758. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  759. package/build/src/http-server/worker-handler/in-process.js +28 -20
  760. package/build/src/http-server/worker-handler/index.d.ts +39 -20
  761. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  762. package/build/src/http-server/worker-handler/index.js +34 -14
  763. package/build/src/http-server/worker-handler/worker-thread.d.ts +31 -15
  764. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  765. package/build/src/http-server/worker-handler/worker-thread.js +31 -12
  766. package/build/src/initializer.d.ts +4 -0
  767. package/build/src/initializer.d.ts.map +1 -1
  768. package/build/src/initializer.js +5 -1
  769. package/build/src/jobs/mail-delivery.d.ts +1 -0
  770. package/build/src/jobs/mail-delivery.d.ts.map +1 -1
  771. package/build/src/jobs/mail-delivery.js +2 -1
  772. package/build/src/logger/base-logger.js +2 -2
  773. package/build/src/logger/console-logger.d.ts +2 -0
  774. package/build/src/logger/console-logger.d.ts.map +1 -1
  775. package/build/src/logger/console-logger.js +3 -1
  776. package/build/src/logger/file-logger.d.ts +2 -0
  777. package/build/src/logger/file-logger.d.ts.map +1 -1
  778. package/build/src/logger/file-logger.js +3 -1
  779. package/build/src/logger/outputs/array-output.d.ts +21 -5
  780. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  781. package/build/src/logger/outputs/array-output.js +19 -6
  782. package/build/src/logger/outputs/console-output.d.ts +10 -2
  783. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  784. package/build/src/logger/outputs/console-output.js +8 -3
  785. package/build/src/logger/outputs/file-output.d.ts +20 -5
  786. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  787. package/build/src/logger/outputs/file-output.js +18 -6
  788. package/build/src/logger/outputs/stdout-output.d.ts +7 -1
  789. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  790. package/build/src/logger/outputs/stdout-output.js +9 -3
  791. package/build/src/logger.d.ts +28 -13
  792. package/build/src/logger.d.ts.map +1 -1
  793. package/build/src/logger.js +60 -23
  794. package/build/src/mailer/backends/smtp.d.ts +5 -0
  795. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  796. package/build/src/mailer/backends/smtp.js +17 -4
  797. package/build/src/mailer/base.d.ts +33 -17
  798. package/build/src/mailer/base.d.ts.map +1 -1
  799. package/build/src/mailer/base.js +54 -18
  800. package/build/src/mailer/delivery.d.ts +16 -5
  801. package/build/src/mailer/delivery.d.ts.map +1 -1
  802. package/build/src/mailer/delivery.js +18 -7
  803. package/build/src/mailer/index.d.ts +5 -5
  804. package/build/src/mailer/index.d.ts.map +1 -1
  805. package/build/src/mailer/index.js +2 -2
  806. package/build/src/mailer.d.ts +5 -5
  807. package/build/src/mailer.d.ts.map +1 -1
  808. package/build/src/mailer.js +2 -2
  809. package/build/src/plugins/sqljs-wasm-route-controller.d.ts +4 -1
  810. package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
  811. package/build/src/plugins/sqljs-wasm-route-controller.js +11 -4
  812. package/build/src/plugins/sqljs-wasm-route.d.ts +6 -0
  813. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  814. package/build/src/plugins/sqljs-wasm-route.js +4 -1
  815. package/build/src/record-payload-values.d.ts +54 -0
  816. package/build/src/record-payload-values.d.ts.map +1 -0
  817. package/build/src/record-payload-values.js +80 -0
  818. package/build/src/routes/app-routes.d.ts +1 -0
  819. package/build/src/routes/app-routes.d.ts.map +1 -1
  820. package/build/src/routes/app-routes.js +2 -1
  821. package/build/src/routes/base-route.d.ts +52 -16
  822. package/build/src/routes/base-route.d.ts.map +1 -1
  823. package/build/src/routes/base-route.js +50 -14
  824. package/build/src/routes/basic-route.d.ts +1 -0
  825. package/build/src/routes/basic-route.d.ts.map +1 -1
  826. package/build/src/routes/basic-route.js +13 -4
  827. package/build/src/routes/built-in/debug/controller.d.ts +4 -1
  828. package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
  829. package/build/src/routes/built-in/debug/controller.js +5 -2
  830. package/build/src/routes/get-route.d.ts +1 -0
  831. package/build/src/routes/get-route.d.ts.map +1 -1
  832. package/build/src/routes/get-route.js +7 -4
  833. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -0
  834. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
  835. package/build/src/routes/hooks/frontend-model-command-route-hook.js +6 -2
  836. package/build/src/routes/index.d.ts +3 -2
  837. package/build/src/routes/index.d.ts.map +1 -1
  838. package/build/src/routes/index.js +10 -4
  839. package/build/src/routes/namespace-route.d.ts +1 -0
  840. package/build/src/routes/namespace-route.d.ts.map +1 -1
  841. package/build/src/routes/namespace-route.js +5 -3
  842. package/build/src/routes/plugin-routes.d.ts +10 -1
  843. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  844. package/build/src/routes/plugin-routes.js +11 -3
  845. package/build/src/routes/post-route.d.ts +1 -0
  846. package/build/src/routes/post-route.d.ts.map +1 -1
  847. package/build/src/routes/post-route.js +7 -4
  848. package/build/src/routes/resolver.d.ts +20 -5
  849. package/build/src/routes/resolver.d.ts.map +1 -1
  850. package/build/src/routes/resolver.js +47 -14
  851. package/build/src/routes/resource-route.d.ts +6 -1
  852. package/build/src/routes/resource-route.d.ts.map +1 -1
  853. package/build/src/routes/resource-route.js +10 -4
  854. package/build/src/testing/base-expect.d.ts +2 -0
  855. package/build/src/testing/base-expect.d.ts.map +1 -1
  856. package/build/src/testing/base-expect.js +3 -1
  857. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +33 -5
  858. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  859. package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +95 -23
  860. package/build/src/testing/expect-to-change.d.ts +3 -0
  861. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  862. package/build/src/testing/expect-to-change.js +4 -1
  863. package/build/src/testing/expect-utils.d.ts +22 -16
  864. package/build/src/testing/expect-utils.d.ts.map +1 -1
  865. package/build/src/testing/expect-utils.js +62 -30
  866. package/build/src/testing/expect.d.ts +50 -21
  867. package/build/src/testing/expect.d.ts.map +1 -1
  868. package/build/src/testing/expect.js +58 -17
  869. package/build/src/testing/request-client.d.ts +16 -3
  870. package/build/src/testing/request-client.d.ts.map +1 -1
  871. package/build/src/testing/request-client.js +17 -4
  872. package/build/src/testing/test-files-finder.d.ts +41 -9
  873. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  874. package/build/src/testing/test-files-finder.js +42 -10
  875. package/build/src/testing/test-filter-parser.d.ts +6 -0
  876. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  877. package/build/src/testing/test-filter-parser.js +12 -3
  878. package/build/src/testing/test-runner.d.ts +102 -6
  879. package/build/src/testing/test-runner.d.ts.map +1 -1
  880. package/build/src/testing/test-runner.js +115 -23
  881. package/build/src/testing/test-suite-splitter.d.ts +7 -0
  882. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  883. package/build/src/testing/test-suite-splitter.js +7 -2
  884. package/build/src/testing/test.d.ts +20 -4
  885. package/build/src/testing/test.d.ts.map +1 -1
  886. package/build/src/testing/test.js +67 -20
  887. package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
  888. package/build/src/utils/backtrace-cleaner-node.js +6 -1
  889. package/build/src/utils/backtrace-cleaner.d.ts +16 -1
  890. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  891. package/build/src/utils/backtrace-cleaner.js +20 -2
  892. package/build/src/utils/ensure-error.d.ts +3 -2
  893. package/build/src/utils/ensure-error.d.ts.map +1 -1
  894. package/build/src/utils/ensure-error.js +3 -2
  895. package/build/src/utils/event-emitter.d.ts.map +1 -1
  896. package/build/src/utils/event-emitter.js +2 -2
  897. package/build/src/utils/file-exists.d.ts +1 -0
  898. package/build/src/utils/file-exists.d.ts.map +1 -1
  899. package/build/src/utils/file-exists.js +2 -1
  900. package/build/src/utils/format-value.d.ts +5 -4
  901. package/build/src/utils/format-value.d.ts.map +1 -1
  902. package/build/src/utils/format-value.js +12 -7
  903. package/build/src/utils/model-scope.d.ts +18 -12
  904. package/build/src/utils/model-scope.d.ts.map +1 -1
  905. package/build/src/utils/model-scope.js +19 -11
  906. package/build/src/utils/nest-callbacks.d.ts +1 -0
  907. package/build/src/utils/nest-callbacks.d.ts.map +1 -1
  908. package/build/src/utils/nest-callbacks.js +2 -1
  909. package/build/src/utils/plain-object.d.ts +7 -0
  910. package/build/src/utils/plain-object.d.ts.map +1 -0
  911. package/build/src/utils/plain-object.js +13 -0
  912. package/build/src/utils/ransack.d.ts +29 -5
  913. package/build/src/utils/ransack.d.ts.map +1 -1
  914. package/build/src/utils/ransack.js +136 -49
  915. package/build/src/utils/rest-args-error.d.ts +1 -0
  916. package/build/src/utils/rest-args-error.d.ts.map +1 -1
  917. package/build/src/utils/rest-args-error.js +2 -1
  918. package/build/src/utils/singularize-model-name.d.ts +1 -0
  919. package/build/src/utils/singularize-model-name.d.ts.map +1 -1
  920. package/build/src/utils/singularize-model-name.js +2 -1
  921. package/build/src/utils/to-import-specifier.d.ts.map +1 -1
  922. package/build/src/utils/to-import-specifier.js +3 -1
  923. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +8 -5
  924. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  925. package/build/src/utils/with-tracked-stack-async-hooks.js +32 -13
  926. package/build/src/utils/with-tracked-stack.d.ts +9 -5
  927. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  928. package/build/src/utils/with-tracked-stack.js +19 -8
  929. package/build/src/velocious-error.d.ts +4 -2
  930. package/build/src/velocious-error.d.ts.map +1 -1
  931. package/build/src/velocious-error.js +5 -3
  932. package/build/tsconfig.tsbuildinfo +1 -1
  933. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/authorization/ability.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/authorization/ability.js"],"names":[],"mappings":"AAIA;;iVAEiV;AAEjV;;;;;;;GAOG;AAEH,kEAAkE;AAClE;IACE;;yBAEqB;IACrB,eADS,MAAM,EAAE,CACS;IAE1B;;yBAEqB;IACrB,aADS,MAAM,EAAE,CACK;IAEtB;;yBAEqB;IACrB,eADS,MAAM,EAAE,CACS;IAE1B;;yBAEqB;IACrB,gBADS,MAAM,EAAE,CACW;IAE5B;;yBAEqB;IACrB,aADS,MAAM,EAAE,CACoC;IAErD;;;;;;OAMG;IACH,6CAJG;QAAiC,OAAO;QACP,MAAM;QACG,SAAS;KACrD,EAeA;IAbC,6BAAsB;IACtB,4BAAoB;IACpB,mCAAuE;IAEvE;;kCAE8B;IAC9B,OADS,eAAe,EAAE,CACX;IAEf;;wCAEoC;IACpC,2BADS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACG;IAGrC;;;OAGG;IACH,sCAFa,KAAK,CAAC,OAAO,YAAY,CAAC,CA4BtC;IAED;;;OAGG;IACH,cAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAI7B;IAED;;;OAGG;IACH,aAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAI7B;IAED;;;OAGG;IACH,eAFa,OAAC,CAIb;IAED;;;;;;OAMG;IACH,aALW,MAAM,GAAG,MAAM,EAAE,cACjB,cAAc,6BAA6B,EAAE,OAAO,eACpD,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;;;;OAMG;IACH,gBALW,MAAM,GAAG,MAAM,EAAE,cACjB,cAAc,6BAA6B,EAAE,OAAO,eACpD,qBAAqB,GACnB,IAAI,CAIhB;IAED;;;;;;;;OAQG;IACH,qDANG;QAAgC,OAAO,EAA/B,MAAM,GAAG,MAAM,EAAE;QACY,UAAU;QAChB,MAAM,EAA7B,OAAO,GAAG,MAAM;QAC2C,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;KAC5D,GAAU,IAAI,CAMhB;IAED;;;;OAIG;IACH,uCAHW,cAAc,6BAA6B,EAAE,OAAO,GAClD,IAAI,CAuBhB;IAED;;;;;;;OAOG;IACH,4CALG;QAAqB,MAAM,EAAnB,MAAM;QACqD,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;QACc,KAAK,EAAvE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC;KACnE,GAAU,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,CA4BvE;IAED;;;;;;OAMG;IACH,iCAJG;QAAqB,MAAM,EAAnB,MAAM;QACqD,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;KAC5D,GAAU,eAAe,EAAE,CAQ7B;IAED;;;;;;;;OAQG;IACH,wDANG;QAAqB,MAAM,EAAnB,MAAM;QACqD,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;QACc,KAAK,EAAvE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC;QACnC,KAAK,EAA7B,eAAe,EAAE;KACzB,GAAU,MAAM,EAAE,CA+BpB;IAED;;;;;;;;OAQG;IACH,yDANG;QAAqB,MAAM,EAAnB,MAAM;QACkB,SAAS,EAAjC,eAAe,EAAE;QAC0C,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;QACc,KAAK,EAAvE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC;KACnE,GAAU,IAAI,CAehB;IAED;;;;;;;;OAQG;IACH,8DANG;QAAqB,MAAM,EAAnB,MAAM;QACsB,UAAU,EAAtC,qBAAqB;QACsC,UAAU,EAArE,cAAc,6BAA6B,EAAE,OAAO;QACc,KAAK,EAAvE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC;KACnE,GAAU,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,CAiB9E;CACF;;;;oCAlUW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,EAAE,IAAI,EAAE;IAAC,OAAO,EAAE,6BAA6B,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAA;CAAC,KAAK,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,CAAC;;;;;;;;aAKzS,MAAM,EAAE;;;;gBACR,cAAc,6BAA6B,EAAE,OAAO;;;;gBACpD,qBAAqB,GAAG,SAAS;;;;YACjC,OAAO,GAAG,MAAM;;yBAZL,oBAAoB"}
@@ -1,7 +1,10 @@
1
1
  // @ts-check
2
2
  import BaseResource from "./base-resource.js";
3
- /** @typedef {Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {ability: VelociousAuthorizationAbility, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<any>)} AbilityConditionsType */
4
3
  /**
4
+ * Defines this typedef.
5
+ @typedef {Record<string, ?> | string | ((query: import("../database/query/model-class-query.js").default<?>, args: {ability: VelociousAuthorizationAbility, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<?>)} AbilityConditionsType */
6
+ /**
7
+ * AbilityRuleType type.
5
8
  * @typedef {object} AbilityRuleType
6
9
  * @property {string[]} actions - Actions covered by rule.
7
10
  * @property {typeof import("../database/record/index.js").default} modelClass - Model class.
@@ -10,34 +13,48 @@ import BaseResource from "./base-resource.js";
10
13
  */
11
14
  /** CanCan-style ability object for query-level access control. */
12
15
  export default class VelociousAuthorizationAbility {
13
- /** @type {string[]} */
16
+ /**
17
+ * Create.
18
+ @type {string[]} */
14
19
  static CREATE = ["create"];
15
- /** @type {string[]} */
20
+ /**
21
+ * Read.
22
+ @type {string[]} */
16
23
  static READ = ["read"];
17
- /** @type {string[]} */
24
+ /**
25
+ * Update.
26
+ @type {string[]} */
18
27
  static UPDATE = ["update"];
19
- /** @type {string[]} */
28
+ /**
29
+ * Destroy.
30
+ @type {string[]} */
20
31
  static DESTROY = ["destroy"];
21
- /** @type {string[]} */
32
+ /**
33
+ * Crud.
34
+ @type {string[]} */
22
35
  static CRUD = ["create", "read", "update", "destroy"];
23
36
  /**
37
+ * Runs constructor.
24
38
  * @param {object} args - Ability args.
25
- * @param {Record<string, any>} [args.context] - Ability context.
26
- * @param {Record<string, any>} [args.locals] - Ability locals.
39
+ * @param {Record<string, ?>} [args.context] - Ability context.
40
+ * @param {Record<string, ?>} [args.locals] - Ability locals.
27
41
  * @param {Array<typeof BaseResource>} [args.resources] - Resource classes.
28
42
  */
29
43
  constructor({ context = {}, locals = {}, resources } = {}) {
30
44
  this.context = context;
31
45
  this.locals = locals;
32
46
  this.resources = resources || this._resolveResourcesFromConfiguration();
33
- /** @type {AbilityRuleType[]} */
47
+ /**
48
+ * Narrows the runtime value to the documented type.
49
+ @type {AbilityRuleType[]} */
34
50
  this.rules = [];
35
- /** @type {Record<string, boolean>} */
51
+ /**
52
+ * Narrows the runtime value to the documented type.
53
+ @type {Record<string, boolean>} */
36
54
  this.loadedModelClassAbilities = {};
37
55
  }
38
56
  /**
39
57
  * Auto-resolves resource classes from the configuration's backendProjects when no explicit resources are provided.
40
- *
41
58
  * @returns {Array<typeof BaseResource>}
42
59
  */
43
60
  _resolveResourcesFromConfiguration() {
@@ -45,7 +62,9 @@ export default class VelociousAuthorizationAbility {
45
62
  if (!configuration || typeof configuration.getBackendProjects !== "function") {
46
63
  return [];
47
64
  }
48
- /** @type {Array<typeof BaseResource>} */
65
+ /**
66
+ * Resolved.
67
+ @type {Array<typeof BaseResource>} */
49
68
  const resolved = [];
50
69
  const backendProjects = configuration.getBackendProjects();
51
70
  for (const backendProject of backendProjects) {
@@ -60,19 +79,29 @@ export default class VelociousAuthorizationAbility {
60
79
  }
61
80
  return resolved;
62
81
  }
63
- /** @returns {Record<string, any>} - Context. */
82
+ /**
83
+ * Runs get context.
84
+ * @returns {Record<string, ?>} - Context.
85
+ */
64
86
  getContext() {
65
87
  return this.context;
66
88
  }
67
- /** @returns {Record<string, any>} - Locals. */
89
+ /**
90
+ * Runs get locals.
91
+ * @returns {Record<string, ?>} - Locals.
92
+ */
68
93
  getLocals() {
69
94
  return this.locals;
70
95
  }
71
- /** @returns {any} - Current user from context. */
96
+ /**
97
+ * Runs current user.
98
+ * @returns {?} - Current user from context.
99
+ */
72
100
  currentUser() {
73
101
  return this.context.currentUser;
74
102
  }
75
103
  /**
104
+ * Runs can.
76
105
  * @param {string | string[]} actions - Action(s).
77
106
  * @param {typeof import("../database/record/index.js").default} modelClass - Model class.
78
107
  * @param {AbilityConditionsType} [conditions] - Conditions.
@@ -82,6 +111,7 @@ export default class VelociousAuthorizationAbility {
82
111
  this.addRule({ actions, conditions, effect: "allow", modelClass });
83
112
  }
84
113
  /**
114
+ * Runs cannot.
85
115
  * @param {string | string[]} actions - Action(s).
86
116
  * @param {typeof import("../database/record/index.js").default} modelClass - Model class.
87
117
  * @param {AbilityConditionsType} [conditions] - Conditions.
@@ -91,6 +121,7 @@ export default class VelociousAuthorizationAbility {
91
121
  this.addRule({ actions, conditions, effect: "deny", modelClass });
92
122
  }
93
123
  /**
124
+ * Runs add rule.
94
125
  * @param {object} args - Rule args.
95
126
  * @param {string | string[]} args.actions - Action(s).
96
127
  * @param {AbilityConditionsType} [args.conditions] - Conditions.
@@ -103,6 +134,7 @@ export default class VelociousAuthorizationAbility {
103
134
  this.rules.push({ actions: normalizedActions, conditions, effect, modelClass });
104
135
  }
105
136
  /**
137
+ * Runs load abilities for model class.
106
138
  * @param {typeof import("../database/record/index.js").default} modelClass - Model class.
107
139
  * @returns {void} - No return value.
108
140
  */
@@ -126,11 +158,12 @@ export default class VelociousAuthorizationAbility {
126
158
  }
127
159
  }
128
160
  /**
161
+ * Runs apply to query.
129
162
  * @param {object} args - Query args.
130
163
  * @param {string} args.action - Requested action.
131
164
  * @param {typeof import("../database/record/index.js").default} args.modelClass - Model class.
132
- * @param {import("../database/query/model-class-query.js").default<any>} args.query - Query.
133
- * @returns {import("../database/query/model-class-query.js").default<any>} - Authorized query.
165
+ * @param {import("../database/query/model-class-query.js").default<?>} args.query - Query.
166
+ * @returns {import("../database/query/model-class-query.js").default<?>} - Authorized query.
134
167
  */
135
168
  applyToQuery({ action, modelClass, query }) {
136
169
  this.loadAbilitiesForModelClass(modelClass);
@@ -153,6 +186,7 @@ export default class VelociousAuthorizationAbility {
153
186
  return query;
154
187
  }
155
188
  /**
189
+ * Runs rules for.
156
190
  * @param {object} args - Rule lookup args.
157
191
  * @param {string} args.action - Action.
158
192
  * @param {typeof import("../database/record/index.js").default} args.modelClass - Model class.
@@ -166,10 +200,11 @@ export default class VelociousAuthorizationAbility {
166
200
  });
167
201
  }
168
202
  /**
203
+ * Runs condition sql parts.
169
204
  * @param {object} args - SQL args.
170
205
  * @param {string} args.action - Action.
171
206
  * @param {typeof import("../database/record/index.js").default} args.modelClass - Model class.
172
- * @param {import("../database/query/model-class-query.js").default<any>} args.query - Base query.
207
+ * @param {import("../database/query/model-class-query.js").default<?>} args.query - Base query.
173
208
  * @param {AbilityRuleType[]} args.rules - Rules.
174
209
  * @returns {string[]} - SQL condition parts.
175
210
  */
@@ -199,11 +234,12 @@ export default class VelociousAuthorizationAbility {
199
234
  return sqlParts;
200
235
  }
201
236
  /**
237
+ * Runs apply deny rules.
202
238
  * @param {object} args - Deny args.
203
239
  * @param {string} args.action - Action.
204
240
  * @param {AbilityRuleType[]} args.denyRules - Deny rules.
205
241
  * @param {typeof import("../database/record/index.js").default} args.modelClass - Model class.
206
- * @param {import("../database/query/model-class-query.js").default<any>} args.query - Query.
242
+ * @param {import("../database/query/model-class-query.js").default<?>} args.query - Query.
207
243
  * @returns {void} - No return value.
208
244
  */
209
245
  applyDenyRules({ action, denyRules, modelClass, query }) {
@@ -219,12 +255,13 @@ export default class VelociousAuthorizationAbility {
219
255
  }
220
256
  }
221
257
  /**
258
+ * Runs apply rule condition.
222
259
  * @param {object} args - Condition args.
223
260
  * @param {string} args.action - Action.
224
261
  * @param {AbilityConditionsType} args.conditions - Rule conditions.
225
262
  * @param {typeof import("../database/record/index.js").default} args.modelClass - Model class.
226
- * @param {import("../database/query/model-class-query.js").default<any>} args.query - Query.
227
- * @returns {void | import("../database/query/model-class-query.js").default<any>} - Optional replacement query.
263
+ * @param {import("../database/query/model-class-query.js").default<?>} args.query - Query.
264
+ * @returns {void | import("../database/query/model-class-query.js").default<?>} - Optional replacement query.
228
265
  */
229
266
  applyRuleCondition({ action, conditions, modelClass, query }) {
230
267
  if (typeof conditions === "string") {
@@ -241,4 +278,4 @@ export default class VelociousAuthorizationAbility {
241
278
  query.where(conditions);
242
279
  }
243
280
  }
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2FiaWxpdHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBRTdDLHlWQUF5VjtBQUV6Vjs7Ozs7O0dBTUc7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE9BQU8sT0FBTyw2QkFBNkI7SUFDaEQsdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUUxQix1QkFBdUI7SUFDdkIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRXRCLHVCQUF1QjtJQUN2QixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUIsdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUU1Qix1QkFBdUI7SUFDdkIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXJEOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUMsR0FBRyxFQUFFO1FBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFBO1FBRXZFLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUVmLHNDQUFzQztRQUN0QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFBO0lBQ3JDLENBQUM7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QyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9DLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEIsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUUxRixJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGtCQUFrQixDQUFDLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDO1FBQ3hELElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN2QixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUN2QixPQUFPLEVBQUUsSUFBSTtnQkFDYixNQUFNO2dCQUNOLFVBQVU7YUFDWCxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlUmVzb3VyY2UgZnJvbSBcIi4vYmFzZS1yZXNvdXJjZS5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgYW55PiB8IHN0cmluZyB8ICgocXVlcnk6IGltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55PiwgYXJnczoge2FiaWxpdHk6IFZlbG9jaW91c0F1dGhvcml6YXRpb25BYmlsaXR5LCBhY3Rpb246IHN0cmluZywgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSkgPT4gdm9pZCB8IGltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pil9IEFiaWxpdHlDb25kaXRpb25zVHlwZSAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFiaWxpdHlSdWxlVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gYWN0aW9ucyAtIEFjdGlvbnMgY292ZXJlZCBieSBydWxlLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAqIEBwcm9wZXJ0eSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlIHwgdW5kZWZpbmVkfSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7XCJhbGxvd1wiIHwgXCJkZW55XCJ9IGVmZmVjdCAtIFJ1bGUgZWZmZWN0LlxuICovXG5cbi8qKiBDYW5DYW4tc3R5bGUgYWJpbGl0eSBvYmplY3QgZm9yIHF1ZXJ5LWxldmVsIGFjY2VzcyBjb250cm9sLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQXV0aG9yaXphdGlvbkFiaWxpdHkge1xuICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgQ1JFQVRFID0gW1wiY3JlYXRlXCJdXG5cbiAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIFJFQUQgPSBbXCJyZWFkXCJdXG5cbiAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIFVQREFURSA9IFtcInVwZGF0ZVwiXVxuXG4gIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBERVNUUk9ZID0gW1wiZGVzdHJveVwiXVxuXG4gIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBDUlVEID0gW1wiY3JlYXRlXCIsIFwicmVhZFwiLCBcInVwZGF0ZVwiLCBcImRlc3Ryb3lcIl1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBYmlsaXR5IGFyZ3MuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2FyZ3MuY29udGV4dF0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW2FyZ3MubG9jYWxzXSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKiBAcGFyYW0ge0FycmF5PHR5cGVvZiBCYXNlUmVzb3VyY2U+fSBbYXJncy5yZXNvdXJjZXNdIC0gUmVzb3VyY2UgY2xhc3Nlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb250ZXh0ID0ge30sIGxvY2FscyA9IHt9LCByZXNvdXJjZXN9ID0ge30pIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gICAgdGhpcy5sb2NhbHMgPSBsb2NhbHNcbiAgICB0aGlzLnJlc291cmNlcyA9IHJlc291cmNlcyB8fCB0aGlzLl9yZXNvbHZlUmVzb3VyY2VzRnJvbUNvbmZpZ3VyYXRpb24oKVxuXG4gICAgLyoqIEB0eXBlIHtBYmlsaXR5UnVsZVR5cGVbXX0gKi9cbiAgICB0aGlzLnJ1bGVzID0gW11cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYm9vbGVhbj59ICovXG4gICAgdGhpcy5sb2FkZWRNb2RlbENsYXNzQWJpbGl0aWVzID0ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRvLXJlc29sdmVzIHJlc291cmNlIGNsYXNzZXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbidzIGJhY2tlbmRQcm9qZWN0cyB3aGVuIG5vIGV4cGxpY2l0IHJlc291cmNlcyBhcmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBcnJheTx0eXBlb2YgQmFzZVJlc291cmNlPn1cbiAgICovXG4gIF9yZXNvbHZlUmVzb3VyY2VzRnJvbUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuY29udGV4dD8uY29uZmlndXJhdGlvblxuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uIHx8IHR5cGVvZiBjb25maWd1cmF0aW9uLmdldEJhY2tlbmRQcm9qZWN0cyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge0FycmF5PHR5cGVvZiBCYXNlUmVzb3VyY2U+fSAqL1xuICAgIGNvbnN0IHJlc29sdmVkID0gW11cbiAgICBjb25zdCBiYWNrZW5kUHJvamVjdHMgPSBjb25maWd1cmF0aW9uLmdldEJhY2tlbmRQcm9qZWN0cygpXG5cbiAgICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgICAgY29uc3QgZnJvbnRlbmRNb2RlbHMgPSBiYWNrZW5kUHJvamVjdC5mcm9udGVuZE1vZGVsc1xuXG4gICAgICBpZiAoIWZyb250ZW5kTW9kZWxzIHx8IHR5cGVvZiBmcm9udGVuZE1vZGVscyAhPT0gXCJvYmplY3RcIikgY29udGludWVcblxuICAgICAgZm9yIChjb25zdCByZXNvdXJjZURlZmluaXRpb24gb2YgT2JqZWN0LnZhbHVlcyhmcm9udGVuZE1vZGVscykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZURlZmluaXRpb24gPT09IFwiZnVuY3Rpb25cIiAmJiByZXNvdXJjZURlZmluaXRpb24ucHJvdG90eXBlIGluc3RhbmNlb2YgQmFzZVJlc291cmNlKSB7XG4gICAgICAgICAgcmVzb2x2ZWQucHVzaChyZXNvdXJjZURlZmluaXRpb24pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gLSBDb250ZXh0LiAqL1xuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgYW55Pn0gLSBMb2NhbHMuICovXG4gIGdldExvY2FscygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbHNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7YW55fSAtIEN1cnJlbnQgdXNlciBmcm9tIGNvbnRleHQuICovXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQuY3VycmVudFVzZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2FuKGFjdGlvbnMsIG1vZGVsQ2xhc3MsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdDogXCJhbGxvd1wiLCBtb2RlbENsYXNzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2Fubm90KGFjdGlvbnMsIG1vZGVsQ2xhc3MsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdDogXCJkZW55XCIsIG1vZGVsQ2xhc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUnVsZSBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhcmdzLmFjdGlvbnMgLSBBY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBbYXJncy5jb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSB7XCJhbGxvd1wiIHwgXCJkZW55XCJ9IGFyZ3MuZWZmZWN0IC0gRWZmZWN0LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdCwgbW9kZWxDbGFzc30pIHtcbiAgICBjb25zdCBub3JtYWxpemVkQWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoYWN0aW9ucykgPyBhY3Rpb25zIDogW2FjdGlvbnNdXG5cbiAgICB0aGlzLnJ1bGVzLnB1c2goe2FjdGlvbnM6IG5vcm1hbGl6ZWRBY3Rpb25zLCBjb25kaXRpb25zLCBlZmZlY3QsIG1vZGVsQ2xhc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGxvYWRBYmlsaXRpZXNGb3JNb2RlbENsYXNzKG1vZGVsQ2xhc3MpIHtcbiAgICBjb25zdCBrZXkgPSBtb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG5cbiAgICBpZiAodGhpcy5sb2FkZWRNb2RlbENsYXNzQWJpbGl0aWVzW2tleV0pIHJldHVyblxuXG4gICAgdGhpcy5sb2FkZWRNb2RlbENsYXNzQWJpbGl0aWVzW2tleV0gPSB0cnVlXG5cbiAgICBmb3IgKGNvbnN0IFJlc291cmNlQ2xhc3Mgb2YgdGhpcy5yZXNvdXJjZXMpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlTW9kZWxDbGFzcyA9IFJlc291cmNlQ2xhc3MubW9kZWxDbGFzcygpXG5cbiAgICAgIGlmICghcmVzb3VyY2VNb2RlbENsYXNzKSBjb250aW51ZVxuICAgICAgaWYgKHJlc291cmNlTW9kZWxDbGFzcyAhPT0gbW9kZWxDbGFzcykgY29udGludWVcblxuICAgICAgY29uc3QgcmVzb3VyY2VJbnN0YW5jZSA9IG5ldyBSZXNvdXJjZUNsYXNzKHtcbiAgICAgICAgYWJpbGl0eTogdGhpcyxcbiAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICBsb2NhbHM6IHRoaXMubG9jYWxzXG4gICAgICB9KVxuXG4gICAgICByZXNvdXJjZUluc3RhbmNlLmFiaWxpdGllcygpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUXVlcnkgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gUmVxdWVzdGVkIGFjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8YW55Pn0gYXJncy5xdWVyeSAtIFF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+fSAtIEF1dGhvcml6ZWQgcXVlcnkuXG4gICAqL1xuICBhcHBseVRvUXVlcnkoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnl9KSB7XG4gICAgdGhpcy5sb2FkQWJpbGl0aWVzRm9yTW9kZWxDbGFzcyhtb2RlbENsYXNzKVxuXG4gICAgY29uc3QgYXBwbGljYWJsZVJ1bGVzID0gdGhpcy5ydWxlc0Zvcih7YWN0aW9uLCBtb2RlbENsYXNzfSlcbiAgICBjb25zdCBhbGxvd1J1bGVzID0gYXBwbGljYWJsZVJ1bGVzLmZpbHRlcigocnVsZSkgPT4gcnVsZS5lZmZlY3QgPT09IFwiYWxsb3dcIilcbiAgICBjb25zdCBkZW55UnVsZXMgPSBhcHBsaWNhYmxlUnVsZXMuZmlsdGVyKChydWxlKSA9PiBydWxlLmVmZmVjdCA9PT0gXCJkZW55XCIpXG5cbiAgICBpZiAoYWxsb3dSdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgIH1cblxuICAgIGlmIChhbGxvd1J1bGVzLnNvbWUoKHJ1bGUpID0+ICFydWxlLmNvbmRpdGlvbnMpKSB7XG4gICAgICB0aGlzLmFwcGx5RGVueVJ1bGVzKHthY3Rpb24sIGRlbnlSdWxlcywgbW9kZWxDbGFzcywgcXVlcnl9KVxuICAgICAgcmV0dXJuIHF1ZXJ5XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dTcWxQYXJ0cyA9IHRoaXMuY29uZGl0aW9uU3FsUGFydHMoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnksIHJ1bGVzOiBhbGxvd1J1bGVzfSlcblxuICAgIGlmIChhbGxvd1NxbFBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHF1ZXJ5LndoZXJlKFwiMT0wXCIpXG4gICAgfVxuXG4gICAgcXVlcnkud2hlcmUoYCgke2FsbG93U3FsUGFydHMuam9pbihcIiBPUiBcIil9KWApXG4gICAgdGhpcy5hcHBseURlbnlSdWxlcyh7YWN0aW9uLCBkZW55UnVsZXMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSlcblxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUnVsZSBsb29rdXAgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHtBYmlsaXR5UnVsZVR5cGVbXX0gLSBNYXRjaGluZyBydWxlcy5cbiAgICovXG4gIHJ1bGVzRm9yKHthY3Rpb24sIG1vZGVsQ2xhc3N9KSB7XG4gICAgcmV0dXJuIHRoaXMucnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICBpZiAocnVsZS5tb2RlbENsYXNzICE9PSBtb2RlbENsYXNzKSByZXR1cm4gZmFsc2VcblxuICAgICAgcmV0dXJuIHJ1bGUuYWN0aW9ucy5pbmNsdWRlcyhhY3Rpb24pIHx8IHJ1bGUuYWN0aW9ucy5pbmNsdWRlcyhcIm1hbmFnZVwiKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBTUUwgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+fSBhcmdzLnF1ZXJ5IC0gQmFzZSBxdWVyeS5cbiAgICogQHBhcmFtIHtBYmlsaXR5UnVsZVR5cGVbXX0gYXJncy5ydWxlcyAtIFJ1bGVzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gU1FMIGNvbmRpdGlvbiBwYXJ0cy5cbiAgICovXG4gIGNvbmRpdGlvblNxbFBhcnRzKHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5LCBydWxlc30pIHtcbiAgICBjb25zdCBwayA9IG1vZGVsQ2xhc3MucHJpbWFyeUtleSgpXG4gICAgY29uc3QgcXVvdGVkQmFzZVRhYmxlID0gcXVlcnkuZHJpdmVyLnF1b3RlVGFibGUobW9kZWxDbGFzcy50YWJsZU5hbWUoKSlcbiAgICBjb25zdCBxdW90ZWRQayA9IHF1ZXJ5LmRyaXZlci5xdW90ZUNvbHVtbihwaylcbiAgICBjb25zdCBzcWxQYXJ0cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgIGlmICghcnVsZS5jb25kaXRpb25zKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBzY29wZWRRdWVyeSA9IG1vZGVsQ2xhc3MuX25ld1F1ZXJ5KClcbiAgICAgIGNvbnN0IHJlc3VsdFF1ZXJ5ID0gdGhpcy5hcHBseVJ1bGVDb25kaXRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNvbmRpdGlvbnM6IHJ1bGUuY29uZGl0aW9ucyxcbiAgICAgICAgbW9kZWxDbGFzcyxcbiAgICAgICAgcXVlcnk6IHNjb3BlZFF1ZXJ5XG4gICAgICB9KVxuICAgICAgY29uc3QgZmluYWxRdWVyeSA9IHJlc3VsdFF1ZXJ5IHx8IHNjb3BlZFF1ZXJ5XG4gICAgICBjb25zdCBzZWxlY3RlZFBrU3FsID0gYCR7cXVvdGVkQmFzZVRhYmxlfS4ke3F1b3RlZFBrfWBcblxuICAgICAgaWYgKGZpbmFsUXVlcnkuX2Rpc3RpbmN0KSB7XG4gICAgICAgIHF1ZXJ5LmRpc3RpbmN0KHRydWUpXG4gICAgICB9XG5cbiAgICAgIGZpbmFsUXVlcnkuc2VsZWN0KHNlbGVjdGVkUGtTcWwpXG5cbiAgICAgIHNxbFBhcnRzLnB1c2goYCR7cXVvdGVkQmFzZVRhYmxlfS4ke3F1b3RlZFBrfSBJTiAoJHtmaW5hbFF1ZXJ5LnRvU3FsKCl9KWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbFBhcnRzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBEZW55IGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIEFjdGlvbi5cbiAgICogQHBhcmFtIHtBYmlsaXR5UnVsZVR5cGVbXX0gYXJncy5kZW55UnVsZXMgLSBEZW55IHJ1bGVzLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+fSBhcmdzLnF1ZXJ5IC0gUXVlcnkuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFwcGx5RGVueVJ1bGVzKHthY3Rpb24sIGRlbnlSdWxlcywgbW9kZWxDbGFzcywgcXVlcnl9KSB7XG4gICAgaWYgKGRlbnlSdWxlcy5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgaWYgKGRlbnlSdWxlcy5zb21lKChydWxlKSA9PiAhcnVsZS5jb25kaXRpb25zKSkge1xuICAgICAgcXVlcnkud2hlcmUoXCIxPTBcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlbnlTcWxQYXJ0cyA9IHRoaXMuY29uZGl0aW9uU3FsUGFydHMoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnksIHJ1bGVzOiBkZW55UnVsZXN9KVxuXG4gICAgaWYgKGRlbnlTcWxQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBxdWVyeS53aGVyZShgTk9UICgke2RlbnlTcWxQYXJ0cy5qb2luKFwiIE9SIFwiKX0pYClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBDb25kaXRpb24gYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gYXJncy5jb25kaXRpb25zIC0gUnVsZSBjb25kaXRpb25zLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+fSBhcmdzLnF1ZXJ5IC0gUXVlcnkuXG4gICAqIEByZXR1cm5zIHt2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+fSAtIE9wdGlvbmFsIHJlcGxhY2VtZW50IHF1ZXJ5LlxuICAgKi9cbiAgYXBwbHlSdWxlQ29uZGl0aW9uKHthY3Rpb24sIGNvbmRpdGlvbnMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSkge1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcXVlcnkud2hlcmUoY29uZGl0aW9ucylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gY29uZGl0aW9ucyhxdWVyeSwge1xuICAgICAgICBhYmlsaXR5OiB0aGlzLFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIG1vZGVsQ2xhc3NcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcXVlcnkud2hlcmUoY29uZGl0aW9ucylcbiAgfVxufVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2FiaWxpdHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBRTdDOztpVkFFaVY7QUFFalY7Ozs7Ozs7R0FPRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsT0FBTyxPQUFPLDZCQUE2QjtJQUNoRDs7eUJBRXFCO0lBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUUxQjs7eUJBRXFCO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUV0Qjs7eUJBRXFCO0lBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUUxQjs7eUJBRXFCO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUU1Qjs7eUJBRXFCO0lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUVyRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEVBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBQyxHQUFHLEVBQUU7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUE7UUFFdkU7O3NDQUU4QjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUVmOzs0Q0FFb0M7UUFDcEMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEVBQUUsQ0FBQTtJ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SSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9DLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEIsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUUxRixJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxrQkFBa0IsQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQztRQUN4RCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDdkIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDdkIsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsTUFBTTtnQkFDTixVQUFVO2FBQ1gsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVJlc291cmNlIGZyb20gXCIuL2Jhc2UtcmVzb3VyY2UuanNcIlxuXG4vKipcbiAqIERlZmluZXMgdGhpcyB0eXBlZGVmLlxuICBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgPz4gfCBzdHJpbmcgfCAoKHF1ZXJ5OiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PD8+LCBhcmdzOiB7YWJpbGl0eTogVmVsb2Npb3VzQXV0aG9yaXphdGlvbkFiaWxpdHksIGFjdGlvbjogc3RyaW5nLCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA9PiB2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/Pil9IEFiaWxpdHlDb25kaXRpb25zVHlwZSAqL1xuXG4vKipcbiAqIEFiaWxpdHlSdWxlVHlwZSB0eXBlLlxuICogQHR5cGVkZWYge29iamVjdH0gQWJpbGl0eVJ1bGVUeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBhY3Rpb25zIC0gQWN0aW9ucyBjb3ZlcmVkIGJ5IHJ1bGUuXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICogQHByb3BlcnR5IHtBYmlsaXR5Q29uZGl0aW9uc1R5cGUgfCB1bmRlZmluZWR9IGNvbmRpdGlvbnMgLSBDb25kaXRpb25zLlxuICogQHByb3BlcnR5IHtcImFsbG93XCIgfCBcImRlbnlcIn0gZWZmZWN0IC0gUnVsZSBlZmZlY3QuXG4gKi9cblxuLyoqIENhbkNhbi1zdHlsZSBhYmlsaXR5IG9iamVjdCBmb3IgcXVlcnktbGV2ZWwgYWNjZXNzIGNvbnRyb2wuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNBdXRob3JpemF0aW9uQWJpbGl0eSB7XG4gIC8qKlxuICAgKiBDcmVhdGUuXG4gICAgQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgQ1JFQVRFID0gW1wiY3JlYXRlXCJdXG5cbiAgLyoqXG4gICAqIFJlYWQuXG4gICAgQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgUkVBRCA9IFtcInJlYWRcIl1cblxuICAvKipcbiAgICogVXBkYXRlLlxuICAgIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIFVQREFURSA9IFtcInVwZGF0ZVwiXVxuXG4gIC8qKlxuICAgKiBEZXN0cm95LlxuICAgIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIERFU1RST1kgPSBbXCJkZXN0cm95XCJdXG5cbiAgLyoqXG4gICAqIENydWQuXG4gICAgQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgQ1JVRCA9IFtcImNyZWF0ZVwiLCBcInJlYWRcIiwgXCJ1cGRhdGVcIiwgXCJkZXN0cm95XCJdXG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQWJpbGl0eSBhcmdzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBbYXJncy5jb250ZXh0XSAtIEFiaWxpdHkgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gW2FyZ3MubG9jYWxzXSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKiBAcGFyYW0ge0FycmF5PHR5cGVvZiBCYXNlUmVzb3VyY2U+fSBbYXJncy5yZXNvdXJjZXNdIC0gUmVzb3VyY2UgY2xhc3Nlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb250ZXh0ID0ge30sIGxvY2FscyA9IHt9LCByZXNvdXJjZXN9ID0ge30pIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gICAgdGhpcy5sb2NhbHMgPSBsb2NhbHNcbiAgICB0aGlzLnJlc291cmNlcyA9IHJlc291cmNlcyB8fCB0aGlzLl9yZXNvbHZlUmVzb3VyY2VzRnJvbUNvbmZpZ3VyYXRpb24oKVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgQHR5cGUge0FiaWxpdHlSdWxlVHlwZVtdfSAqL1xuICAgIHRoaXMucnVsZXMgPSBbXVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgQHR5cGUge1JlY29yZDxzdHJpbmcsIGJvb2xlYW4+fSAqL1xuICAgIHRoaXMubG9hZGVkTW9kZWxDbGFzc0FiaWxpdGllcyA9IHt9XG4gIH1cblxuICAvKipcbiAgICogQXV0by1yZXNvbHZlcyByZXNvdXJjZSBjbGFzc2VzIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24ncyBiYWNrZW5kUHJvamVjdHMgd2hlbiBubyBleHBsaWNpdCByZXNvdXJjZXMgYXJlIHByb3ZpZGVkLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8dHlwZW9mIEJhc2VSZXNvdXJjZT59XG4gICAqL1xuICBfcmVzb2x2ZVJlc291cmNlc0Zyb21Db25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnRleHQ/LmNvbmZpZ3VyYXRpb25cblxuICAgIGlmICghY29uZmlndXJhdGlvbiB8fCB0eXBlb2YgY29uZmlndXJhdGlvbi5nZXRCYWNrZW5kUHJvamVjdHMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZWQuXG4gICAgICBAdHlwZSB7QXJyYXk8dHlwZW9mIEJhc2VSZXNvdXJjZT59ICovXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBbXVxuICAgIGNvbnN0IGJhY2tlbmRQcm9qZWN0cyA9IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKClcblxuICAgIGZvciAoY29uc3QgYmFja2VuZFByb2plY3Qgb2YgYmFja2VuZFByb2plY3RzKSB7XG4gICAgICBjb25zdCBmcm9udGVuZE1vZGVscyA9IGJhY2tlbmRQcm9qZWN0LmZyb250ZW5kTW9kZWxzXG5cbiAgICAgIGlmICghZnJvbnRlbmRNb2RlbHMgfHwgdHlwZW9mIGZyb250ZW5kTW9kZWxzICE9PSBcIm9iamVjdFwiKSBjb250aW51ZVxuXG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlRGVmaW5pdGlvbiBvZiBPYmplY3QudmFsdWVzKGZyb250ZW5kTW9kZWxzKSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc291cmNlRGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiICYmIHJlc291cmNlRGVmaW5pdGlvbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBCYXNlUmVzb3VyY2UpIHtcbiAgICAgICAgICByZXNvbHZlZC5wdXNoKHJlc291cmNlRGVmaW5pdGlvbilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGNvbnRleHQuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gLSBDb250ZXh0LlxuICAgKi9cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0XG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgbG9jYWxzLlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gTG9jYWxzLlxuICAgKi9cbiAgZ2V0TG9jYWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyB7P30gLSBDdXJyZW50IHVzZXIgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgY3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5jdXJyZW50VXNlclxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2FuLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2FuKGFjdGlvbnMsIG1vZGVsQ2xhc3MsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdDogXCJhbGxvd1wiLCBtb2RlbENsYXNzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNhbm5vdC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFjdGlvbihzKS5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtBYmlsaXR5Q29uZGl0aW9uc1R5cGV9IFtjb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGNhbm5vdChhY3Rpb25zLCBtb2RlbENsYXNzLCBjb25kaXRpb25zKSB7XG4gICAgdGhpcy5hZGRSdWxlKHthY3Rpb25zLCBjb25kaXRpb25zLCBlZmZlY3Q6IFwiZGVueVwiLCBtb2RlbENsYXNzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFkZCBydWxlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJ1bGUgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYXJncy5hY3Rpb25zIC0gQWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gW2FyZ3MuY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcGFyYW0ge1wiYWxsb3dcIiB8IFwiZGVueVwifSBhcmdzLmVmZmVjdCAtIEVmZmVjdC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBhZGRSdWxlKHthY3Rpb25zLCBjb25kaXRpb25zLCBlZmZlY3QsIG1vZGVsQ2xhc3N9KSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEFjdGlvbnMgPSBBcnJheS5pc0FycmF5KGFjdGlvbnMpID8gYWN0aW9ucyA6IFthY3Rpb25zXVxuXG4gICAgdGhpcy5ydWxlcy5wdXNoKHthY3Rpb25zOiBub3JtYWxpemVkQWN0aW9ucywgY29uZGl0aW9ucywgZWZmZWN0LCBtb2RlbENsYXNzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGxvYWQgYWJpbGl0aWVzIGZvciBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgbG9hZEFiaWxpdGllc0Zvck1vZGVsQ2xhc3MobW9kZWxDbGFzcykge1xuICAgIGNvbnN0IGtleSA9IG1vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKClcblxuICAgIGlmICh0aGlzLmxvYWRlZE1vZGVsQ2xhc3NBYmlsaXRpZXNba2V5XSkgcmV0dXJuXG5cbiAgICB0aGlzLmxvYWRlZE1vZGVsQ2xhc3NBYmlsaXRpZXNba2V5XSA9IHRydWVcblxuICAgIGZvciAoY29uc3QgUmVzb3VyY2VDbGFzcyBvZiB0aGlzLnJlc291cmNlcykge1xuICAgICAgY29uc3QgcmVzb3VyY2VNb2RlbENsYXNzID0gUmVzb3VyY2VDbGFzcy5tb2RlbENsYXNzKClcblxuICAgICAgaWYgKCFyZXNvdXJjZU1vZGVsQ2xhc3MpIGNvbnRpbnVlXG4gICAgICBpZiAocmVzb3VyY2VNb2RlbENsYXNzICE9PSBtb2RlbENsYXNzKSBjb250aW51ZVxuXG4gICAgICBjb25zdCByZXNvdXJjZUluc3RhbmNlID0gbmV3IFJlc291cmNlQ2xhc3Moe1xuICAgICAgICBhYmlsaXR5OiB0aGlzLFxuICAgICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQsXG4gICAgICAgIGxvY2FsczogdGhpcy5sb2NhbHNcbiAgICAgIH0pXG5cbiAgICAgIHJlc291cmNlSW5zdGFuY2UuYWJpbGl0aWVzKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhcHBseSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBRdWVyeSBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBSZXF1ZXN0ZWQgYWN0aW9uLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/Pn0gYXJncy5xdWVyeSAtIFF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/Pn0gLSBBdXRob3JpemVkIHF1ZXJ5LlxuICAgKi9cbiAgYXBwbHlUb1F1ZXJ5KHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5fSkge1xuICAgIHRoaXMubG9hZEFiaWxpdGllc0Zvck1vZGVsQ2xhc3MobW9kZWxDbGFzcylcblxuICAgIGNvbnN0IGFwcGxpY2FibGVSdWxlcyA9IHRoaXMucnVsZXNGb3Ioe2FjdGlvbiwgbW9kZWxDbGFzc30pXG4gICAgY29uc3QgYWxsb3dSdWxlcyA9IGFwcGxpY2FibGVSdWxlcy5maWx0ZXIoKHJ1bGUpID0+IHJ1bGUuZWZmZWN0ID09PSBcImFsbG93XCIpXG4gICAgY29uc3QgZGVueVJ1bGVzID0gYXBwbGljYWJsZVJ1bGVzLmZpbHRlcigocnVsZSkgPT4gcnVsZS5lZmZlY3QgPT09IFwiZGVueVwiKVxuXG4gICAgaWYgKGFsbG93UnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcXVlcnkud2hlcmUoXCIxPTBcIilcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dSdWxlcy5zb21lKChydWxlKSA9PiAhcnVsZS5jb25kaXRpb25zKSkge1xuICAgICAgdGhpcy5hcHBseURlbnlSdWxlcyh7YWN0aW9uLCBkZW55UnVsZXMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSlcbiAgICAgIHJldHVybiBxdWVyeVxuICAgIH1cblxuICAgIGNvbnN0IGFsbG93U3FsUGFydHMgPSB0aGlzLmNvbmRpdGlvblNxbFBhcnRzKHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5LCBydWxlczogYWxsb3dSdWxlc30pXG5cbiAgICBpZiAoYWxsb3dTcWxQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgIH1cblxuICAgIHF1ZXJ5LndoZXJlKGAoJHthbGxvd1NxbFBhcnRzLmpvaW4oXCIgT1IgXCIpfSlgKVxuICAgIHRoaXMuYXBwbHlEZW55UnVsZXMoe2FjdGlvbiwgZGVueVJ1bGVzLCBtb2RlbENsYXNzLCBxdWVyeX0pXG5cbiAgICByZXR1cm4gcXVlcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJ1bGVzIGZvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSdWxlIGxvb2t1cCBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge0FiaWxpdHlSdWxlVHlwZVtdfSAtIE1hdGNoaW5nIHJ1bGVzLlxuICAgKi9cbiAgcnVsZXNGb3Ioe2FjdGlvbiwgbW9kZWxDbGFzc30pIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgIGlmIChydWxlLm1vZGVsQ2xhc3MgIT09IG1vZGVsQ2xhc3MpIHJldHVybiBmYWxzZVxuXG4gICAgICByZXR1cm4gcnVsZS5hY3Rpb25zLmluY2x1ZGVzKGFjdGlvbikgfHwgcnVsZS5hY3Rpb25zLmluY2x1ZGVzKFwibWFuYWdlXCIpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbmRpdGlvbiBzcWwgcGFydHMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gU1FMIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIEFjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8Pz59IGFyZ3MucXVlcnkgLSBCYXNlIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FiaWxpdHlSdWxlVHlwZVtdfSBhcmdzLnJ1bGVzIC0gUnVsZXMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgY29uZGl0aW9uIHBhcnRzLlxuICAgKi9cbiAgY29uZGl0aW9uU3FsUGFydHMoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnksIHJ1bGVzfSkge1xuICAgIGNvbnN0IHBrID0gbW9kZWxDbGFzcy5wcmltYXJ5S2V5KClcbiAgICBjb25zdCBxdW90ZWRCYXNlVGFibGUgPSBxdWVyeS5kcml2ZXIucXVvdGVUYWJsZShtb2RlbENsYXNzLnRhYmxlTmFtZSgpKVxuICAgIGNvbnN0IHF1b3RlZFBrID0gcXVlcnkuZHJpdmVyLnF1b3RlQ29sdW1uKHBrKVxuICAgIGNvbnN0IHNxbFBhcnRzID0gW11cblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgaWYgKCFydWxlLmNvbmRpdGlvbnMpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gbW9kZWxDbGFzcy5fbmV3UXVlcnkoKVxuICAgICAgY29uc3QgcmVzdWx0UXVlcnkgPSB0aGlzLmFwcGx5UnVsZUNvbmRpdGlvbih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY29uZGl0aW9uczogcnVsZS5jb25kaXRpb25zLFxuICAgICAgICBtb2RlbENsYXNzLFxuICAgICAgICBxdWVyeTogc2NvcGVkUXVlcnlcbiAgICAgIH0pXG4gICAgICBjb25zdCBmaW5hbFF1ZXJ5ID0gcmVzdWx0UXVlcnkgfHwgc2NvcGVkUXVlcnlcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGtTcWwgPSBgJHtxdW90ZWRCYXNlVGFibGV9LiR7cXVvdGVkUGt9YFxuXG4gICAgICBpZiAoZmluYWxRdWVyeS5fZGlzdGluY3QpIHtcbiAgICAgICAgcXVlcnkuZGlzdGluY3QodHJ1ZSlcbiAgICAgIH1cblxuICAgICAgZmluYWxRdWVyeS5zZWxlY3Qoc2VsZWN0ZWRQa1NxbClcblxuICAgICAgc3FsUGFydHMucHVzaChgJHtxdW90ZWRCYXNlVGFibGV9LiR7cXVvdGVkUGt9IElOICgke2ZpbmFsUXVlcnkudG9TcWwoKX0pYClcbiAgICB9XG5cbiAgICByZXR1cm4gc3FsUGFydHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFwcGx5IGRlbnkgcnVsZXMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gRGVueSBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7QWJpbGl0eVJ1bGVUeXBlW119IGFyZ3MuZGVueVJ1bGVzIC0gRGVueSBydWxlcy5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8Pz59IGFyZ3MucXVlcnkgLSBRdWVyeS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlEZW55UnVsZXMoe2FjdGlvbiwgZGVueVJ1bGVzLCBtb2RlbENsYXNzLCBxdWVyeX0pIHtcbiAgICBpZiAoZGVueVJ1bGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICBpZiAoZGVueVJ1bGVzLnNvbWUoKHJ1bGUpID0+ICFydWxlLmNvbmRpdGlvbnMpKSB7XG4gICAgICBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVueVNxbFBhcnRzID0gdGhpcy5jb25kaXRpb25TcWxQYXJ0cyh7YWN0aW9uLCBtb2RlbENsYXNzLCBxdWVyeSwgcnVsZXM6IGRlbnlSdWxlc30pXG5cbiAgICBpZiAoZGVueVNxbFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGBOT1QgKCR7ZGVueVNxbFBhcnRzLmpvaW4oXCIgT1IgXCIpfSlgKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFwcGx5IHJ1bGUgY29uZGl0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbmRpdGlvbiBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBhcmdzLmNvbmRpdGlvbnMgLSBSdWxlIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PD8+fSBhcmdzLnF1ZXJ5IC0gUXVlcnkuXG4gICAqIEByZXR1cm5zIHt2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/Pn0gLSBPcHRpb25hbCByZXBsYWNlbWVudCBxdWVyeS5cbiAgICovXG4gIGFwcGx5UnVsZUNvbmRpdGlvbih7YWN0aW9uLCBjb25kaXRpb25zLCBtb2RlbENsYXNzLCBxdWVyeX0pIHtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGNvbmRpdGlvbnMpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGNvbmRpdGlvbnMocXVlcnksIHtcbiAgICAgICAgYWJpbGl0eTogdGhpcyxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBtb2RlbENsYXNzXG4gICAgICB9KVxuICAgIH1cblxuICAgIHF1ZXJ5LndoZXJlKGNvbmRpdGlvbnMpXG4gIH1cbn1cbiJdfQ==
@@ -1,16 +1,20 @@
1
1
  /** Base class for authorization resources defining abilities for a model. */
2
2
  export default class AuthorizationBaseResource {
3
- /** @type {typeof import("../database/record/index.js").default | undefined} */
3
+ /**
4
+ * Model class.
5
+ @type {typeof import("../database/record/index.js").default | undefined} */
4
6
  static ModelClass: typeof import("../database/record/index.js").default | undefined;
5
7
  /**
8
+ * Runs model class.
6
9
  * @returns {typeof import("../database/record/index.js").default | undefined} - Model class handled by this resource.
7
10
  */
8
11
  static modelClass(): typeof import("../database/record/index.js").default | undefined;
9
12
  /**
13
+ * Runs constructor.
10
14
  * @param {object} args - Resource args.
11
15
  * @param {import("./ability.js").default} [args.ability] - Ability instance.
12
- * @param {Record<string, any>} [args.context] - Ability context.
13
- * @param {Record<string, any>} [args.locals] - Ability locals.
16
+ * @param {Record<string, ?>} [args.context] - Ability context.
17
+ * @param {Record<string, ?>} [args.locals] - Ability locals.
14
18
  */
15
19
  constructor({ ability, context, locals }: {
16
20
  ability?: import("./ability.js").default | undefined;
@@ -21,36 +25,41 @@ export default class AuthorizationBaseResource {
21
25
  context: Record<string, any>;
22
26
  locals: Record<string, any>;
23
27
  /**
28
+ * Runs can.
24
29
  * @param {string | string[]} actions - Ability action(s).
25
- * @param {Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<any>)} [conditions] - Conditions.
30
+ * @param {Record<string, ?> | string | ((query: import("../database/query/model-class-query.js").default<?>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<?>)} [conditions] - Conditions.
26
31
  * @returns {void} - No return value.
27
32
  */
28
- can(actions: string | string[], conditions?: Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {
33
+ can(actions: string | string[], conditions?: Record<string, unknown> | string | ((query: import("../database/query/model-class-query.js").default<unknown>, args: {
29
34
  ability: import("./ability.js").default;
30
35
  action: string;
31
36
  modelClass: typeof import("../database/record/index.js").default;
32
- }) => void | import("../database/query/model-class-query.js").default<any>)): void;
37
+ }) => void | import("../database/query/model-class-query.js").default<unknown>)): void;
33
38
  /**
39
+ * Runs cannot.
34
40
  * @param {string | string[]} actions - Ability action(s).
35
- * @param {Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<any>)} [conditions] - Conditions.
41
+ * @param {Record<string, ?> | string | ((query: import("../database/query/model-class-query.js").default<?>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<?>)} [conditions] - Conditions.
36
42
  * @returns {void} - No return value.
37
43
  */
38
- cannot(actions: string | string[], conditions?: Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {
44
+ cannot(actions: string | string[], conditions?: Record<string, unknown> | string | ((query: import("../database/query/model-class-query.js").default<unknown>, args: {
39
45
  ability: import("./ability.js").default;
40
46
  action: string;
41
47
  modelClass: typeof import("../database/record/index.js").default;
42
- }) => void | import("../database/query/model-class-query.js").default<any>)): void;
48
+ }) => void | import("../database/query/model-class-query.js").default<unknown>)): void;
43
49
  /**
50
+ * Runs required ability.
44
51
  * @returns {import("./ability.js").default} - Ability instance.
45
52
  */
46
53
  requiredAbility(): import("./ability.js").default;
47
54
  /**
55
+ * Runs required model class.
48
56
  * @returns {typeof import("../database/record/index.js").default} - Model class handled by this resource.
49
57
  */
50
58
  requiredModelClass(): typeof import("../database/record/index.js").default;
51
59
  /**
60
+ * Runs assert resource conditions signature.
52
61
  * @param {object} args - Signature args.
53
- * @param {unknown} args.conditions - Conditions value.
62
+ * @param {?} args.conditions - Conditions value.
54
63
  * @param {"can" | "cannot"} args.methodName - Method name.
55
64
  * @returns {void}
56
65
  */
@@ -58,17 +67,35 @@ export default class AuthorizationBaseResource {
58
67
  conditions: unknown;
59
68
  methodName: "can" | "cannot";
60
69
  }): void;
61
- /** @returns {Record<string, any>} - Ability context. */
62
- getContext(): Record<string, any>;
63
- /** @returns {Record<string, any>} - Ability locals. */
64
- getLocals(): Record<string, any>;
65
- /** @returns {any} - Current user from context. */
66
- currentUser(): any;
67
- /** @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context. */
70
+ /**
71
+ * Runs get context.
72
+ * @returns {Record<string, ?>} - Ability context.
73
+ */
74
+ getContext(): Record<string, unknown>;
75
+ /**
76
+ * Runs get locals.
77
+ * @returns {Record<string, ?>} - Ability locals.
78
+ */
79
+ getLocals(): Record<string, unknown>;
80
+ /**
81
+ * Runs current user.
82
+ * @returns {?} - Current user from context.
83
+ */
84
+ currentUser(): unknown;
85
+ /**
86
+ * Runs request.
87
+ * @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context.
88
+ */
68
89
  request(): import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined;
69
- /** @returns {Record<string, any> | undefined} - Params from context. */
70
- params(): Record<string, any> | undefined;
71
- /** @returns {void} - Implement in subclasses to define abilities. */
90
+ /**
91
+ * Runs params.
92
+ * @returns {Record<string, ?> | undefined} - Params from context.
93
+ */
94
+ params(): Record<string, unknown> | undefined;
95
+ /**
96
+ * Runs abilities.
97
+ * @returns {void} - Implement in subclasses to define abilities.
98
+ */
72
99
  abilities(): void;
73
100
  }
74
101
  //# sourceMappingURL=base-resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE,+EAA+E;IAC/E,mBADW,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAC9C;IAc7B;;OAEG;IACH,qBAFa,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAI5E;IAjBD;;;;;OAKG;IACH,0CAJG;QAA8C,OAAO;QAClB,OAAO;QACP,MAAM;KAC3C,EAKA;IAHC,oDAAsB;IACtB,6BAAsB;IACtB,4BAAoB;IAUtB;;;;OAIG;IACH,aAJW,MAAM,GAAG,MAAM,EAAE,eACjB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,wCAAwC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAChT,IAAI,CAKhB;IAED;;;;OAIG;IACH,gBAJW,MAAM,GAAG,MAAM,EAAE,eACjB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,wCAAwC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAChT,IAAI,CAKhB;IAED;;OAEG;IACH,mBAFa,OAAO,cAAc,EAAE,OAAO,CAQ1C;IAED;;OAEG;IACH,sBAFa,cAAc,6BAA6B,EAAE,OAAO,CAUhE;IAED;;;;;OAKG;IACH,8DAJG;QAAsB,UAAU,EAAxB,OAAO;QACgB,UAAU,EAAjC,KAAK,GAAG,QAAQ;KACxB,GAAU,IAAI,CAMhB;IAED,wDAAwD;IACxD,cADc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGhC;IAED,uDAAuD;IACvD,aADc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGhC;IAED,kDAAkD;IAClD,eADc,GAAG,CAGhB;IAED,uKAAuK;IACvK,WADc,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,CAG1I;IAED,wEAAwE;IACxE,UADc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAG5C;IAED,qEAAqE;IACrE,aADc,IAAI,CAGjB;CACF"}
1
+ {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE;;iFAE6E;IAC7E,mBADS,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAC5C;IAe7B;;;OAGG;IACH,qBAFa,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAI5E;IAnBD;;;;;;OAMG;IACH,0CAJG;QAA8C,OAAO;QACpB,OAAO;QACP,MAAM;KACzC,EAKA;IAHC,oDAAsB;IACtB,6BAAsB;IACtB,4BAAoB;IAWtB;;;;;OAKG;IACH,aAJW,MAAM,GAAG,MAAM,EAAE,eACjB,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,EAAE,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,CAAC,GAC1S,IAAI,CAKhB;IAED;;;;;OAKG;IACH,gBAJW,MAAM,GAAG,MAAM,EAAE,eACjB,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,EAAE,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,cAAc,6BAA6B,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,GAAG,OAAO,wCAAwC,EAAE,OAAO,CAAC,OAAC,CAAC,CAAC,GAC1S,IAAI,CAKhB;IAED;;;OAGG;IACH,mBAFa,OAAO,cAAc,EAAE,OAAO,CAQ1C;IAED;;;OAGG;IACH,sBAFa,cAAc,6BAA6B,EAAE,OAAO,CAYhE;IAED;;;;;;OAMG;IACH,8DAJG;QAAgB,UAAU,EAAlB,OAAC;QACsB,UAAU,EAAjC,KAAK,GAAG,QAAQ;KACxB,GAAU,IAAI,CAMhB;IAED;;;OAGG;IACH,cAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAI7B;IAED;;;OAGG;IACH,aAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAI7B;IAED;;;OAGG;IACH,eAFa,OAAC,CAIb;IAED;;;OAGG;IACH,WAFa,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,CAIzI;IAED;;;OAGG;IACH,UAFa,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,SAAS,CAIzC;IAED;;;OAGG;IACH,aAFa,IAAI,CAIhB;CACF"}
@@ -1,13 +1,16 @@
1
1
  // @ts-check
2
2
  /** Base class for authorization resources defining abilities for a model. */
3
3
  export default class AuthorizationBaseResource {
4
- /** @type {typeof import("../database/record/index.js").default | undefined} */
4
+ /**
5
+ * Model class.
6
+ @type {typeof import("../database/record/index.js").default | undefined} */
5
7
  static ModelClass = undefined;
6
8
  /**
9
+ * Runs constructor.
7
10
  * @param {object} args - Resource args.
8
11
  * @param {import("./ability.js").default} [args.ability] - Ability instance.
9
- * @param {Record<string, any>} [args.context] - Ability context.
10
- * @param {Record<string, any>} [args.locals] - Ability locals.
12
+ * @param {Record<string, ?>} [args.context] - Ability context.
13
+ * @param {Record<string, ?>} [args.locals] - Ability locals.
11
14
  */
12
15
  constructor({ ability, context = {}, locals = {} }) {
13
16
  this.ability = ability;
@@ -15,14 +18,16 @@ export default class AuthorizationBaseResource {
15
18
  this.locals = locals;
16
19
  }
17
20
  /**
21
+ * Runs model class.
18
22
  * @returns {typeof import("../database/record/index.js").default | undefined} - Model class handled by this resource.
19
23
  */
20
24
  static modelClass() {
21
25
  return this.ModelClass;
22
26
  }
23
27
  /**
28
+ * Runs can.
24
29
  * @param {string | string[]} actions - Ability action(s).
25
- * @param {Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<any>)} [conditions] - Conditions.
30
+ * @param {Record<string, ?> | string | ((query: import("../database/query/model-class-query.js").default<?>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<?>)} [conditions] - Conditions.
26
31
  * @returns {void} - No return value.
27
32
  */
28
33
  can(actions, conditions) {
@@ -30,8 +35,9 @@ export default class AuthorizationBaseResource {
30
35
  this.requiredAbility().can(actions, this.requiredModelClass(), conditions);
31
36
  }
32
37
  /**
38
+ * Runs cannot.
33
39
  * @param {string | string[]} actions - Ability action(s).
34
- * @param {Record<string, any> | string | ((query: import("../database/query/model-class-query.js").default<any>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<any>)} [conditions] - Conditions.
40
+ * @param {Record<string, ?> | string | ((query: import("../database/query/model-class-query.js").default<?>, args: {ability: import("./ability.js").default, action: string, modelClass: typeof import("../database/record/index.js").default}) => void | import("../database/query/model-class-query.js").default<?>)} [conditions] - Conditions.
35
41
  * @returns {void} - No return value.
36
42
  */
37
43
  cannot(actions, conditions) {
@@ -39,6 +45,7 @@ export default class AuthorizationBaseResource {
39
45
  this.requiredAbility().cannot(actions, this.requiredModelClass(), conditions);
40
46
  }
41
47
  /**
48
+ * Runs required ability.
42
49
  * @returns {import("./ability.js").default} - Ability instance.
43
50
  */
44
51
  requiredAbility() {
@@ -48,18 +55,22 @@ export default class AuthorizationBaseResource {
48
55
  return this.ability;
49
56
  }
50
57
  /**
58
+ * Runs required model class.
51
59
  * @returns {typeof import("../database/record/index.js").default} - Model class handled by this resource.
52
60
  */
53
61
  requiredModelClass() {
54
- const modelClass = /** @type {typeof AuthorizationBaseResource} */ (this.constructor).modelClass();
62
+ const modelClass = /**
63
+ * Narrows the runtime value to the documented type.
64
+ @type {typeof AuthorizationBaseResource} */ (this.constructor).modelClass();
55
65
  if (!modelClass) {
56
66
  throw new Error(`${this.constructor.name} must define static ModelClass before calling ability helpers.`);
57
67
  }
58
68
  return modelClass;
59
69
  }
60
70
  /**
71
+ * Runs assert resource conditions signature.
61
72
  * @param {object} args - Signature args.
62
- * @param {unknown} args.conditions - Conditions value.
73
+ * @param {?} args.conditions - Conditions value.
63
74
  * @param {"can" | "cannot"} args.methodName - Method name.
64
75
  * @returns {void}
65
76
  */
@@ -68,29 +79,47 @@ export default class AuthorizationBaseResource {
68
79
  throw new Error(`${this.constructor.name}.${methodName}(...) no longer accepts a model class. Define static ModelClass and pass only conditions.`);
69
80
  }
70
81
  }
71
- /** @returns {Record<string, any>} - Ability context. */
82
+ /**
83
+ * Runs get context.
84
+ * @returns {Record<string, ?>} - Ability context.
85
+ */
72
86
  getContext() {
73
87
  return this.context;
74
88
  }
75
- /** @returns {Record<string, any>} - Ability locals. */
89
+ /**
90
+ * Runs get locals.
91
+ * @returns {Record<string, ?>} - Ability locals.
92
+ */
76
93
  getLocals() {
77
94
  return this.locals;
78
95
  }
79
- /** @returns {any} - Current user from context. */
96
+ /**
97
+ * Runs current user.
98
+ * @returns {?} - Current user from context.
99
+ */
80
100
  currentUser() {
81
101
  return this.context.currentUser;
82
102
  }
83
- /** @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context. */
103
+ /**
104
+ * Runs request.
105
+ * @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context.
106
+ */
84
107
  request() {
85
108
  return this.context.request;
86
109
  }
87
- /** @returns {Record<string, any> | undefined} - Params from context. */
110
+ /**
111
+ * Runs params.
112
+ * @returns {Record<string, ?> | undefined} - Params from context.
113
+ */
88
114
  params() {
89
115
  return this.context.params;
90
116
  }
91
- /** @returns {void} - Implement in subclasses to define abilities. */
117
+ /**
118
+ * Runs abilities.
119
+ * @returns {void} - Implement in subclasses to define abilities.
120
+ */
92
121
  abilities() {
93
122
  // No-op by default.
94
123
  }
95
124
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1QywrRUFBK0U7SUFDL0UsTUFBTSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7SUFFN0I7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVTtRQUNyQixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVU7UUFDeEIsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFBO1FBQzFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksMERBQTBELENBQUMsQ0FBQTtRQUNyRyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNoQixNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVsRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnRUFBZ0UsQ0FBQyxDQUFBO1FBQzNHLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQ0FBaUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUM7UUFDeEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLElBQUksWUFBWSxJQUFJLFVBQVUsSUFBSSxXQUFXLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFVBQVUsMkZBQTJGLENBQUMsQ0FBQTtRQUNwSixDQUFDO0lBQ0gsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUNwQixDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBQ2pDLENBQUM7SUFFRCx1S0FBdUs7SUFDdkssT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDN0IsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQTtJQUM1QixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLFNBQVM7UUFDUCxvQkFBb0I7SUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQmFzZSBjbGFzcyBmb3IgYXV0aG9yaXphdGlvbiByZXNvdXJjZXMgZGVmaW5pbmcgYWJpbGl0aWVzIGZvciBhIG1vZGVsLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZSB7XG4gIC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqL1xuICBzdGF0aWMgTW9kZWxDbGFzcyA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlc291cmNlIGFyZ3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHR9IFthcmdzLmFiaWxpdHldIC0gQWJpbGl0eSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5jb250ZXh0XSAtIEFiaWxpdHkgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbYXJncy5sb2NhbHNdIC0gQWJpbGl0eSBsb2NhbHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7YWJpbGl0eSwgY29udGV4dCA9IHt9LCBsb2NhbHMgPSB7fX0pIHtcbiAgICB0aGlzLmFiaWxpdHkgPSBhYmlsaXR5XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dFxuICAgIHRoaXMubG9jYWxzID0gbG9jYWxzXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gLSBNb2RlbCBjbGFzcyBoYW5kbGVkIGJ5IHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICBzdGF0aWMgbW9kZWxDbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5Nb2RlbENsYXNzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFiaWxpdHkgYWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT4gfCBzdHJpbmcgfCAoKHF1ZXJ5OiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PGFueT4sIGFyZ3M6IHthYmlsaXR5OiBpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuZGVmYXVsdCwgYWN0aW9uOiBzdHJpbmcsIG1vZGVsQ2xhc3M6IHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0pID0+IHZvaWQgfCBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PGFueT4pfSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW4oYWN0aW9ucywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lOiBcImNhblwifSlcbiAgICB0aGlzLnJlcXVpcmVkQWJpbGl0eSgpLmNhbihhY3Rpb25zLCB0aGlzLnJlcXVpcmVkTW9kZWxDbGFzcygpLCBjb25kaXRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFjdGlvbnMgLSBBYmlsaXR5IGFjdGlvbihzKS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgc3RyaW5nIHwgKChxdWVyeTogaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+LCBhcmdzOiB7YWJpbGl0eTogaW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHQsIGFjdGlvbjogc3RyaW5nLCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA9PiB2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxhbnk+KX0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2Fubm90KGFjdGlvbnMsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFzc2VydFJlc291cmNlQ29uZGl0aW9uc1NpZ25hdHVyZSh7Y29uZGl0aW9ucywgbWV0aG9kTmFtZTogXCJjYW5ub3RcIn0pXG4gICAgdGhpcy5yZXF1aXJlZEFiaWxpdHkoKS5jYW5ub3QoYWN0aW9ucywgdGhpcy5yZXF1aXJlZE1vZGVsQ2xhc3MoKSwgY29uZGl0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHR9IC0gQWJpbGl0eSBpbnN0YW5jZS5cbiAgICovXG4gIHJlcXVpcmVkQWJpbGl0eSgpIHtcbiAgICBpZiAoIXRoaXMuYWJpbGl0eSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gcmVxdWlyZXMgYW4gYWJpbGl0eSBpbnN0YW5jZSBiZWZvcmUgZGVmaW5pbmcgYWJpbGl0aWVzLmApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWJpbGl0eVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IC0gTW9kZWwgY2xhc3MgaGFuZGxlZCBieSB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgcmVxdWlyZWRNb2RlbENsYXNzKCkge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBBdXRob3JpemF0aW9uQmFzZVJlc291cmNlfSAqLyAodGhpcy5jb25zdHJ1Y3RvcikubW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IG11c3QgZGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzIGJlZm9yZSBjYWxsaW5nIGFiaWxpdHkgaGVscGVycy5gKVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbENsYXNzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBTaWduYXR1cmUgYXJncy5cbiAgICogQHBhcmFtIHt1bmtub3dufSBhcmdzLmNvbmRpdGlvbnMgLSBDb25kaXRpb25zIHZhbHVlLlxuICAgKiBAcGFyYW0ge1wiY2FuXCIgfCBcImNhbm5vdFwifSBhcmdzLm1ldGhvZE5hbWUgLSBNZXRob2QgbmFtZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBhc3NlcnRSZXNvdXJjZUNvbmRpdGlvbnNTaWduYXR1cmUoe2NvbmRpdGlvbnMsIG1ldGhvZE5hbWV9KSB7XG4gICAgaWYgKHR5cGVvZiBjb25kaXRpb25zID09PSBcImZ1bmN0aW9uXCIgJiYgXCJwcmltYXJ5S2V5XCIgaW4gY29uZGl0aW9ucyAmJiBcIl9uZXdRdWVyeVwiIGluIGNvbmRpdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LiR7bWV0aG9kTmFtZX0oLi4uKSBubyBsb25nZXIgYWNjZXB0cyBhIG1vZGVsIGNsYXNzLiBEZWZpbmUgc3RhdGljIE1vZGVsQ2xhc3MgYW5kIHBhc3Mgb25seSBjb25kaXRpb25zLmApXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAtIEFiaWxpdHkgY29udGV4dC4gKi9cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0XG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IC0gQWJpbGl0eSBsb2NhbHMuICovXG4gIGdldExvY2FscygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbHNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7YW55fSAtIEN1cnJlbnQgdXNlciBmcm9tIGNvbnRleHQuICovXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQuY3VycmVudFVzZXJcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAtIFJlcXVlc3QgZnJvbSBjb250ZXh0LiAqL1xuICByZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVxdWVzdFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkfSAtIFBhcmFtcyBmcm9tIGNvbnRleHQuICovXG4gIHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnBhcmFtc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAtIEltcGxlbWVudCBpbiBzdWJjbGFzc2VzIHRvIGRlZmluZSBhYmlsaXRpZXMuICovXG4gIGFiaWxpdGllcygpIHtcbiAgICAvLyBOby1vcCBieSBkZWZhdWx0LlxuICB9XG59XG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7aUZBRTZFO0lBQzdFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRTdCOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVU7UUFDckIsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVTtRQUN4QixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksMERBQTBELENBQUMsQ0FBQTtRQUNyRyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxVQUFVLEdBQUc7O3dFQUU2QyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRWhHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdFQUFnRSxDQUFDLENBQUE7UUFDM0csQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFBO0lBQ25CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxpQ0FBaUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUM7UUFDeEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLElBQUksWUFBWSxJQUFJLFVBQVUsSUFBSSxXQUFXLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFVBQVUsMkZBQTJGLENBQUMsQ0FBQTtRQUNwSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQTtJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxvQkFBb0I7SUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKiogQmFzZSBjbGFzcyBmb3IgYXV0aG9yaXphdGlvbiByZXNvdXJjZXMgZGVmaW5pbmcgYWJpbGl0aWVzIGZvciBhIG1vZGVsLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBNb2RlbCBjbGFzcy5cbiAgICBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqL1xuICBzdGF0aWMgTW9kZWxDbGFzcyA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlc291cmNlIGFyZ3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHR9IFthcmdzLmFiaWxpdHldIC0gQWJpbGl0eSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gW2FyZ3MuY29udGV4dF0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz59IFthcmdzLmxvY2Fsc10gLSBBYmlsaXR5IGxvY2Fscy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHthYmlsaXR5LCBjb250ZXh0ID0ge30sIGxvY2FscyA9IHt9fSkge1xuICAgIHRoaXMuYWJpbGl0eSA9IGFiaWxpdHlcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gICAgdGhpcy5sb2NhbHMgPSBsb2NhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAtIE1vZGVsIGNsYXNzIGhhbmRsZWQgYnkgdGhpcyByZXNvdXJjZS5cbiAgICovXG4gIHN0YXRpYyBtb2RlbENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLk1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNhbi5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFiaWxpdHkgYWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+IHwgc3RyaW5nIHwgKChxdWVyeTogaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/PiwgYXJnczoge2FiaWxpdHk6IGltcG9ydChcIi4vYWJpbGl0eS5qc1wiKS5kZWZhdWx0LCBhY3Rpb246IHN0cmluZywgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSkgPT4gdm9pZCB8IGltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8Pz4pfSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW4oYWN0aW9ucywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lOiBcImNhblwifSlcbiAgICB0aGlzLnJlcXVpcmVkQWJpbGl0eSgpLmNhbihhY3Rpb25zLCB0aGlzLnJlcXVpcmVkTW9kZWxDbGFzcygpLCBjb25kaXRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2Fubm90LlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWJpbGl0eSBhY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz4gfCBzdHJpbmcgfCAoKHF1ZXJ5OiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PD8+LCBhcmdzOiB7YWJpbGl0eTogaW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHQsIGFjdGlvbjogc3RyaW5nLCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA9PiB2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDw/Pil9IFtjb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGNhbm5vdChhY3Rpb25zLCBjb25kaXRpb25zKSB7XG4gICAgdGhpcy5hc3NlcnRSZXNvdXJjZUNvbmRpdGlvbnNTaWduYXR1cmUoe2NvbmRpdGlvbnMsIG1ldGhvZE5hbWU6IFwiY2Fubm90XCJ9KVxuICAgIHRoaXMucmVxdWlyZWRBYmlsaXR5KCkuY2Fubm90KGFjdGlvbnMsIHRoaXMucmVxdWlyZWRNb2RlbENsYXNzKCksIGNvbmRpdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogUnVucyByZXF1aXJlZCBhYmlsaXR5LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLmRlZmF1bHR9IC0gQWJpbGl0eSBpbnN0YW5jZS5cbiAgICovXG4gIHJlcXVpcmVkQWJpbGl0eSgpIHtcbiAgICBpZiAoIXRoaXMuYWJpbGl0eSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gcmVxdWlyZXMgYW4gYWJpbGl0eSBpbnN0YW5jZSBiZWZvcmUgZGVmaW5pbmcgYWJpbGl0aWVzLmApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWJpbGl0eVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVxdWlyZWQgbW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IC0gTW9kZWwgY2xhc3MgaGFuZGxlZCBieSB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgcmVxdWlyZWRNb2RlbENsYXNzKCkge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgIEB0eXBlIHt0eXBlb2YgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZX0gKi8gKHRoaXMuY29uc3RydWN0b3IpLm1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBtdXN0IGRlZmluZSBzdGF0aWMgTW9kZWxDbGFzcyBiZWZvcmUgY2FsbGluZyBhYmlsaXR5IGhlbHBlcnMuYClcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYXNzZXJ0IHJlc291cmNlIGNvbmRpdGlvbnMgc2lnbmF0dXJlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFNpZ25hdHVyZSBhcmdzLlxuICAgKiBAcGFyYW0gez99IGFyZ3MuY29uZGl0aW9ucyAtIENvbmRpdGlvbnMgdmFsdWUuXG4gICAqIEBwYXJhbSB7XCJjYW5cIiB8IFwiY2Fubm90XCJ9IGFyZ3MubWV0aG9kTmFtZSAtIE1ldGhvZCBuYW1lLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGFzc2VydFJlc291cmNlQ29uZGl0aW9uc1NpZ25hdHVyZSh7Y29uZGl0aW9ucywgbWV0aG9kTmFtZX0pIHtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbnMgPT09IFwiZnVuY3Rpb25cIiAmJiBcInByaW1hcnlLZXlcIiBpbiBjb25kaXRpb25zICYmIFwiX25ld1F1ZXJ5XCIgaW4gY29uZGl0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0uJHttZXRob2ROYW1lfSguLi4pIG5vIGxvbmdlciBhY2NlcHRzIGEgbW9kZWwgY2xhc3MuIERlZmluZSBzdGF0aWMgTW9kZWxDbGFzcyBhbmQgcGFzcyBvbmx5IGNvbmRpdGlvbnMuYClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgY29udGV4dC5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIEFiaWxpdHkgY29udGV4dC5cbiAgICovXG4gIGdldENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGxvY2Fscy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKi9cbiAgZ2V0TG9jYWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyB7P30gLSBDdXJyZW50IHVzZXIgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgY3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5jdXJyZW50VXNlclxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVxdWVzdC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gLSBSZXF1ZXN0IGZyb20gY29udGV4dC5cbiAgICovXG4gIHJlcXVlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogUnVucyBwYXJhbXMuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCA/PiB8IHVuZGVmaW5lZH0gLSBQYXJhbXMgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucGFyYW1zXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhYmlsaXRpZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIEltcGxlbWVudCBpbiBzdWJjbGFzc2VzIHRvIGRlZmluZSBhYmlsaXRpZXMuXG4gICAqL1xuICBhYmlsaXRpZXMoKSB7XG4gICAgLy8gTm8tb3AgYnkgZGVmYXVsdC5cbiAgfVxufVxuIl19