@antelopejs/interface-dms 0.10.3 → 0.12.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 (377) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +21 -10
  3. package/dist/attachments.d.ts +15 -2
  4. package/dist/attachments.js +14 -1
  5. package/dist/attachments.js.map +1 -1
  6. package/dist/auth/db/models/sessions.model.d.ts +7 -5
  7. package/dist/auth/db/models/sessions.model.js +2 -9
  8. package/dist/auth/db/models/sessions.model.js.map +1 -1
  9. package/dist/auth/db/models/userExternalIdentities.model.d.ts +7 -5
  10. package/dist/auth/db/models/users.model.d.ts +7 -5
  11. package/dist/auth/db/tables/users.table.d.ts +4 -2
  12. package/dist/auth/db/tables/users.table.js.map +1 -1
  13. package/dist/auth/index.d.ts +4 -4
  14. package/dist/auth/internal/jwt-auth-decorator.d.ts +1 -1
  15. package/dist/auth/internal/jwt-auth-decorator.js +6 -3
  16. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
  17. package/dist/auth/internal/request-authenticators.d.ts +12 -0
  18. package/dist/auth/internal/request-authenticators.js +53 -10
  19. package/dist/auth/internal/request-authenticators.js.map +1 -1
  20. package/dist/base/activity-feed.d.ts +34 -32
  21. package/dist/base/activity-feed.js +2 -0
  22. package/dist/base/activity-feed.js.map +1 -1
  23. package/dist/base/banner.d.ts +12 -10
  24. package/dist/base/banner.js +2 -0
  25. package/dist/base/banner.js.map +1 -1
  26. package/dist/base/block-registry/internal/describe.js +3 -9
  27. package/dist/base/block-registry/internal/describe.js.map +1 -1
  28. package/dist/base/block-registry/internal/ui.js +1 -1
  29. package/dist/base/block-registry/internal/ui.js.map +1 -1
  30. package/dist/base/card.d.ts +11 -9
  31. package/dist/base/card.js +2 -0
  32. package/dist/base/card.js.map +1 -1
  33. package/dist/base/chart-card.d.ts +4 -2
  34. package/dist/base/chart-card.js +2 -0
  35. package/dist/base/chart-card.js.map +1 -1
  36. package/dist/base/chart-schemas.d.ts +148 -148
  37. package/dist/base/chart.d.ts +65 -0
  38. package/dist/base/chart.js +65 -0
  39. package/dist/base/chart.js.map +1 -1
  40. package/dist/base/code-block.d.ts +5 -3
  41. package/dist/base/code-block.js +2 -0
  42. package/dist/base/code-block.js.map +1 -1
  43. package/dist/base/custom.d.ts +5 -0
  44. package/dist/base/custom.js +5 -0
  45. package/dist/base/custom.js.map +1 -1
  46. package/dist/base/data-types/default/address.d.ts +5 -0
  47. package/dist/base/data-types/default/address.js +5 -0
  48. package/dist/base/data-types/default/address.js.map +1 -1
  49. package/dist/base/data-types/default/choices.d.ts +20 -0
  50. package/dist/base/data-types/default/choices.js +20 -0
  51. package/dist/base/data-types/default/choices.js.map +1 -1
  52. package/dist/base/data-types/default/files.d.ts +22 -5
  53. package/dist/base/data-types/default/files.js +20 -0
  54. package/dist/base/data-types/default/files.js.map +1 -1
  55. package/dist/base/data-types/default/numbers.d.ts +15 -0
  56. package/dist/base/data-types/default/numbers.js +25 -9
  57. package/dist/base/data-types/default/numbers.js.map +1 -1
  58. package/dist/base/data-types/default/relations.d.ts +10 -2
  59. package/dist/base/data-types/default/relations.js +9 -6
  60. package/dist/base/data-types/default/relations.js.map +1 -1
  61. package/dist/base/data-types/default/strings.d.ts +25 -0
  62. package/dist/base/data-types/default/strings.js +25 -0
  63. package/dist/base/data-types/default/strings.js.map +1 -1
  64. package/dist/base/data-types/default-types.d.ts +1 -1
  65. package/dist/base/data-types/field-types.d.ts +10 -0
  66. package/dist/base/data-types/field-types.js +10 -0
  67. package/dist/base/data-types/field-types.js.map +1 -1
  68. package/dist/base/data-types/internal/relation-endpoints.js +1 -0
  69. package/dist/base/data-types/internal/relation-endpoints.js.map +1 -1
  70. package/dist/base/data-types/status-type.d.ts +5 -0
  71. package/dist/base/data-types/status-type.js +5 -0
  72. package/dist/base/data-types/status-type.js.map +1 -1
  73. package/dist/base/display.d.ts +6 -6
  74. package/dist/base/empty-state.d.ts +15 -13
  75. package/dist/base/empty-state.js +2 -0
  76. package/dist/base/empty-state.js.map +1 -1
  77. package/dist/base/form-block-schema.d.ts +50 -50
  78. package/dist/base/form-schema.d.ts +2 -0
  79. package/dist/base/form-schema.js +2 -0
  80. package/dist/base/form-schema.js.map +1 -1
  81. package/dist/base/grid.d.ts +4 -0
  82. package/dist/base/grid.js +4 -0
  83. package/dist/base/grid.js.map +1 -1
  84. package/dist/base/guard.d.ts +30 -28
  85. package/dist/base/guard.js +2 -0
  86. package/dist/base/guard.js.map +1 -1
  87. package/dist/base/helpers/archive-mode-helpers.d.ts +1 -1
  88. package/dist/base/helpers/file-refs.js +15 -15
  89. package/dist/base/helpers/file-refs.js.map +1 -1
  90. package/dist/base/internal/form-schema-validation.js +7 -1
  91. package/dist/base/internal/form-schema-validation.js.map +1 -1
  92. package/dist/base/internal/realtime-topics.js.map +1 -1
  93. package/dist/base/internal/searchable.d.ts +2 -1
  94. package/dist/base/internal/searchable.js +1 -3
  95. package/dist/base/internal/searchable.js.map +1 -1
  96. package/dist/base/key-value-list.d.ts +21 -19
  97. package/dist/base/key-value-list.js +2 -0
  98. package/dist/base/key-value-list.js.map +1 -1
  99. package/dist/base/kpi-card.d.ts +4 -2
  100. package/dist/base/kpi-card.js +2 -0
  101. package/dist/base/kpi-card.js.map +1 -1
  102. package/dist/base/live-toggle.d.ts +2 -0
  103. package/dist/base/live-toggle.js +2 -0
  104. package/dist/base/live-toggle.js.map +1 -1
  105. package/dist/base/meter.d.ts +23 -21
  106. package/dist/base/meter.js +2 -0
  107. package/dist/base/meter.js.map +1 -1
  108. package/dist/base/nav-card-grid.d.ts +24 -19
  109. package/dist/base/nav-card-grid.js +5 -0
  110. package/dist/base/nav-card-grid.js.map +1 -1
  111. package/dist/base/page-toolbar.d.ts +2 -0
  112. package/dist/base/page-toolbar.js +2 -0
  113. package/dist/base/page-toolbar.js.map +1 -1
  114. package/dist/base/period-selector.d.ts +3 -1
  115. package/dist/base/period-selector.js +2 -0
  116. package/dist/base/period-selector.js.map +1 -1
  117. package/dist/base/placeholder.d.ts +2 -0
  118. package/dist/base/placeholder.js +2 -0
  119. package/dist/base/placeholder.js.map +1 -1
  120. package/dist/base/resource-form-schema.d.ts +2 -2
  121. package/dist/base/searchable.d.ts +3 -2
  122. package/dist/base/searchable.js +2 -2
  123. package/dist/base/searchable.js.map +1 -1
  124. package/dist/base/section.d.ts +6 -2
  125. package/dist/base/section.js +4 -0
  126. package/dist/base/section.js.map +1 -1
  127. package/dist/base/stack.d.ts +6 -0
  128. package/dist/base/stack.js +6 -0
  129. package/dist/base/stack.js.map +1 -1
  130. package/dist/base/stat-group.d.ts +16 -14
  131. package/dist/base/stat-group.js +2 -0
  132. package/dist/base/stat-group.js.map +1 -1
  133. package/dist/base/tab.d.ts +10 -8
  134. package/dist/base/tab.js +2 -0
  135. package/dist/base/tab.js.map +1 -1
  136. package/dist/base/table-view/column-display.d.ts +1 -1
  137. package/dist/base/table-view/column-display.js.map +1 -1
  138. package/dist/base/table-view/data-functions.d.ts +10 -4
  139. package/dist/base/table-view/data-functions.js.map +1 -1
  140. package/dist/base/table-view/factory.d.ts +5 -0
  141. package/dist/base/table-view/factory.js +8 -4
  142. package/dist/base/table-view/factory.js.map +1 -1
  143. package/dist/base/table-view/internal/auth.d.ts +17 -3
  144. package/dist/base/table-view/internal/auth.js +26 -5
  145. package/dist/base/table-view/internal/auth.js.map +1 -1
  146. package/dist/base/table-view/internal/column-conditions.d.ts +8 -1
  147. package/dist/base/table-view/internal/column-conditions.js +25 -13
  148. package/dist/base/table-view/internal/column-conditions.js.map +1 -1
  149. package/dist/base/table-view/internal/column-display.d.ts +1 -2
  150. package/dist/base/table-view/internal/column-display.js +3 -9
  151. package/dist/base/table-view/internal/column-display.js.map +1 -1
  152. package/dist/base/table-view/internal/factory-helpers.d.ts +1 -1
  153. package/dist/base/table-view/internal/factory-helpers.js +17 -14
  154. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  155. package/dist/base/table-view/internal/factory-lifecycle-created.d.ts +2 -3
  156. package/dist/base/table-view/internal/factory-lifecycle-created.js +5 -5
  157. package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -1
  158. package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +2 -2
  159. package/dist/base/table-view/internal/factory-private-actions.d.ts +2 -2
  160. package/dist/base/table-view/internal/files.d.ts +2 -1
  161. package/dist/base/table-view/internal/files.js +14 -5
  162. package/dist/base/table-view/internal/files.js.map +1 -1
  163. package/dist/base/table-view/internal/footer.d.ts +3 -3
  164. package/dist/base/table-view/internal/footer.js +16 -15
  165. package/dist/base/table-view/internal/footer.js.map +1 -1
  166. package/dist/base/table-view/internal/guards.d.ts +27 -5
  167. package/dist/base/table-view/internal/guards.js +127 -49
  168. package/dist/base/table-view/internal/guards.js.map +1 -1
  169. package/dist/base/table-view/internal/meta-helpers.d.ts +1 -1
  170. package/dist/base/table-view/internal/meta-helpers.js +3 -4
  171. package/dist/base/table-view/internal/meta-helpers.js.map +1 -1
  172. package/dist/base/table-view/internal/meta.js +2 -3
  173. package/dist/base/table-view/internal/meta.js.map +1 -1
  174. package/dist/base/table-view/internal/option-contract.d.ts +1 -1
  175. package/dist/base/table-view/internal/option-footer.d.ts +2 -2
  176. package/dist/base/table-view/internal/option-row-actions.d.ts +1 -1
  177. package/dist/base/table-view/internal/realtime.d.ts +52 -11
  178. package/dist/base/table-view/internal/realtime.js +23 -16
  179. package/dist/base/table-view/internal/realtime.js.map +1 -1
  180. package/dist/base/table-view/internal/resource-form.d.ts +1 -1
  181. package/dist/base/table-view/internal/resource-form.js +1 -1
  182. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  183. package/dist/base/table-view/internal/row-actions-schema.d.ts +12 -12
  184. package/dist/base/table-view/internal/row-rule-shape.d.ts +11 -5
  185. package/dist/base/table-view/internal/row-rule-shape.js +60 -30
  186. package/dist/base/table-view/internal/row-rule-shape.js.map +1 -1
  187. package/dist/base/table-view/internal/row-rules.d.ts +28 -1
  188. package/dist/base/table-view/internal/row-rules.js +8 -19
  189. package/dist/base/table-view/internal/row-rules.js.map +1 -1
  190. package/dist/base/table-view/internal/tabs.d.ts +1 -1
  191. package/dist/base/table-view/internal/tabs.js +1 -4
  192. package/dist/base/table-view/internal/tabs.js.map +1 -1
  193. package/dist/base/table-view/internal/validation.d.ts +2 -2
  194. package/dist/base/table-view/internal/validation.js +7 -7
  195. package/dist/base/table-view/internal/validation.js.map +1 -1
  196. package/dist/base/table-view/meta.d.ts +7 -6
  197. package/dist/base/table-view/meta.js +12 -7
  198. package/dist/base/table-view/meta.js.map +1 -1
  199. package/dist/base/table-view/resource-form.d.ts +3 -1
  200. package/dist/base/table-view/resource-form.js +2 -0
  201. package/dist/base/table-view/resource-form.js.map +1 -1
  202. package/dist/base/table-view/routes.d.ts +73 -21
  203. package/dist/base/table-view/routes.js +13 -10
  204. package/dist/base/table-view/routes.js.map +1 -1
  205. package/dist/base/table-view/schema.d.ts +152 -152
  206. package/dist/base/table-view/source.js +4 -1
  207. package/dist/base/table-view/source.js.map +1 -1
  208. package/dist/base/table-view.d.ts +1 -1
  209. package/dist/base/table-view.js.map +1 -1
  210. package/dist/base/top-list-card.d.ts +35 -33
  211. package/dist/base/top-list-card.js +2 -0
  212. package/dist/base/top-list-card.js.map +1 -1
  213. package/dist/base/types/error.js +5 -2
  214. package/dist/base/types/error.js.map +1 -1
  215. package/dist/base/types/guards.d.ts +4 -4
  216. package/dist/base/types/json.d.ts +1 -10
  217. package/dist/base/types/row-action.d.ts +7 -7
  218. package/dist/component-options/confirm-dialog.d.ts +2 -0
  219. package/dist/component-options/confirm-dialog.js.map +1 -1
  220. package/dist/component-options/data-type.d.ts +2 -2
  221. package/dist/component-options/data-type.js +7 -7
  222. package/dist/component-options/data-type.js.map +1 -1
  223. package/dist/component-options/row-action.d.ts +14 -9
  224. package/dist/component-slots.d.ts +11 -2
  225. package/dist/component-slots.js +1 -0
  226. package/dist/component-slots.js.map +1 -1
  227. package/dist/component.d.ts +7 -8
  228. package/dist/component.js +17 -25
  229. package/dist/component.js.map +1 -1
  230. package/dist/data-controllers/members.d.ts +11 -7
  231. package/dist/data-controllers/members.js +1 -1
  232. package/dist/data-controllers/members.js.map +1 -1
  233. package/dist/data-controllers/roles.d.ts +32 -10
  234. package/dist/db/internal/exportJobs.model.d.ts +7 -5
  235. package/dist/db/internal/inviteResolutions.model.d.ts +7 -5
  236. package/dist/db/internal/tenantLifecycle.model.d.ts +7 -5
  237. package/dist/db/models/roles.model.d.ts +7 -5
  238. package/dist/db/models/tenantMembers.model.d.ts +7 -5
  239. package/dist/db/models/tenants.model.d.ts +7 -5
  240. package/dist/db/models/user_invites.model.d.ts +7 -5
  241. package/dist/db/tables/tenants.table.d.ts +9 -0
  242. package/dist/db/tables/tenants.table.js +4 -0
  243. package/dist/db/tables/tenants.table.js.map +1 -1
  244. package/dist/guards.d.ts +1 -1
  245. package/dist/hooks.d.ts +10 -9
  246. package/dist/hooks.js +42 -33
  247. package/dist/hooks.js.map +1 -1
  248. package/dist/internal/attachments.d.ts +2 -2
  249. package/dist/internal/component-builder.js +2 -1
  250. package/dist/internal/component-builder.js.map +1 -1
  251. package/dist/internal/component-serialization.d.ts +2 -4
  252. package/dist/internal/component-serialization.js +4 -3
  253. package/dist/internal/component-serialization.js.map +1 -1
  254. package/dist/internal/component-slots.d.ts +19 -2
  255. package/dist/internal/component-slots.js +35 -12
  256. package/dist/internal/component-slots.js.map +1 -1
  257. package/dist/internal/component-watch-filter.d.ts +11 -0
  258. package/dist/internal/component-watch-filter.js +22 -0
  259. package/dist/internal/component-watch-filter.js.map +1 -0
  260. package/dist/internal/component-watches.js +0 -1
  261. package/dist/internal/component-watches.js.map +1 -1
  262. package/dist/internal/own-entry.d.ts +7 -0
  263. package/dist/internal/own-entry.js +13 -0
  264. package/dist/internal/own-entry.js.map +1 -0
  265. package/dist/invite-extension-payloads.d.ts +14 -2
  266. package/dist/invite-extensions/internal/delivery.js +1 -2
  267. package/dist/invite-extensions/internal/delivery.js.map +1 -1
  268. package/dist/invite-extensions/internal/edit.d.ts +2 -1
  269. package/dist/invite-extensions/internal/edit.js +8 -9
  270. package/dist/invite-extensions/internal/edit.js.map +1 -1
  271. package/dist/invite-extensions/internal/form-slot.js +8 -15
  272. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  273. package/dist/invite-extensions/internal/payload-slices.d.ts +33 -3
  274. package/dist/invite-extensions/internal/payload-slices.js +84 -19
  275. package/dist/invite-extensions/internal/payload-slices.js.map +1 -1
  276. package/dist/invite-extensions/internal/types.d.ts +10 -1
  277. package/dist/invite-resolution.js +6 -4
  278. package/dist/invite-resolution.js.map +1 -1
  279. package/dist/json.d.ts +10 -0
  280. package/dist/json.js +3 -0
  281. package/dist/json.js.map +1 -0
  282. package/dist/layout-banners.d.ts +5 -2
  283. package/dist/layout-banners.js.map +1 -1
  284. package/dist/page/controllers.d.ts +2 -2
  285. package/dist/page/internal/extension-validation.js +3 -2
  286. package/dist/page/internal/extension-validation.js.map +1 -1
  287. package/dist/page/internal/metadata-layout.js +1 -1
  288. package/dist/page/internal/metadata-layout.js.map +1 -1
  289. package/dist/page/internal/metadata-publish.js +3 -2
  290. package/dist/page/internal/metadata-publish.js.map +1 -1
  291. package/dist/page/internal/metadata-registration.js +5 -4
  292. package/dist/page/internal/metadata-registration.js.map +1 -1
  293. package/dist/page/internal/metadata-upload-registration.d.ts +3 -1
  294. package/dist/page/internal/metadata-upload-registration.js +9 -0
  295. package/dist/page/internal/metadata-upload-registration.js.map +1 -1
  296. package/dist/page/internal/metadata-uploads.d.ts +18 -5
  297. package/dist/page/internal/metadata-uploads.js +7 -8
  298. package/dist/page/internal/metadata-uploads.js.map +1 -1
  299. package/dist/page/internal/page-record.d.ts +2 -3
  300. package/dist/page/internal/page-record.js +19 -14
  301. package/dist/page/internal/page-record.js.map +1 -1
  302. package/dist/page/layout-filter.js +17 -6
  303. package/dist/page/layout-filter.js.map +1 -1
  304. package/dist/page/metadata.js +5 -7
  305. package/dist/page/metadata.js.map +1 -1
  306. package/dist/request-tenant.d.ts +10 -4
  307. package/dist/request-tenant.js +16 -34
  308. package/dist/request-tenant.js.map +1 -1
  309. package/dist/tenant-export.d.ts +2 -1
  310. package/dist/tenant-lifecycle.d.ts +13 -4
  311. package/dist/tenant-lifecycle.js +51 -18
  312. package/dist/tenant-lifecycle.js.map +1 -1
  313. package/dist/types.d.ts +20 -0
  314. package/dist/uploads.js +42 -59
  315. package/dist/uploads.js.map +1 -1
  316. package/dist/utils/fire-and-forget.js.map +1 -1
  317. package/dist/utils/internal/decorated-class.d.ts +14 -0
  318. package/dist/utils/internal/decorated-class.js +37 -0
  319. package/dist/utils/internal/decorated-class.js.map +1 -0
  320. package/dist/utils/internal/type-check.d.ts +9 -0
  321. package/dist/utils/internal/type-check.js +13 -5
  322. package/dist/utils/internal/type-check.js.map +1 -1
  323. package/dist/utils/internal/value-parser.d.ts +1 -1
  324. package/dist/utils/internal/value-parser.js +22 -9
  325. package/dist/utils/internal/value-parser.js.map +1 -1
  326. package/dist/watch-actions.d.ts +1 -1
  327. package/docs/1.core/1.introduction.md +82 -77
  328. package/docs/1.core/10.layout-banners.md +57 -45
  329. package/docs/1.core/11.modules-and-dynamic-menus.md +178 -0
  330. package/docs/1.core/12.frontend-modules-and-request-helpers.md +155 -0
  331. package/docs/1.core/13.tenant-data-export.md +120 -0
  332. package/docs/1.core/2.pages-and-modules.md +140 -367
  333. package/docs/1.core/3.components.md +21 -22
  334. package/docs/1.core/4.permissions.md +92 -71
  335. package/docs/1.core/5.tenancy.md +112 -86
  336. package/docs/1.core/6.invites.md +90 -65
  337. package/docs/1.core/7.hooks.md +96 -166
  338. package/docs/1.core/8.realtime.md +44 -45
  339. package/docs/1.core/9.quick-actions.md +37 -30
  340. package/docs/2.auth/1.introduction.md +33 -35
  341. package/docs/2.auth/2.authentication.md +60 -38
  342. package/docs/2.auth/3.tokens-and-sessions.md +56 -55
  343. package/docs/2.auth/4.users.md +82 -52
  344. package/docs/2.auth/5.external-identities.md +25 -26
  345. package/docs/3.base/1.introduction.md +64 -60
  346. package/docs/3.base/10.display-blocks.md +15 -16
  347. package/docs/3.base/11.page-layouts.md +273 -0
  348. package/docs/3.base/12.table-row-actions.md +122 -0
  349. package/docs/3.base/13.table-filters-and-forms.md +104 -0
  350. package/docs/3.base/14.table-events-and-helpers.md +114 -0
  351. package/docs/3.base/15.table-sources-and-gates.md +24 -0
  352. package/docs/3.base/2.types.md +44 -41
  353. package/docs/3.base/3.forms.md +27 -28
  354. package/docs/3.base/4.tables.md +34 -367
  355. package/docs/3.base/5.charts-and-widgets.md +28 -29
  356. package/docs/3.base/6.layout.md +21 -270
  357. package/docs/3.base/8.data-types.md +39 -40
  358. package/docs/3.base/9.helpers.md +36 -38
  359. package/docs/4.notifications/1.introduction.md +22 -26
  360. package/docs/4.notifications/2.categories-and-subjects.md +58 -55
  361. package/docs/4.notifications/3.sending.md +72 -68
  362. package/docs/5.html-render/1.introduction.md +119 -81
  363. package/docs/5.html-render/2.built-in-emails.md +71 -51
  364. package/docs/index.md +18 -29
  365. package/docs/tsconfig.json +4 -0
  366. package/package.json +12 -12
  367. package/docs/images/emails-admin-invite.png +0 -0
  368. package/docs/images/emails-change-notice.png +0 -0
  369. package/docs/images/emails-change-verification.png +0 -0
  370. package/docs/images/emails-digest-logo-dark.png +0 -0
  371. package/docs/images/emails-digest-logo-light.png +0 -0
  372. package/docs/images/emails-digest.png +0 -0
  373. package/docs/images/emails-export-partial.png +0 -0
  374. package/docs/images/emails-export-ready.png +0 -0
  375. package/docs/images/emails-reset-password.png +0 -0
  376. package/docs/images/emails-two-factor.png +0 -0
  377. package/docs/images/emails-user-validation.png +0 -0
