@antelopejs/interface-dms 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +2 -2
  3. package/dist/attachments.d.ts +19 -10
  4. package/dist/attachments.js +15 -0
  5. package/dist/attachments.js.map +1 -1
  6. package/dist/auth/db/internal/sessions.model.d.ts +9 -0
  7. package/dist/auth/db/internal/sessions.model.js +31 -0
  8. package/dist/auth/db/internal/sessions.model.js.map +1 -0
  9. package/dist/auth/db/models/sessions.model.d.ts +16 -2
  10. package/dist/auth/db/models/sessions.model.js +33 -41
  11. package/dist/auth/db/models/sessions.model.js.map +1 -1
  12. package/dist/auth/db/models/userExternalIdentities.model.d.ts +11 -0
  13. package/dist/auth/db/models/userExternalIdentities.model.js +11 -0
  14. package/dist/auth/db/models/userExternalIdentities.model.js.map +1 -1
  15. package/dist/auth/db/models/users.model.d.ts +13 -0
  16. package/dist/auth/db/models/users.model.js +13 -0
  17. package/dist/auth/db/models/users.model.js.map +1 -1
  18. package/dist/auth/db/tables/sessions.table.d.ts +6 -1
  19. package/dist/auth/db/tables/sessions.table.js +0 -4
  20. package/dist/auth/db/tables/sessions.table.js.map +1 -1
  21. package/dist/auth/db/tables/userExternalIdentities.table.d.ts +24 -0
  22. package/dist/auth/db/tables/userExternalIdentities.table.js +13 -0
  23. package/dist/auth/db/tables/userExternalIdentities.table.js.map +1 -1
  24. package/dist/auth/db/tables/users.table.d.ts +60 -0
  25. package/dist/auth/db/tables/users.table.js +32 -0
  26. package/dist/auth/db/tables/users.table.js.map +1 -1
  27. package/dist/auth/index.d.ts +114 -10
  28. package/dist/auth/index.js +110 -17
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/auth/internal/request-authenticators.d.ts +6 -0
  31. package/dist/auth/internal/request-authenticators.js +82 -0
  32. package/dist/auth/internal/request-authenticators.js.map +1 -0
  33. package/dist/auth/internal/request-principal.d.ts +10 -0
  34. package/dist/auth/internal/request-principal.js +27 -0
  35. package/dist/auth/internal/request-principal.js.map +1 -0
  36. package/dist/auth/internal/user-agent.d.ts +10 -0
  37. package/dist/auth/internal/user-agent.js +3 -0
  38. package/dist/auth/internal/user-agent.js.map +1 -0
  39. package/dist/auth/password.d.ts +19 -0
  40. package/dist/auth/password.js +23 -0
  41. package/dist/auth/password.js.map +1 -1
  42. package/dist/auth/request-authenticators.d.ts +4 -3
  43. package/dist/auth/request-authenticators.js +0 -77
  44. package/dist/auth/request-authenticators.js.map +1 -1
  45. package/dist/base/activity-feed.d.ts +210 -0
  46. package/dist/base/activity-feed.js +104 -0
  47. package/dist/base/activity-feed.js.map +1 -0
  48. package/dist/base/banner.d.ts +111 -0
  49. package/dist/base/banner.js +93 -0
  50. package/dist/base/banner.js.map +1 -0
  51. package/dist/base/block-registry/helpers.d.ts +26 -0
  52. package/dist/base/block-registry/helpers.js +27 -1
  53. package/dist/base/block-registry/helpers.js.map +1 -1
  54. package/dist/base/block-registry/internal/describe.d.ts +35 -0
  55. package/dist/base/block-registry/{describe.js → internal/describe.js} +50 -0
  56. package/dist/base/block-registry/internal/describe.js.map +1 -0
  57. package/dist/base/block-registry/internal/ui.d.ts +23 -0
  58. package/dist/base/block-registry/internal/ui.js +35 -0
  59. package/dist/base/block-registry/internal/ui.js.map +1 -0
  60. package/dist/base/block-registry/registry.d.ts +24 -0
  61. package/dist/base/block-registry/registry.js +30 -1
  62. package/dist/base/block-registry/registry.js.map +1 -1
  63. package/dist/base/block-registry/types.d.ts +149 -0
  64. package/dist/base/block-types.d.ts +22 -2
  65. package/dist/base/block-types.js +24 -2
  66. package/dist/base/block-types.js.map +1 -1
  67. package/dist/base/card.d.ts +100 -0
  68. package/dist/base/card.js +91 -0
  69. package/dist/base/card.js.map +1 -0
  70. package/dist/base/chart-card.d.ts +9 -2
  71. package/dist/base/chart-card.js +14 -1
  72. package/dist/base/chart-card.js.map +1 -1
  73. package/dist/base/chart-schemas.d.ts +127 -115
  74. package/dist/base/chart-schemas.js +18 -56
  75. package/dist/base/chart-schemas.js.map +1 -1
  76. package/dist/base/chart-type.d.ts +15 -0
  77. package/dist/base/chart-type.js +20 -0
  78. package/dist/base/chart-type.js.map +1 -0
  79. package/dist/base/chart.d.ts +31 -22
  80. package/dist/base/chart.js +27 -54
  81. package/dist/base/chart.js.map +1 -1
  82. package/dist/base/confirm-dialog.d.ts +6 -0
  83. package/dist/base/confirm-dialog.js +18 -0
  84. package/dist/base/confirm-dialog.js.map +1 -0
  85. package/dist/base/data-sources.d.ts +38 -0
  86. package/dist/base/data-sources.js +13 -0
  87. package/dist/base/data-sources.js.map +1 -1
  88. package/dist/base/data-types/compare-types.d.ts +0 -2
  89. package/dist/base/data-types/compare-types.js +18 -13
  90. package/dist/base/data-types/compare-types.js.map +1 -1
  91. package/dist/base/data-types/core.d.ts +55 -0
  92. package/dist/base/data-types/core.js +42 -0
  93. package/dist/base/data-types/core.js.map +1 -1
  94. package/dist/base/data-types/default-types.d.ts +241 -62
  95. package/dist/base/data-types/default-types.js +257 -135
  96. package/dist/base/data-types/default-types.js.map +1 -1
  97. package/dist/base/data-types/field-types.d.ts +164 -0
  98. package/dist/base/data-types/field-types.js +236 -0
  99. package/dist/base/data-types/field-types.js.map +1 -0
  100. package/dist/base/data-types/index.d.ts +1 -0
  101. package/dist/base/data-types/index.js +21 -0
  102. package/dist/base/data-types/index.js.map +1 -1
  103. package/dist/base/data-types/internal/compare-types.d.ts +3 -0
  104. package/dist/base/data-types/internal/compare-types.js +15 -0
  105. package/dist/base/data-types/internal/compare-types.js.map +1 -0
  106. package/dist/base/data-types/status-type.d.ts +2 -1
  107. package/dist/base/data-types/status-type.js +6 -0
  108. package/dist/base/data-types/status-type.js.map +1 -1
  109. package/dist/base/display.d.ts +124 -0
  110. package/dist/base/display.js +95 -0
  111. package/dist/base/display.js.map +1 -0
  112. package/dist/base/empty-state.d.ts +106 -0
  113. package/dist/base/empty-state.js +109 -0
  114. package/dist/base/empty-state.js.map +1 -0
  115. package/dist/base/export-jobs.d.ts +39 -1
  116. package/dist/base/export-jobs.js +12 -3
  117. package/dist/base/export-jobs.js.map +1 -1
  118. package/dist/base/form-block-schema.d.ts +345 -28
  119. package/dist/base/form-block-schema.js +83 -12
  120. package/dist/base/form-block-schema.js.map +1 -1
  121. package/dist/base/form-schema.d.ts +137 -22
  122. package/dist/base/form-schema.js +139 -42
  123. package/dist/base/form-schema.js.map +1 -1
  124. package/dist/base/form-types.d.ts +139 -4
  125. package/dist/base/form-types.js +7 -1
  126. package/dist/base/form-types.js.map +1 -1
  127. package/dist/base/form.js +7 -0
  128. package/dist/base/form.js.map +1 -1
  129. package/dist/base/grid.d.ts +57 -0
  130. package/dist/base/grid.js +43 -0
  131. package/dist/base/grid.js.map +1 -1
  132. package/dist/base/helpers/file-refs.js +5 -1
  133. package/dist/base/helpers/file-refs.js.map +1 -1
  134. package/dist/base/index.d.ts +11 -1
  135. package/dist/base/index.js +16 -1
  136. package/dist/base/index.js.map +1 -1
  137. package/dist/base/internal/button-availability.d.ts +17 -0
  138. package/dist/base/internal/button-availability.js +31 -0
  139. package/dist/base/internal/button-availability.js.map +1 -0
  140. package/dist/base/internal/chart-schemas.d.ts +6 -0
  141. package/dist/base/internal/chart-schemas.js +70 -0
  142. package/dist/base/internal/chart-schemas.js.map +1 -0
  143. package/dist/base/internal/chart.d.ts +22 -0
  144. package/dist/base/internal/chart.js +37 -0
  145. package/dist/base/internal/chart.js.map +1 -0
  146. package/dist/base/internal/confirm-dialog.d.ts +13 -0
  147. package/dist/base/internal/confirm-dialog.js +24 -0
  148. package/dist/base/internal/confirm-dialog.js.map +1 -0
  149. package/dist/base/internal/display.d.ts +13 -0
  150. package/dist/base/internal/display.js +18 -0
  151. package/dist/base/internal/display.js.map +1 -0
  152. package/dist/base/internal/export-jobs.d.ts +2 -0
  153. package/dist/base/internal/export-jobs.js +6 -0
  154. package/dist/base/internal/export-jobs.js.map +1 -0
  155. package/dist/base/internal/form-block-schema.d.ts +6 -0
  156. package/dist/base/internal/form-block-schema.js +10 -0
  157. package/dist/base/internal/form-block-schema.js.map +1 -0
  158. package/dist/base/internal/form-schema.d.ts +7 -0
  159. package/dist/base/internal/form-schema.js +26 -0
  160. package/dist/base/internal/form-schema.js.map +1 -0
  161. package/dist/base/internal/layouts.d.ts +39 -0
  162. package/dist/base/internal/layouts.js +3 -0
  163. package/dist/base/internal/layouts.js.map +1 -0
  164. package/dist/base/internal/query-response.d.ts +24 -0
  165. package/dist/base/internal/query-response.js +47 -0
  166. package/dist/base/internal/query-response.js.map +1 -0
  167. package/dist/base/internal/searchable.d.ts +6 -0
  168. package/dist/base/internal/searchable.js +15 -0
  169. package/dist/base/internal/searchable.js.map +1 -0
  170. package/dist/base/key-value-list.d.ts +160 -0
  171. package/dist/base/key-value-list.js +107 -0
  172. package/dist/base/key-value-list.js.map +1 -0
  173. package/dist/base/kpi-card.d.ts +12 -4
  174. package/dist/base/kpi-card.js +7 -0
  175. package/dist/base/kpi-card.js.map +1 -1
  176. package/dist/base/layouts.d.ts +35 -0
  177. package/dist/base/layouts.js +41 -7
  178. package/dist/base/layouts.js.map +1 -1
  179. package/dist/base/meter.d.ts +186 -0
  180. package/dist/base/meter.js +134 -0
  181. package/dist/base/meter.js.map +1 -0
  182. package/dist/base/nav-card-grid.d.ts +173 -0
  183. package/dist/base/nav-card-grid.js +89 -0
  184. package/dist/base/nav-card-grid.js.map +1 -0
  185. package/dist/base/period-selector.d.ts +20 -0
  186. package/dist/base/period-selector.js +23 -0
  187. package/dist/base/period-selector.js.map +1 -1
  188. package/dist/base/placeholder.d.ts +26 -0
  189. package/dist/base/placeholder.js +12 -0
  190. package/dist/base/placeholder.js.map +1 -1
  191. package/dist/base/query-response.d.ts +51 -1
  192. package/dist/base/query-response.js +43 -26
  193. package/dist/base/query-response.js.map +1 -1
  194. package/dist/base/resource-form-schema.d.ts +18 -0
  195. package/dist/base/resource-form-schema.js +20 -3
  196. package/dist/base/resource-form-schema.js.map +1 -1
  197. package/dist/base/searchable.d.ts +2 -0
  198. package/dist/base/searchable.js +4 -0
  199. package/dist/base/searchable.js.map +1 -1
  200. package/dist/base/section.d.ts +105 -0
  201. package/dist/base/section.js +123 -0
  202. package/dist/base/section.js.map +1 -0
  203. package/dist/base/stack.d.ts +113 -0
  204. package/dist/base/stack.js +58 -0
  205. package/dist/base/stack.js.map +1 -1
  206. package/dist/base/stat-group.d.ts +152 -0
  207. package/dist/base/stat-group.js +97 -0
  208. package/dist/base/stat-group.js.map +1 -0
  209. package/dist/base/tab.d.ts +25 -8
  210. package/dist/base/tab.js +11 -0
  211. package/dist/base/tab.js.map +1 -1
  212. package/dist/base/table-view/column-display.d.ts +195 -0
  213. package/dist/base/table-view/column-display.js +131 -0
  214. package/dist/base/table-view/column-display.js.map +1 -0
  215. package/dist/base/table-view/data-functions.d.ts +36 -14
  216. package/dist/base/table-view/data-functions.js +26 -1
  217. package/dist/base/table-view/data-functions.js.map +1 -1
  218. package/dist/base/table-view/factory-helpers.d.ts +0 -42
  219. package/dist/base/table-view/factory-helpers.js +1 -244
  220. package/dist/base/table-view/factory-helpers.js.map +1 -1
  221. package/dist/base/table-view/factory.d.ts +5 -1
  222. package/dist/base/table-view/factory.js +158 -202
  223. package/dist/base/table-view/factory.js.map +1 -1
  224. package/dist/base/table-view/internal/auth.d.ts +33 -0
  225. package/dist/base/table-view/{auth.js → internal/auth.js} +45 -6
  226. package/dist/base/table-view/internal/auth.js.map +1 -0
  227. package/dist/base/table-view/internal/column-display.d.ts +18 -0
  228. package/dist/base/table-view/internal/column-display.js +37 -0
  229. package/dist/base/table-view/internal/column-display.js.map +1 -0
  230. package/dist/base/table-view/internal/data-functions.d.ts +14 -0
  231. package/dist/base/table-view/internal/data-functions.js +3 -0
  232. package/dist/base/table-view/internal/data-functions.js.map +1 -0
  233. package/dist/base/table-view/internal/factory-helpers.d.ts +213 -0
  234. package/dist/base/table-view/internal/factory-helpers.js +477 -0
  235. package/dist/base/table-view/internal/factory-helpers.js.map +1 -0
  236. package/dist/base/table-view/{files.d.ts → internal/files.d.ts} +5 -0
  237. package/dist/base/table-view/{files.js → internal/files.js} +14 -4
  238. package/dist/base/table-view/internal/files.js.map +1 -0
  239. package/dist/base/table-view/internal/footer.d.ts +33 -0
  240. package/dist/base/table-view/internal/footer.js +112 -0
  241. package/dist/base/table-view/internal/footer.js.map +1 -0
  242. package/dist/base/table-view/{guards.d.ts → internal/guards.d.ts} +3 -0
  243. package/dist/base/table-view/internal/guards.js +134 -0
  244. package/dist/base/table-view/internal/guards.js.map +1 -0
  245. package/dist/base/table-view/internal/meta.d.ts +5 -0
  246. package/dist/base/table-view/internal/meta.js +13 -0
  247. package/dist/base/table-view/internal/meta.js.map +1 -0
  248. package/dist/base/table-view/internal/nav-badges.d.ts +9 -0
  249. package/dist/base/table-view/internal/nav-badges.js +79 -0
  250. package/dist/base/table-view/internal/nav-badges.js.map +1 -0
  251. package/dist/base/table-view/internal/options.d.ts +6 -0
  252. package/dist/base/table-view/internal/options.js +10 -0
  253. package/dist/base/table-view/internal/options.js.map +1 -0
  254. package/dist/base/table-view/internal/realtime-listeners.d.ts +4 -0
  255. package/dist/base/table-view/internal/realtime-listeners.js +7 -0
  256. package/dist/base/table-view/internal/realtime-listeners.js.map +1 -0
  257. package/dist/base/table-view/internal/realtime.d.ts +39 -0
  258. package/dist/base/table-view/internal/realtime.js +163 -0
  259. package/dist/base/table-view/internal/realtime.js.map +1 -0
  260. package/dist/base/table-view/internal/request-filter.d.ts +75 -0
  261. package/dist/base/table-view/internal/request-filter.js +154 -0
  262. package/dist/base/table-view/internal/request-filter.js.map +1 -0
  263. package/dist/base/table-view/internal/resource-form.d.ts +25 -0
  264. package/dist/base/table-view/internal/resource-form.js +91 -0
  265. package/dist/base/table-view/internal/resource-form.js.map +1 -0
  266. package/dist/base/table-view/{row-rules.d.ts → internal/row-rules.d.ts} +5 -2
  267. package/dist/base/table-view/{row-rules.js → internal/row-rules.js} +20 -19
  268. package/dist/base/table-view/internal/row-rules.js.map +1 -0
  269. package/dist/base/table-view/internal/tabs.d.ts +39 -0
  270. package/dist/base/table-view/internal/tabs.js +116 -0
  271. package/dist/base/table-view/internal/tabs.js.map +1 -0
  272. package/dist/base/table-view/internal/validation.d.ts +99 -0
  273. package/dist/base/table-view/internal/validation.js +297 -0
  274. package/dist/base/table-view/internal/validation.js.map +1 -0
  275. package/dist/base/table-view/internal/views.d.ts +14 -0
  276. package/dist/base/table-view/internal/views.js +42 -0
  277. package/dist/base/table-view/internal/views.js.map +1 -0
  278. package/dist/base/table-view/internal/writer.d.ts +39 -0
  279. package/dist/base/table-view/internal/writer.js +55 -0
  280. package/dist/base/table-view/internal/writer.js.map +1 -0
  281. package/dist/base/table-view/meta.d.ts +77 -4
  282. package/dist/base/table-view/meta.js +133 -13
  283. package/dist/base/table-view/meta.js.map +1 -1
  284. package/dist/base/table-view/options.d.ts +749 -28
  285. package/dist/base/table-view/options.js +9 -2
  286. package/dist/base/table-view/options.js.map +1 -1
  287. package/dist/base/table-view/realtime.d.ts +26 -17
  288. package/dist/base/table-view/realtime.js +29 -126
  289. package/dist/base/table-view/realtime.js.map +1 -1
  290. package/dist/base/table-view/resource-form.d.ts +11 -5
  291. package/dist/base/table-view/resource-form.js +15 -59
  292. package/dist/base/table-view/resource-form.js.map +1 -1
  293. package/dist/base/table-view/routes.d.ts +29 -0
  294. package/dist/base/table-view/routes.js +71 -6
  295. package/dist/base/table-view/routes.js.map +1 -1
  296. package/dist/base/table-view/schema.d.ts +483 -69
  297. package/dist/base/table-view/schema.js +163 -18
  298. package/dist/base/table-view/schema.js.map +1 -1
  299. package/dist/base/table-view/source.d.ts +62 -0
  300. package/dist/base/table-view/source.js +161 -0
  301. package/dist/base/table-view/source.js.map +1 -0
  302. package/dist/base/table-view/views.d.ts +20 -0
  303. package/dist/base/table-view/views.js +38 -0
  304. package/dist/base/table-view/views.js.map +1 -0
  305. package/dist/base/table-view/writer.d.ts +7 -0
  306. package/dist/base/table-view/writer.js +17 -0
  307. package/dist/base/table-view/writer.js.map +1 -0
  308. package/dist/base/table-view.d.ts +34 -6
  309. package/dist/base/table-view.js +42 -6
  310. package/dist/base/table-view.js.map +1 -1
  311. package/dist/base/tenant-export-archive.d.ts +21 -0
  312. package/dist/base/tenant-export-archive.js +11 -0
  313. package/dist/base/tenant-export-archive.js.map +1 -1
  314. package/dist/base/top-list-card.d.ts +35 -12
  315. package/dist/base/top-list-card.js +24 -0
  316. package/dist/base/top-list-card.js.map +1 -1
  317. package/dist/base/types/action-target.d.ts +36 -20
  318. package/dist/base/types/component-input.d.ts +3 -0
  319. package/dist/base/types/confirm-dialog.d.ts +69 -0
  320. package/dist/base/types/confirm-dialog.js +3 -0
  321. package/dist/base/types/confirm-dialog.js.map +1 -0
  322. package/dist/base/types/custom-button.d.ts +48 -2
  323. package/dist/base/types/enum-option.d.ts +9 -0
  324. package/dist/base/types/error.d.ts +9 -0
  325. package/dist/base/types/error.js +7 -1
  326. package/dist/base/types/error.js.map +1 -1
  327. package/dist/base/types/export-status.d.ts +3 -0
  328. package/dist/base/types/export-status.js +3 -0
  329. package/dist/base/types/export-status.js.map +1 -1
  330. package/dist/base/types/field-config.d.ts +3 -0
  331. package/dist/base/types/form-mode.d.ts +3 -0
  332. package/dist/base/types/form-mode.js +3 -0
  333. package/dist/base/types/form-mode.js.map +1 -1
  334. package/dist/base/types/form-values.d.ts +6 -0
  335. package/dist/base/types/guards.d.ts +37 -7
  336. package/dist/base/types/index.d.ts +2 -0
  337. package/dist/base/types/index.js +2 -0
  338. package/dist/base/types/index.js.map +1 -1
  339. package/dist/base/types/internal/action-target.d.ts +8 -0
  340. package/dist/base/types/internal/action-target.js +16 -0
  341. package/dist/base/types/internal/action-target.js.map +1 -0
  342. package/dist/base/types/json.d.ts +6 -0
  343. package/dist/base/types/orientation.d.ts +3 -0
  344. package/dist/base/types/orientation.js +3 -0
  345. package/dist/base/types/orientation.js.map +1 -1
  346. package/dist/base/types/readonly-behavior.d.ts +9 -0
  347. package/dist/base/types/readonly-behavior.js +3 -0
  348. package/dist/base/types/readonly-behavior.js.map +1 -1
  349. package/dist/base/types/row-action.d.ts +111 -0
  350. package/dist/base/types/size.d.ts +1 -0
  351. package/dist/base/types/size.js +4 -0
  352. package/dist/base/types/size.js.map +1 -1
  353. package/dist/base/types/tone.d.ts +14 -0
  354. package/dist/base/types/tone.js +24 -0
  355. package/dist/base/types/tone.js.map +1 -0
  356. package/dist/client-base-url.d.ts +8 -0
  357. package/dist/client-base-url.js +8 -0
  358. package/dist/client-base-url.js.map +1 -1
  359. package/dist/component-slots.d.ts +17 -2
  360. package/dist/component-slots.js +18 -66
  361. package/dist/component-slots.js.map +1 -1
  362. package/dist/component.d.ts +113 -0
  363. package/dist/component.js +84 -1
  364. package/dist/component.js.map +1 -1
  365. package/dist/data-controllers/members.d.ts +16 -1
  366. package/dist/data-controllers/members.js +87 -26
  367. package/dist/data-controllers/members.js.map +1 -1
  368. package/dist/data-controllers/roles.d.ts +1 -0
  369. package/dist/data-controllers/roles.js +3 -3
  370. package/dist/data-controllers/roles.js.map +1 -1
  371. package/dist/db/{models → internal}/exportJobs.model.d.ts +2 -0
  372. package/dist/db/{models → internal}/exportJobs.model.js +4 -1
  373. package/dist/db/internal/exportJobs.model.js.map +1 -0
  374. package/dist/db/internal/inviteResolutions.model.d.ts +34 -0
  375. package/dist/db/internal/inviteResolutions.model.js +80 -0
  376. package/dist/db/internal/inviteResolutions.model.js.map +1 -0
  377. package/dist/db/internal/table-names.d.ts +4 -0
  378. package/dist/db/internal/table-names.js +8 -0
  379. package/dist/db/internal/table-names.js.map +1 -0
  380. package/dist/db/{models → internal}/tenantLifecycle.model.d.ts +10 -1
  381. package/dist/db/{models → internal}/tenantLifecycle.model.js +10 -1
  382. package/dist/db/internal/tenantLifecycle.model.js.map +1 -0
  383. package/dist/db/{tables → internal}/tenantLifecycle.table.d.ts +6 -0
  384. package/dist/db/{tables → internal}/tenantLifecycle.table.js +6 -0
  385. package/dist/db/internal/tenantLifecycle.table.js.map +1 -0
  386. package/dist/db/models/index.d.ts +0 -2
  387. package/dist/db/models/index.js +0 -2
  388. package/dist/db/models/index.js.map +1 -1
  389. package/dist/db/models/inviteResolutions.model.d.ts +1 -25
  390. package/dist/db/models/inviteResolutions.model.js +0 -68
  391. package/dist/db/models/inviteResolutions.model.js.map +1 -1
  392. package/dist/db/models/roles.model.d.ts +6 -0
  393. package/dist/db/models/roles.model.js +6 -0
  394. package/dist/db/models/roles.model.js.map +1 -1
  395. package/dist/db/models/tenantMembers.model.js +1 -1
  396. package/dist/db/models/tenantMembers.model.js.map +1 -1
  397. package/dist/db/models/user_invites.model.d.ts +24 -0
  398. package/dist/db/models/user_invites.model.js +25 -1
  399. package/dist/db/models/user_invites.model.js.map +1 -1
  400. package/dist/db/tables/exportJobs.table.d.ts +5 -1
  401. package/dist/db/tables/exportJobs.table.js +3 -3
  402. package/dist/db/tables/exportJobs.table.js.map +1 -1
  403. package/dist/db/tables/index.d.ts +0 -1
  404. package/dist/db/tables/index.js +0 -1
  405. package/dist/db/tables/index.js.map +1 -1
  406. package/dist/db/tables/inviteResolutions.table.d.ts +1 -1
  407. package/dist/db/tables/inviteResolutions.table.js +4 -3
  408. package/dist/db/tables/inviteResolutions.table.js.map +1 -1
  409. package/dist/db/tables/roles.table.d.ts +2 -0
  410. package/dist/db/tables/roles.table.js +4 -0
  411. package/dist/db/tables/roles.table.js.map +1 -1
  412. package/dist/db/tables/tenantMembers.table.d.ts +1 -0
  413. package/dist/db/tables/user_invites.table.d.ts +11 -0
  414. package/dist/db/tables/user_invites.table.js +4 -0
  415. package/dist/db/tables/user_invites.table.js.map +1 -1
  416. package/dist/guards.d.ts +36 -0
  417. package/dist/guards.js +30 -1
  418. package/dist/guards.js.map +1 -1
  419. package/dist/hooks.d.ts +133 -1
  420. package/dist/hooks.js +87 -1
  421. package/dist/hooks.js.map +1 -1
  422. package/dist/html-render/index.d.ts +15 -0
  423. package/dist/html-render/index.js +15 -0
  424. package/dist/html-render/index.js.map +1 -1
  425. package/dist/html-render/types.d.ts +4 -0
  426. package/dist/index.d.ts +6 -7
  427. package/dist/index.js +12 -17
  428. package/dist/index.js.map +1 -1
  429. package/dist/internal/attachments.d.ts +16 -0
  430. package/dist/internal/attachments.js +3 -0
  431. package/dist/internal/attachments.js.map +1 -0
  432. package/dist/internal/component-slots.d.ts +27 -0
  433. package/dist/internal/component-slots.js +97 -0
  434. package/dist/internal/component-slots.js.map +1 -0
  435. package/dist/internal/invite-membership.d.ts +8 -0
  436. package/dist/{invite-membership.js → internal/invite-membership.js} +11 -5
  437. package/dist/internal/invite-membership.js.map +1 -0
  438. package/dist/internal/invite-replacement.d.ts +7 -0
  439. package/dist/{invite-replacement.js → internal/invite-replacement.js} +8 -3
  440. package/dist/internal/invite-replacement.js.map +1 -0
  441. package/dist/internal/invite-resolution.d.ts +3 -0
  442. package/dist/internal/invite-resolution.js +50 -0
  443. package/dist/internal/invite-resolution.js.map +1 -0
  444. package/dist/internal/invites.d.ts +31 -0
  445. package/dist/internal/invites.js +44 -0
  446. package/dist/internal/invites.js.map +1 -0
  447. package/dist/internal/permission-gate.d.ts +23 -0
  448. package/dist/internal/permission-gate.js +43 -0
  449. package/dist/internal/permission-gate.js.map +1 -0
  450. package/dist/internal/tenant-access.d.ts +28 -0
  451. package/dist/internal/tenant-access.js +28 -0
  452. package/dist/internal/tenant-access.js.map +1 -0
  453. package/dist/internal/tenant-ownership.d.ts +13 -0
  454. package/dist/internal/tenant-ownership.js +95 -0
  455. package/dist/internal/tenant-ownership.js.map +1 -0
  456. package/dist/internal/uploads.d.ts +19 -0
  457. package/dist/internal/uploads.js +3 -0
  458. package/dist/internal/uploads.js.map +1 -0
  459. package/dist/invite-extensions/availability.d.ts +28 -3
  460. package/dist/invite-extensions/availability.js +26 -23
  461. package/dist/invite-extensions/availability.js.map +1 -1
  462. package/dist/invite-extensions/internal/availability.d.ts +12 -0
  463. package/dist/invite-extensions/internal/availability.js +32 -0
  464. package/dist/invite-extensions/internal/availability.js.map +1 -0
  465. package/dist/invite-extensions/internal/delivery.d.ts +44 -0
  466. package/dist/invite-extensions/{delivery.js → internal/delivery.js} +38 -0
  467. package/dist/invite-extensions/internal/delivery.js.map +1 -0
  468. package/dist/invite-extensions/internal/edit.d.ts +34 -0
  469. package/dist/invite-extensions/{edit.js → internal/edit.js} +33 -0
  470. package/dist/invite-extensions/internal/edit.js.map +1 -0
  471. package/dist/invite-extensions/internal/field-ids.d.ts +21 -0
  472. package/dist/invite-extensions/{field-ids.js → internal/field-ids.js} +13 -0
  473. package/dist/invite-extensions/internal/field-ids.js.map +1 -0
  474. package/dist/invite-extensions/internal/form-slot.d.ts +13 -0
  475. package/dist/invite-extensions/{form-slot.js → internal/form-slot.js} +49 -4
  476. package/dist/invite-extensions/internal/form-slot.js.map +1 -0
  477. package/dist/invite-extensions/internal/payload-slices.d.ts +31 -0
  478. package/dist/invite-extensions/{payload-slices.js → internal/payload-slices.js} +30 -0
  479. package/dist/invite-extensions/internal/payload-slices.js.map +1 -0
  480. package/dist/invite-extensions/internal/registry.d.ts +48 -0
  481. package/dist/invite-extensions/internal/registry.js +77 -0
  482. package/dist/invite-extensions/internal/registry.js.map +1 -0
  483. package/dist/invite-extensions/internal/types.d.ts +61 -0
  484. package/dist/invite-extensions/internal/types.js +3 -0
  485. package/dist/invite-extensions/internal/types.js.map +1 -0
  486. package/dist/invite-extensions/registry.d.ts +44 -12
  487. package/dist/invite-extensions/registry.js +51 -43
  488. package/dist/invite-extensions/registry.js.map +1 -1
  489. package/dist/invite-extensions/types.d.ts +59 -34
  490. package/dist/invite-extensions.d.ts +30 -4
  491. package/dist/invite-extensions.js +57 -7
  492. package/dist/invite-extensions.js.map +1 -1
  493. package/dist/invite-resolution.d.ts +5 -2
  494. package/dist/invite-resolution.js +16 -46
  495. package/dist/invite-resolution.js.map +1 -1
  496. package/dist/invitee-display-name.d.ts +5 -0
  497. package/dist/invitee-display-name.js +15 -0
  498. package/dist/invitee-display-name.js.map +1 -0
  499. package/dist/invites.d.ts +46 -14
  500. package/dist/invites.js +41 -44
  501. package/dist/invites.js.map +1 -1
  502. package/dist/layout-banners.d.ts +68 -0
  503. package/dist/layout-banners.js +18 -0
  504. package/dist/layout-banners.js.map +1 -1
  505. package/dist/notifications/builder.d.ts +3 -1
  506. package/dist/notifications/builder.js +10 -0
  507. package/dist/notifications/builder.js.map +1 -1
  508. package/dist/notifications/index.d.ts +1 -0
  509. package/dist/notifications/index.js +16 -0
  510. package/dist/notifications/index.js.map +1 -1
  511. package/dist/notifications/internal.d.ts +8 -5
  512. package/dist/notifications/internal.js +6 -0
  513. package/dist/notifications/internal.js.map +1 -1
  514. package/dist/notifications/sendable.d.ts +6 -0
  515. package/dist/notifications/sendable.js +13 -4
  516. package/dist/notifications/sendable.js.map +1 -1
  517. package/dist/notifications/types.d.ts +26 -1
  518. package/dist/page/categories.d.ts +19 -17
  519. package/dist/page/categories.js +24 -168
  520. package/dist/page/categories.js.map +1 -1
  521. package/dist/page/component-tree.d.ts +15 -1
  522. package/dist/page/component-tree.js +0 -40
  523. package/dist/page/component-tree.js.map +1 -1
  524. package/dist/page/controllers.d.ts +135 -0
  525. package/dist/page/controllers.js +124 -8
  526. package/dist/page/controllers.js.map +1 -1
  527. package/dist/page/declaration-conflict.d.ts +9 -0
  528. package/dist/page/declaration-conflict.js +17 -0
  529. package/dist/page/declaration-conflict.js.map +1 -0
  530. package/dist/page/form-page-routes.d.ts +7 -10
  531. package/dist/page/form-page-routes.js +14 -31
  532. package/dist/page/form-page-routes.js.map +1 -1
  533. package/dist/page/internal/categories.d.ts +62 -0
  534. package/dist/page/internal/categories.js +260 -0
  535. package/dist/page/internal/categories.js.map +1 -0
  536. package/dist/page/internal/component-target.d.ts +37 -0
  537. package/dist/page/{component-target.js → internal/component-target.js} +27 -2
  538. package/dist/page/internal/component-target.js.map +1 -0
  539. package/dist/page/internal/component-tree.d.ts +13 -0
  540. package/dist/page/internal/component-tree.js +61 -0
  541. package/dist/page/internal/component-tree.js.map +1 -0
  542. package/dist/page/{extension-assembly.d.ts → internal/extension-assembly.d.ts} +5 -2
  543. package/dist/page/{extension-assembly.js → internal/extension-assembly.js} +8 -0
  544. package/dist/page/internal/extension-assembly.js.map +1 -0
  545. package/dist/page/internal/extension-validation.d.ts +24 -0
  546. package/dist/page/{extension-validation.js → internal/extension-validation.js} +8 -0
  547. package/dist/page/internal/extension-validation.js.map +1 -0
  548. package/dist/page/internal/form-page-routes.d.ts +26 -0
  549. package/dist/page/internal/form-page-routes.js +40 -0
  550. package/dist/page/internal/form-page-routes.js.map +1 -0
  551. package/dist/page/internal/layout-filter.d.ts +21 -0
  552. package/dist/page/internal/layout-filter.js +101 -0
  553. package/dist/page/internal/layout-filter.js.map +1 -0
  554. package/dist/page/{metadata-helpers.d.ts → internal/metadata-helpers.d.ts} +4 -1
  555. package/dist/page/{metadata-helpers.js → internal/metadata-helpers.js} +19 -2
  556. package/dist/page/internal/metadata-helpers.js.map +1 -0
  557. package/dist/page/internal/nav-badges.d.ts +17 -0
  558. package/dist/page/internal/nav-badges.js +68 -0
  559. package/dist/page/internal/nav-badges.js.map +1 -0
  560. package/dist/page/internal/page-registration.d.ts +29 -0
  561. package/dist/page/internal/page-registration.js +41 -0
  562. package/dist/page/internal/page-registration.js.map +1 -0
  563. package/dist/page/internal/registry.d.ts +128 -0
  564. package/dist/page/internal/registry.js +225 -0
  565. package/dist/page/internal/registry.js.map +1 -0
  566. package/dist/page/internal/table-view-ids.d.ts +10 -0
  567. package/dist/page/internal/table-view-ids.js +39 -0
  568. package/dist/page/internal/table-view-ids.js.map +1 -0
  569. package/dist/page/internal/types.d.ts +2 -0
  570. package/dist/page/internal/types.js +6 -0
  571. package/dist/page/internal/types.js.map +1 -0
  572. package/dist/page/layout-filter.d.ts +4 -0
  573. package/dist/page/layout-filter.js +11 -0
  574. package/dist/page/layout-filter.js.map +1 -1
  575. package/dist/page/metadata.d.ts +93 -0
  576. package/dist/page/metadata.js +236 -28
  577. package/dist/page/metadata.js.map +1 -1
  578. package/dist/page/registry.d.ts +17 -36
  579. package/dist/page/registry.js +25 -127
  580. package/dist/page/registry.js.map +1 -1
  581. package/dist/page/roots.d.ts +10 -0
  582. package/dist/page/roots.js +27 -6
  583. package/dist/page/roots.js.map +1 -1
  584. package/dist/page/types.d.ts +186 -1
  585. package/dist/page/types.js +1 -2
  586. package/dist/page/types.js.map +1 -1
  587. package/dist/page.d.ts +23 -1
  588. package/dist/page.js +24 -2
  589. package/dist/page.js.map +1 -1
  590. package/dist/permission-gate.d.ts +14 -0
  591. package/dist/permission-gate.js +3 -0
  592. package/dist/permission-gate.js.map +1 -0
  593. package/dist/permissions-resolver.d.ts +24 -0
  594. package/dist/permissions-resolver.js +24 -0
  595. package/dist/permissions-resolver.js.map +1 -1
  596. package/dist/permissions.d.ts +27 -0
  597. package/dist/permissions.js +37 -0
  598. package/dist/permissions.js.map +1 -1
  599. package/dist/quick-actions.d.ts +27 -0
  600. package/dist/quick-actions.js +1 -0
  601. package/dist/quick-actions.js.map +1 -1
  602. package/dist/realtime.d.ts +29 -0
  603. package/dist/realtime.js +30 -0
  604. package/dist/realtime.js.map +1 -1
  605. package/dist/request-tenant.d.ts +17 -0
  606. package/dist/request-tenant.js +18 -1
  607. package/dist/request-tenant.js.map +1 -1
  608. package/dist/tenant-access.d.ts +38 -6
  609. package/dist/tenant-access.js +38 -8
  610. package/dist/tenant-access.js.map +1 -1
  611. package/dist/tenant-export.d.ts +19 -0
  612. package/dist/tenant-lifecycle.d.ts +13 -0
  613. package/dist/tenant-lifecycle.js +22 -1
  614. package/dist/tenant-lifecycle.js.map +1 -1
  615. package/dist/tenant-ownership.d.ts +2 -1
  616. package/dist/tenant-ownership.js +5 -85
  617. package/dist/tenant-ownership.js.map +1 -1
  618. package/dist/tenant-scoped-model.d.ts +8 -0
  619. package/dist/tenant-scoped-model.js +8 -0
  620. package/dist/tenant-scoped-model.js.map +1 -1
  621. package/dist/uploads.d.ts +24 -16
  622. package/dist/uploads.js +24 -0
  623. package/dist/uploads.js.map +1 -1
  624. package/dist/utils/fire-and-forget.d.ts +4 -0
  625. package/dist/utils/fire-and-forget.js +4 -0
  626. package/dist/utils/fire-and-forget.js.map +1 -1
  627. package/dist/utils/internal/owned-registry.d.ts +36 -0
  628. package/dist/utils/internal/owned-registry.js +60 -0
  629. package/dist/utils/internal/owned-registry.js.map +1 -0
  630. package/dist/utils/{row-instance.d.ts → internal/row-instance.d.ts} +1 -0
  631. package/dist/utils/internal/row-instance.js +12 -0
  632. package/dist/utils/internal/row-instance.js.map +1 -0
  633. package/dist/utils/internal/saas-mode.d.ts +8 -0
  634. package/dist/utils/internal/saas-mode.js +3 -0
  635. package/dist/utils/internal/saas-mode.js.map +1 -0
  636. package/dist/utils/{time.d.ts → internal/time.d.ts} +4 -0
  637. package/dist/utils/{time.js → internal/time.js} +4 -0
  638. package/dist/utils/internal/time.js.map +1 -0
  639. package/dist/utils/{type-check.d.ts → internal/type-check.d.ts} +12 -0
  640. package/dist/utils/{type-check.js → internal/type-check.js} +12 -0
  641. package/dist/utils/internal/type-check.js.map +1 -0
  642. package/dist/utils/internal/value-parser.d.ts +86 -0
  643. package/dist/utils/internal/value-parser.js +160 -0
  644. package/dist/utils/internal/value-parser.js.map +1 -0
  645. package/dist/utils/saas-mode.d.ts +25 -3
  646. package/dist/utils/saas-mode.js +24 -0
  647. package/dist/utils/saas-mode.js.map +1 -1
  648. package/package.json +3 -3
  649. package/dist/base/block-registry/describe.d.ts +0 -6
  650. package/dist/base/block-registry/describe.js.map +0 -1
  651. package/dist/base/block-registry/ui.d.ts +0 -5
  652. package/dist/base/block-registry/ui.js +0 -17
  653. package/dist/base/block-registry/ui.js.map +0 -1
  654. package/dist/base/table-view/auth.d.ts +0 -9
  655. package/dist/base/table-view/auth.js.map +0 -1
  656. package/dist/base/table-view/files.js.map +0 -1
  657. package/dist/base/table-view/guards.js +0 -85
  658. package/dist/base/table-view/guards.js.map +0 -1
  659. package/dist/base/table-view/row-rules.js.map +0 -1
  660. package/dist/base/tree.d.ts +0 -115
  661. package/dist/base/tree.js +0 -145
  662. package/dist/base/tree.js.map +0 -1
  663. package/dist/db/models/exportJobs.model.js.map +0 -1
  664. package/dist/db/models/tenantLifecycle.model.js.map +0 -1
  665. package/dist/db/tables/tenantLifecycle.table.js.map +0 -1
  666. package/dist/invite-extensions/delivery.d.ts +0 -5
  667. package/dist/invite-extensions/delivery.js.map +0 -1
  668. package/dist/invite-extensions/edit.d.ts +0 -4
  669. package/dist/invite-extensions/edit.js.map +0 -1
  670. package/dist/invite-extensions/field-ids.d.ts +0 -7
  671. package/dist/invite-extensions/field-ids.js.map +0 -1
  672. package/dist/invite-extensions/form-slot.d.ts +0 -2
  673. package/dist/invite-extensions/form-slot.js.map +0 -1
  674. package/dist/invite-extensions/internal.d.ts +0 -17
  675. package/dist/invite-extensions/internal.js +0 -55
  676. package/dist/invite-extensions/internal.js.map +0 -1
  677. package/dist/invite-extensions/payload-slices.d.ts +0 -8
  678. package/dist/invite-extensions/payload-slices.js.map +0 -1
  679. package/dist/invite-membership.d.ts +0 -3
  680. package/dist/invite-membership.js.map +0 -1
  681. package/dist/invite-replacement.d.ts +0 -2
  682. package/dist/invite-replacement.js.map +0 -1
  683. package/dist/page/component-target.d.ts +0 -10
  684. package/dist/page/component-target.js.map +0 -1
  685. package/dist/page/extension-assembly.js.map +0 -1
  686. package/dist/page/extension-validation.d.ts +0 -7
  687. package/dist/page/extension-validation.js.map +0 -1
  688. package/dist/page/metadata-helpers.js.map +0 -1
  689. package/dist/page/page-registration.d.ts +0 -13
  690. package/dist/page/page-registration.js +0 -22
  691. package/dist/page/page-registration.js.map +0 -1
  692. package/dist/utils/owned-registry.d.ts +0 -10
  693. package/dist/utils/owned-registry.js +0 -34
  694. package/dist/utils/owned-registry.js.map +0 -1
  695. package/dist/utils/row-instance.js +0 -8
  696. package/dist/utils/row-instance.js.map +0 -1
  697. package/dist/utils/time.js.map +0 -1
  698. package/dist/utils/type-check.js.map +0 -1
  699. package/dist/utils/value-parser.d.ts +0 -11
  700. package/dist/utils/value-parser.js +0 -86
  701. package/dist/utils/value-parser.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.4.0
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.6...v0.4.0)
6
+
7
+ ### 🩹 Fixes
8
+
9
+ - **interface-dms:** ⚠️ Release the breaking changes of #119 as 0.4.0 ([#166](https://github.com/AntelopeJS/dms/pull/166), [#119](https://github.com/AntelopeJS/dms/issues/119))
10
+
11
+ #### ⚠️ Breaking Changes
12
+
13
+ - **interface-dms:** ⚠️ Release the breaking changes of #119 as 0.4.0 ([#166](https://github.com/AntelopeJS/dms/pull/166), [#119](https://github.com/AntelopeJS/dms/issues/119))
14
+
15
+ ### ❤️ Contributors
16
+
17
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
18
+
19
+ ## v0.3.6
20
+
21
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.5...v0.3.6)
22
+
23
+ > [!WARNING]
24
+ > 0.3.6 was unpublished from npm: it shipped the breaking changes of [#119](https://github.com/AntelopeJS/dms/pull/119) under a patch version: changelogen 0.5 only reads a breaking change from a `!` in the commit header, not from a `BREAKING CHANGE:` footer. Use 0.4.0.
25
+
26
+ ### 🚀 Enhancements
27
+
28
+ - **dms:** Port the v2 design across the dashboard ([#119](https://github.com/AntelopeJS/dms/pull/119))
29
+
30
+ ### 🩹 Fixes
31
+
32
+ - **layout:** Hold the in-flight modules listing fetch on the DMS app ([#121](https://github.com/AntelopeJS/dms/pull/121))
33
+ - **tab:** Space the blocks of a tab like the page spaces its own ([#98](https://github.com/AntelopeJS/dms/pull/98))
34
+ - **dev-reload:** End the reload streams when the module stops ([#125](https://github.com/AntelopeJS/dms/pull/125))
35
+
36
+ ### 🏡 Chore
37
+
38
+ - **release:** @antelopejs/dms v0.5.4 ([a301255](https://github.com/AntelopeJS/dms/commit/a301255))
39
+ - **release:** @antelopejs/dms v0.5.5 ([2eb0e86](https://github.com/AntelopeJS/dms/commit/2eb0e86))
40
+ - **release:** @antelopejs/dms v0.5.6 ([76d9ee3](https://github.com/AntelopeJS/dms/commit/76d9ee3))
41
+
42
+ ### ❤️ Contributors
43
+
44
+ - Maxime Westhoven ([@mwesto](http://github.com/mwesto))
45
+ - Antony Rizzitelli <rizzitelli.antony@pm.me>
46
+ - Glastis ([@Glastis](http://github.com/Glastis))
47
+ - Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
48
+
3
49
  ## v0.3.5
4
50
 
5
51
  [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.4...v0.3.5)
package/README.md CHANGED
@@ -64,8 +64,8 @@ be used as a key: `RegisteringProxy` looks its entries up by object reference,
64
64
  so unregistering with the view a module holds matches nothing and leaves the
65
65
  registration live -- silently, exactly like a second copy would. `RegisterPage`
66
66
  and `RegisterCategory` resolve their argument through `RegistrationIdentity`
67
- (`page/registry`) for that reason; anything else keyed on a value that crossed
68
- the boundary has to do the same. The same trap catches structural comparisons:
67
+ (`page/internal/registry`) for that reason; anything else keyed on a value
68
+ that crossed the boundary has to do the same. The same trap catches structural comparisons:
69
69
  `isDeepStrictEqual` and `assert.deepStrictEqual` both refuse two views that hold
70
70
  equal values, so compare plain data, field by field or after a JSON round trip.
71
71
 
@@ -1,6 +1,7 @@
1
1
  import type { RequestContext } from "@antelopejs/interface-api";
2
- import type { DataControllerCallback } from "@antelopejs/interface-data-api";
3
2
  import type { FileMetadata, UploadConstraints } from "@antelopejs/interface-file-storage";
3
+ import type { TableViewAttachmentSaveRequest } from "./internal/attachments";
4
+ /** A server-declared file field; ids must match the form's attachmentField. */
4
5
  export interface AttachmentField {
5
6
  id: string;
6
7
  key: string;
@@ -9,10 +10,12 @@ export interface AttachmentField {
9
10
  visibility?: "private" | "public";
10
11
  constraints?: UploadConstraints;
11
12
  }
13
+ /** The actual saved values used to clean removed native files. */
12
14
  export interface AttachmentSaveResult<T> {
13
15
  document: Record<string, unknown>;
14
16
  result: T;
15
17
  }
18
+ /** Context supplied by an authorized server-side write route, never by its client. */
16
19
  export interface AttachmentSaveRequest {
17
20
  context: RequestContext;
18
21
  componentIds: string[];
@@ -20,19 +23,25 @@ export interface AttachmentSaveRequest {
20
23
  submitted: Record<string, unknown>;
21
24
  before: Record<string, unknown>;
22
25
  }
23
- export interface TableViewAttachmentSaveRequest {
24
- controller: unknown;
25
- route: DataControllerCallback;
26
- context: RequestContext;
27
- params: unknown;
28
- args: unknown[];
29
- mode: "save" | "delete";
30
- componentIds: string[];
31
- }
26
+ /** @internal */
32
27
  export declare namespace internal {
33
28
  const SaveTableViewAttachments: (request: TableViewAttachmentSaveRequest) => Promise<unknown>;
34
29
  }
35
30
  type AttachmentSaver = <T>(request: AttachmentSaveRequest, save: (promoted: Record<string, unknown>) => Promise<AttachmentSaveResult<T>>) => Promise<T>;
31
+ /**
32
+ * Validate native-file provenance, promote staging keys, then save once.
33
+ * Call after write authorization with the trusted component identity and fields.
34
+ * Staged retries require trusted provider promotion replay; canonical metadata
35
+ * is validated before save. Failed saves never move or delete promoted objects:
36
+ * another save may reference them. Retained objects keep their declared visibility.
37
+ * Removed files are deleted after successful persistence; cleanup errors are logged.
38
+ * This is not reference-counted cleanup: callers own the risk of shared keys.
39
+ */
36
40
  export declare const SaveComponentFiles: AttachmentSaver;
41
+ /**
42
+ * Resolve prepared metadata for field validators; unknown references return undefined.
43
+ *
44
+ * @internal
45
+ */
37
46
  export declare const GetAttachmentValidationMetadata: (key: string, storage?: string | undefined) => Promise<FileMetadata | undefined>;
38
47
  export {};
@@ -2,10 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetAttachmentValidationMetadata = exports.SaveComponentFiles = exports.internal = void 0;
4
4
  const interface_core_1 = require("@antelopejs/interface-core");
5
+ /** @internal */
5
6
  var internal;
6
7
  (function (internal) {
7
8
  internal.SaveTableViewAttachments = (0, interface_core_1.InterfaceFunction)();
8
9
  })(internal || (exports.internal = internal = {}));
10
+ /**
11
+ * Validate native-file provenance, promote staging keys, then save once.
12
+ * Call after write authorization with the trusted component identity and fields.
13
+ * Staged retries require trusted provider promotion replay; canonical metadata
14
+ * is validated before save. Failed saves never move or delete promoted objects:
15
+ * another save may reference them. Retained objects keep their declared visibility.
16
+ * Removed files are deleted after successful persistence; cleanup errors are logged.
17
+ * This is not reference-counted cleanup: callers own the risk of shared keys.
18
+ */
9
19
  exports.SaveComponentFiles = (0, interface_core_1.InterfaceFunction)();
20
+ /**
21
+ * Resolve prepared metadata for field validators; unknown references return undefined.
22
+ *
23
+ * @internal
24
+ */
10
25
  exports.GetAttachmentValidationMetadata = (0, interface_core_1.InterfaceFunction)();
11
26
  //# sourceMappingURL=attachments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":";;;AACA,+DAA+D;AA4C/D,IAAiB,QAAQ,CAKxB;AALD,WAAiB,QAAQ;IACV,iCAAwB,GACnC,IAAA,kCAAiB,GAEd,CAAC;AACR,CAAC,EALgB,QAAQ,wBAAR,QAAQ,QAKxB;AAgBY,QAAA,kBAAkB,GAC7B,IAAA,kCAAiB,GAAsC,CAAC;AAG7C,QAAA,+BAA+B,GAC1C,IAAA,kCAAiB,GAEd,CAAC"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":";;;AACA,+DAA+D;AAgC/D,gBAAgB;AAChB,IAAiB,QAAQ,CAKxB;AALD,WAAiB,QAAQ;IACV,iCAAwB,GACnC,IAAA,kCAAiB,GAEd,CAAC;AACR,CAAC,EALgB,QAAQ,wBAAR,QAAQ,QAKxB;AAOD;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAC7B,IAAA,kCAAiB,GAAsC,CAAC;AAE1D;;;;GAIG;AACU,QAAA,+BAA+B,GAC1C,IAAA,kCAAiB,GAEd,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Session } from "../tables/sessions.table";
2
+ /** @internal */
3
+ export declare function hashRefreshToken(token: string): string;
4
+ /** @internal */
5
+ export declare function hashesMatch(left: string, right: string): boolean;
6
+ /** @internal */
7
+ export declare const REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15000;
8
+ /** @internal */
9
+ export declare function isImmediateRefreshTokenPredecessor(session: Session, presentedToken: string, now: Date): boolean;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = void 0;
4
+ exports.hashRefreshToken = hashRefreshToken;
5
+ exports.hashesMatch = hashesMatch;
6
+ exports.isImmediateRefreshTokenPredecessor = isImmediateRefreshTokenPredecessor;
7
+ const node_crypto_1 = require("node:crypto");
8
+ /** @internal */
9
+ function hashRefreshToken(token) {
10
+ return (0, node_crypto_1.createHash)("sha256").update(token).digest("hex");
11
+ }
12
+ /** @internal */
13
+ function hashesMatch(left, right) {
14
+ const leftBuffer = Buffer.from(left, "hex");
15
+ const rightBuffer = Buffer.from(right, "hex");
16
+ return (leftBuffer.length === rightBuffer.length &&
17
+ (0, node_crypto_1.timingSafeEqual)(leftBuffer, rightBuffer));
18
+ }
19
+ /** @internal */
20
+ exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15_000;
21
+ /** @internal */
22
+ function isImmediateRefreshTokenPredecessor(session, presentedToken, now) {
23
+ if (!session.previousRefreshTokenHash || !session.refreshTokenRotatedAt) {
24
+ return false;
25
+ }
26
+ const age = now.getTime() - session.refreshTokenRotatedAt.getTime();
27
+ if (Math.abs(age) > exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS)
28
+ return false;
29
+ return hashesMatch(session.previousRefreshTokenHash, hashRefreshToken(presentedToken));
30
+ }
31
+ //# sourceMappingURL=sessions.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/internal/sessions.model.ts"],"names":[],"mappings":";;;AAIA,4CAEC;AAGD,kCAOC;AAMD,gFAcC;AApCD,6CAA0D;AAG1D,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,CACL,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QACxC,IAAA,6BAAe,EAAC,UAAU,EAAE,WAAW,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,gBAAgB;AACH,QAAA,kCAAkC,GAAG,MAAM,CAAC;AAEzD,gBAAgB;AAChB,SAAgB,kCAAkC,CAChD,OAAgB,EAChB,cAAsB,EACtB,GAAS;IAET,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;IACpE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,0CAAkC;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,WAAW,CAChB,OAAO,CAAC,wBAAwB,EAChC,gBAAgB,CAAC,cAAc,CAAC,CACjC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import { Session } from "../tables/sessions.table";
2
- export declare const REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15000;
2
+ /**
3
+ * Whether a presented refresh token is the session's current one.
4
+ *
5
+ * @param session The session the token claims
6
+ * @param presentedToken Token the client presented
7
+ * @returns True when the token is the session's current refresh token
8
+ */
3
9
  export declare function isCurrentRefreshToken(session: Session, presentedToken: string): boolean;
4
- export declare function isImmediateRefreshTokenPredecessor(session: Session, presentedToken: string, now: Date): boolean;
5
10
  declare const SessionModel_base: {
6
11
  new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
7
12
  readonly table: import("@antelopejs/interface-database").Table<Session>;
@@ -21,8 +26,17 @@ declare const SessionModel_base: {
21
26
  validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
22
27
  };
23
28
  export declare class SessionModel extends SessionModel_base {
29
+ /** Atomically rotates a token or resolves its immediate predecessor. */
24
30
  rotateRefreshToken(sessionId: string, presentedToken: string, refreshToken: string, rotatedAt?: Date): Promise<string | null>;
31
+ /** Replaces a refresh token without retaining predecessor eligibility. */
25
32
  replaceRefreshToken(sessionId: string, refreshToken: string): Promise<void>;
33
+ /**
34
+ * Deletes the sessions nobody has used since a date. A session's current
35
+ * refresh token is issued no later than its last activity, so once that
36
+ * activity is older than the refresh token lifetime, no token can revive it.
37
+ *
38
+ * @param threshold Sessions last active before this date are deleted
39
+ */
26
40
  deleteInactiveSince(threshold: Date): Promise<void>;
27
41
  getByUserId(userId: string): Promise<Session[]>;
28
42
  deleteByUserId(userId: string): Promise<void>;
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionModel = exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = void 0;
3
+ exports.SessionModel = void 0;
4
4
  exports.isCurrentRefreshToken = isCurrentRefreshToken;
5
- exports.isImmediateRefreshTokenPredecessor = isImmediateRefreshTokenPredecessor;
6
5
  const node_crypto_1 = require("node:crypto");
7
6
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
8
7
  const sessions_table_1 = require("../tables/sessions.table");
9
- exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS = 15_000;
8
+ const sessions_model_1 = require("../internal/sessions.model");
10
9
  function updatedRows(result) {
11
10
  if (typeof result === "number")
12
11
  return result;
@@ -20,15 +19,11 @@ const SEAL_SEPARATOR = ".";
20
19
  const SEAL_KEY_DOMAIN = "dms-refresh-successor:";
21
20
  const LAST_ACTIVE_AT_INDEX = "lastActiveAt";
22
21
  const EPOCH_LOWER_BOUND = new Date(0);
23
- function hashRefreshToken(token) {
24
- return (0, node_crypto_1.createHash)("sha256").update(token).digest("hex");
25
- }
26
- function hashesMatch(left, right) {
27
- const leftBuffer = Buffer.from(left, "hex");
28
- const rightBuffer = Buffer.from(right, "hex");
29
- return (leftBuffer.length === rightBuffer.length &&
30
- (0, node_crypto_1.timingSafeEqual)(leftBuffer, rightBuffer));
31
- }
22
+ // The grace window must hand the current token back to a client that still
23
+ // holds its predecessor, so the current token is sealed under a key derived
24
+ // from that predecessor. Only a holder of the predecessor can derive it: the
25
+ // stored `previousRefreshTokenHash` is a hash of the bare token, and the domain
26
+ // prefix keeps the two derivations apart, so the database alone opens nothing.
32
27
  function sealKey(predecessor) {
33
28
  return (0, node_crypto_1.createHash)("sha256")
34
29
  .update(SEAL_KEY_DOMAIN + predecessor)
@@ -60,42 +55,32 @@ function openRefreshToken(sealed, predecessor) {
60
55
  return null;
61
56
  }
62
57
  }
58
+ /**
59
+ * Whether a presented refresh token is the session's current one.
60
+ *
61
+ * @param session The session the token claims
62
+ * @param presentedToken Token the client presented
63
+ * @returns True when the token is the session's current refresh token
64
+ */
63
65
  function isCurrentRefreshToken(session, presentedToken) {
64
- const presentedHash = hashRefreshToken(presentedToken);
65
- if (session.refreshTokenHash) {
66
- return hashesMatch(session.refreshTokenHash, presentedHash);
67
- }
68
- return (!!session.refreshToken &&
69
- hashesMatch(hashRefreshToken(session.refreshToken), presentedHash));
70
- }
71
- function isImmediateRefreshTokenPredecessor(session, presentedToken, now) {
72
- if (!session.previousRefreshTokenHash || !session.refreshTokenRotatedAt) {
73
- return false;
74
- }
75
- const age = now.getTime() - session.refreshTokenRotatedAt.getTime();
76
- if (Math.abs(age) > exports.REFRESH_TOKEN_PREDECESSOR_GRACE_MS)
77
- return false;
78
- return hashesMatch(session.previousRefreshTokenHash, hashRefreshToken(presentedToken));
66
+ return (!!session.refreshTokenHash &&
67
+ (0, sessions_model_1.hashesMatch)(session.refreshTokenHash, (0, sessions_model_1.hashRefreshToken)(presentedToken)));
79
68
  }
80
69
  function recoverSuccessor(session, presentedToken) {
81
- if (session.sealedRefreshToken) {
82
- return openRefreshToken(session.sealedRefreshToken, presentedToken);
83
- }
84
- return session.refreshToken || null;
70
+ if (!session.sealedRefreshToken)
71
+ return null;
72
+ return openRefreshToken(session.sealedRefreshToken, presentedToken);
85
73
  }
86
74
  class SessionModel extends (0, interface_database_decorators_1.BasicDataModel)(sessions_table_1.Session, sessions_table_1.SESSIONS_TABLE_NAME) {
75
+ /** Atomically rotates a token or resolves its immediate predecessor. */
87
76
  async rotateRefreshToken(sessionId, presentedToken, refreshToken, rotatedAt = new Date()) {
88
77
  const result = await this.table
89
78
  .getAll(sessionId)
90
- .filter((row) => row
91
- .key("refreshTokenHash")
92
- .eq(hashRefreshToken(presentedToken))
93
- .or(row.key("refreshToken").eq(presentedToken)))
79
+ .filter((row) => row.key("refreshTokenHash").eq((0, sessions_model_1.hashRefreshToken)(presentedToken)))
94
80
  .update({
95
- refreshToken: "",
96
- refreshTokenHash: hashRefreshToken(refreshToken),
81
+ refreshTokenHash: (0, sessions_model_1.hashRefreshToken)(refreshToken),
97
82
  sealedRefreshToken: sealRefreshToken(refreshToken, presentedToken),
98
- previousRefreshTokenHash: hashRefreshToken(presentedToken),
83
+ previousRefreshTokenHash: (0, sessions_model_1.hashRefreshToken)(presentedToken),
99
84
  refreshTokenRotatedAt: rotatedAt,
100
85
  lastActiveAt: rotatedAt,
101
86
  })
@@ -104,20 +89,27 @@ class SessionModel extends (0, interface_database_decorators_1.BasicDataModel)(s
104
89
  return refreshToken;
105
90
  const session = await this.get(sessionId);
106
91
  if (!session ||
107
- !isImmediateRefreshTokenPredecessor(session, presentedToken, rotatedAt)) {
92
+ !(0, sessions_model_1.isImmediateRefreshTokenPredecessor)(session, presentedToken, rotatedAt)) {
108
93
  return null;
109
94
  }
110
95
  return recoverSuccessor(session, presentedToken);
111
96
  }
97
+ /** Replaces a refresh token without retaining predecessor eligibility. */
112
98
  async replaceRefreshToken(sessionId, refreshToken) {
113
99
  await this.update(sessionId, {
114
- refreshToken: "",
115
- refreshTokenHash: hashRefreshToken(refreshToken),
100
+ refreshTokenHash: (0, sessions_model_1.hashRefreshToken)(refreshToken),
116
101
  sealedRefreshToken: null,
117
102
  previousRefreshTokenHash: null,
118
103
  refreshTokenRotatedAt: null,
119
104
  });
120
105
  }
106
+ /**
107
+ * Deletes the sessions nobody has used since a date. A session's current
108
+ * refresh token is issued no later than its last activity, so once that
109
+ * activity is older than the refresh token lifetime, no token can revive it.
110
+ *
111
+ * @param threshold Sessions last active before this date are deleted
112
+ */
121
113
  async deleteInactiveSince(threshold) {
122
114
  await this.table
123
115
  .between(LAST_ACTIVE_AT_INDEX, EPOCH_LOWER_BOUND, threshold)
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/sessions.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/sessions.model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import { UserExternalIdentity } from "../tables/userExternalIdentities.table";
2
+ /**
3
+ * Deterministic row id of a provider account binding. Being the primary key,
4
+ * it is what makes the binding unique — see the table's TSDoc.
5
+ */
2
6
  export declare function buildExternalIdentityId(provider: string, providerAccountId: string): string;
3
7
  declare const UserExternalIdentityModel_base: {
4
8
  new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
@@ -19,6 +23,13 @@ declare const UserExternalIdentityModel_base: {
19
23
  validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
20
24
  };
21
25
  export declare class UserExternalIdentityModel extends UserExternalIdentityModel_base {
26
+ /**
27
+ * Resolve the identity a provider account is bound to.
28
+ *
29
+ * @param provider Provider identifier
30
+ * @param providerAccountId Account identifier on the provider side
31
+ * @returns The bound identity, or undefined when the account is unknown
32
+ */
22
33
  getByProviderAccount(provider: string, providerAccountId: string): Promise<UserExternalIdentity | undefined>;
23
34
  getByUserId(userId: string): Promise<UserExternalIdentity[]>;
24
35
  deleteByUserId(userId: string): Promise<void>;
@@ -4,10 +4,21 @@ exports.UserExternalIdentityModel = void 0;
4
4
  exports.buildExternalIdentityId = buildExternalIdentityId;
5
5
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
6
6
  const userExternalIdentities_table_1 = require("../tables/userExternalIdentities.table");
7
+ /**
8
+ * Deterministic row id of a provider account binding. Being the primary key,
9
+ * it is what makes the binding unique — see the table's TSDoc.
10
+ */
7
11
  function buildExternalIdentityId(provider, providerAccountId) {
8
12
  return `${provider}:${providerAccountId}`;
9
13
  }
10
14
  class UserExternalIdentityModel extends (0, interface_database_decorators_1.BasicDataModel)(userExternalIdentities_table_1.UserExternalIdentity, userExternalIdentities_table_1.USER_EXTERNAL_IDENTITIES_TABLE_NAME) {
15
+ /**
16
+ * Resolve the identity a provider account is bound to.
17
+ *
18
+ * @param provider Provider identifier
19
+ * @param providerAccountId Account identifier on the provider side
20
+ * @returns The bound identity, or undefined when the account is unknown
21
+ */
11
22
  async getByProviderAccount(provider, providerAccountId) {
12
23
  return await this.get(buildExternalIdentityId(provider, providerAccountId));
13
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"userExternalIdentities.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/userExternalIdentities.model.ts"],"names":[],"mappings":";;;AAUA,0DAKC;AAfD,6FAA2E;AAC3E,yFAGgD;AAMhD,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,iBAAyB;IAEzB,OAAO,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAa,yBAA0B,SAAQ,IAAA,8CAAc,EAC3D,mDAAoB,EACpB,kEAAmC,CACpC;IAQC,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,iBAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAChD,CAAC;IACN,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF;AApCD,8DAoCC"}
1
+ {"version":3,"file":"userExternalIdentities.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/userExternalIdentities.model.ts"],"names":[],"mappings":";;;AAUA,0DAKC;AAfD,6FAA2E;AAC3E,yFAGgD;AAEhD;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,iBAAyB;IAEzB,OAAO,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAa,yBAA0B,SAAQ,IAAA,8CAAc,EAC3D,mDAAoB,EACpB,kEAAmC,CACpC;IACC;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,QAAgB,EAChB,iBAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAChD,CAAC;IACN,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF;AApCD,8DAoCC"}
@@ -1,4 +1,11 @@
1
1
  import { User } from "../tables/users.table";
2
+ /**
3
+ * Canonical form of an e-mail address as stored and looked up: accounts are
4
+ * written lowercased, so a lookup must not depend on the caller's casing.
5
+ *
6
+ * @param email The e-mail as typed
7
+ * @returns The trimmed, lowercased e-mail
8
+ */
2
9
  export declare function normalizeEmail(email: string): string;
3
10
  declare const UserModel_base: {
4
11
  new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
@@ -19,6 +26,12 @@ declare const UserModel_base: {
19
26
  validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
20
27
  };
21
28
  export declare class UserModel extends UserModel_base {
29
+ /**
30
+ * Get the user by their email
31
+ *
32
+ * @param email The email of the user
33
+ * @returns The user or undefined if not found
34
+ */
22
35
  getByEmail(email: string): Promise<User | undefined>;
23
36
  getOwners(): Promise<User[]>;
24
37
  countOwnersExcluding(excludedIds: string[]): Promise<number>;
@@ -5,10 +5,23 @@ exports.normalizeEmail = normalizeEmail;
5
5
  const interface_database_1 = require("@antelopejs/interface-database");
6
6
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
7
7
  const users_table_1 = require("../tables/users.table");
8
+ /**
9
+ * Canonical form of an e-mail address as stored and looked up: accounts are
10
+ * written lowercased, so a lookup must not depend on the caller's casing.
11
+ *
12
+ * @param email The e-mail as typed
13
+ * @returns The trimmed, lowercased e-mail
14
+ */
8
15
  function normalizeEmail(email) {
9
16
  return email.trim().toLowerCase();
10
17
  }
11
18
  class UserModel extends (0, interface_database_decorators_1.BasicDataModel)(users_table_1.User, users_table_1.USERS_TABLE_NAME) {
19
+ /**
20
+ * Get the user by their email
21
+ *
22
+ * @param email The email of the user
23
+ * @returns The user or undefined if not found
24
+ */
12
25
  getByEmail(email) {
13
26
  return this.table
14
27
  .getAll(normalizeEmail(email), "email")
@@ -1 +1 @@
1
- {"version":3,"file":"users.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/users.model.ts"],"names":[],"mappings":";;;AAWA,wCAEC;AAbD,uEAA4D;AAC5D,6FAA2E;AAC3E,uDAA+D;AAS/D,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,MAAa,SAAU,SAAQ,IAAA,8CAAc,EAAC,kBAAI,EAAE,8BAAgB,CAAC;IAOnE,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,SAAS,CAAC;aAClB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,KAAK;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACZ,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CACxC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAqB;QAC9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;iBAC5C,KAAK,EAAE;iBACP,GAAG,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI;aACD,GAAG,CAAC,OAAO,CAAC;aACZ,EAAE,CAAC,IAAI,CAAC;aACR,GAAG,CACF,+BAAU,CAAC,QAAQ,CAAW,WAAW,CAAC;aACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACzB,GAAG,EAAE,CACT,CACJ;aACA,KAAK,EAAE;aACP,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AAhDD,8BAgDC"}
1
+ {"version":3,"file":"users.model.js","sourceRoot":"","sources":["../../../../src/auth/db/models/users.model.ts"],"names":[],"mappings":";;;AAWA,wCAEC;AAbD,uEAA4D;AAC5D,6FAA2E;AAC3E,uDAA+D;AAE/D;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,MAAa,SAAU,SAAQ,IAAA,8CAAc,EAAC,kBAAI,EAAE,8BAAgB,CAAC;IACnE;;;;;OAKG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,SAAS,CAAC;aAClB,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,KAAK;aACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,EAAE;aACL,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACZ,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CACxC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAqB;QAC9C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;iBAC5C,KAAK,EAAE;iBACP,GAAG,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI;aACD,GAAG,CAAC,OAAO,CAAC;aACZ,EAAE,CAAC,IAAI,CAAC;aACR,GAAG,CACF,+BAAU,CAAC,QAAQ,CAAW,WAAW,CAAC;aACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACzB,GAAG,EAAE,CACT,CACJ;aACA,KAAK,EAAE;aACP,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AAhDD,8BAgDC"}
@@ -3,8 +3,13 @@ export declare const SESSIONS_TABLE_NAME = "sessions";
3
3
  export declare class Session extends Table {
4
4
  _id: string;
5
5
  userId: string;
6
- refreshToken: string;
6
+ /** sha256 of the current refresh token: the token itself is never stored. */
7
7
  refreshTokenHash?: string | null;
8
+ /**
9
+ * The current refresh token sealed under a key only its predecessor
10
+ * derives, so the rotation grace window can hand it back to a client that
11
+ * still holds the predecessor without the token being readable at rest.
12
+ */
8
13
  sealedRefreshToken?: string | null;
9
14
  previousRefreshTokenHash?: string | null;
10
15
  refreshTokenRotatedAt?: Date | null;
@@ -27,10 +27,6 @@ __decorate([
27
27
  (0, interface_database_decorators_1.Relation)({ to: () => users_table_1.User }),
28
28
  __metadata("design:type", String)
29
29
  ], Session.prototype, "userId", void 0);
30
- __decorate([
31
- (0, interface_database_decorators_1.Field)("string"),
32
- __metadata("design:type", String)
33
- ], Session.prototype, "refreshToken", void 0);
34
30
  __decorate([
35
31
  (0, interface_database_decorators_1.Field)("string"),
36
32
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAGvC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,qCAAK;CA+DjC,CAAA;AA/DY,0BAAO;AAEV;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;uCACN;AAUf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACa;AAIrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACyB;AAQjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDAC2B;AAGnC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiC;AAGzC;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;sDAC8B;AAGpC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;0CACU;AAGlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wCACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;2CACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yCACS;AAKjB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;0CAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;6CAAC;kBA9DhB,OAAO;IADnB,IAAA,6CAAa,EAAC,2BAAmB,EAAE,4BAAgB,CAAC;GACxC,OAAO,CA+DnB"}
1
+ {"version":3,"file":"sessions.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/sessions.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAGvC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,qCAAK;CAqDjC,CAAA;AArDY,0BAAO;AAEV;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;uCACN;AAIf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACyB;AAQjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDAC2B;AAGnC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiC;AAGzC;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;;sDAC8B;AAGpC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;0CACU;AAGlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wCACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACG;AAGX;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;2CACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yCACS;AAKjB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;0CAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;6CAAC;kBApDhB,OAAO;IADnB,IAAA,6CAAa,EAAC,2BAAmB,EAAE,4BAAgB,CAAC;GACxC,OAAO,CAqDnB"}
@@ -1,10 +1,34 @@
1
1
  import { Table } from "@antelopejs/interface-database-decorators";
2
2
  export declare const USER_EXTERNAL_IDENTITIES_TABLE_NAME = "user_external_identities";
3
+ /**
4
+ * An identity a user owns on an external login provider (GitHub, Google, ...).
5
+ *
6
+ * The row id is the deterministic `<provider>:<providerAccountId>`, so the
7
+ * primary key is what guarantees one row per provider account — the schema
8
+ * layer offers no unique secondary index, and concurrent logins for the same
9
+ * account must collide instead of duplicating (same pattern as
10
+ * `TenantMember`).
11
+ *
12
+ * Scoped to authentication only: integrations that connect a provider for
13
+ * product features (repository access, deployments) own their own storage and
14
+ * must never be inferred from this table.
15
+ */
3
16
  export declare class UserExternalIdentity extends Table {
4
17
  _id: string;
5
18
  userId: string;
19
+ /**
20
+ * Provider identifier, as declared in the instance OAuth configuration.
21
+ */
6
22
  provider: string;
23
+ /**
24
+ * Immutable account identifier on the provider side. Never the e-mail: users
25
+ * change their provider e-mail without changing account.
26
+ */
7
27
  providerAccountId: string;
28
+ /**
29
+ * E-mail reported by the provider at the last successful login, kept for
30
+ * support and audit only. Account resolution never reads it back.
31
+ */
8
32
  email: string;
9
33
  createdAt: Date;
10
34
  lastLoginAt: Date;
@@ -14,6 +14,19 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
14
14
  const constants_1 = require("../../../constants");
15
15
  const users_table_1 = require("./users.table");
16
16
  exports.USER_EXTERNAL_IDENTITIES_TABLE_NAME = "user_external_identities";
17
+ /**
18
+ * An identity a user owns on an external login provider (GitHub, Google, ...).
19
+ *
20
+ * The row id is the deterministic `<provider>:<providerAccountId>`, so the
21
+ * primary key is what guarantees one row per provider account — the schema
22
+ * layer offers no unique secondary index, and concurrent logins for the same
23
+ * account must collide instead of duplicating (same pattern as
24
+ * `TenantMember`).
25
+ *
26
+ * Scoped to authentication only: integrations that connect a provider for
27
+ * product features (repository access, deployments) own their own storage and
28
+ * must never be inferred from this table.
29
+ */
17
30
  let UserExternalIdentity = class UserExternalIdentity extends interface_database_decorators_1.Table {
18
31
  };
19
32
  exports.UserExternalIdentity = UserExternalIdentity;
@@ -1 +1 @@
1
- {"version":3,"file":"userExternalIdentities.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/userExternalIdentities.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mCAAmC,GAAG,0BAA0B,CAAC;AAgBvE,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,qCAAK;CAoC9C,CAAA;AApCY,oDAAoB;AAEvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;oDACN;AAMf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACS;AAOjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACkB;AAO1B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACM;AAKd;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uDAAC;AAGhB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACO,IAAI;yDAAC;+BAnCf,oBAAoB;IADhC,IAAA,6CAAa,EAAC,2CAAmC,EAAE,4BAAgB,CAAC;GACxD,oBAAoB,CAoChC"}
1
+ {"version":3,"file":"userExternalIdentities.table.js","sourceRoot":"","sources":["../../../../src/auth/db/tables/userExternalIdentities.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,kDAAsD;AACtD,+CAAqC;AAExB,QAAA,mCAAmC,GAAG,0BAA0B,CAAC;AAE9E;;;;;;;;;;;;GAYG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,qCAAK;CAoC9C,CAAA;AApCY,oDAAoB;AAEvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACI;AAKZ;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;IACf,IAAA,wCAAQ,EAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,kBAAI,EAAE,CAAC;;oDACN;AAMf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACS;AAOjB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACkB;AAO1B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACM;AAKd;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uDAAC;AAGhB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACO,IAAI;yDAAC;+BAnCf,oBAAoB;IADhC,IAAA,6CAAa,EAAC,2CAAmC,EAAE,4BAAgB,CAAC;GACxD,oBAAoB,CAoChC"}