@stackframe/stack-shared 2.8.8 → 2.8.11

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 (476) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/config/format.d.cts +39 -0
  3. package/dist/config/format.d.ts +14 -13
  4. package/dist/config/format.js +147 -206
  5. package/dist/config/format.js.map +1 -0
  6. package/dist/config/schema.d.cts +729 -0
  7. package/dist/config/schema.d.ts +59 -51
  8. package/dist/config/schema.js +232 -172
  9. package/dist/config/schema.js.map +1 -0
  10. package/dist/crud.d.cts +102 -0
  11. package/dist/crud.d.ts +15 -13
  12. package/dist/crud.js +83 -128
  13. package/dist/crud.js.map +1 -0
  14. package/dist/esm/config/format.js +135 -0
  15. package/dist/esm/config/format.js.map +1 -0
  16. package/dist/esm/config/schema.js +201 -0
  17. package/dist/esm/config/schema.js.map +1 -0
  18. package/dist/esm/crud.js +60 -0
  19. package/dist/esm/crud.js.map +1 -0
  20. package/dist/esm/global.d.js +1 -0
  21. package/dist/esm/global.d.js.map +1 -0
  22. package/dist/esm/helpers/password.js +17 -0
  23. package/dist/esm/helpers/password.js.map +1 -0
  24. package/dist/esm/helpers/production-mode.js +50 -0
  25. package/dist/esm/helpers/production-mode.js.map +1 -0
  26. package/dist/esm/hooks/use-async-callback.js +38 -0
  27. package/dist/esm/hooks/use-async-callback.js.map +1 -0
  28. package/dist/esm/hooks/use-async-external-store.js +23 -0
  29. package/dist/esm/hooks/use-async-external-store.js.map +1 -0
  30. package/dist/esm/hooks/use-hash.js +17 -0
  31. package/dist/esm/hooks/use-hash.js.map +1 -0
  32. package/dist/esm/hooks/use-strict-memo.js +61 -0
  33. package/dist/esm/hooks/use-strict-memo.js.map +1 -0
  34. package/dist/esm/index.js +22 -0
  35. package/dist/esm/index.js.map +1 -0
  36. package/dist/esm/interface/adminInterface.js +244 -0
  37. package/dist/esm/interface/adminInterface.js.map +1 -0
  38. package/dist/esm/interface/clientInterface.js +2041 -0
  39. package/dist/esm/interface/clientInterface.js.map +1 -0
  40. package/dist/esm/interface/crud/contact-channels.js +77 -0
  41. package/dist/esm/interface/crud/contact-channels.js.map +1 -0
  42. package/dist/esm/interface/crud/current-user.js +65 -0
  43. package/dist/esm/interface/crud/current-user.js.map +1 -0
  44. package/dist/esm/interface/crud/email-templates.js +52 -0
  45. package/dist/esm/interface/crud/email-templates.js.map +1 -0
  46. package/dist/esm/interface/crud/emails.js +20 -0
  47. package/dist/esm/interface/crud/emails.js.map +1 -0
  48. package/dist/esm/interface/crud/internal-api-keys.js +69 -0
  49. package/dist/esm/interface/crud/internal-api-keys.js.map +1 -0
  50. package/dist/esm/interface/crud/oauth.js +24 -0
  51. package/dist/esm/interface/crud/oauth.js.map +1 -0
  52. package/dist/esm/interface/crud/project-api-keys.js +93 -0
  53. package/dist/esm/interface/crud/project-api-keys.js.map +1 -0
  54. package/dist/esm/interface/crud/project-permissions.js +113 -0
  55. package/dist/esm/interface/crud/project-permissions.js.map +1 -0
  56. package/dist/esm/interface/crud/projects.js +180 -0
  57. package/dist/esm/interface/crud/projects.js.map +1 -0
  58. package/dist/esm/interface/crud/sessions.js +62 -0
  59. package/dist/esm/interface/crud/sessions.js.map +1 -0
  60. package/dist/esm/interface/crud/svix-token.js +22 -0
  61. package/dist/esm/interface/crud/svix-token.js.map +1 -0
  62. package/dist/esm/interface/crud/team-invitation-details.js +23 -0
  63. package/dist/esm/interface/crud/team-invitation-details.js.map +1 -0
  64. package/dist/esm/interface/crud/team-invitation.js +36 -0
  65. package/dist/esm/interface/crud/team-invitation.js.map +1 -0
  66. package/dist/esm/interface/crud/team-member-profiles.js +62 -0
  67. package/dist/esm/interface/crud/team-member-profiles.js.map +1 -0
  68. package/dist/esm/interface/crud/team-memberships.js +60 -0
  69. package/dist/esm/interface/crud/team-memberships.js.map +1 -0
  70. package/dist/esm/interface/crud/team-permissions.js +114 -0
  71. package/dist/esm/interface/crud/team-permissions.js.map +1 -0
  72. package/dist/esm/interface/crud/teams.js +143 -0
  73. package/dist/esm/interface/crud/teams.js.map +1 -0
  74. package/dist/esm/interface/crud/users.js +139 -0
  75. package/dist/esm/interface/crud/users.js.map +1 -0
  76. package/dist/esm/interface/serverInterface.js +485 -0
  77. package/dist/esm/interface/serverInterface.js.map +1 -0
  78. package/dist/esm/interface/webhooks.js +21 -0
  79. package/dist/esm/interface/webhooks.js.map +1 -0
  80. package/dist/esm/known-errors.js +1238 -0
  81. package/dist/esm/known-errors.js.map +1 -0
  82. package/dist/esm/schema-fields.js +484 -0
  83. package/dist/esm/schema-fields.js.map +1 -0
  84. package/dist/esm/sessions.js +168 -0
  85. package/dist/esm/sessions.js.map +1 -0
  86. package/dist/esm/utils/api-keys.js +79 -0
  87. package/dist/esm/utils/api-keys.js.map +1 -0
  88. package/dist/esm/utils/arrays.js +78 -0
  89. package/dist/esm/utils/arrays.js.map +1 -0
  90. package/dist/esm/utils/base64.js +18 -0
  91. package/dist/esm/utils/base64.js.map +1 -0
  92. package/dist/esm/utils/booleans.js +12 -0
  93. package/dist/esm/utils/booleans.js.map +1 -0
  94. package/dist/esm/utils/browser-compat.js +21 -0
  95. package/dist/esm/utils/browser-compat.js.map +1 -0
  96. package/dist/esm/utils/bytes.js +160 -0
  97. package/dist/esm/utils/bytes.js.map +1 -0
  98. package/dist/esm/utils/caches.js +167 -0
  99. package/dist/esm/utils/caches.js.map +1 -0
  100. package/dist/esm/utils/compile-time.js +11 -0
  101. package/dist/esm/utils/compile-time.js.map +1 -0
  102. package/dist/esm/utils/crypto.js +25 -0
  103. package/dist/esm/utils/crypto.js.map +1 -0
  104. package/dist/esm/utils/dates.js +64 -0
  105. package/dist/esm/utils/dates.js.map +1 -0
  106. package/dist/esm/utils/dom.js +11 -0
  107. package/dist/esm/utils/dom.js.map +1 -0
  108. package/dist/esm/utils/env.js +58 -0
  109. package/dist/esm/utils/env.js.map +1 -0
  110. package/dist/esm/utils/errors.js +174 -0
  111. package/dist/esm/utils/errors.js.map +1 -0
  112. package/dist/esm/utils/fs.js +37 -0
  113. package/dist/esm/utils/fs.js.map +1 -0
  114. package/dist/esm/utils/functions.js +12 -0
  115. package/dist/esm/utils/functions.js.map +1 -0
  116. package/dist/esm/utils/geo.js +15 -0
  117. package/dist/esm/utils/geo.js.map +1 -0
  118. package/dist/esm/utils/globals.js +18 -0
  119. package/dist/esm/utils/globals.js.map +1 -0
  120. package/dist/esm/utils/hashes.js +55 -0
  121. package/dist/esm/utils/hashes.js.map +1 -0
  122. package/dist/esm/utils/html.js +13 -0
  123. package/dist/esm/utils/html.js.map +1 -0
  124. package/dist/esm/utils/http.js +60 -0
  125. package/dist/esm/utils/http.js.map +1 -0
  126. package/dist/esm/utils/ips.js +15 -0
  127. package/dist/esm/utils/ips.js.map +1 -0
  128. package/dist/esm/utils/json.js +31 -0
  129. package/dist/esm/utils/json.js.map +1 -0
  130. package/dist/esm/utils/jwt.js +87 -0
  131. package/dist/esm/utils/jwt.js.map +1 -0
  132. package/dist/esm/utils/locks.js +57 -0
  133. package/dist/esm/utils/locks.js.map +1 -0
  134. package/dist/esm/utils/maps.js +181 -0
  135. package/dist/esm/utils/maps.js.map +1 -0
  136. package/dist/esm/utils/math.js +8 -0
  137. package/dist/esm/utils/math.js.map +1 -0
  138. package/dist/esm/utils/node-http.js +42 -0
  139. package/dist/esm/utils/node-http.js.map +1 -0
  140. package/dist/esm/utils/numbers.js +32 -0
  141. package/dist/esm/utils/numbers.js.map +1 -0
  142. package/dist/esm/utils/oauth.js +10 -0
  143. package/dist/esm/utils/oauth.js.map +1 -0
  144. package/dist/esm/utils/objects.js +177 -0
  145. package/dist/esm/utils/objects.js.map +1 -0
  146. package/dist/esm/utils/passkey.js +1 -0
  147. package/dist/esm/utils/passkey.js.map +1 -0
  148. package/dist/esm/utils/promises.js +233 -0
  149. package/dist/esm/utils/promises.js.map +1 -0
  150. package/dist/esm/utils/proxies.js +128 -0
  151. package/dist/esm/utils/proxies.js.map +1 -0
  152. package/dist/esm/utils/react.js +78 -0
  153. package/dist/esm/utils/react.js.map +1 -0
  154. package/dist/esm/utils/results.js +141 -0
  155. package/dist/esm/utils/results.js.map +1 -0
  156. package/dist/esm/utils/sentry.js +20 -0
  157. package/dist/esm/utils/sentry.js.map +1 -0
  158. package/dist/esm/utils/stores.js +195 -0
  159. package/dist/esm/utils/stores.js.map +1 -0
  160. package/dist/esm/utils/strings.js +295 -0
  161. package/dist/esm/utils/strings.js.map +1 -0
  162. package/dist/esm/utils/strings.nicify.test.js +222 -0
  163. package/dist/esm/utils/strings.nicify.test.js.map +1 -0
  164. package/dist/esm/utils/types.js +1 -0
  165. package/dist/esm/utils/types.js.map +1 -0
  166. package/dist/esm/utils/unicode.js +11 -0
  167. package/dist/esm/utils/unicode.js.map +1 -0
  168. package/dist/esm/utils/urls.js +53 -0
  169. package/dist/esm/utils/urls.js.map +1 -0
  170. package/dist/esm/utils/uuids.js +16 -0
  171. package/dist/esm/utils/uuids.js.map +1 -0
  172. package/dist/global.d.d.cts +1 -0
  173. package/dist/global.d.d.ts +1 -0
  174. package/dist/global.d.js +2 -0
  175. package/dist/global.d.js.map +1 -0
  176. package/dist/helpers/password.d.cts +11 -0
  177. package/dist/helpers/password.d.ts +11 -2
  178. package/dist/helpers/password.js +41 -11
  179. package/dist/helpers/password.js.map +1 -0
  180. package/dist/helpers/production-mode.d.cts +12 -0
  181. package/dist/helpers/production-mode.d.ts +9 -3
  182. package/dist/helpers/production-mode.js +72 -45
  183. package/dist/helpers/production-mode.js.map +1 -0
  184. package/dist/hooks/use-async-callback.d.cts +6 -0
  185. package/dist/hooks/use-async-callback.d.ts +6 -3
  186. package/dist/hooks/use-async-callback.js +72 -30
  187. package/dist/hooks/use-async-callback.js.map +1 -0
  188. package/dist/hooks/use-async-external-store.d.cts +7 -0
  189. package/dist/hooks/use-async-external-store.d.ts +5 -2
  190. package/dist/hooks/use-async-external-store.js +47 -19
  191. package/dist/hooks/use-async-external-store.js.map +1 -0
  192. package/dist/hooks/use-hash.d.cts +3 -0
  193. package/dist/hooks/use-hash.d.ts +3 -1
  194. package/dist/hooks/use-hash.js +41 -8
  195. package/dist/hooks/use-hash.js.map +1 -0
  196. package/dist/hooks/use-strict-memo.d.cts +8 -0
  197. package/dist/hooks/use-strict-memo.d.ts +3 -1
  198. package/dist/hooks/use-strict-memo.js +78 -131
  199. package/dist/hooks/use-strict-memo.js.map +1 -0
  200. package/dist/index.d.cts +30 -0
  201. package/dist/index.d.ts +30 -4
  202. package/dist/index.js +42 -4
  203. package/dist/index.js.map +1 -0
  204. package/dist/interface/adminInterface.d.cts +94 -0
  205. package/dist/interface/adminInterface.d.ts +38 -15
  206. package/dist/interface/adminInterface.js +269 -174
  207. package/dist/interface/adminInterface.js.map +1 -0
  208. package/dist/interface/clientInterface.d.cts +260 -0
  209. package/dist/interface/clientInterface.d.ts +25 -18
  210. package/dist/interface/clientInterface.js +2054 -995
  211. package/dist/interface/clientInterface.js.map +1 -0
  212. package/dist/interface/crud/contact-channels.d.cts +180 -0
  213. package/dist/interface/crud/contact-channels.d.ts +30 -25
  214. package/dist/interface/crud/contact-channels.js +101 -59
  215. package/dist/interface/crud/contact-channels.js.map +1 -0
  216. package/dist/interface/crud/current-user.d.cts +205 -0
  217. package/dist/interface/crud/current-user.d.ts +17 -12
  218. package/dist/interface/crud/current-user.js +86 -56
  219. package/dist/interface/crud/current-user.js.map +1 -0
  220. package/dist/interface/crud/email-templates.d.cts +84 -0
  221. package/dist/interface/crud/email-templates.d.ts +24 -19
  222. package/dist/interface/crud/email-templates.js +77 -37
  223. package/dist/interface/crud/email-templates.js.map +1 -0
  224. package/dist/interface/crud/emails.d.cts +69 -0
  225. package/dist/interface/crud/emails.d.ts +12 -7
  226. package/dist/interface/crud/emails.js +54 -12
  227. package/dist/interface/crud/emails.js.map +1 -0
  228. package/dist/interface/crud/internal-api-keys.d.cts +139 -0
  229. package/dist/interface/crud/internal-api-keys.d.ts +22 -17
  230. package/dist/interface/crud/internal-api-keys.js +92 -54
  231. package/dist/interface/crud/internal-api-keys.js.map +1 -0
  232. package/dist/interface/crud/oauth.d.cts +34 -0
  233. package/dist/interface/crud/oauth.d.ts +16 -11
  234. package/dist/interface/crud/oauth.js +48 -14
  235. package/dist/interface/crud/oauth.js.map +1 -0
  236. package/dist/interface/crud/project-api-keys.d.cts +196 -0
  237. package/dist/interface/crud/project-api-keys.d.ts +20 -12
  238. package/dist/interface/crud/project-api-keys.js +121 -74
  239. package/dist/interface/crud/project-api-keys.js.map +1 -0
  240. package/dist/interface/crud/project-permissions.d.cts +160 -0
  241. package/dist/interface/crud/project-permissions.d.ts +38 -33
  242. package/dist/interface/crud/project-permissions.js +148 -90
  243. package/dist/interface/crud/project-permissions.js.map +1 -0
  244. package/dist/interface/crud/projects.d.cts +627 -0
  245. package/dist/interface/crud/projects.d.ts +43 -51
  246. package/dist/interface/crud/projects.js +210 -156
  247. package/dist/interface/crud/projects.js.map +1 -0
  248. package/dist/interface/crud/sessions.d.cts +149 -0
  249. package/dist/interface/crud/sessions.d.ts +21 -16
  250. package/dist/interface/crud/sessions.js +86 -50
  251. package/dist/interface/crud/sessions.js.map +1 -0
  252. package/dist/interface/crud/svix-token.d.cts +26 -0
  253. package/dist/interface/crud/svix-token.d.ts +14 -9
  254. package/dist/interface/crud/svix-token.js +46 -12
  255. package/dist/interface/crud/svix-token.js.map +1 -0
  256. package/dist/interface/crud/team-invitation-details.d.cts +30 -0
  257. package/dist/interface/crud/team-invitation-details.d.ts +12 -7
  258. package/dist/interface/crud/team-invitation-details.js +57 -15
  259. package/dist/interface/crud/team-invitation-details.js.map +1 -0
  260. package/dist/interface/crud/team-invitation.d.cts +49 -0
  261. package/dist/interface/crud/team-invitation.d.ts +13 -8
  262. package/dist/interface/crud/team-invitation.js +69 -27
  263. package/dist/interface/crud/team-invitation.js.map +1 -0
  264. package/dist/interface/crud/team-member-profiles.d.cts +229 -0
  265. package/dist/interface/crud/team-member-profiles.d.ts +20 -15
  266. package/dist/interface/crud/team-member-profiles.js +95 -49
  267. package/dist/interface/crud/team-member-profiles.js.map +1 -0
  268. package/dist/interface/crud/team-memberships.d.cts +74 -0
  269. package/dist/interface/crud/team-memberships.d.ts +22 -17
  270. package/dist/interface/crud/team-memberships.js +85 -45
  271. package/dist/interface/crud/team-memberships.js.map +1 -0
  272. package/dist/interface/crud/team-permissions.d.cts +168 -0
  273. package/dist/interface/crud/team-permissions.d.ts +38 -33
  274. package/dist/interface/crud/team-permissions.js +149 -91
  275. package/dist/interface/crud/team-permissions.js.map +1 -0
  276. package/dist/interface/crud/teams.d.cts +298 -0
  277. package/dist/interface/crud/teams.d.ts +45 -40
  278. package/dist/interface/crud/teams.js +177 -119
  279. package/dist/interface/crud/teams.js.map +1 -0
  280. package/dist/interface/crud/users.d.cts +469 -0
  281. package/dist/interface/crud/users.d.ts +31 -26
  282. package/dist/interface/crud/users.js +172 -118
  283. package/dist/interface/crud/users.js.map +1 -0
  284. package/dist/interface/serverInterface.d.cts +128 -0
  285. package/dist/interface/serverInterface.d.ts +29 -17
  286. package/dist/interface/serverInterface.js +506 -339
  287. package/dist/interface/serverInterface.js.map +1 -0
  288. package/dist/interface/webhooks.d.cts +292 -0
  289. package/dist/interface/webhooks.d.ts +6 -3
  290. package/dist/interface/webhooks.js +45 -15
  291. package/dist/interface/webhooks.js.map +1 -0
  292. package/dist/known-errors.d.cts +447 -0
  293. package/dist/known-errors.d.ts +15 -9
  294. package/dist/known-errors.js +1104 -562
  295. package/dist/known-errors.js.map +1 -0
  296. package/dist/schema-fields.d.cts +163 -0
  297. package/dist/schema-fields.d.ts +116 -114
  298. package/dist/schema-fields.js +593 -427
  299. package/dist/schema-fields.js.map +1 -0
  300. package/dist/sessions.d.cts +109 -0
  301. package/dist/sessions.d.ts +6 -3
  302. package/dist/sessions.js +201 -172
  303. package/dist/sessions.js.map +1 -0
  304. package/dist/utils/api-keys.d.cts +24 -0
  305. package/dist/utils/api-keys.d.ts +5 -4
  306. package/dist/utils/api-keys.js +106 -66
  307. package/dist/utils/api-keys.js.map +1 -0
  308. package/dist/utils/arrays.d.cts +18 -0
  309. package/dist/utils/arrays.d.ts +15 -13
  310. package/dist/utils/arrays.js +101 -168
  311. package/dist/utils/arrays.js.map +1 -0
  312. package/dist/utils/base64.d.cts +4 -0
  313. package/dist/utils/base64.d.ts +4 -2
  314. package/dist/utils/base64.js +41 -20
  315. package/dist/utils/base64.js.map +1 -0
  316. package/dist/utils/booleans.d.cts +6 -0
  317. package/dist/utils/booleans.d.ts +6 -4
  318. package/dist/utils/booleans.js +35 -27
  319. package/dist/utils/booleans.js.map +1 -0
  320. package/dist/utils/browser-compat.d.cts +8 -0
  321. package/dist/utils/browser-compat.d.ts +3 -1
  322. package/dist/utils/browser-compat.js +45 -16
  323. package/dist/utils/browser-compat.js.map +1 -0
  324. package/dist/utils/bytes.d.cts +15 -0
  325. package/dist/utils/bytes.d.ts +15 -13
  326. package/dist/utils/bytes.js +182 -270
  327. package/dist/utils/bytes.js.map +1 -0
  328. package/dist/utils/caches.d.cts +98 -0
  329. package/dist/utils/caches.d.ts +17 -14
  330. package/dist/utils/caches.js +188 -193
  331. package/dist/utils/caches.js.map +1 -0
  332. package/dist/utils/compile-time.d.cts +8 -0
  333. package/dist/utils/compile-time.d.ts +3 -1
  334. package/dist/utils/compile-time.js +35 -10
  335. package/dist/utils/compile-time.js.map +1 -0
  336. package/dist/utils/crypto.d.cts +8 -0
  337. package/dist/utils/crypto.d.ts +4 -2
  338. package/dist/utils/crypto.js +49 -21
  339. package/dist/utils/crypto.js.map +1 -0
  340. package/dist/utils/dates.d.cts +15 -0
  341. package/dist/utils/dates.d.ts +6 -4
  342. package/dist/utils/dates.js +83 -105
  343. package/dist/utils/dates.js.map +1 -0
  344. package/dist/utils/dom.d.cts +3 -0
  345. package/dist/utils/dom.d.ts +3 -1
  346. package/dist/utils/dom.js +35 -7
  347. package/dist/utils/dom.js.map +1 -0
  348. package/dist/utils/env.d.cts +9 -0
  349. package/dist/utils/env.d.ts +6 -4
  350. package/dist/utils/env.js +70 -43
  351. package/dist/utils/env.js.map +1 -0
  352. package/dist/utils/errors.d.cts +223 -0
  353. package/dist/utils/errors.d.ts +14 -11
  354. package/dist/utils/errors.js +148 -126
  355. package/dist/utils/errors.js.map +1 -0
  356. package/dist/utils/fs.d.cts +7 -0
  357. package/dist/utils/fs.d.ts +5 -3
  358. package/dist/utils/fs.js +70 -27
  359. package/dist/utils/fs.js.map +1 -0
  360. package/dist/utils/functions.d.cts +4 -0
  361. package/dist/utils/functions.d.ts +4 -2
  362. package/dist/utils/functions.js +35 -18
  363. package/dist/utils/functions.js.map +1 -0
  364. package/dist/utils/geo.d.cts +22 -0
  365. package/dist/utils/geo.d.ts +6 -3
  366. package/dist/utils/geo.js +39 -9
  367. package/dist/utils/geo.js.map +1 -0
  368. package/dist/utils/globals.d.cts +5 -0
  369. package/dist/utils/globals.d.ts +4 -2
  370. package/dist/utils/globals.js +41 -14
  371. package/dist/utils/globals.js.map +1 -0
  372. package/dist/utils/hashes.d.cts +7 -0
  373. package/dist/utils/hashes.d.ts +7 -5
  374. package/dist/utils/hashes.js +87 -41
  375. package/dist/utils/hashes.js.map +1 -0
  376. package/dist/utils/html.d.cts +4 -0
  377. package/dist/utils/html.d.ts +4 -2
  378. package/dist/utils/html.js +36 -37
  379. package/dist/utils/html.js.map +1 -0
  380. package/dist/utils/http.d.cts +43 -0
  381. package/dist/utils/http.d.ts +6 -4
  382. package/dist/utils/http.js +83 -83
  383. package/dist/utils/http.js.map +1 -0
  384. package/dist/utils/ips.d.cts +6 -0
  385. package/dist/utils/ips.d.ts +6 -4
  386. package/dist/utils/ips.js +48 -35
  387. package/dist/utils/ips.js.map +1 -0
  388. package/dist/utils/json.d.cts +13 -0
  389. package/dist/utils/json.d.ts +9 -6
  390. package/dist/utils/json.js +54 -157
  391. package/dist/utils/json.js.map +1 -0
  392. package/dist/utils/jwt.d.cts +44 -0
  393. package/dist/utils/jwt.d.ts +14 -11
  394. package/dist/utils/jwt.js +119 -84
  395. package/dist/utils/jwt.js.map +1 -0
  396. package/dist/utils/locks.d.cts +15 -0
  397. package/dist/utils/locks.d.ts +3 -2
  398. package/dist/utils/locks.js +76 -56
  399. package/dist/utils/locks.js.map +1 -0
  400. package/dist/utils/maps.d.cts +59 -0
  401. package/dist/utils/maps.d.ts +6 -4
  402. package/dist/utils/maps.js +207 -343
  403. package/dist/utils/maps.js.map +1 -0
  404. package/dist/utils/math.d.cts +6 -0
  405. package/dist/utils/math.d.ts +3 -1
  406. package/dist/utils/math.js +31 -16
  407. package/dist/utils/math.js.map +1 -0
  408. package/dist/utils/node-http.d.cts +15 -0
  409. package/dist/utils/node-http.d.ts +5 -5
  410. package/dist/utils/node-http.js +65 -36
  411. package/dist/utils/node-http.js.map +1 -0
  412. package/dist/utils/numbers.d.cts +5 -0
  413. package/dist/utils/numbers.d.ts +5 -3
  414. package/dist/utils/numbers.js +53 -66
  415. package/dist/utils/numbers.js.map +1 -0
  416. package/dist/utils/oauth.d.cts +8 -0
  417. package/dist/utils/oauth.d.ts +8 -6
  418. package/dist/utils/oauth.js +37 -4
  419. package/dist/utils/oauth.js.map +1 -0
  420. package/dist/utils/objects.d.cts +69 -0
  421. package/dist/utils/objects.d.ts +37 -32
  422. package/dist/utils/objects.js +224 -374
  423. package/dist/utils/objects.js.map +1 -0
  424. package/dist/utils/passkey.d.cts +1 -0
  425. package/dist/utils/passkey.d.ts +1 -1
  426. package/dist/utils/passkey.js +19 -1
  427. package/dist/utils/passkey.js.map +1 -0
  428. package/dist/utils/promises.d.cts +74 -0
  429. package/dist/utils/promises.d.ts +20 -18
  430. package/dist/utils/promises.js +252 -393
  431. package/dist/utils/promises.js.map +1 -0
  432. package/dist/utils/proxies.d.cts +4 -0
  433. package/dist/utils/proxies.d.ts +4 -2
  434. package/dist/utils/proxies.js +150 -161
  435. package/dist/utils/proxies.js.map +1 -0
  436. package/dist/utils/react.d.cts +25 -0
  437. package/dist/utils/react.d.ts +9 -6
  438. package/dist/utils/react.js +88 -134
  439. package/dist/utils/react.js.map +1 -0
  440. package/dist/utils/results.d.cts +78 -0
  441. package/dist/utils/results.d.ts +10 -9
  442. package/dist/utils/results.js +143 -324
  443. package/dist/utils/results.js.map +1 -0
  444. package/dist/utils/sentry.d.cts +5 -0
  445. package/dist/utils/sentry.d.ts +5 -2
  446. package/dist/utils/sentry.js +44 -14
  447. package/dist/utils/sentry.js.map +1 -0
  448. package/dist/utils/stores.d.cts +102 -0
  449. package/dist/utils/stores.d.ts +12 -9
  450. package/dist/utils/stores.js +219 -189
  451. package/dist/utils/stores.js.map +1 -0
  452. package/dist/utils/strings.d.cts +72 -0
  453. package/dist/utils/strings.d.ts +22 -20
  454. package/dist/utils/strings.js +300 -580
  455. package/dist/utils/strings.js.map +1 -0
  456. package/dist/utils/strings.nicify.test.d.cts +2 -0
  457. package/dist/utils/strings.nicify.test.d.ts +2 -1
  458. package/dist/utils/strings.nicify.test.js +168 -158
  459. package/dist/utils/strings.nicify.test.js.map +1 -0
  460. package/dist/utils/types.d.cts +23 -0
  461. package/dist/utils/types.d.ts +8 -6
  462. package/dist/utils/types.js +19 -1
  463. package/dist/utils/types.js.map +1 -0
  464. package/dist/utils/unicode.d.cts +3 -0
  465. package/dist/utils/unicode.d.ts +3 -1
  466. package/dist/utils/unicode.js +34 -21
  467. package/dist/utils/unicode.js.map +1 -0
  468. package/dist/utils/urls.d.cts +20 -0
  469. package/dist/utils/urls.d.ts +10 -8
  470. package/dist/utils/urls.js +76 -165
  471. package/dist/utils/urls.js.map +1 -0
  472. package/dist/utils/uuids.d.cts +4 -0
  473. package/dist/utils/uuids.d.ts +4 -2
  474. package/dist/utils/uuids.js +39 -35
  475. package/dist/utils/uuids.js.map +1 -0
  476. package/package.json +5 -5
