@vertebr/admin 0.14.0 → 0.16.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 (342) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/runtime/api/catalog.d.ts +17 -9
  6. package/dist/runtime/api/catalog.d.ts.map +1 -1
  7. package/dist/runtime/api/catalog.js +10 -0
  8. package/dist/runtime/api/catalog.js.map +1 -1
  9. package/dist/runtime/connectors/payments/connector.d.ts.map +1 -1
  10. package/dist/runtime/connectors/payments/connector.js +3 -0
  11. package/dist/runtime/connectors/payments/connector.js.map +1 -1
  12. package/dist/runtime/createAdmin.d.ts.map +1 -1
  13. package/dist/runtime/createAdmin.js +3 -0
  14. package/dist/runtime/createAdmin.js.map +1 -1
  15. package/dist/runtime/types/addon.d.ts +3 -0
  16. package/dist/runtime/types/addon.d.ts.map +1 -1
  17. package/dist/runtime/types/addon.js.map +1 -1
  18. package/dist/runtime/types/audit.d.ts +3 -0
  19. package/dist/runtime/types/audit.d.ts.map +1 -1
  20. package/dist/runtime/types/config.d.ts +5 -0
  21. package/dist/runtime/types/config.d.ts.map +1 -1
  22. package/dist/runtime/types/index.d.ts +2 -0
  23. package/dist/runtime/types/index.d.ts.map +1 -1
  24. package/dist/runtime/types/index.js +4 -0
  25. package/dist/runtime/types/index.js.map +1 -1
  26. package/dist/runtime/types/layout.d.ts +3 -0
  27. package/dist/runtime/types/layout.d.ts.map +1 -1
  28. package/dist/runtime/types/mail/definition.d.ts +3 -0
  29. package/dist/runtime/types/mail/definition.d.ts.map +1 -1
  30. package/dist/runtime/types/metrics.d.ts +3 -0
  31. package/dist/runtime/types/metrics.d.ts.map +1 -1
  32. package/dist/runtime/types/navIcon.d.ts +8 -0
  33. package/dist/runtime/types/navIcon.d.ts.map +1 -0
  34. package/dist/runtime/types/navIcon.js +37 -0
  35. package/dist/runtime/types/navIcon.js.map +1 -0
  36. package/dist/runtime/types/resource.d.ts +3 -0
  37. package/dist/runtime/types/resource.d.ts.map +1 -1
  38. package/dist/schema.d.ts +9 -0
  39. package/dist/schema.d.ts.map +1 -1
  40. package/package.json +1 -1
  41. package/static/assets/index-6EkB-KyS.js +340 -0
  42. package/static/assets/index-BOeFzdnv.css +1 -0
  43. package/static/brand/apple-touch-icon.png +0 -0
  44. package/static/brand/favicon-192.png +0 -0
  45. package/static/brand/favicon-32.png +0 -0
  46. package/static/brand/vertebr-mark-light.svg +10 -0
  47. package/static/brand/vertebr-mark.svg +10 -0
  48. package/static/index.html +21 -2
  49. package/dist/api/catalog.d.ts +0 -59
  50. package/dist/api/catalog.d.ts.map +0 -1
  51. package/dist/api/catalog.js +0 -85
  52. package/dist/api/catalog.js.map +0 -1
  53. package/dist/api/configs.d.ts +0 -15
  54. package/dist/api/configs.d.ts.map +0 -1
  55. package/dist/api/configs.js +0 -43
  56. package/dist/api/configs.js.map +0 -1
  57. package/dist/api/emails.d.ts +0 -85
  58. package/dist/api/emails.d.ts.map +0 -1
  59. package/dist/api/emails.js +0 -520
  60. package/dist/api/emails.js.map +0 -1
  61. package/dist/api/gallery.d.ts +0 -28
  62. package/dist/api/gallery.d.ts.map +0 -1
  63. package/dist/api/gallery.js +0 -91
  64. package/dist/api/gallery.js.map +0 -1
  65. package/dist/api/metrics.d.ts +0 -22
  66. package/dist/api/metrics.d.ts.map +0 -1
  67. package/dist/api/metrics.js +0 -38
  68. package/dist/api/metrics.js.map +0 -1
  69. package/dist/api/public.d.ts +0 -22
  70. package/dist/api/public.d.ts.map +0 -1
  71. package/dist/api/public.js +0 -69
  72. package/dist/api/public.js.map +0 -1
  73. package/dist/api/request.d.ts +0 -26
  74. package/dist/api/request.d.ts.map +0 -1
  75. package/dist/api/request.js +0 -38
  76. package/dist/api/request.js.map +0 -1
  77. package/dist/api/resources.d.ts +0 -85
  78. package/dist/api/resources.d.ts.map +0 -1
  79. package/dist/api/resources.js +0 -263
  80. package/dist/api/resources.js.map +0 -1
  81. package/dist/api/routes.d.ts +0 -8
  82. package/dist/api/routes.d.ts.map +0 -1
  83. package/dist/api/routes.js +0 -202
  84. package/dist/api/routes.js.map +0 -1
  85. package/dist/api/spa.d.ts +0 -2
  86. package/dist/api/spa.d.ts.map +0 -1
  87. package/dist/api/spa.js +0 -34
  88. package/dist/api/spa.js.map +0 -1
  89. package/dist/connectors/payments/connector.d.ts +0 -30
  90. package/dist/connectors/payments/connector.d.ts.map +0 -1
  91. package/dist/connectors/payments/connector.js +0 -226
  92. package/dist/connectors/payments/connector.js.map +0 -1
  93. package/dist/connectors/payments/index.d.ts +0 -4
  94. package/dist/connectors/payments/index.d.ts.map +0 -1
  95. package/dist/connectors/payments/index.js +0 -10
  96. package/dist/connectors/payments/index.js.map +0 -1
  97. package/dist/connectors/payments/stripe.d.ts +0 -99
  98. package/dist/connectors/payments/stripe.d.ts.map +0 -1
  99. package/dist/connectors/payments/stripe.js +0 -189
  100. package/dist/connectors/payments/stripe.js.map +0 -1
  101. package/dist/connectors/payments/types.d.ts +0 -67
  102. package/dist/connectors/payments/types.d.ts.map +0 -1
  103. package/dist/connectors/payments/types.js +0 -16
  104. package/dist/connectors/payments/types.js.map +0 -1
  105. package/dist/connectors/stripe.d.ts +0 -19
  106. package/dist/connectors/stripe.d.ts.map +0 -1
  107. package/dist/connectors/stripe.js +0 -26
  108. package/dist/connectors/stripe.js.map +0 -1
  109. package/dist/constants.d.ts +0 -5
  110. package/dist/constants.d.ts.map +0 -1
  111. package/dist/constants.js +0 -8
  112. package/dist/constants.js.map +0 -1
  113. package/dist/createAdmin.d.ts +0 -3
  114. package/dist/createAdmin.d.ts.map +0 -1
  115. package/dist/createAdmin.js +0 -152
  116. package/dist/createAdmin.js.map +0 -1
  117. package/dist/database/firestore.d.ts +0 -71
  118. package/dist/database/firestore.d.ts.map +0 -1
  119. package/dist/database/firestore.js +0 -115
  120. package/dist/database/firestore.js.map +0 -1
  121. package/dist/database/memory.d.ts +0 -12
  122. package/dist/database/memory.d.ts.map +0 -1
  123. package/dist/database/memory.js +0 -116
  124. package/dist/database/memory.js.map +0 -1
  125. package/dist/database/mongo.d.ts +0 -41
  126. package/dist/database/mongo.d.ts.map +0 -1
  127. package/dist/database/mongo.js +0 -151
  128. package/dist/database/mongo.js.map +0 -1
  129. package/dist/database/postgres.d.ts +0 -46
  130. package/dist/database/postgres.d.ts.map +0 -1
  131. package/dist/database/postgres.js +0 -262
  132. package/dist/database/postgres.js.map +0 -1
  133. package/dist/errors.d.ts +0 -17
  134. package/dist/errors.d.ts.map +0 -1
  135. package/dist/errors.js +0 -36
  136. package/dist/errors.js.map +0 -1
  137. package/dist/index/api/catalog.d.ts +0 -53
  138. package/dist/index/api/catalog.d.ts.map +0 -1
  139. package/dist/index/api/catalog.js +0 -70
  140. package/dist/index/api/catalog.js.map +0 -1
  141. package/dist/index/api/configs.d.ts +0 -15
  142. package/dist/index/api/configs.d.ts.map +0 -1
  143. package/dist/index/api/configs.js +0 -43
  144. package/dist/index/api/configs.js.map +0 -1
  145. package/dist/index/api/gallery.d.ts +0 -28
  146. package/dist/index/api/gallery.d.ts.map +0 -1
  147. package/dist/index/api/gallery.js +0 -89
  148. package/dist/index/api/gallery.js.map +0 -1
  149. package/dist/index/api/metrics.d.ts +0 -9
  150. package/dist/index/api/metrics.d.ts.map +0 -1
  151. package/dist/index/api/metrics.js +0 -26
  152. package/dist/index/api/metrics.js.map +0 -1
  153. package/dist/index/api/public.d.ts +0 -22
  154. package/dist/index/api/public.d.ts.map +0 -1
  155. package/dist/index/api/public.js +0 -69
  156. package/dist/index/api/public.js.map +0 -1
  157. package/dist/index/api/request.d.ts +0 -25
  158. package/dist/index/api/request.d.ts.map +0 -1
  159. package/dist/index/api/request.js +0 -38
  160. package/dist/index/api/request.js.map +0 -1
  161. package/dist/index/api/resources.d.ts +0 -64
  162. package/dist/index/api/resources.d.ts.map +0 -1
  163. package/dist/index/api/resources.js +0 -173
  164. package/dist/index/api/resources.js.map +0 -1
  165. package/dist/index/api/routes.d.ts +0 -8
  166. package/dist/index/api/routes.d.ts.map +0 -1
  167. package/dist/index/api/routes.js +0 -156
  168. package/dist/index/api/routes.js.map +0 -1
  169. package/dist/index/api/spa.d.ts +0 -2
  170. package/dist/index/api/spa.d.ts.map +0 -1
  171. package/dist/index/api/spa.js +0 -33
  172. package/dist/index/api/spa.js.map +0 -1
  173. package/dist/index/connectors/stripe.d.ts +0 -9
  174. package/dist/index/connectors/stripe.d.ts.map +0 -1
  175. package/dist/index/connectors/stripe.js +0 -23
  176. package/dist/index/connectors/stripe.js.map +0 -1
  177. package/dist/index/constants.d.ts +0 -5
  178. package/dist/index/constants.d.ts.map +0 -1
  179. package/dist/index/constants.js +0 -8
  180. package/dist/index/constants.js.map +0 -1
  181. package/dist/index/createAdmin.d.ts +0 -3
  182. package/dist/index/createAdmin.d.ts.map +0 -1
  183. package/dist/index/createAdmin.js +0 -145
  184. package/dist/index/createAdmin.js.map +0 -1
  185. package/dist/index/errors.d.ts +0 -17
  186. package/dist/index/errors.d.ts.map +0 -1
  187. package/dist/index/errors.js +0 -36
  188. package/dist/index/errors.js.map +0 -1
  189. package/dist/index/services/environment.d.ts +0 -8
  190. package/dist/index/services/environment.d.ts.map +0 -1
  191. package/dist/index/services/environment.js +0 -78
  192. package/dist/index/services/environment.js.map +0 -1
  193. package/dist/index/services/registry.d.ts +0 -6
  194. package/dist/index/services/registry.d.ts.map +0 -1
  195. package/dist/index/services/registry.js +0 -32
  196. package/dist/index/services/registry.js.map +0 -1
  197. package/dist/index/services/state.d.ts +0 -24
  198. package/dist/index/services/state.d.ts.map +0 -1
  199. package/dist/index/services/state.js +0 -3
  200. package/dist/index/services/state.js.map +0 -1
  201. package/dist/index/types/admin.d.ts +0 -77
  202. package/dist/index/types/admin.d.ts.map +0 -1
  203. package/dist/index/types/admin.js +0 -3
  204. package/dist/index/types/admin.js.map +0 -1
  205. package/dist/index/types/auth.d.ts +0 -67
  206. package/dist/index/types/auth.d.ts.map +0 -1
  207. package/dist/index/types/auth.js +0 -3
  208. package/dist/index/types/auth.js.map +0 -1
  209. package/dist/index/types/config.d.ts +0 -35
  210. package/dist/index/types/config.d.ts.map +0 -1
  211. package/dist/index/types/config.js +0 -3
  212. package/dist/index/types/config.js.map +0 -1
  213. package/dist/index/types/index.d.ts +0 -7
  214. package/dist/index/types/index.d.ts.map +0 -1
  215. package/dist/index/types/index.js +0 -3
  216. package/dist/index/types/index.js.map +0 -1
  217. package/dist/index/types/layout.d.ts +0 -27
  218. package/dist/index/types/layout.d.ts.map +0 -1
  219. package/dist/index/types/layout.js +0 -3
  220. package/dist/index/types/layout.js.map +0 -1
  221. package/dist/index/types/metrics.d.ts +0 -15
  222. package/dist/index/types/metrics.d.ts.map +0 -1
  223. package/dist/index/types/metrics.js +0 -3
  224. package/dist/index/types/metrics.js.map +0 -1
  225. package/dist/index/types/resource.d.ts +0 -34
  226. package/dist/index/types/resource.d.ts.map +0 -1
  227. package/dist/index/types/resource.js +0 -3
  228. package/dist/index/types/resource.js.map +0 -1
  229. package/dist/index/utils/auth.d.ts +0 -4
  230. package/dist/index/utils/auth.d.ts.map +0 -1
  231. package/dist/index/utils/auth.js +0 -29
  232. package/dist/index/utils/auth.js.map +0 -1
  233. package/dist/index/utils/config.d.ts +0 -4
  234. package/dist/index/utils/config.d.ts.map +0 -1
  235. package/dist/index/utils/config.js +0 -14
  236. package/dist/index/utils/config.js.map +0 -1
  237. package/dist/index/utils/http.d.ts +0 -5
  238. package/dist/index/utils/http.d.ts.map +0 -1
  239. package/dist/index/utils/http.js +0 -38
  240. package/dist/index/utils/http.js.map +0 -1
  241. package/dist/index/utils/staticDir.d.ts +0 -2
  242. package/dist/index/utils/staticDir.d.ts.map +0 -1
  243. package/dist/index/utils/staticDir.js +0 -16
  244. package/dist/index/utils/staticDir.js.map +0 -1
  245. package/dist/index/utils/uploads.d.ts +0 -6
  246. package/dist/index/utils/uploads.d.ts.map +0 -1
  247. package/dist/index/utils/uploads.js +0 -66
  248. package/dist/index/utils/uploads.js.map +0 -1
  249. package/dist/mail.d.ts +0 -22
  250. package/dist/mail.d.ts.map +0 -1
  251. package/dist/mail.js +0 -248
  252. package/dist/mail.js.map +0 -1
  253. package/dist/services/environment.d.ts +0 -8
  254. package/dist/services/environment.d.ts.map +0 -1
  255. package/dist/services/environment.js +0 -78
  256. package/dist/services/environment.js.map +0 -1
  257. package/dist/services/registry.d.ts +0 -6
  258. package/dist/services/registry.d.ts.map +0 -1
  259. package/dist/services/registry.js +0 -32
  260. package/dist/services/registry.js.map +0 -1
  261. package/dist/services/state.d.ts +0 -25
  262. package/dist/services/state.d.ts.map +0 -1
  263. package/dist/services/state.js +0 -3
  264. package/dist/services/state.js.map +0 -1
  265. package/dist/types/actions.d.ts +0 -15
  266. package/dist/types/actions.d.ts.map +0 -1
  267. package/dist/types/actions.js +0 -3
  268. package/dist/types/actions.js.map +0 -1
  269. package/dist/types/admin.d.ts +0 -83
  270. package/dist/types/admin.d.ts.map +0 -1
  271. package/dist/types/admin.js +0 -3
  272. package/dist/types/admin.js.map +0 -1
  273. package/dist/types/auth.d.ts +0 -67
  274. package/dist/types/auth.d.ts.map +0 -1
  275. package/dist/types/auth.js +0 -3
  276. package/dist/types/auth.js.map +0 -1
  277. package/dist/types/config.d.ts +0 -39
  278. package/dist/types/config.d.ts.map +0 -1
  279. package/dist/types/config.js +0 -3
  280. package/dist/types/config.js.map +0 -1
  281. package/dist/types/index.d.ts +0 -13
  282. package/dist/types/index.d.ts.map +0 -1
  283. package/dist/types/index.js +0 -7
  284. package/dist/types/index.js.map +0 -1
  285. package/dist/types/layout.d.ts +0 -29
  286. package/dist/types/layout.d.ts.map +0 -1
  287. package/dist/types/layout.js +0 -3
  288. package/dist/types/layout.js.map +0 -1
  289. package/dist/types/mail/catalog.d.ts +0 -104
  290. package/dist/types/mail/catalog.d.ts.map +0 -1
  291. package/dist/types/mail/catalog.js +0 -3
  292. package/dist/types/mail/catalog.js.map +0 -1
  293. package/dist/types/mail/definition.d.ts +0 -68
  294. package/dist/types/mail/definition.d.ts.map +0 -1
  295. package/dist/types/mail/definition.js +0 -3
  296. package/dist/types/mail/definition.js.map +0 -1
  297. package/dist/types/mail/index.d.ts +0 -4
  298. package/dist/types/mail/index.d.ts.map +0 -1
  299. package/dist/types/mail/index.js +0 -3
  300. package/dist/types/mail/index.js.map +0 -1
  301. package/dist/types/mail/message.d.ts +0 -45
  302. package/dist/types/mail/message.d.ts.map +0 -1
  303. package/dist/types/mail/message.js +0 -3
  304. package/dist/types/mail/message.js.map +0 -1
  305. package/dist/types/metrics.d.ts +0 -46
  306. package/dist/types/metrics.d.ts.map +0 -1
  307. package/dist/types/metrics.js +0 -3
  308. package/dist/types/metrics.js.map +0 -1
  309. package/dist/types/resource.d.ts +0 -41
  310. package/dist/types/resource.d.ts.map +0 -1
  311. package/dist/types/resource.js +0 -3
  312. package/dist/types/resource.js.map +0 -1
  313. package/dist/utils/auth.d.ts +0 -4
  314. package/dist/utils/auth.d.ts.map +0 -1
  315. package/dist/utils/auth.js +0 -29
  316. package/dist/utils/auth.js.map +0 -1
  317. package/dist/utils/config.d.ts +0 -4
  318. package/dist/utils/config.d.ts.map +0 -1
  319. package/dist/utils/config.js +0 -14
  320. package/dist/utils/config.js.map +0 -1
  321. package/dist/utils/http.d.ts +0 -7
  322. package/dist/utils/http.d.ts.map +0 -1
  323. package/dist/utils/http.js +0 -61
  324. package/dist/utils/http.js.map +0 -1
  325. package/dist/utils/metricsRange.d.ts +0 -34
  326. package/dist/utils/metricsRange.d.ts.map +0 -1
  327. package/dist/utils/metricsRange.js +0 -121
  328. package/dist/utils/metricsRange.js.map +0 -1
  329. package/dist/utils/sidebar.d.ts +0 -2
  330. package/dist/utils/sidebar.d.ts.map +0 -1
  331. package/dist/utils/sidebar.js +0 -8
  332. package/dist/utils/sidebar.js.map +0 -1
  333. package/dist/utils/staticDir.d.ts +0 -2
  334. package/dist/utils/staticDir.d.ts.map +0 -1
  335. package/dist/utils/staticDir.js +0 -16
  336. package/dist/utils/staticDir.js.map +0 -1
  337. package/dist/utils/uploads.d.ts +0 -6
  338. package/dist/utils/uploads.d.ts.map +0 -1
  339. package/dist/utils/uploads.js +0 -66
  340. package/dist/utils/uploads.js.map +0 -1
  341. package/static/assets/index-DqDnCvHx.js +0 -340
  342. package/static/assets/index-bykX16vc.css +0 -1