@@ -10,29 +10,52 @@ const interface_database_decorators_1 = require("@antelopejs/interface-database-
10
10
  const tenantLifecycle_model_1 = require("./db/internal/tenantLifecycle.model");
11
11
  const HTTP_CLIENT_ERROR_MIN = 400;
12
12
  const HTTP_SERVER_ERROR_MIN = 500;
13
+ const RELEASE_ATTEMPTS = 3;
13
14
  /**
14
- * Whether the work refused on purpose, with an HTTP 4xx: a decision rather
15
- * than an effect whose outcome is unknown. Read by shape, not `instanceof`,
16
- * because the refusal can come from another module's copy of the API
17
- * interface (a dms-saas seat limit raised from a hook, for instance).
15
+ * Whether a status is an HTTP 4xx: a refusal on purpose, a decision rather
16
+ * than an effect whose outcome is unknown.
18
17
  */
19
- function isDeliberateRefusal(error) {
20
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Legacy refusal detection reads getStatus from any thrown value without validating its shape; adding validation would change proxy and getter behavior.
21
- const getStatus = error?.getStatus;
22
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Refusals can originate in another copy of the API; the existing callable shape check intentionally avoids instanceof.
23
- if (typeof getStatus !== "function")
24
- return false;
25
- const status = getStatus.call(error);
18
+ function isClientErrorStatus(status) {
26
19
  return status >= HTTP_CLIENT_ERROR_MIN && status < HTTP_SERVER_ERROR_MIN;
27
20
  }
21
+ /**
22
+ * Releases the admission of an invocation whose effects are all known: it
23
+ * finished, or it refused on purpose. Releasing is idempotent, so a failed
24
+ * release is tried again; the failure of the last try is returned, never
25
+ * swallowed.
26
+ */
27
+ async function releaseAttempt(model, tenantId, attemptId) {
28
+ let failure;
29
+ for (let attempt = 0; attempt < RELEASE_ATTEMPTS; attempt++) {
30
+ try {
31
+ await model.finish(tenantId, attemptId);
32
+ return undefined;
33
+ }
34
+ catch (releaseFailure) {
35
+ failure = new Error("Tenant lifecycle release failed", {
36
+ cause: releaseFailure,
37
+ });
38
+ }
39
+ }
40
+ return failure;
41
+ }
28
42
  /**
29
43
  * Admits one invocation. Work must await every producer effect and start no
30
44
  * detached writer. Failure retains its admission; an independent replay must
31
- * never retire this invocation's identity. Internal nested calls reuse admission.
45
+ * never retire this invocation's identity. Each call takes its own admission,
46
+ * so work never calls this again for the same tenant.
47
+ *
48
+ * A success, and a deliberate refusal (an HTTP 4xx), are the exceptions: work
49
+ * that awaits every effect has none left in flight once it finishes or
50
+ * refuses, so keeping the admission would only block the tenant's deletion
51
+ * forever. The release is tried {@link RELEASE_ATTEMPTS} times. If every try
52
+ * fails, the admission stays and the call rejects, so the blocked deletion is
53
+ * reported instead of hidden: with an `AggregateError` of the refusal and the
54
+ * release failure after a refusal, with the release failure after a success.
32
55
  *
33
- * A deliberate refusal (an HTTP 4xx) is the exception: work that awaits every
34
- * effect has none left in flight once it refuses, so keeping the admission
35
- * would only block the tenant's deletion forever.
56
+ * A refusal is read by shape, not `instanceof`, because it can come from
57
+ * another module's copy of the API interface (a dms-saas seat limit raised
58
+ * from a hook, for instance).
36
59
  */
37
60
  async function runTenantLifecycleOperation(tenantId, work) {
38
61
  const model = (0, interface_database_decorators_1.GetModel)(tenantLifecycle_model_1.TenantLifecycleModel, tenantId);
@@ -43,12 +66,22 @@ async function runTenantLifecycleOperation(tenantId, work) {
43
66
  result = await work();
44
67
  }
45
68
  catch (error) {
46
- if (isDeliberateRefusal(error)) {
47
- await model.finish(tenantId, attemptId).catch(() => undefined);
69
+ // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Legacy refusal detection reads getStatus from any thrown value without validating its shape; adding validation would change proxy and getter behavior.
70
+ const getStatus = error?.getStatus;
71
+ if (
72
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Refusals can originate in another copy of the API; the existing callable shape check intentionally avoids instanceof.
73
+ typeof getStatus === "function" &&
74
+ isClientErrorStatus(getStatus.call(error))) {
75
+ const releaseFailure = await releaseAttempt(model, tenantId, attemptId);
76
+ if (releaseFailure) {
77
+ throw new AggregateError([error, releaseFailure], "Tenant lifecycle admission refused the work but could not release; deletion of this tenant stays blocked");
78
+ }
48
79
  }
49
80
  throw error;
50
81
  }
51
- await model.finish(tenantId, attemptId);
82
+ const releaseFailure = await releaseAttempt(model, tenantId, attemptId);
83
+ if (releaseFailure)
84
+ throw releaseFailure;
52
85
  return result;
53
86
  }
54
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-lifecycle.js","sourceRoot":"","sources":["../src/tenant-lifecycle.ts"],"names":[],"mappings":";;AAoCA,kEAkBC;AAMD,sEAIC;AAWD,wDAUC;AAWD,sEAUC;AASD,wEAKC;AAxHD,6CAAyC;AACzC,6FAAqE;AACrE,+EAA2E;AAE3E,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAOlC;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAqB;IAChD,yOAAyO;IACzO,MAAM,SAAS,GAAI,KAAuC,EAAE,SAAS,CAAC;IACtE,gLAAgL;IAChL,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,MAAM,IAAI,qBAAqB,IAAI,MAAM,GAAG,qBAAqB,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,IAAsB;IAEtB,MAAM,KAAK,GAAG,IAAA,wCAAQ,EAAC,4CAAoB,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC/B,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,MAAS,CAAC;IACd,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,6BAA6B,CACjD,QAAgB;IAEhB,MAAM,IAAA,wCAAQ,EAAC,4CAAoB,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAUD,+EAA+E;AACxE,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,IAAA,wCAAQ,EAAC,4CAAoB,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7E,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC7C,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,6BAA6B,CACjD,QAAgB,EAChB,SAAiB,EACjB,gBAAwB;IAExB,OAAO,IAAA,wCAAQ,EAAC,4CAAoB,EAAE,QAAQ,CAAC,CAAC,KAAK,CACnD,QAAQ,EACR,SAAS,EACT,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,8BAA8B,CAClD,QAAgB,EAChB,SAAiB;IAEjB,OAAO,IAAA,wCAAQ,EAAC,4CAAoB,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"tenant-lifecycle.js","sourceRoot":"","sources":["../src/tenant-lifecycle.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1 +1,21 @@
1
+ import type { ControllerClass } from "@antelopejs/interface-api";
1
2
  export type MaybePromise<T> = T | Promise<T>;
3
+ /** An image stored by key, as the image data type and `User.avatar` hold it. */
4
+ export interface ImageValue {
5
+ key: string;
6
+ alt?: string;
7
+ principal?: boolean;
8
+ }
9
+ /**
10
+ * The page a component is placed on, as its `onCreated` hook receives it once
11
+ * the page registers. `PageMetadata` implements it.
12
+ */
13
+ export interface CreatedPage {
14
+ /** The page controller the component is placed on. */
15
+ readonly target: ControllerClass;
16
+ /** The id and slug the page registered under, from the root category. */
17
+ readonly pageInfo?: {
18
+ readonly fullId: string;
19
+ readonly fullSlug: string;
20
+ };
21
+ }
package/dist/uploads.js CHANGED
@@ -17,68 +17,49 @@ var internal;
17
17
  * @internal
18
18
  */
19
19
  exports.SignUploadToken = (0, interface_core_1.InterfaceFunction)();
20
- const UPLOAD_FIELD_TYPES = new Set(["file", "image"]);
20
+ function isTraversable(value) {
21
+ return !!value && typeof value === "object";
22
+ }
21
23
  function isUploadFieldNode(node) {
22
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Traversal accepts arbitrary serialized option values and only inspects object nodes.
23
- if (!node || typeof node !== "object")
24
- return false;
25
- const candidate = node;
26
- return (
27
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- A native upload node must name a file or image field rather than an arbitrary option type.
28
- typeof candidate.type === "string" &&
29
- UPLOAD_FIELD_TYPES.has(candidate.type) &&
30
- !!candidate.component &&
31
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Preserve the serialized-node shape check before accessing the component's options.
32
- typeof candidate.component === "object");
24
+ return (isTraversable(node) &&
25
+ !Array.isArray(node) &&
26
+ "type" in node &&
27
+ (node.type === "file" || node.type === "image") &&
28
+ "component" in node &&
29
+ isTraversable(node.component));
33
30
  }
34
- function hasUploadField(node) {
35
- if (Array.isArray(node)) {
36
- return node.some(hasUploadField);
37
- }
38
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Recursive traversal stops at primitive leaves of consumer options.
39
- if (!node || typeof node !== "object") {
40
- return false;
41
- }
42
- if (isUploadFieldNode(node)) {
43
- return true;
44
- }
45
- return Object.values(node).some(hasUploadField);
31
+ /** Every upload field of a serialized value, an enclosing one before the ones it holds. */
32
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Walks every value of the serialized options a component declares, its own T, at any depth that declaration has, to find the upload fields among them.
33
+ function uploadFieldNodes(node) {
34
+ if (!isTraversable(node))
35
+ return [];
36
+ return [
37
+ ...(isUploadFieldNode(node) ? [node] : []),
38
+ ...Object.values(node).flatMap(uploadFieldNodes),
39
+ ];
46
40
  }
47
41
  async function stampNode(node) {
48
- if (Array.isArray(node)) {
49
- for (const item of node)
50
- await stampNode(item);
51
- return;
52
- }
53
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Primitive option leaves have no upload fields or child objects to stamp.
54
- if (!node || typeof node !== "object") {
55
- return;
56
- }
57
- if (isUploadFieldNode(node)) {
58
- const component = node.component;
59
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The existing serialized-node check does not validate options; non-object options are replaced before stamping.
60
- if (!component.options || typeof component.options !== "object") {
61
- component.options = {};
62
- }
63
- const options = component.options;
64
- options.uploadToken = await (0, exports.SignUploadToken)({
65
- pageId: "",
66
- componentId: "",
67
- storage:
68
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Serialized consumer storage values contribute to claims only when strings.
69
- typeof options.storage === "string" ? options.storage : undefined,
70
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Only a string serialized path is copied into upload claims.
71
- path: typeof options.path === "string" ? options.path : undefined,
72
- field:
73
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Only a string attachmentField identifies the server-declared upload field.
74
- typeof options.attachmentField === "string"
75
- ? options.attachmentField
76
- : undefined,
77
- visibility: options.visibility === "public" ? "public" : "private",
78
- });
42
+ const component = node.component;
43
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The existing serialized-node check does not validate options; non-object options are replaced before stamping.
44
+ if (!component.options || typeof component.options !== "object") {
45
+ component.options = {};
79
46
  }
80
- for (const value of Object.values(node))
81
- await stampNode(value);
47
+ const options = component.options;
48
+ options.uploadToken = await (0, exports.SignUploadToken)({
49
+ pageId: "",
50
+ componentId: "",
51
+ storage:
52
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Serialized consumer storage values contribute to claims only when strings.
53
+ typeof options.storage === "string" ? options.storage : undefined,
54
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Only a string serialized path is copied into upload claims.
55
+ path: typeof options.path === "string" ? options.path : undefined,
56
+ field:
57
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Only a string attachmentField identifies the server-declared upload field.
58
+ typeof options.attachmentField === "string"
59
+ ? options.attachmentField
60
+ : undefined,
61
+ visibility: options.visibility === "public" ? "public" : "private",
62
+ });
82
63
  }
83
64
  /**
84
65
  * Stamp a signed upload token into every File/Image field found in a
@@ -95,11 +76,13 @@ async function stampNode(node) {
95
76
  * start from the untransformed declaration.
96
77
  */
97
78
  async function StampUploadFieldTokens(options) {
98
- if (!hasUploadField(options)) {
79
+ if (uploadFieldNodes(options).length === 0) {
99
80
  return options;
100
81
  }
82
+ // oxlint-disable-next-line typescript/no-unsafe-assignment -- The JSON round trip clones the caller's options as any and types the clone as its T, kept by the 2026-11-02 16:00 ruling because any other clone changes the upload answer.
101
83
  const cloned = JSON.parse(JSON.stringify(options));
102
- await stampNode(cloned);
84
+ for (const node of uploadFieldNodes(cloned))
85
+ await stampNode(node);
103
86
  return cloned;
104
87
  }
105
88
  //# sourceMappingURL=uploads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fire-and-forget.js","sourceRoot":"","sources":["../../src/utils/fire-and-forget.ts"],"names":[],"mappings":";;AAMA,sCAOC;AAbD,gEAA6D;AAE7D;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAsB,EACtB,WAAmB;IAEnB,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,iBAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"fire-and-forget.js","sourceRoot":"","sources":["../../src/utils/fire-and-forget.ts"],"names":[],"mappings":";;AAMA,sCAOC;AAbD,gEAA6D;AAE7D;;;GAGG;AACH,SAAgB,aAAa,CAC3B,IAAsB,EACtB,WAAmB;IAEnB,IAAI,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC5B,iBAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Class, DecoratorTarget } from "@antelopejs/interface-core/decorators";
2
+ /**
3
+ * The class a member decorator decorates: its target's `constructor`.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function decoratedClass(target: DecoratorTarget): Class;
8
+ /**
9
+ * The prototype a class's instance members are decorated on.
10
+ *
11
+ * @internal
12
+ * @throws {TypeError} When the class has no prototype object.
13
+ */
14
+ export declare function prototypeOf(owner: Class): DecoratorTarget;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decoratedClass = decoratedClass;
4
+ exports.prototypeOf = prototypeOf;
5
+ const type_check_1 = require("./type-check");
6
+ /**
7
+ * The class a member decorator decorates: its target's `constructor`.
8
+ *
9
+ * @internal
10
+ */
11
+ function decoratedClass(target) {
12
+ const owner = target.constructor;
13
+ if (!(0, type_check_1.isClass)(owner)) {
14
+ throw new TypeError("A member decorator applies to a class.");
15
+ }
16
+ return owner;
17
+ }
18
+ function isDecoratorTarget(value) {
19
+ return (typeof value === "object" &&
20
+ value !== null &&
21
+ "constructor" in value &&
22
+ typeof value.constructor === "function");
23
+ }
24
+ /**
25
+ * The prototype a class's instance members are decorated on.
26
+ *
27
+ * @internal
28
+ * @throws {TypeError} When the class has no prototype object.
29
+ */
30
+ function prototypeOf(owner) {
31
+ const prototype = owner.prototype;
32
+ if (!isDecoratorTarget(prototype)) {
33
+ throw new TypeError(`${owner.name} has no prototype to decorate`);
34
+ }
35
+ return prototype;
36
+ }
37
+ //# sourceMappingURL=decorated-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorated-class.js","sourceRoot":"","sources":["../../../src/utils/internal/decorated-class.ts"],"names":[],"mappings":";;AAYA,wCAMC;AAiBD,kCAMC;AApCD,6CAAuC;AAEvC;;;;GAIG;AACH,SAAgB,cAAc,CAAC,MAAuB;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,IAAI,CAAC,IAAA,oBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,aAAa,IAAI,KAAK;QACtB,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,CACxC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAY;IACtC,MAAM,SAAS,GAAY,KAAK,CAAC,SAAS,CAAC;IAC3C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,+BAA+B,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { Class } from "@antelopejs/interface-core/decorators";
1
2
  declare const primitiveTypes: readonly ["string", "number", "boolean", "undefined", "bigint", "symbol"];
2
3
  type Primitive = (typeof primitiveTypes)[number];
3
4
  interface PrimitiveValueByTag {
@@ -21,6 +22,14 @@ export declare const isUndefined: (v: unknown) => v is undefined;
21
22
  export declare const isObject: (v: unknown) => v is object;
22
23
  /** @internal */
23
24
  export declare const isFunction: (v: unknown) => v is (...args: unknown[]) => unknown;
25
+ /**
26
+ * Whether a value is a class: a function with an object `prototype`, which
27
+ * arrow functions, methods and bound functions lack. A generator function has
28
+ * one too, a language limit this check shares with every `prototype` test.
29
+ *
30
+ * @internal
31
+ */
32
+ export declare const isClass: (value: unknown) => value is Class;
24
33
  /** @internal */
25
34
  export declare const isBigint: (v: unknown) => v is bigint;
26
35
  /** @internal */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJSON = exports.isDate = exports.isNull = exports.isPrimitive = exports.isSymbol = exports.isBigint = exports.isFunction = exports.isObject = exports.isUndefined = exports.isBoolean = exports.isNumber = exports.isString = void 0;
3
+ exports.isJSON = exports.isDate = exports.isNull = exports.isPrimitive = exports.isSymbol = exports.isBigint = exports.isClass = exports.isFunction = exports.isObject = exports.isUndefined = exports.isBoolean = exports.isNumber = exports.isString = void 0;
4
4
  const primitiveTypes = [
5
5
  "string",
6
6
  "number",
@@ -9,9 +9,7 @@ const primitiveTypes = [
9
9
  "bigint",
10
10
  "symbol",
11
11
  ];
12
- const createTypeGuard = (type) => (v) =>
13
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- These published primitive predicates implement JavaScript tag checks, including the legacy object/null behavior, rather than schema validation.
14
- typeof v === type;
12
+ const createTypeGuard = (type) => (v) => typeof v === type;
15
13
  /** @internal */
16
14
  exports.isString = createTypeGuard("string");
17
15
  /** @internal */
@@ -26,6 +24,17 @@ exports.isObject = createTypeGuard("object");
26
24
  exports.isFunction =
27
25
  // oxlint-disable-next-line anti-slop/no-unknown-returns -- The published function predicate promises no result shape for arbitrary callable values.
28
26
  createTypeGuard("function");
27
+ /**
28
+ * Whether a value is a class: a function with an object `prototype`, which
29
+ * arrow functions, methods and bound functions lack. A generator function has
30
+ * one too, a language limit this check shares with every `prototype` test.
31
+ *
32
+ * @internal
33
+ */
34
+ const isClass = (value) => typeof value === "function" &&
35
+ typeof value.prototype === "object" &&
36
+ value.prototype !== null;
37
+ exports.isClass = isClass;
29
38
  /** @internal */
30
39
  exports.isBigint = createTypeGuard("bigint");
31
40
  /** @internal */
@@ -33,7 +42,6 @@ exports.isSymbol = createTypeGuard("symbol");
33
42
  /** @internal */
34
43
  const isPrimitive = (value) => {
35
44
  const types = primitiveTypes;
36
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- This published predicate classifies JavaScript tags and narrows to the primitive values whose tags it accepts.
37
45
  return types.includes(typeof value);
38
46
  };
39
47
  exports.isPrimitive = isPrimitive;
@@ -1 +1 @@
1
- {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/utils/internal/type-check.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,QAAQ;CACA,CAAC;AAaX,MAAM,eAAe,GACnB,CAAI,IAAY,EAAE,EAAE,CACpB,CAAC,CAAU,EAAU,EAAE;AACrB,0MAA0M;AAC1M,OAAO,CAAC,KAAK,IAAI,CAAC;AAEtB,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,SAAS,GAAG,eAAe,CAAU,SAAS,CAAC,CAAC;AAC7D,gBAAgB;AACH,QAAA,WAAW,GAAG,eAAe,CAAY,WAAW,CAAC,CAAC;AACnE,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,UAAU;AACrB,oJAAoJ;AACpJ,eAAe,CAAkC,UAAU,CAAC,CAAC;AAC/D,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAE1D,gBAAgB;AACT,MAAM,WAAW,GAAG,CAAC,KAAc,EAA2B,EAAE;IACrE,MAAM,KAAK,GAAsB,cAAc,CAAC;IAChD,yKAAyK;IACzK,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEF,gBAAgB;AACT,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;AAA3D,QAAA,MAAM,UAAqD;AAExE,gBAAgB;AACT,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE,CACtD,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAD7C,QAAA,MAAM,UACuC;AAE1D,gBAAgB;AAChB,4JAA4J;AACrJ,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE;IAChD,IAAI,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAA,gBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,MAAM,UAUjB"}
1
+ {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/utils/internal/type-check.ts"],"names":[],"mappings":";;;AAEA,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,QAAQ;CACA,CAAC;AA6BX,MAAM,eAAe,GACnB,CAAI,IAAkB,EAAE,EAAE,CAC1B,CAAC,CAAU,EAAU,EAAE,CACrB,OAAO,CAAC,KAAK,IAAI,CAAC;AAEtB,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,SAAS,GAAG,eAAe,CAAU,SAAS,CAAC,CAAC;AAC7D,gBAAgB;AACH,QAAA,WAAW,GAAG,eAAe,CAAY,WAAW,CAAC,CAAC;AACnE,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,UAAU;AACrB,oJAAoJ;AACpJ,eAAe,CAAkC,UAAU,CAAC,CAAC;AAC/D;;;;;;GAMG;AACI,MAAM,OAAO,GAAG,CAAC,KAAc,EAAkB,EAAE,CACxD,OAAO,KAAK,KAAK,UAAU;IAC3B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;IACnC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;AAHd,QAAA,OAAO,WAGO;AAC3B,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,gBAAgB;AACH,QAAA,QAAQ,GAAG,eAAe,CAAS,QAAQ,CAAC,CAAC;AAE1D,gBAAgB;AACT,MAAM,WAAW,GAAG,CAAC,KAAc,EAA2B,EAAE;IACrE,MAAM,KAAK,GAAsB,cAAc,CAAC;IAChD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEF,gBAAgB;AACT,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;AAA3D,QAAA,MAAM,UAAqD;AAExE,gBAAgB;AACT,MAAM,MAAM,GAAG,CAAC,KAAc,EAAiB,EAAE,CACtD,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAD7C,QAAA,MAAM,UACuC;AAE1D,gBAAgB;AAChB,4JAA4J;AACrJ,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE;IAChD,IAAI,CAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,IAAA,gBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,MAAM,UAUjB"}
@@ -83,4 +83,4 @@ export declare function isStringDate(value: string): boolean;
83
83
  */
84
84
  export declare function isStringJSON(value: string): boolean;
85
85
  /** @internal */
86
- export declare const assertPrimitiveValue: (value: unknown) => void;
86
+ export declare function assertPrimitiveValue(value: unknown): asserts value is string | number | boolean | Date | null;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertPrimitiveValue = void 0;
4
3
  exports.parseValue = parseValue;
5
4
  exports.parseObject = parseObject;
6
5
  exports.isStringKeyword = isStringKeyword;
7
6
  exports.isStringNumber = isStringNumber;
8
7
  exports.isStringDate = isStringDate;
9
8
  exports.isStringJSON = isStringJSON;
9
+ exports.assertPrimitiveValue = assertPrimitiveValue;
10
10
  const type_check_1 = require("./type-check");
11
11
  const KEYWORD_VALUES = {
12
12
  true: true,
@@ -15,6 +15,23 @@ const KEYWORD_VALUES = {
15
15
  undefined: undefined,
16
16
  };
17
17
  const KEYWORD_LOOKUP = new Map(Object.entries(KEYWORD_VALUES));
18
+ /** What `JSON.parse` answers, read as the value it holds. */
19
+ function parseJsonText(text) {
20
+ const parsed = JSON.parse(text);
21
+ if ((0, type_check_1.isString)(parsed) ||
22
+ (0, type_check_1.isNumber)(parsed) ||
23
+ (0, type_check_1.isBoolean)(parsed) ||
24
+ (0, type_check_1.isNull)(parsed)) {
25
+ return parsed;
26
+ }
27
+ if (Array.isArray(parsed)) {
28
+ const items = parsed;
29
+ return items;
30
+ }
31
+ if ((0, type_check_1.isObject)(parsed))
32
+ return Object.fromEntries(Object.entries(parsed));
33
+ throw new TypeError("JSON text parsed to a value JSON cannot hold");
34
+ }
18
35
  const STRING_TYPE_PARSERS = [
19
36
  {
20
37
  test: isStringKeyword,
@@ -30,7 +47,7 @@ const STRING_TYPE_PARSERS = [
30
47
  },
31
48
  {
32
49
  test: isStringJSON,
33
- parse: (value) => JSON.parse(value),
50
+ parse: parseJsonText,
34
51
  },
35
52
  ];
36
53
  /**
@@ -152,14 +169,10 @@ const PRIMITIVE_TYPE_VALIDATORS = [
152
169
  type_check_1.isNull,
153
170
  ];
154
171
  /** @internal */
155
- // oxlint-disable-next-line anti-slop/no-unknown-parameters -- This published assertion validates arbitrary comparison operands and throws for unsupported values.
156
- const assertPrimitiveValue = (value) => {
172
+ function assertPrimitiveValue(value) {
157
173
  if (PRIMITIVE_TYPE_VALIDATORS.some((test) => test(value))) {
158
174
  return;
159
175
  }
160
- throw new Error(
161
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The error reports the rejected operand's JavaScript tag without changing its validation contract.
162
- `Value must be a string, number, boolean, or Date for is comparison. Got: ${typeof value}`);
163
- };
164
- exports.assertPrimitiveValue = assertPrimitiveValue;
176
+ throw new Error(`Value must be a string, number, boolean, or Date for is comparison. Got: ${typeof value}`);
177
+ }
165
178
  //# sourceMappingURL=value-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-parser.js","sourceRoot":"","sources":["../../../src/utils/internal/value-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-parser.js","sourceRoot":"","sources":["../../../src/utils/internal/value-parser.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export interface WatchAction {
13
13
  component: string;
14
14
  event: string;
15
15
  functionId: string;
16
- params?: Record<string, unknown>;
16
+ params?: object;
17
17
  onParam?: WatchActionCondition | WatchActionCondition[];
18
18
  requirePermission?: string;
19
19
  }