@@ -1,185 +1,245 @@
1
- import * as schemaFields from "../schema-fields";
2
- import { yupBoolean, yupObject, yupRecord, yupString } from "../schema-fields";
3
- import { allProviders } from "../utils/oauth";
4
- import { get, has, isObjectLike, set } from "../utils/objects";
5
- // NOTE: The validation schemas in here are all schematic validators, not sanity-check validators.
6
- // For more info, see ./README.md
7
- export const configLevels = ['project', 'branch', 'environment', 'organization'];
8
- const permissionRegex = /^\$?[a-z0-9_:]+$/;
9
- /**
10
- * All fields that can be overridden at this level.
11
- */
12
- export const projectConfigSchema = yupObject({});
13
- // --- NEW RBAC Schema ---
14
- const branchRbacDefaultPermissions = yupRecord(yupString().optional().matches(permissionRegex), yupBoolean().isTrue().optional()).optional();
15
- const branchRbacSchema = yupObject({
16
- permissions: yupRecord(yupString().optional().matches(permissionRegex), yupObject({
17
- description: yupString().optional(),
18
- scope: yupString().oneOf(['team', 'project']).optional(),
19
- containedPermissionIds: yupRecord(yupString().optional().matches(permissionRegex), yupBoolean().isTrue().optional()).optional(),
20
- }).optional()).optional(),
21
- defaultPermissions: yupObject({
22
- teamCreator: branchRbacDefaultPermissions,
23
- teamMember: branchRbacDefaultPermissions,
24
- signUp: branchRbacDefaultPermissions,
25
- }).optional(),
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/config/schema.ts
31
+ var schema_exports = {};
32
+ __export(schema_exports, {
33
+ applyDefaults: () => applyDefaults,
34
+ branchConfigDefaults: () => branchConfigDefaults,
35
+ branchConfigSchema: () => branchConfigSchema,
36
+ configLevels: () => configLevels,
37
+ environmentConfigDefaults: () => environmentConfigDefaults,
38
+ environmentConfigSchema: () => environmentConfigSchema,
39
+ organizationConfigDefaults: () => organizationConfigDefaults,
40
+ organizationConfigSchema: () => organizationConfigSchema,
41
+ projectConfigDefaults: () => projectConfigDefaults,
42
+ projectConfigSchema: () => projectConfigSchema
43
+ });
44
+ module.exports = __toCommonJS(schema_exports);
45
+ var schemaFields = __toESM(require("../schema-fields"), 1);
46
+ var import_schema_fields = require("../schema-fields");
47
+ var import_oauth = require("../utils/oauth");
48
+ var import_objects = require("../utils/objects");
49
+ var configLevels = ["project", "branch", "environment", "organization"];
50
+ var permissionRegex = /^\$?[a-z0-9_:]+$/;
51
+ var customPermissionRegex = /^[a-z0-9_:]+$/;
52
+ var projectConfigSchema = (0, import_schema_fields.yupObject)({});
53
+ var branchRbacDefaultPermissions = (0, import_schema_fields.yupRecord)(
54
+ (0, import_schema_fields.yupString)().optional().matches(permissionRegex),
55
+ (0, import_schema_fields.yupBoolean)().isTrue().optional()
56
+ ).optional();
57
+ var branchRbacSchema = (0, import_schema_fields.yupObject)({
58
+ permissions: (0, import_schema_fields.yupRecord)(
59
+ (0, import_schema_fields.yupString)().optional().matches(customPermissionRegex),
60
+ (0, import_schema_fields.yupObject)({
61
+ description: (0, import_schema_fields.yupString)().optional(),
62
+ scope: (0, import_schema_fields.yupString)().oneOf(["team", "project"]).optional(),
63
+ containedPermissionIds: (0, import_schema_fields.yupRecord)(
64
+ (0, import_schema_fields.yupString)().optional().matches(permissionRegex),
65
+ (0, import_schema_fields.yupBoolean)().isTrue().optional()
66
+ ).optional()
67
+ }).optional()
68
+ ).optional(),
69
+ defaultPermissions: (0, import_schema_fields.yupObject)({
70
+ teamCreator: branchRbacDefaultPermissions,
71
+ teamMember: branchRbacDefaultPermissions,
72
+ signUp: branchRbacDefaultPermissions
73
+ }).optional()
26
74
  }).optional();
27
- // --- END NEW RBAC Schema ---
28
- // --- NEW API Keys Schema ---
29
- const branchApiKeysSchema = yupObject({
30
- enabled: yupObject({
31
- team: yupBoolean().optional(),
32
- user: yupBoolean().optional(),
33
- }).optional(),
75
+ var branchApiKeysSchema = (0, import_schema_fields.yupObject)({
76
+ enabled: (0, import_schema_fields.yupObject)({
77
+ team: (0, import_schema_fields.yupBoolean)().optional(),
78
+ user: (0, import_schema_fields.yupBoolean)().optional()
79
+ }).optional()
34
80
  }).optional();
35
- // --- END NEW API Keys Schema ---
36
- const branchAuthSchema = yupObject({
37
- allowSignUp: yupBoolean().optional(),
38
- password: yupObject({
39
- allowSignIn: yupBoolean().optional(),
40
- }).optional(),
41
- otp: yupObject({
42
- allowSignIn: yupBoolean().optional(),
43
- }).optional(),
44
- passkey: yupObject({
45
- allowSignIn: yupBoolean().optional(),
46
- }).optional(),
47
- oauth: yupObject({
48
- accountMergeStrategy: yupString().oneOf(['link_method', 'raise_error', 'allow_duplicates']).optional(),
49
- providers: yupRecord(yupString().optional().matches(permissionRegex), yupObject({
50
- type: yupString().oneOf(allProviders).optional(),
51
- allowSignIn: yupBoolean().optional(),
52
- allowConnectedAccounts: yupBoolean().optional(),
53
- }).defined()).optional(),
54
- }).optional(),
81
+ var branchAuthSchema = (0, import_schema_fields.yupObject)({
82
+ allowSignUp: (0, import_schema_fields.yupBoolean)().optional(),
83
+ password: (0, import_schema_fields.yupObject)({
84
+ allowSignIn: (0, import_schema_fields.yupBoolean)().optional()
85
+ }).optional(),
86
+ otp: (0, import_schema_fields.yupObject)({
87
+ allowSignIn: (0, import_schema_fields.yupBoolean)().optional()
88
+ }).optional(),
89
+ passkey: (0, import_schema_fields.yupObject)({
90
+ allowSignIn: (0, import_schema_fields.yupBoolean)().optional()
91
+ }).optional(),
92
+ oauth: (0, import_schema_fields.yupObject)({
93
+ accountMergeStrategy: (0, import_schema_fields.yupString)().oneOf(["link_method", "raise_error", "allow_duplicates"]).optional(),
94
+ providers: (0, import_schema_fields.yupRecord)(
95
+ (0, import_schema_fields.yupString)().optional().matches(permissionRegex),
96
+ (0, import_schema_fields.yupObject)({
97
+ type: (0, import_schema_fields.yupString)().oneOf(import_oauth.allProviders).optional(),
98
+ allowSignIn: (0, import_schema_fields.yupBoolean)().optional(),
99
+ allowConnectedAccounts: (0, import_schema_fields.yupBoolean)().optional()
100
+ }).defined()
101
+ ).optional()
102
+ }).optional()
55
103
  }).optional();
56
- const branchDomain = yupObject({
57
- allowLocalhost: yupBoolean().optional(),
104
+ var branchDomain = (0, import_schema_fields.yupObject)({
105
+ allowLocalhost: (0, import_schema_fields.yupBoolean)().optional()
58
106
  }).optional();
59
- export const branchConfigSchema = projectConfigSchema.concat(yupObject({
60
- rbac: branchRbacSchema,
61
- teams: yupObject({
62
- createPersonalTeamOnSignUp: yupBoolean().optional(),
63
- allowClientTeamCreation: yupBoolean().optional(),
64
- }).optional(),
65
- users: yupObject({
66
- allowClientUserDeletion: yupBoolean().optional(),
67
- }).optional(),
68
- apiKeys: branchApiKeysSchema,
69
- domains: branchDomain,
70
- auth: branchAuthSchema,
71
- emails: yupObject({}),
107
+ var branchConfigSchema = projectConfigSchema.concat((0, import_schema_fields.yupObject)({
108
+ rbac: branchRbacSchema,
109
+ teams: (0, import_schema_fields.yupObject)({
110
+ createPersonalTeamOnSignUp: (0, import_schema_fields.yupBoolean)().optional(),
111
+ allowClientTeamCreation: (0, import_schema_fields.yupBoolean)().optional()
112
+ }).optional(),
113
+ users: (0, import_schema_fields.yupObject)({
114
+ allowClientUserDeletion: (0, import_schema_fields.yupBoolean)().optional()
115
+ }).optional(),
116
+ apiKeys: branchApiKeysSchema,
117
+ domains: branchDomain,
118
+ auth: branchAuthSchema,
119
+ emails: (0, import_schema_fields.yupObject)({})
72
120
  }));
73
- export const environmentConfigSchema = branchConfigSchema.concat(yupObject({
74
- auth: branchConfigSchema.getNested("auth").concat(yupObject({
75
- oauth: branchConfigSchema.getNested("auth").getNested("oauth").concat(yupObject({
76
- providers: yupRecord(yupString().optional().matches(permissionRegex), yupObject({
77
- type: yupString().oneOf(allProviders).optional(),
78
- isShared: yupBoolean().optional(),
79
- clientId: schemaFields.oauthClientIdSchema.optional(),
80
- clientSecret: schemaFields.oauthClientSecretSchema.optional(),
81
- facebookConfigId: schemaFields.oauthFacebookConfigIdSchema.optional(),
82
- microsoftTenantId: schemaFields.oauthMicrosoftTenantIdSchema.optional(),
83
- allowSignIn: yupBoolean().optional(),
84
- allowConnectedAccounts: yupBoolean().optional(),
85
- })).optional(),
86
- }).optional()),
87
- })),
88
- emails: branchConfigSchema.getNested("emails").concat(yupObject({
89
- server: yupObject({
90
- isShared: yupBoolean().optional(),
91
- host: schemaFields.emailHostSchema.optional().nonEmpty(),
92
- port: schemaFields.emailPortSchema.optional(),
93
- username: schemaFields.emailUsernameSchema.optional().nonEmpty(),
94
- password: schemaFields.emailPasswordSchema.optional().nonEmpty(),
95
- senderName: schemaFields.emailSenderNameSchema.optional().nonEmpty(),
96
- senderEmail: schemaFields.emailSenderEmailSchema.optional().nonEmpty(),
97
- }),
98
- }).optional()),
99
- domains: branchConfigSchema.getNested("domains").concat(yupObject({
100
- trustedDomains: yupRecord(yupString().uuid().optional(), yupObject({
101
- baseUrl: schemaFields.urlSchema.optional(),
102
- handlerPath: schemaFields.handlerPathSchema.optional(),
103
- })).optional(),
104
- })),
121
+ var environmentConfigSchema = branchConfigSchema.concat((0, import_schema_fields.yupObject)({
122
+ auth: branchConfigSchema.getNested("auth").concat((0, import_schema_fields.yupObject)({
123
+ oauth: branchConfigSchema.getNested("auth").getNested("oauth").concat((0, import_schema_fields.yupObject)({
124
+ providers: (0, import_schema_fields.yupRecord)(
125
+ (0, import_schema_fields.yupString)().optional().matches(permissionRegex),
126
+ (0, import_schema_fields.yupObject)({
127
+ type: (0, import_schema_fields.yupString)().oneOf(import_oauth.allProviders).optional(),
128
+ isShared: (0, import_schema_fields.yupBoolean)().optional(),
129
+ clientId: schemaFields.oauthClientIdSchema.optional(),
130
+ clientSecret: schemaFields.oauthClientSecretSchema.optional(),
131
+ facebookConfigId: schemaFields.oauthFacebookConfigIdSchema.optional(),
132
+ microsoftTenantId: schemaFields.oauthMicrosoftTenantIdSchema.optional(),
133
+ allowSignIn: (0, import_schema_fields.yupBoolean)().optional(),
134
+ allowConnectedAccounts: (0, import_schema_fields.yupBoolean)().optional()
135
+ })
136
+ ).optional()
137
+ }).optional())
138
+ })),
139
+ emails: branchConfigSchema.getNested("emails").concat((0, import_schema_fields.yupObject)({
140
+ server: (0, import_schema_fields.yupObject)({
141
+ isShared: (0, import_schema_fields.yupBoolean)().optional(),
142
+ host: schemaFields.emailHostSchema.optional().nonEmpty(),
143
+ port: schemaFields.emailPortSchema.optional(),
144
+ username: schemaFields.emailUsernameSchema.optional().nonEmpty(),
145
+ password: schemaFields.emailPasswordSchema.optional().nonEmpty(),
146
+ senderName: schemaFields.emailSenderNameSchema.optional().nonEmpty(),
147
+ senderEmail: schemaFields.emailSenderEmailSchema.optional().nonEmpty()
148
+ })
149
+ }).optional()),
150
+ domains: branchConfigSchema.getNested("domains").concat((0, import_schema_fields.yupObject)({
151
+ trustedDomains: (0, import_schema_fields.yupRecord)(
152
+ (0, import_schema_fields.yupString)().uuid().optional(),
153
+ (0, import_schema_fields.yupObject)({
154
+ baseUrl: schemaFields.urlSchema.optional(),
155
+ handlerPath: schemaFields.handlerPathSchema.optional()
156
+ })
157
+ ).optional()
158
+ }))
105
159
  }));
106
- export const organizationConfigSchema = environmentConfigSchema.concat(yupObject({}));
107
- // Defaults
108
- // these are objects that are merged together to form the rendered config (see ./README.md)
109
- // Wherever an object could be used as a value, a function can instead be used to generate the default values on a per-key basis
110
- export const projectConfigDefaults = {};
111
- export const branchConfigDefaults = {};
112
- export const environmentConfigDefaults = {};
113
- export const organizationConfigDefaults = {
114
- rbac: {
115
- permissions: (key) => ({}),
116
- defaultPermissions: {
117
- teamCreator: {},
118
- teamMember: {},
119
- signUp: {},
120
- },
121
- },
122
- apiKeys: {
123
- enabled: {
124
- team: false,
125
- user: false,
126
- },
127
- },
128
- teams: {
129
- createPersonalTeamOnSignUp: false,
130
- allowClientTeamCreation: false,
131
- },
132
- users: {
133
- allowClientUserDeletion: false,
134
- },
135
- domains: {
136
- allowLocalhost: false,
137
- trustedDomains: (key) => ({
138
- handlerPath: '/handler',
139
- }),
160
+ var organizationConfigSchema = environmentConfigSchema.concat((0, import_schema_fields.yupObject)({}));
161
+ var projectConfigDefaults = {};
162
+ var branchConfigDefaults = {};
163
+ var environmentConfigDefaults = {};
164
+ var organizationConfigDefaults = {
165
+ rbac: {
166
+ permissions: (key) => ({}),
167
+ defaultPermissions: {
168
+ teamCreator: {},
169
+ teamMember: {},
170
+ signUp: {}
171
+ }
172
+ },
173
+ apiKeys: {
174
+ enabled: {
175
+ team: false,
176
+ user: false
177
+ }
178
+ },
179
+ teams: {
180
+ createPersonalTeamOnSignUp: false,
181
+ allowClientTeamCreation: false
182
+ },
183
+ users: {
184
+ allowClientUserDeletion: false
185
+ },
186
+ domains: {
187
+ allowLocalhost: false,
188
+ trustedDomains: (key) => ({
189
+ handlerPath: "/handler"
190
+ })
191
+ },
192
+ auth: {
193
+ allowSignUp: true,
194
+ password: {
195
+ allowSignIn: false
140
196
  },
141
- auth: {
142
- allowSignUp: true,
143
- password: {
144
- allowSignIn: false,
145
- },
146
- otp: {
147
- allowSignIn: false,
148
- },
149
- passkey: {
150
- allowSignIn: false,
151
- },
152
- oauth: {
153
- accountMergeStrategy: 'link_method',
154
- providers: (key) => ({
155
- allowSignIn: false,
156
- allowConnectedAccounts: false,
157
- }),
158
- },
197
+ otp: {
198
+ allowSignIn: false
159
199
  },
160
- emails: {
161
- server: {
162
- isShared: true,
163
- },
200
+ passkey: {
201
+ allowSignIn: false
164
202
  },
203
+ oauth: {
204
+ accountMergeStrategy: "link_method",
205
+ providers: (key) => ({
206
+ isShared: true,
207
+ allowSignIn: false,
208
+ allowConnectedAccounts: false
209
+ })
210
+ }
211
+ },
212
+ emails: {
213
+ server: {
214
+ isShared: true
215
+ }
216
+ }
165
217
  };
166
- export function applyDefaults(defaults, config) {
167
- const res = { ...typeof defaults === 'function' ? {} : defaults };
168
- for (const [key, mergeValue] of Object.entries(config)) {
169
- const baseValue = typeof defaults === 'function' ? defaults(key) : (has(defaults, key) ? get(defaults, key) : undefined);
170
- if (baseValue !== undefined) {
171
- if (isObjectLike(baseValue) && isObjectLike(mergeValue)) {
172
- set(res, key, applyDefaults(baseValue, mergeValue));
173
- continue;
174
- }
175
- }
176
- set(res, key, mergeValue);
218
+ function applyDefaults(defaults, config) {
219
+ const res = typeof defaults === "function" ? {} : (0, import_objects.mapValues)(defaults, (v) => typeof v === "function" ? {} : typeof v === "object" ? applyDefaults(v, {}) : v);
220
+ for (const [key, mergeValue] of Object.entries(config)) {
221
+ const baseValue = typeof defaults === "function" ? defaults(key) : (0, import_objects.has)(defaults, key) ? (0, import_objects.get)(defaults, key) : void 0;
222
+ if (baseValue !== void 0) {
223
+ if ((0, import_objects.isObjectLike)(baseValue) && (0, import_objects.isObjectLike)(mergeValue)) {
224
+ (0, import_objects.set)(res, key, applyDefaults(baseValue, mergeValue));
225
+ continue;
226
+ }
177
227
  }
178
- return res;
228
+ (0, import_objects.set)(res, key, mergeValue);
229
+ }
230
+ return res;
179
231
  }
180
- import.meta.vitest?.test("applyDefaults", ({ expect }) => {
181
- expect(applyDefaults({ a: 1 }, { a: 2 })).toEqual({ a: 2 });
182
- expect(applyDefaults({ a: { b: 1 } }, { a: { c: 2 } })).toEqual({ a: { b: 1, c: 2 } });
183
- expect(applyDefaults((key) => ({ b: key }), { a: {} })).toEqual({ a: { b: "a" } });
184
- expect(applyDefaults({ a: (key) => ({ b: key }) }, { a: { c: { d: 1 } } })).toEqual({ a: { c: { b: "c", d: 1 } } });
232
+ // Annotate the CommonJS export names for ESM import in node:
233
+ 0 && (module.exports = {
234
+ applyDefaults,
235
+ branchConfigDefaults,
236
+ branchConfigSchema,
237
+ configLevels,
238
+ environmentConfigDefaults,
239
+ environmentConfigSchema,
240
+ organizationConfigDefaults,
241
+ organizationConfigSchema,
242
+ projectConfigDefaults,
243
+ projectConfigSchema
185
244
  });
245
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/config/schema.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport * as schemaFields from \"../schema-fields\";\nimport { yupBoolean, yupObject, yupRecord, yupString } from \"../schema-fields\";\nimport { allProviders } from \"../utils/oauth\";\nimport { DeepMerge, DeepPartial, get, has, isObjectLike, mapValues, set } from \"../utils/objects\";\nimport { PrettifyType } from \"../utils/types\";\nimport { Config, NormalizesTo } from \"./format\";\n\n// NOTE: The validation schemas in here are all schematic validators, not sanity-check validators.\n// For more info, see ./README.md\n\n\nexport const configLevels = ['project', 'branch', 'environment', 'organization'] as const;\nexport type ConfigLevel = typeof configLevels[number];\nconst permissionRegex = /^\\$?[a-z0-9_:]+$/;\nconst customPermissionRegex = /^[a-z0-9_:]+$/;\n\n/**\n * All fields that can be overridden at this level.\n */\nexport const projectConfigSchema = yupObject({});\n\n// --- NEW RBAC Schema ---\nconst branchRbacDefaultPermissions = yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional(),\n).optional();\n\nconst branchRbacSchema = yupObject({\n permissions: yupRecord(\n yupString().optional().matches(customPermissionRegex),\n yupObject({\n description: yupString().optional(),\n scope: yupString().oneOf(['team', 'project']).optional(),\n containedPermissionIds: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupBoolean().isTrue().optional()\n ).optional(),\n }).optional(),\n ).optional(),\n defaultPermissions: yupObject({\n teamCreator: branchRbacDefaultPermissions,\n teamMember: branchRbacDefaultPermissions,\n signUp: branchRbacDefaultPermissions,\n }).optional(),\n}).optional();\n// --- END NEW RBAC Schema ---\n\n// --- NEW API Keys Schema ---\nconst branchApiKeysSchema = yupObject({\n enabled: yupObject({\n team: yupBoolean().optional(),\n user: yupBoolean().optional(),\n }).optional(),\n}).optional();\n// --- END NEW API Keys Schema ---\n\n\nconst branchAuthSchema = yupObject({\n allowSignUp: yupBoolean().optional(),\n password: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n otp: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n passkey: yupObject({\n allowSignIn: yupBoolean().optional(),\n }).optional(),\n oauth: yupObject({\n accountMergeStrategy: yupString().oneOf(['link_method', 'raise_error', 'allow_duplicates']).optional(),\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }).defined(),\n ).optional(),\n }).optional(),\n}).optional();\n\nconst branchDomain = yupObject({\n allowLocalhost: yupBoolean().optional(),\n}).optional();\n\nexport const branchConfigSchema = projectConfigSchema.concat(yupObject({\n rbac: branchRbacSchema,\n\n teams: yupObject({\n createPersonalTeamOnSignUp: yupBoolean().optional(),\n allowClientTeamCreation: yupBoolean().optional(),\n }).optional(),\n\n users: yupObject({\n allowClientUserDeletion: yupBoolean().optional(),\n }).optional(),\n\n apiKeys: branchApiKeysSchema,\n\n domains: branchDomain,\n\n auth: branchAuthSchema,\n\n emails: yupObject({}),\n}));\n\n\nexport const environmentConfigSchema = branchConfigSchema.concat(yupObject({\n auth: branchConfigSchema.getNested(\"auth\").concat(yupObject({\n oauth: branchConfigSchema.getNested(\"auth\").getNested(\"oauth\").concat(yupObject({\n providers: yupRecord(\n yupString().optional().matches(permissionRegex),\n yupObject({\n type: yupString().oneOf(allProviders).optional(),\n isShared: yupBoolean().optional(),\n clientId: schemaFields.oauthClientIdSchema.optional(),\n clientSecret: schemaFields.oauthClientSecretSchema.optional(),\n facebookConfigId: schemaFields.oauthFacebookConfigIdSchema.optional(),\n microsoftTenantId: schemaFields.oauthMicrosoftTenantIdSchema.optional(),\n allowSignIn: yupBoolean().optional(),\n allowConnectedAccounts: yupBoolean().optional(),\n }),\n ).optional(),\n }).optional()),\n })),\n\n emails: branchConfigSchema.getNested(\"emails\").concat(yupObject({\n server: yupObject({\n isShared: yupBoolean().optional(),\n host: schemaFields.emailHostSchema.optional().nonEmpty(),\n port: schemaFields.emailPortSchema.optional(),\n username: schemaFields.emailUsernameSchema.optional().nonEmpty(),\n password: schemaFields.emailPasswordSchema.optional().nonEmpty(),\n senderName: schemaFields.emailSenderNameSchema.optional().nonEmpty(),\n senderEmail: schemaFields.emailSenderEmailSchema.optional().nonEmpty(),\n }),\n }).optional()),\n\n domains: branchConfigSchema.getNested(\"domains\").concat(yupObject({\n trustedDomains: yupRecord(\n yupString().uuid().optional(),\n yupObject({\n baseUrl: schemaFields.urlSchema.optional(),\n handlerPath: schemaFields.handlerPathSchema.optional(),\n }),\n ).optional(),\n })),\n}));\n\nexport const organizationConfigSchema = environmentConfigSchema.concat(yupObject({}));\n\n\n// Defaults\n// these are objects that are merged together to form the rendered config (see ./README.md)\n// Wherever an object could be used as a value, a function can instead be used to generate the default values on a per-key basis\nexport const projectConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<ProjectConfigStrippedNormalizedOverride>;\n\nexport const branchConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<BranchConfigStrippedNormalizedOverride>;\n\nexport const environmentConfigDefaults = {} satisfies DeepReplaceAllowFunctionsForObjects<EnvironmentConfigStrippedNormalizedOverride>;\n\nexport const organizationConfigDefaults = {\n rbac: {\n permissions: (key: string) => ({}),\n defaultPermissions: {\n teamCreator: {},\n teamMember: {},\n signUp: {},\n },\n },\n\n apiKeys: {\n enabled: {\n team: false,\n user: false,\n },\n },\n\n teams: {\n createPersonalTeamOnSignUp: false,\n allowClientTeamCreation: false,\n },\n\n users: {\n allowClientUserDeletion: false,\n },\n\n domains: {\n allowLocalhost: false,\n trustedDomains: (key: string) => ({\n handlerPath: '/handler',\n }),\n },\n\n auth: {\n allowSignUp: true,\n password: {\n allowSignIn: false,\n },\n otp: {\n allowSignIn: false,\n },\n passkey: {\n allowSignIn: false,\n },\n oauth: {\n accountMergeStrategy: 'link_method',\n providers: (key: string) => ({\n isShared: true,\n allowSignIn: false,\n allowConnectedAccounts: false,\n }),\n },\n },\n\n emails: {\n server: {\n isShared: true,\n },\n },\n} satisfies DeepReplaceAllowFunctionsForObjects<OrganizationConfigStrippedNormalizedOverride>;\n\nexport type DeepReplaceAllowFunctionsForObjects<T> = T extends object ? { [K in keyof T]: DeepReplaceAllowFunctionsForObjects<T[K]> } | ((arg: keyof T) => DeepReplaceAllowFunctionsForObjects<T[keyof T]>) : T;\nexport type DeepReplaceFunctionsWithObjects<T> = T extends (arg: infer K extends string) => infer R ? DeepReplaceFunctionsWithObjects<Record<K, R>> : (T extends object ? { [K in keyof T]: DeepReplaceFunctionsWithObjects<T[K]> } : T);\nexport type ApplyDefaults<D extends object | ((key: string) => unknown), C extends object> = DeepMerge<DeepReplaceFunctionsWithObjects<D>, C>;\nexport function applyDefaults<D extends object | ((key: string) => unknown), C extends object>(defaults: D, config: C): ApplyDefaults<D, C> {\n const res: any = typeof defaults === 'function' ? {} : mapValues(defaults, v => typeof v === 'function' ? {} : (typeof v === 'object' ? applyDefaults(v as any, {}) : v));\n for (const [key, mergeValue] of Object.entries(config)) {\n const baseValue = typeof defaults === 'function' ? defaults(key) : (has(defaults, key as any) ? get(defaults, key as any) : undefined);\n if (baseValue !== undefined) {\n if (isObjectLike(baseValue) && isObjectLike(mergeValue)) {\n set(res, key, applyDefaults(baseValue, mergeValue));\n continue;\n }\n }\n set(res, key, mergeValue);\n }\n return res as any;\n}\nundefined?.test(\"applyDefaults\", ({ expect }) => {\n expect(applyDefaults({ a: 1 }, { a: 2 })).toEqual({ a: 2 });\n expect(applyDefaults({ a: { b: 1 } }, { a: { c: 2 } })).toEqual({ a: { b: 1, c: 2 } });\n expect(applyDefaults((key: string) => ({ b: key }), { a: {} })).toEqual({ a: { b: \"a\" } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, { a: { c: { d: 1 } } })).toEqual({ a: { c: { b: \"c\", d: 1 } } });\n expect(applyDefaults({ a: (key: string) => ({ b: key }) }, {})).toEqual({ a: {} });\n expect(applyDefaults({ a: { b: (key: string) => ({ b: key }) } }, {})).toEqual({ a: { b: {} } });\n});\n\n// Normalized overrides\nexport type ProjectConfigNormalizedOverride = yup.InferType<typeof projectConfigSchema>;\nexport type BranchConfigNormalizedOverride = yup.InferType<typeof branchConfigSchema>;\nexport type EnvironmentConfigNormalizedOverride = yup.InferType<typeof environmentConfigSchema>;\nexport type OrganizationConfigNormalizedOverride = yup.InferType<typeof organizationConfigSchema>;\n\n// Normalized overrides, without the properties that may be overridden still\nexport type ProjectConfigStrippedNormalizedOverride = Omit<ProjectConfigNormalizedOverride,\n | keyof BranchConfigNormalizedOverride\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type BranchConfigStrippedNormalizedOverride = Omit<BranchConfigNormalizedOverride,\n | keyof EnvironmentConfigNormalizedOverride\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type EnvironmentConfigStrippedNormalizedOverride = Omit<EnvironmentConfigNormalizedOverride,\n | keyof OrganizationConfigNormalizedOverride\n>;\nexport type OrganizationConfigStrippedNormalizedOverride = OrganizationConfigNormalizedOverride;\n\n// Overrides\nexport type ProjectConfigOverride = NormalizesTo<ProjectConfigNormalizedOverride>;\nexport type BranchConfigOverride = NormalizesTo<BranchConfigNormalizedOverride>;\nexport type EnvironmentConfigOverride = NormalizesTo<EnvironmentConfigNormalizedOverride>;\nexport type OrganizationConfigOverride = NormalizesTo<OrganizationConfigNormalizedOverride>;\n\n// Override overrides (used to update the overrides)\nexport type ProjectConfigOverrideOverride = Config & DeepPartial<ProjectConfigOverride>;\nexport type BranchConfigOverrideOverride = Config & DeepPartial<BranchConfigOverride>;\nexport type EnvironmentConfigOverrideOverride = Config & DeepPartial<EnvironmentConfigOverride>;\nexport type OrganizationConfigOverrideOverride = Config & DeepPartial<OrganizationConfigOverride>;\n\n// Incomplete configs\nexport type ProjectIncompleteConfig = ProjectConfigNormalizedOverride;\nexport type BranchIncompleteConfig = ProjectIncompleteConfig & BranchConfigNormalizedOverride;\nexport type EnvironmentIncompleteConfig = BranchIncompleteConfig & EnvironmentConfigNormalizedOverride;\nexport type OrganizationIncompleteConfig = EnvironmentIncompleteConfig & OrganizationConfigNormalizedOverride;\n\n// Rendered configs\nexport type ProjectRenderedConfig = PrettifyType<ApplyDefaults<typeof projectConfigDefaults, ProjectConfigStrippedNormalizedOverride>>;\nexport type BranchRenderedConfig = PrettifyType<ProjectRenderedConfig & ApplyDefaults<typeof branchConfigDefaults, BranchConfigStrippedNormalizedOverride>>;\nexport type EnvironmentRenderedConfig = PrettifyType<BranchRenderedConfig & ApplyDefaults<typeof environmentConfigDefaults, EnvironmentConfigStrippedNormalizedOverride>>;\nexport type OrganizationRenderedConfig = PrettifyType<EnvironmentRenderedConfig & ApplyDefaults<typeof organizationConfigDefaults, OrganizationConfigStrippedNormalizedOverride>>;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,102 @@
1
+ import * as yup from 'yup';
2
+ import { NullishCoalesce } from './utils/types.cjs';
3
+
4
+ type AccessType = "client" | "server" | "admin";
5
+ type CrudOperation = "create" | "read" | "update" | "delete";
6
+ type CrudlOperation = "create" | "read" | "update" | "delete" | "list";
7
+ type AccessTypeXCrudOperation = `${AccessType}${Capitalize<CrudOperation>}`;
8
+ type AccessTypeXCrudlOperation = `${AccessType}${Capitalize<CrudlOperation>}`;
9
+ declare module 'yup' {
10
+ interface CustomSchemaMetadata {
11
+ openapiField?: {
12
+ description?: string;
13
+ exampleValue?: any;
14
+ hidden?: boolean;
15
+ onlyShowInOperations?: Capitalize<CrudlOperation>[];
16
+ };
17
+ }
18
+ }
19
+ type ShownEndpointDocumentation = {
20
+ summary: string;
21
+ description: string;
22
+ tags?: string[];
23
+ crudOperation?: Capitalize<CrudlOperation>;
24
+ };
25
+ type EndpointDocumentation = ({
26
+ hidden: true;
27
+ } & Partial<ShownEndpointDocumentation>) | ({
28
+ hidden?: boolean;
29
+ } & ShownEndpointDocumentation);
30
+ type InnerCrudSchema<CreateSchema extends yup.AnySchema | undefined = yup.AnySchema | undefined, ReadSchema extends yup.AnySchema | undefined = yup.AnySchema | undefined, UpdateSchema extends yup.AnySchema | undefined = yup.AnySchema | undefined, DeleteSchema extends yup.AnySchema | undefined = yup.AnySchema | undefined> = {
31
+ createSchema: CreateSchema;
32
+ createDocs: EndpointDocumentation | undefined;
33
+ readSchema: ReadSchema;
34
+ readDocs: EndpointDocumentation | undefined;
35
+ listDocs: EndpointDocumentation | undefined;
36
+ updateSchema: UpdateSchema;
37
+ updateDocs: EndpointDocumentation | undefined;
38
+ deleteSchema: DeleteSchema;
39
+ deleteDocs: EndpointDocumentation | undefined;
40
+ };
41
+ type CrudSchema<ClientSchema extends InnerCrudSchema = InnerCrudSchema, ServerSchema extends InnerCrudSchema = InnerCrudSchema, AdminSchema extends InnerCrudSchema = InnerCrudSchema> = {
42
+ client: ClientSchema;
43
+ server: ServerSchema;
44
+ admin: AdminSchema;
45
+ hasCreate: boolean;
46
+ hasRead: boolean;
47
+ hasUpdate: boolean;
48
+ hasDelete: boolean;
49
+ };
50
+ type CrudSchemaCreationOptions = {
51
+ [K in AccessTypeXCrudOperation as `${K}Schema`]?: yup.AnySchema;
52
+ };
53
+ type FillInOptionalsPrepareStep<O extends CrudSchemaCreationOptions> = {
54
+ [K in keyof Required<CrudSchemaCreationOptions>]: K extends keyof O ? O[K] : undefined;
55
+ };
56
+ type FillInOptionalsStep<O extends FillInOptionalsPrepareStep<CrudSchemaCreationOptions>> = {
57
+ clientCreateSchema: NullishCoalesce<O['clientCreateSchema'], undefined>;
58
+ clientReadSchema: NullishCoalesce<O['clientReadSchema'], undefined>;
59
+ clientUpdateSchema: NullishCoalesce<O['clientUpdateSchema'], undefined>;
60
+ clientDeleteSchema: NullishCoalesce<O['clientDeleteSchema'], undefined>;
61
+ serverCreateSchema: NullishCoalesce<O['serverCreateSchema'], O['clientCreateSchema']>;
62
+ serverReadSchema: NullishCoalesce<O['serverReadSchema'], O['clientReadSchema']>;
63
+ serverUpdateSchema: NullishCoalesce<O['serverUpdateSchema'], O['clientUpdateSchema']>;
64
+ serverDeleteSchema: NullishCoalesce<O['serverDeleteSchema'], O['clientDeleteSchema']>;
65
+ adminCreateSchema: NullishCoalesce<O['adminCreateSchema'], O['serverCreateSchema']>;
66
+ adminReadSchema: NullishCoalesce<O['adminReadSchema'], O['serverReadSchema']>;
67
+ adminUpdateSchema: NullishCoalesce<O['adminUpdateSchema'], O['serverUpdateSchema']>;
68
+ adminDeleteSchema: NullishCoalesce<O['adminDeleteSchema'], O['serverDeleteSchema']>;
69
+ };
70
+ type FillInOptionals<O extends CrudSchemaCreationOptions> = FillInOptionalsStep<FillInOptionalsStep<FillInOptionalsStep<FillInOptionalsPrepareStep<O>>>>;
71
+ type CrudSchemaFromOptionsInner<O extends FillInOptionals<any>> = CrudSchema<InnerCrudSchema<O['clientCreateSchema'], O['clientReadSchema'], O['clientUpdateSchema'], O['clientDeleteSchema']>, InnerCrudSchema<O['serverCreateSchema'], O['serverReadSchema'], O['serverUpdateSchema'], O['serverDeleteSchema']>, InnerCrudSchema<O['adminCreateSchema'], O['adminReadSchema'], O['adminUpdateSchema'], O['adminDeleteSchema']>>;
72
+ type CrudSchemaFromOptions<O extends CrudSchemaCreationOptions> = CrudSchemaFromOptionsInner<FillInOptionals<O>>;
73
+ type InnerCrudTypeOf<S extends InnerCrudSchema> = (S['createSchema'] extends {} ? {
74
+ Create: yup.InferType<S['createSchema']>;
75
+ } : {}) & (S['readSchema'] extends {} ? {
76
+ Read: yup.InferType<S['readSchema']>;
77
+ } : {}) & (S['updateSchema'] extends {} ? {
78
+ Update: yup.InferType<S['updateSchema']>;
79
+ } : {}) & (S['deleteSchema'] extends {} ? {
80
+ Delete: yup.InferType<S['deleteSchema']>;
81
+ } : {}) & (S['readSchema'] extends {} ? {
82
+ List: {
83
+ items: yup.InferType<S['readSchema']>[];
84
+ is_paginated: boolean;
85
+ pagination?: {
86
+ next_cursor: string | null;
87
+ };
88
+ };
89
+ } : {});
90
+ type CrudTypeOf<S extends CrudSchema> = {
91
+ Client: InnerCrudTypeOf<S['client']>;
92
+ Server: InnerCrudTypeOf<S['server']>;
93
+ Admin: InnerCrudTypeOf<S['admin']>;
94
+ };
95
+ type CrudDocsCreationOptions<SO extends CrudSchemaCreationOptions> = {
96
+ [X in AccessTypeXCrudlOperation]?: EndpointDocumentation;
97
+ };
98
+ declare function createCrud<SO extends CrudSchemaCreationOptions>(options: SO & {
99
+ docs?: CrudDocsCreationOptions<SO>;
100
+ }): CrudSchemaFromOptions<SO>;
101
+
102
+ export { type AccessType, type AccessTypeXCrudOperation, type AccessTypeXCrudlOperation, type CrudOperation, type CrudSchema, type CrudSchemaCreationOptions, type CrudSchemaFromOptions, type CrudTypeOf, type CrudlOperation, type EndpointDocumentation, createCrud };
package/dist/crud.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as yup from 'yup';
2
- import { NullishCoalesce } from './utils/types';
3
- export type AccessType = "client" | "server" | "admin";
4
- export type CrudOperation = "create" | "read" | "update" | "delete";
5
- export type CrudlOperation = "create" | "read" | "update" | "delete" | "list";
6
- export type AccessTypeXCrudOperation = `${AccessType}${Capitalize<CrudOperation>}`;
7
- export type AccessTypeXCrudlOperation = `${AccessType}${Capitalize<CrudlOperation>}`;
2
+ import { NullishCoalesce } from './utils/types.js';
3
+
4
+ type AccessType = "client" | "server" | "admin";
5
+ type CrudOperation = "create" | "read" | "update" | "delete";
6
+ type CrudlOperation = "create" | "read" | "update" | "delete" | "list";
7
+ type AccessTypeXCrudOperation = `${AccessType}${Capitalize<CrudOperation>}`;
8
+ type AccessTypeXCrudlOperation = `${AccessType}${Capitalize<CrudlOperation>}`;
8
9
  declare module 'yup' {
9
10
  interface CustomSchemaMetadata {
10
11
  openapiField?: {
@@ -21,7 +22,7 @@ type ShownEndpointDocumentation = {
21
22
  tags?: string[];
22
23
  crudOperation?: Capitalize<CrudlOperation>;
23
24
  };
24
- export type EndpointDocumentation = ({
25
+ type EndpointDocumentation = ({
25
26
  hidden: true;
26
27
  } & Partial<ShownEndpointDocumentation>) | ({
27
28
  hidden?: boolean;
@@ -37,7 +38,7 @@ type InnerCrudSchema<CreateSchema extends yup.AnySchema | undefined = yup.AnySch
37
38
  deleteSchema: DeleteSchema;
38
39
  deleteDocs: EndpointDocumentation | undefined;
39
40
  };
40
- export type CrudSchema<ClientSchema extends InnerCrudSchema = InnerCrudSchema, ServerSchema extends InnerCrudSchema = InnerCrudSchema, AdminSchema extends InnerCrudSchema = InnerCrudSchema> = {
41
+ type CrudSchema<ClientSchema extends InnerCrudSchema = InnerCrudSchema, ServerSchema extends InnerCrudSchema = InnerCrudSchema, AdminSchema extends InnerCrudSchema = InnerCrudSchema> = {
41
42
  client: ClientSchema;
42
43
  server: ServerSchema;
43
44
  admin: AdminSchema;
@@ -46,7 +47,7 @@ export type CrudSchema<ClientSchema extends InnerCrudSchema = InnerCrudSchema, S
46
47
  hasUpdate: boolean;
47
48
  hasDelete: boolean;
48
49
  };
49
- export type CrudSchemaCreationOptions = {
50
+ type CrudSchemaCreationOptions = {
50
51
  [K in AccessTypeXCrudOperation as `${K}Schema`]?: yup.AnySchema;
51
52
  };
52
53
  type FillInOptionalsPrepareStep<O extends CrudSchemaCreationOptions> = {
@@ -68,7 +69,7 @@ type FillInOptionalsStep<O extends FillInOptionalsPrepareStep<CrudSchemaCreation
68
69
  };
69
70
  type FillInOptionals<O extends CrudSchemaCreationOptions> = FillInOptionalsStep<FillInOptionalsStep<FillInOptionalsStep<FillInOptionalsPrepareStep<O>>>>;
70
71
  type CrudSchemaFromOptionsInner<O extends FillInOptionals<any>> = CrudSchema<InnerCrudSchema<O['clientCreateSchema'], O['clientReadSchema'], O['clientUpdateSchema'], O['clientDeleteSchema']>, InnerCrudSchema<O['serverCreateSchema'], O['serverReadSchema'], O['serverUpdateSchema'], O['serverDeleteSchema']>, InnerCrudSchema<O['adminCreateSchema'], O['adminReadSchema'], O['adminUpdateSchema'], O['adminDeleteSchema']>>;
71
- export type CrudSchemaFromOptions<O extends CrudSchemaCreationOptions> = CrudSchemaFromOptionsInner<FillInOptionals<O>>;
72
+ type CrudSchemaFromOptions<O extends CrudSchemaCreationOptions> = CrudSchemaFromOptionsInner<FillInOptionals<O>>;
72
73
  type InnerCrudTypeOf<S extends InnerCrudSchema> = (S['createSchema'] extends {} ? {
73
74
  Create: yup.InferType<S['createSchema']>;
74
75
  } : {}) & (S['readSchema'] extends {} ? {
@@ -86,7 +87,7 @@ type InnerCrudTypeOf<S extends InnerCrudSchema> = (S['createSchema'] extends {}
86
87
  };
87
88
  };
88
89
  } : {});
89
- export type CrudTypeOf<S extends CrudSchema> = {
90
+ type CrudTypeOf<S extends CrudSchema> = {
90
91
  Client: InnerCrudTypeOf<S['client']>;
91
92
  Server: InnerCrudTypeOf<S['server']>;
92
93
  Admin: InnerCrudTypeOf<S['admin']>;
@@ -94,7 +95,8 @@ export type CrudTypeOf<S extends CrudSchema> = {
94
95
  type CrudDocsCreationOptions<SO extends CrudSchemaCreationOptions> = {
95
96
  [X in AccessTypeXCrudlOperation]?: EndpointDocumentation;
96
97
  };
97
- export declare function createCrud<SO extends CrudSchemaCreationOptions>(options: SO & {
98
+ declare function createCrud<SO extends CrudSchemaCreationOptions>(options: SO & {
98
99
  docs?: CrudDocsCreationOptions<SO>;
99
100
  }): CrudSchemaFromOptions<SO>;
100
- export {};
101
+
102
+ export { type AccessType, type AccessTypeXCrudOperation, type AccessTypeXCrudlOperation, type CrudOperation, type CrudSchema, type CrudSchemaCreationOptions, type CrudSchemaFromOptions, type CrudTypeOf, type CrudlOperation, type EndpointDocumentation, createCrud };