@@ -1,41 +0,0 @@
1
- import type { DatabaseAdapter } from "./types";
2
- /**
3
- * Minimal MongoDB surface — duck-typed so @vertebr/admin does not require
4
- * the official driver as a dependency.
5
- */
6
- export type MongoCursorLike = {
7
- sort: (sort: Record<string, 1 | -1>) => MongoCursorLike;
8
- limit: (n: number) => MongoCursorLike;
9
- toArray: () => Promise<Array<Record<string, unknown>>>;
10
- };
11
- export type MongoCollectionLike = {
12
- find: (filter?: Record<string, unknown>) => MongoCursorLike;
13
- findOne: (filter: Record<string, unknown>) => Promise<Record<string, unknown> | null>;
14
- updateOne: (filter: Record<string, unknown>, update: Record<string, unknown>, options?: {
15
- upsert?: boolean;
16
- }) => Promise<unknown>;
17
- insertOne: (doc: Record<string, unknown>) => Promise<{
18
- insertedId?: unknown;
19
- }>;
20
- deleteOne: (filter: Record<string, unknown>) => Promise<unknown>;
21
- countDocuments: (filter?: Record<string, unknown>) => Promise<number>;
22
- };
23
- export type MongoDbLike = {
24
- collection: (name: string) => MongoCollectionLike;
25
- };
26
- export type MongoAdapterOptions = {
27
- getDb: () => MongoDbLike | Promise<MongoDbLike>;
28
- /** Field used as document id. @default "_id" mapped to `id` in rows. */
29
- idField?: string;
30
- };
31
- /**
32
- * Opt-in MongoDB adapter. The host app supplies `getDb()` — Vertebr never
33
- * opens a Mongo connection string on its own.
34
- *
35
- * @example
36
- * import { MongoClient } from "mongodb";
37
- * const client = await MongoClient.connect(process.env.MONGO_URL!);
38
- * const db = mongoAdapter({ getDb: () => client.db() });
39
- */
40
- export declare function mongoAdapter(options: MongoAdapterOptions): DatabaseAdapter;
41
- //# sourceMappingURL=mongo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/database/mongo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IACtC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,eAAe,CAAC;IAC5D,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7C,SAAS,EAAE,CACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,SAAS,EAAE,CACT,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,OAAO,CAAC;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAiFF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,eAAe,CAuF1E"}
@@ -1,151 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mongoAdapter = mongoAdapter;
4
- function serializeValue(value) {
5
- if (value == null)
6
- return value;
7
- if (value instanceof Date)
8
- return value.toISOString();
9
- if (Array.isArray(value))
10
- return value.map(serializeValue);
11
- if (typeof value === "object") {
12
- // ObjectId / Decimal128 etc. — prefer string form when available
13
- if ("toHexString" in value &&
14
- typeof value.toHexString === "function") {
15
- return value.toHexString();
16
- }
17
- const out = {};
18
- for (const [key, entry] of Object.entries(value)) {
19
- out[key] = serializeValue(entry);
20
- }
21
- return out;
22
- }
23
- return value;
24
- }
25
- function toDoc(raw, idField) {
26
- const data = serializeValue(raw);
27
- const id = String(data.id ?? data[idField] ?? "");
28
- const { [idField]: _mongoId, ...rest } = data;
29
- return { ...rest, id };
30
- }
31
- function mongoOp(op) {
32
- switch (op) {
33
- case "==":
34
- return "$eq";
35
- case "!=":
36
- return "$ne";
37
- case ">":
38
- return "$gt";
39
- case "<":
40
- return "$lt";
41
- case ">=":
42
- return "$gte";
43
- case "<=":
44
- return "$lte";
45
- case "in":
46
- return "$in";
47
- case "array-contains":
48
- return "$elemMatch";
49
- default:
50
- throw new Error(`Unsupported where op: ${String(op)}`);
51
- }
52
- }
53
- function buildFilter(options, idField) {
54
- const filter = {};
55
- for (const clause of options?.where ?? []) {
56
- const field = clause.field === "id" ? idField : clause.field;
57
- if (clause.op === "==") {
58
- filter[field] = clause.value;
59
- continue;
60
- }
61
- if (clause.op === "array-contains") {
62
- filter[field] = clause.value;
63
- continue;
64
- }
65
- const current = filter[field] ?? {};
66
- current[mongoOp(clause.op)] = clause.value;
67
- filter[field] = current;
68
- }
69
- return filter;
70
- }
71
- /**
72
- * Opt-in MongoDB adapter. The host app supplies `getDb()` — Vertebr never
73
- * opens a Mongo connection string on its own.
74
- *
75
- * @example
76
- * import { MongoClient } from "mongodb";
77
- * const client = await MongoClient.connect(process.env.MONGO_URL!);
78
- * const db = mongoAdapter({ getDb: () => client.db() });
79
- */
80
- function mongoAdapter(options) {
81
- const idField = options.idField ?? "_id";
82
- async function db() {
83
- return options.getDb();
84
- }
85
- return {
86
- async list(collection, listOptions) {
87
- const mongo = await db();
88
- const filter = buildFilter(listOptions, idField);
89
- let cursor = mongo.collection(collection).find(filter);
90
- if (listOptions?.orderBy) {
91
- const field = listOptions.orderBy.field === "id"
92
- ? idField
93
- : listOptions.orderBy.field;
94
- const direction = listOptions.orderBy.direction?.toLowerCase() === "desc" ? -1 : 1;
95
- cursor = cursor.sort({ [field]: direction });
96
- }
97
- const rows = listOptions?.limit != null
98
- ? await cursor.limit(listOptions.limit).toArray()
99
- : await cursor.toArray();
100
- return rows.map((row) => toDoc(row, idField));
101
- },
102
- async get(collection, id) {
103
- const mongo = await db();
104
- const row = await mongo.collection(collection).findOne({ [idField]: id });
105
- return row ? toDoc(row, idField) : null;
106
- },
107
- async set(collection, id, value, setOptions) {
108
- const mongo = await db();
109
- const merge = setOptions?.merge ?? true;
110
- const payload = { ...value };
111
- delete payload.id;
112
- delete payload[idField];
113
- if (merge) {
114
- await mongo.collection(collection).updateOne({ [idField]: id }, { $set: { ...payload, [idField]: id } }, { upsert: true });
115
- return;
116
- }
117
- // Full replace — drop previous fields by rewriting the document.
118
- await mongo.collection(collection).deleteOne({ [idField]: id });
119
- await mongo.collection(collection).insertOne({
120
- ...payload,
121
- [idField]: id,
122
- });
123
- },
124
- async create(collection, value, id) {
125
- const mongo = await db();
126
- const resolvedId = id ??
127
- (typeof value.id === "string" ? value.id : undefined) ??
128
- (typeof crypto !== "undefined" && "randomUUID" in crypto
129
- ? crypto.randomUUID()
130
- : `row_${Date.now().toString(36)}`);
131
- const payload = { ...value };
132
- delete payload.id;
133
- await mongo.collection(collection).insertOne({
134
- ...payload,
135
- [idField]: resolvedId,
136
- });
137
- return { id: resolvedId, ...payload };
138
- },
139
- async remove(collection, id) {
140
- const mongo = await db();
141
- await mongo.collection(collection).deleteOne({ [idField]: id });
142
- },
143
- async count(collection, listOptions) {
144
- const mongo = await db();
145
- return mongo
146
- .collection(collection)
147
- .countDocuments(buildFilter(listOptions, idField));
148
- },
149
- };
150
- }
151
- //# sourceMappingURL=mongo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/database/mongo.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import type { DatabaseAdapter } from "./types";
2
- /**
3
- * Minimal Postgres client surface (`pg` Pool / Client, postgres.js, etc.).
4
- * Duck-typed so @vertebr/admin does not require `pg` as a dependency.
5
- */
6
- export type PostgresQueryable = {
7
- query: (text: string, values?: unknown[]) => Promise<{
8
- rows: Array<Record<string, unknown>>;
9
- }>;
10
- };
11
- export type PostgresAdapterMode = "flat" | "jsonb";
12
- export type PostgresAdapterOptions = {
13
- /**
14
- * Return a queryable client/pool for the current call.
15
- * Use ALS / env switching here so Vertebr stays DB-agnostic.
16
- */
17
- getClient: () => PostgresQueryable | Promise<PostgresQueryable>;
18
- /**
19
- * `flat` — row columns are document fields (default).
20
- * `jsonb` — table has `id` + JSON `data` column (document store).
21
- */
22
- mode?: PostgresAdapterMode;
23
- /** Primary key column. @default "id" */
24
- idColumn?: string;
25
- /** JSONB payload column when mode is `jsonb`. @default "data" */
26
- dataColumn?: string;
27
- /** Optional schema prefix, e.g. `public` → `"public"."products"`. */
28
- schema?: string;
29
- };
30
- /**
31
- * Opt-in Postgres adapter. The host app supplies `getClient()` — Vertebr
32
- * never opens a database URL on its own.
33
- *
34
- * @example
35
- * import pg from "pg";
36
- * const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
37
- * const db = postgresAdapter({ getClient: () => pool, mode: "jsonb" });
38
- */
39
- export declare function postgresAdapter(options: PostgresAdapterOptions): DatabaseAdapter;
40
- /** Suggested DDL for jsonb-mode tables used with `postgresAdapter`. */
41
- export declare function postgresJsonbTableDDL(table: string, options?: {
42
- schema?: string;
43
- idColumn?: string;
44
- dataColumn?: string;
45
- }): string;
46
- //# sourceMappingURL=postgres.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/database/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,CACL,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,KACf,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,SAAS,EAAE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChE;;;OAGG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA8KF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CA2JjB;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,MAAM,CASR"}
@@ -1,262 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.postgresAdapter = postgresAdapter;
4
- exports.postgresJsonbTableDDL = postgresJsonbTableDDL;
5
- function assertIdent(name, label) {
6
- if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
7
- throw new Error(`Invalid SQL ${label}: "${name}"`);
8
- }
9
- return name;
10
- }
11
- function quoteIdent(name) {
12
- return `"${assertIdent(name, "identifier")}"`;
13
- }
14
- function quoteLiteral(value) {
15
- return `'${value.replace(/'/g, "''")}'`;
16
- }
17
- function tableRef(collection, schema) {
18
- const table = quoteIdent(collection);
19
- if (!schema)
20
- return table;
21
- return `${quoteIdent(schema)}.${table}`;
22
- }
23
- function serializeValue(value) {
24
- if (value == null)
25
- return value;
26
- if (value instanceof Date)
27
- return value.toISOString();
28
- if (Array.isArray(value))
29
- return value.map(serializeValue);
30
- if (typeof value === "object") {
31
- const out = {};
32
- for (const [key, entry] of Object.entries(value)) {
33
- out[key] = serializeValue(entry);
34
- }
35
- return out;
36
- }
37
- return value;
38
- }
39
- function rowToDoc(row, idColumn, mode, dataColumn) {
40
- if (mode === "jsonb") {
41
- const raw = row[dataColumn];
42
- const data = raw && typeof raw === "object" && !Array.isArray(raw)
43
- ? serializeValue(raw)
44
- : {};
45
- const id = String(row[idColumn] ?? data.id ?? "");
46
- return { id, ...data, [idColumn]: id };
47
- }
48
- const data = serializeValue(row);
49
- const id = String(data[idColumn] ?? "");
50
- return { ...data, id };
51
- }
52
- function sqlOp(op) {
53
- switch (op) {
54
- case "==":
55
- return "=";
56
- case "!=":
57
- return "<>";
58
- case ">":
59
- case "<":
60
- case ">=":
61
- case "<=":
62
- return op;
63
- case "in":
64
- return "IN";
65
- case "array-contains":
66
- return "@>";
67
- default:
68
- throw new Error(`Unsupported where op: ${String(op)}`);
69
- }
70
- }
71
- function fieldExpr(field, mode, dataColumn) {
72
- const safe = assertIdent(field, "field");
73
- if (mode === "jsonb") {
74
- return `${quoteIdent(dataColumn)}->>${quoteLiteral(safe)}`;
75
- }
76
- return quoteIdent(safe);
77
- }
78
- function buildWhere(options, mode, dataColumn) {
79
- const values = [];
80
- const parts = [];
81
- let index = 1;
82
- for (const clause of options?.where ?? []) {
83
- const column = fieldExpr(clause.field, mode, dataColumn);
84
- const op = sqlOp(clause.op);
85
- if (clause.op === "in") {
86
- if (!Array.isArray(clause.value)) {
87
- throw new Error(`Where "in" requires an array for ${clause.field}`);
88
- }
89
- if (clause.value.length === 0) {
90
- parts.push("FALSE");
91
- continue;
92
- }
93
- const slots = clause.value.map((entry) => {
94
- values.push(entry);
95
- return `$${index++}`;
96
- });
97
- parts.push(`${column} IN (${slots.join(", ")})`);
98
- continue;
99
- }
100
- if (clause.op === "array-contains") {
101
- if (mode !== "jsonb") {
102
- throw new Error(`array-contains is only supported in jsonb mode (field: ${clause.field})`);
103
- }
104
- const safe = assertIdent(clause.field, "field");
105
- values.push(JSON.stringify([clause.value]));
106
- parts.push(`${quoteIdent(dataColumn)}->${quoteLiteral(safe)} @> $${index++}::jsonb`);
107
- continue;
108
- }
109
- values.push(clause.value);
110
- parts.push(`${column} ${op} $${index++}`);
111
- }
112
- return {
113
- sql: parts.length ? ` WHERE ${parts.join(" AND ")}` : "",
114
- values,
115
- };
116
- }
117
- function buildOrderLimit(options, mode, dataColumn) {
118
- let sql = "";
119
- if (options?.orderBy) {
120
- const column = fieldExpr(options.orderBy.field, mode, dataColumn);
121
- const direction = options.orderBy.direction?.toLowerCase() === "desc" ? "DESC" : "ASC";
122
- sql += ` ORDER BY ${column} ${direction}`;
123
- }
124
- if (options?.limit != null) {
125
- const limit = Number(options.limit);
126
- if (!Number.isFinite(limit) || limit < 0) {
127
- throw new Error(`Invalid limit: ${options.limit}`);
128
- }
129
- sql += ` LIMIT ${Math.floor(limit)}`;
130
- }
131
- return sql;
132
- }
133
- function cryptoRandomId() {
134
- if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
135
- return crypto.randomUUID();
136
- }
137
- return `row_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
138
- }
139
- /**
140
- * Opt-in Postgres adapter. The host app supplies `getClient()` — Vertebr
141
- * never opens a database URL on its own.
142
- *
143
- * @example
144
- * import pg from "pg";
145
- * const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
146
- * const db = postgresAdapter({ getClient: () => pool, mode: "jsonb" });
147
- */
148
- function postgresAdapter(options) {
149
- const mode = options.mode ?? "flat";
150
- const idColumn = options.idColumn ?? "id";
151
- const dataColumn = options.dataColumn ?? "data";
152
- assertIdent(idColumn, "idColumn");
153
- assertIdent(dataColumn, "dataColumn");
154
- async function client() {
155
- return options.getClient();
156
- }
157
- function ref(collection) {
158
- return tableRef(collection, options.schema);
159
- }
160
- async function set(collection, id, value, setOptions) {
161
- const db = await client();
162
- const merge = setOptions?.merge ?? true;
163
- const payload = { ...value };
164
- delete payload.id;
165
- if (idColumn !== "id")
166
- delete payload[idColumn];
167
- if (mode === "jsonb") {
168
- const json = JSON.stringify(serializeValue(payload));
169
- if (merge) {
170
- await db.query(`INSERT INTO ${ref(collection)} (${quoteIdent(idColumn)}, ${quoteIdent(dataColumn)})
171
- VALUES ($1, $2::jsonb)
172
- ON CONFLICT (${quoteIdent(idColumn)}) DO UPDATE SET
173
- ${quoteIdent(dataColumn)} = COALESCE(${ref(collection)}.${quoteIdent(dataColumn)}, '{}'::jsonb) || EXCLUDED.${quoteIdent(dataColumn)}`, [id, json]);
174
- }
175
- else {
176
- await db.query(`INSERT INTO ${ref(collection)} (${quoteIdent(idColumn)}, ${quoteIdent(dataColumn)})
177
- VALUES ($1, $2::jsonb)
178
- ON CONFLICT (${quoteIdent(idColumn)}) DO UPDATE SET
179
- ${quoteIdent(dataColumn)} = EXCLUDED.${quoteIdent(dataColumn)}`, [id, json]);
180
- }
181
- return;
182
- }
183
- const existing = await db.query(`SELECT * FROM ${ref(collection)} WHERE ${quoteIdent(idColumn)} = $1 LIMIT 1`, [id]);
184
- const current = (existing.rows[0] ?? {});
185
- const serialized = serializeValue(payload);
186
- const serializedObj = serialized && typeof serialized === "object" && !Array.isArray(serialized)
187
- ? serialized
188
- : {};
189
- const next = merge
190
- ? { ...current, ...serializedObj, [idColumn]: id }
191
- : { ...serializedObj, [idColumn]: id };
192
- // Keep the primary key; only drop a separate `id` field when PK is renamed.
193
- if (idColumn !== "id") {
194
- delete next.id;
195
- }
196
- const columns = Object.keys(next);
197
- if (columns.length === 0) {
198
- await db.query(`INSERT INTO ${ref(collection)} (${quoteIdent(idColumn)}) VALUES ($1)
199
- ON CONFLICT (${quoteIdent(idColumn)}) DO NOTHING`, [id]);
200
- return;
201
- }
202
- const insertCols = columns.map(quoteIdent).join(", ");
203
- const insertVals = columns.map((_, i) => `$${i + 1}`).join(", ");
204
- const updateCols = columns.filter((col) => col !== idColumn);
205
- const updates = updateCols.length > 0
206
- ? updateCols
207
- .map((col) => `${quoteIdent(col)} = EXCLUDED.${quoteIdent(col)}`)
208
- .join(", ")
209
- : `${quoteIdent(idColumn)} = EXCLUDED.${quoteIdent(idColumn)}`;
210
- const values = columns.map((col) => next[col]);
211
- await db.query(`INSERT INTO ${ref(collection)} (${insertCols})
212
- VALUES (${insertVals})
213
- ON CONFLICT (${quoteIdent(idColumn)}) DO UPDATE SET ${updates}`, values);
214
- }
215
- async function get(collection, id) {
216
- const db = await client();
217
- const result = await db.query(`SELECT * FROM ${ref(collection)} WHERE ${quoteIdent(idColumn)} = $1 LIMIT 1`, [id]);
218
- const row = result.rows[0];
219
- return row ? rowToDoc(row, idColumn, mode, dataColumn) : null;
220
- }
221
- return {
222
- async list(collection, listOptions) {
223
- const db = await client();
224
- const where = buildWhere(listOptions, mode, dataColumn);
225
- const orderLimit = buildOrderLimit(listOptions, mode, dataColumn);
226
- const result = await db.query(`SELECT * FROM ${ref(collection)}${where.sql}${orderLimit}`, where.values);
227
- return result.rows.map((row) => rowToDoc(row, idColumn, mode, dataColumn));
228
- },
229
- get,
230
- set,
231
- async create(collection, value, id) {
232
- const resolvedId = id ??
233
- (typeof value.id === "string" ? value.id : undefined) ??
234
- cryptoRandomId();
235
- await set(collection, resolvedId, value, { merge: true });
236
- const doc = await get(collection, resolvedId);
237
- return doc ?? { id: resolvedId, ...value };
238
- },
239
- async remove(collection, id) {
240
- const db = await client();
241
- await db.query(`DELETE FROM ${ref(collection)} WHERE ${quoteIdent(idColumn)} = $1`, [id]);
242
- },
243
- async count(collection, listOptions) {
244
- const db = await client();
245
- const where = buildWhere(listOptions, mode, dataColumn);
246
- const result = await db.query(`SELECT COUNT(*)::int AS count FROM ${ref(collection)}${where.sql}`, where.values);
247
- return Number(result.rows[0]?.count ?? 0);
248
- },
249
- };
250
- }
251
- /** Suggested DDL for jsonb-mode tables used with `postgresAdapter`. */
252
- function postgresJsonbTableDDL(table, options) {
253
- const idColumn = options?.idColumn ?? "id";
254
- const dataColumn = options?.dataColumn ?? "data";
255
- const name = tableRef(table, options?.schema);
256
- return `CREATE TABLE IF NOT EXISTS ${name} (
257
- ${quoteIdent(idColumn)} TEXT PRIMARY KEY,
258
- ${quoteIdent(dataColumn)} JSONB NOT NULL DEFAULT '{}'::jsonb,
259
- updated_at TIMESTAMPTZ DEFAULT NOW()
260
- );`;
261
- }
262
- //# sourceMappingURL=postgres.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/database/postgres.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts DELETED
@@ -1,17 +0,0 @@
1
- export declare class VertebrAuthError extends Error {
2
- readonly statusCode = 401;
3
- constructor(message?: string);
4
- }
5
- export declare class VertebrNotFoundError extends Error {
6
- readonly statusCode = 404;
7
- constructor(message?: string);
8
- }
9
- export declare class VertebrEnvError extends Error {
10
- readonly statusCode = 400;
11
- constructor(message?: string);
12
- }
13
- export declare class VertebrBadRequestError extends Error {
14
- readonly statusCode = 400;
15
- constructor(message?: string);
16
- }
17
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,UAAU,OAAO;gBACd,OAAO,SAAiB;CAIrC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,UAAU,OAAO;gBACd,OAAO,SAAc;CAIlC;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,UAAU,OAAO;gBACd,OAAO,SAAwB;CAI5C;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,UAAU,OAAO;gBACd,OAAO,SAAgB;CAIpC"}
package/dist/errors.js DELETED
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VertebrBadRequestError = exports.VertebrEnvError = exports.VertebrNotFoundError = exports.VertebrAuthError = void 0;
4
- class VertebrAuthError extends Error {
5
- statusCode = 401;
6
- constructor(message = "Unauthorized") {
7
- super(message);
8
- this.name = "VertebrAuthError";
9
- }
10
- }
11
- exports.VertebrAuthError = VertebrAuthError;
12
- class VertebrNotFoundError extends Error {
13
- statusCode = 404;
14
- constructor(message = "Not found") {
15
- super(message);
16
- this.name = "VertebrNotFoundError";
17
- }
18
- }
19
- exports.VertebrNotFoundError = VertebrNotFoundError;
20
- class VertebrEnvError extends Error {
21
- statusCode = 400;
22
- constructor(message = "Invalid environment") {
23
- super(message);
24
- this.name = "VertebrEnvError";
25
- }
26
- }
27
- exports.VertebrEnvError = VertebrEnvError;
28
- class VertebrBadRequestError extends Error {
29
- statusCode = 400;
30
- constructor(message = "Bad request") {
31
- super(message);
32
- this.name = "VertebrBadRequestError";
33
- }
34
- }
35
- exports.VertebrBadRequestError = VertebrBadRequestError;
36
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAiB,SAAQ,KAAK;IAChC,UAAU,GAAG,GAAG,CAAC;IAC1B,YAAY,OAAO,GAAG,cAAc;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAND,4CAMC;AAED,MAAa,oBAAqB,SAAQ,KAAK;IACpC,UAAU,GAAG,GAAG,CAAC;IAC1B,YAAY,OAAO,GAAG,WAAW;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAND,oDAMC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAC/B,UAAU,GAAG,GAAG,CAAC;IAC1B,YAAY,OAAO,GAAG,qBAAqB;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAND,0CAMC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IACtC,UAAU,GAAG,GAAG,CAAC;IAC1B,YAAY,OAAO,GAAG,aAAa;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAND,wDAMC"}
@@ -1,53 +0,0 @@
1
- import type { AdminState } from "../services/state";
2
- export declare function bootstrapHandler(state: AdminState): Promise<{
3
- ok: boolean;
4
- brand: string;
5
- defaultEnvironment: string;
6
- environments: {
7
- id: string;
8
- label: string;
9
- tone: "neutral" | "warn" | "danger";
10
- auth: import("../types").EnvironmentAuthPublic;
11
- }[];
12
- }>;
13
- export declare function catalogHandler(state: AdminState, request: unknown): Promise<{
14
- ok: boolean;
15
- brand: string;
16
- environment: string;
17
- environments: {
18
- id: string;
19
- label: string;
20
- tone: "neutral" | "warn" | "danger";
21
- auth: import("../types").EnvironmentAuthPublic;
22
- }[];
23
- defaultEnvironment: string;
24
- resources: {
25
- id: string;
26
- label: string;
27
- schema: Record<string, import("../../schema").FieldSchema>;
28
- permissions: {
29
- create: boolean;
30
- update: boolean;
31
- delete: boolean;
32
- };
33
- uploads: Record<string, import("../../schema").ResourceUploadMeta> | undefined;
34
- }[];
35
- configs: {
36
- id: string;
37
- label: string;
38
- schema: Record<string, import("../../schema").FieldSchema>;
39
- section: string;
40
- }[];
41
- metrics: {
42
- id: string;
43
- label: string;
44
- } | null;
45
- gallery: {
46
- id: string;
47
- label: string;
48
- accept: string[];
49
- maxBytes: number;
50
- canDelete: boolean;
51
- } | null;
52
- }>;
53
- //# sourceMappingURL=catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/index/api/catalog.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,UAAU;;;;;;;;;;GAYvD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CvE"}