@sqrzro/server 4.0.0-alpha.62 → 4.0.0-alpha.64

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 (252) hide show
  1. package/dist/csv/generate-csv-blob.d.ts +3 -0
  2. package/dist/csv/generate-csv-blob.d.ts.map +1 -0
  3. package/dist/csv/generate-csv-blob.js +5 -0
  4. package/dist/csv/generate-csv.d.ts +3 -0
  5. package/dist/csv/generate-csv.d.ts.map +1 -0
  6. package/dist/csv/generate-csv.js +5 -0
  7. package/dist/csv/index.d.ts +4 -7
  8. package/dist/csv/index.d.ts.map +1 -0
  9. package/dist/csv/index.js +3 -2
  10. package/dist/csv/parse-csv.d.ts +3 -0
  11. package/dist/csv/parse-csv.d.ts.map +1 -0
  12. package/dist/csv/parse-csv.js +13 -0
  13. package/dist/database/create-repository.d.ts +41 -0
  14. package/dist/database/create-repository.d.ts.map +1 -0
  15. package/dist/database/create-repository.js +207 -0
  16. package/dist/database/db.d.ts +6 -0
  17. package/dist/database/db.d.ts.map +1 -0
  18. package/dist/database/db.js +7 -0
  19. package/dist/database/index.d.ts +5 -99
  20. package/dist/database/index.d.ts.map +1 -0
  21. package/dist/database/index.js +2 -2
  22. package/dist/database/interfaces.d.ts +52 -0
  23. package/dist/database/interfaces.d.ts.map +1 -0
  24. package/dist/database/interfaces.js +1 -0
  25. package/dist/forms/ValidationError.d.ts +12 -0
  26. package/dist/forms/ValidationError.d.ts.map +1 -0
  27. package/dist/forms/ValidationError.js +15 -0
  28. package/dist/forms/create-rule.d.ts +8 -0
  29. package/dist/forms/create-rule.d.ts.map +1 -0
  30. package/dist/forms/create-rule.js +4 -0
  31. package/dist/forms/files/put-file.d.ts +3 -0
  32. package/dist/forms/files/put-file.d.ts.map +1 -0
  33. package/dist/forms/files/put-file.js +9 -0
  34. package/dist/forms/files/upload-file.d.ts +4 -0
  35. package/dist/forms/files/upload-file.d.ts.map +1 -0
  36. package/dist/forms/files/upload-file.js +14 -0
  37. package/dist/forms/index.d.ts +13 -67
  38. package/dist/forms/index.d.ts.map +1 -0
  39. package/dist/forms/index.js +11 -2
  40. package/dist/forms/preprocesses/alpha.d.ts +3 -0
  41. package/dist/forms/preprocesses/alpha.d.ts.map +1 -0
  42. package/dist/forms/preprocesses/alpha.js +7 -0
  43. package/dist/forms/preprocesses/alphanumeric.d.ts +3 -0
  44. package/dist/forms/preprocesses/alphanumeric.d.ts.map +1 -0
  45. package/dist/forms/preprocesses/alphanumeric.js +7 -0
  46. package/dist/forms/preprocesses/lowercase.d.ts +1 -0
  47. package/dist/forms/preprocesses/lowercase.d.ts.map +1 -0
  48. package/dist/forms/preprocesses/lowercase.js +1 -0
  49. package/dist/forms/preprocesses/numeric.d.ts +1 -0
  50. package/dist/forms/preprocesses/numeric.d.ts.map +1 -0
  51. package/dist/forms/preprocesses/numeric.js +1 -0
  52. package/dist/forms/preprocesses/uppercase.d.ts +1 -0
  53. package/dist/forms/preprocesses/uppercase.d.ts.map +1 -0
  54. package/dist/forms/preprocesses/uppercase.js +1 -0
  55. package/dist/forms/refiner/get-not-exists-refiner.d.ts +9 -0
  56. package/dist/forms/refiner/get-not-exists-refiner.d.ts.map +1 -0
  57. package/dist/forms/refiner/get-not-exists-refiner.js +13 -0
  58. package/dist/forms/rules/get-csv-rule.d.ts +4 -0
  59. package/dist/forms/rules/get-csv-rule.d.ts.map +1 -0
  60. package/dist/forms/rules/get-csv-rule.js +8 -0
  61. package/dist/forms/rules/get-phone-rule.d.ts +9 -0
  62. package/dist/forms/rules/get-phone-rule.d.ts.map +1 -0
  63. package/dist/forms/rules/get-phone-rule.js +15 -0
  64. package/dist/forms/submit-form.d.ts +19 -0
  65. package/dist/forms/submit-form.d.ts.map +1 -0
  66. package/dist/forms/submit-form.js +33 -0
  67. package/dist/forms/transformers/get-exists-transformer.d.ts +3 -0
  68. package/dist/forms/transformers/get-exists-transformer.d.ts.map +1 -0
  69. package/dist/forms/transformers/get-exists-transformer.js +9 -0
  70. package/dist/forms/utility/clean-data.d.ts +3 -0
  71. package/dist/forms/utility/clean-data.d.ts.map +1 -0
  72. package/dist/forms/utility/clean-data.js +18 -0
  73. package/dist/forms/utility/handle-redirect.d.ts +3 -0
  74. package/dist/forms/utility/handle-redirect.d.ts.map +1 -0
  75. package/dist/forms/utility/handle-redirect.js +7 -0
  76. package/dist/forms/utility/interfaces.d.ts +12 -0
  77. package/dist/forms/utility/interfaces.d.ts.map +1 -0
  78. package/dist/forms/utility/interfaces.js +1 -0
  79. package/dist/forms/utility/transform-errors.d.ts +4 -0
  80. package/dist/forms/utility/transform-errors.d.ts.map +1 -0
  81. package/dist/forms/utility/transform-errors.js +7 -0
  82. package/dist/forms/utility/transform-file-path.d.ts +3 -0
  83. package/dist/forms/utility/transform-file-path.d.ts.map +1 -0
  84. package/dist/forms/utility/transform-file-path.js +9 -0
  85. package/dist/forms/utility/transform-issue.d.ts +6 -0
  86. package/dist/forms/utility/transform-issue.d.ts.map +1 -0
  87. package/dist/forms/utility/transform-issue.js +17 -0
  88. package/dist/forms/validate-schema.d.ts +4 -0
  89. package/dist/forms/validate-schema.d.ts.map +1 -0
  90. package/dist/forms/validate-schema.js +20 -0
  91. package/dist/forms/validators/get-exists-validator.d.ts +5 -0
  92. package/dist/forms/validators/get-exists-validator.d.ts.map +1 -0
  93. package/dist/forms/validators/get-exists-validator.js +10 -0
  94. package/dist/forms/validators/get-not-exists-validator.d.ts +5 -0
  95. package/dist/forms/validators/get-not-exists-validator.d.ts.map +1 -0
  96. package/dist/forms/validators/get-not-exists-validator.js +10 -0
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +1 -0
  100. package/dist/json/index.d.ts +3 -7
  101. package/dist/json/index.d.ts.map +1 -0
  102. package/dist/json/index.js +2 -2
  103. package/dist/json/validate-json-response.d.ts +4 -0
  104. package/dist/json/validate-json-response.d.ts.map +1 -0
  105. package/dist/json/validate-json-response.js +7 -0
  106. package/dist/json/validate-json.d.ts +4 -0
  107. package/dist/json/validate-json.d.ts.map +1 -0
  108. package/dist/json/validate-json.js +4 -0
  109. package/dist/logs/LogRepository.d.ts +1 -0
  110. package/dist/logs/LogRepository.d.ts.map +1 -0
  111. package/dist/logs/LogRepository.js +1 -0
  112. package/dist/logs/index.d.ts +1 -0
  113. package/dist/logs/index.d.ts.map +1 -0
  114. package/dist/logs/index.js +1 -0
  115. package/dist/logs/log.d.ts +1 -0
  116. package/dist/logs/log.d.ts.map +1 -0
  117. package/dist/logs/log.js +1 -0
  118. package/dist/logs/utility/interfaces.d.ts +1 -0
  119. package/dist/logs/utility/interfaces.d.ts.map +1 -0
  120. package/dist/logs/utility/interfaces.js +1 -0
  121. package/dist/logs/utility/schema.d.ts +1 -0
  122. package/dist/logs/utility/schema.d.ts.map +1 -0
  123. package/dist/logs/utility/schema.js +1 -0
  124. package/dist/mail/create-mail.d.ts +4 -0
  125. package/dist/mail/create-mail.d.ts.map +1 -0
  126. package/dist/mail/create-mail.js +4 -0
  127. package/dist/mail/drivers/mailgun/index.d.ts +4 -0
  128. package/dist/mail/drivers/mailgun/index.d.ts.map +1 -0
  129. package/dist/mail/drivers/mailgun/index.js +24 -0
  130. package/dist/mail/drivers/mailgun/transform-mailgun-domain.d.ts +3 -0
  131. package/dist/mail/drivers/mailgun/transform-mailgun-domain.d.ts.map +1 -0
  132. package/dist/mail/drivers/mailgun/transform-mailgun-domain.js +4 -0
  133. package/dist/mail/drivers/mailtrap/index.d.ts +4 -0
  134. package/dist/mail/drivers/mailtrap/index.d.ts.map +1 -0
  135. package/dist/mail/drivers/mailtrap/index.js +31 -0
  136. package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.d.ts +5 -0
  137. package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.d.ts.map +1 -0
  138. package/dist/mail/drivers/mailtrap/transform-mailtrap-recipients.js +7 -0
  139. package/dist/mail/drivers/mandrill/index.d.ts +4 -0
  140. package/dist/mail/drivers/mandrill/index.d.ts.map +1 -0
  141. package/dist/mail/drivers/mandrill/index.js +34 -0
  142. package/dist/mail/drivers/mandrill/transform-mandrill-recipients.d.ts +6 -0
  143. package/dist/mail/drivers/mandrill/transform-mandrill-recipients.d.ts.map +1 -0
  144. package/dist/mail/drivers/mandrill/transform-mandrill-recipients.js +14 -0
  145. package/dist/mail/drivers/sendgrid/index.d.ts +4 -0
  146. package/dist/mail/drivers/sendgrid/index.d.ts.map +1 -0
  147. package/dist/mail/drivers/sendgrid/index.js +23 -0
  148. package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.d.ts +5 -0
  149. package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.d.ts.map +1 -0
  150. package/dist/mail/drivers/sendgrid/transform-sendgrid-recipients.js +7 -0
  151. package/dist/mail/get-mail.d.ts +7 -0
  152. package/dist/mail/get-mail.d.ts.map +1 -0
  153. package/dist/mail/get-mail.js +12 -0
  154. package/dist/mail/index.d.ts +5 -25
  155. package/dist/mail/index.d.ts.map +1 -0
  156. package/dist/mail/index.js +3 -3
  157. package/dist/mail/send-mail.d.ts +4 -0
  158. package/dist/mail/send-mail.d.ts.map +1 -0
  159. package/dist/mail/send-mail.js +45 -0
  160. package/dist/mail/utility/get-sender-details.d.ts +4 -0
  161. package/dist/mail/utility/get-sender-details.d.ts.map +1 -0
  162. package/dist/mail/utility/get-sender-details.js +15 -0
  163. package/dist/mail/utility/interfaces.d.ts +34 -0
  164. package/dist/mail/utility/interfaces.d.ts.map +1 -0
  165. package/dist/mail/utility/interfaces.js +1 -0
  166. package/dist/mail/utility/render-mail.d.ts +3 -0
  167. package/dist/mail/utility/render-mail.d.ts.map +1 -0
  168. package/dist/mail/utility/render-mail.js +20 -0
  169. package/dist/proxy/handle-proxy.d.ts +5 -0
  170. package/dist/proxy/handle-proxy.d.ts.map +1 -0
  171. package/dist/proxy/handle-proxy.js +17 -0
  172. package/dist/proxy/index.d.ts +3 -10
  173. package/dist/proxy/index.d.ts.map +1 -0
  174. package/dist/proxy/index.js +1 -2
  175. package/dist/proxy/utility/interfaces.d.ts +6 -0
  176. package/dist/proxy/utility/interfaces.d.ts.map +1 -0
  177. package/dist/proxy/utility/interfaces.js +1 -0
  178. package/dist/queue/add-to-queue.d.ts +3 -0
  179. package/dist/queue/add-to-queue.d.ts.map +1 -0
  180. package/dist/queue/add-to-queue.js +2 -0
  181. package/dist/queue/drivers/mail-queue-driver.d.ts +1 -0
  182. package/dist/queue/drivers/mail-queue-driver.d.ts.map +1 -0
  183. package/dist/queue/drivers/mail-queue-driver.js +1 -0
  184. package/dist/queue/handle-queue.d.ts +4 -0
  185. package/dist/queue/handle-queue.d.ts.map +1 -0
  186. package/dist/queue/handle-queue.js +2 -0
  187. package/dist/queue/index.d.ts +3 -0
  188. package/dist/queue/index.d.ts.map +1 -0
  189. package/dist/queue/index.js +2 -0
  190. package/dist/queue/utility/interfaces.d.ts +1 -0
  191. package/dist/queue/utility/interfaces.d.ts.map +1 -0
  192. package/dist/queue/utility/interfaces.js +1 -0
  193. package/dist/storage/index.d.ts +2 -2
  194. package/dist/storage/index.d.ts.map +1 -0
  195. package/dist/storage/index.js +66 -2
  196. package/dist/storage/utility/get-client.d.ts +10 -0
  197. package/dist/storage/utility/get-client.d.ts.map +1 -0
  198. package/dist/storage/utility/get-client.js +22 -0
  199. package/dist/storage/utility/get-ttl.d.ts +3 -0
  200. package/dist/storage/utility/get-ttl.d.ts.map +1 -0
  201. package/dist/storage/utility/get-ttl.js +15 -0
  202. package/dist/storage/utility/is-localhost.d.ts +8 -0
  203. package/dist/storage/utility/is-localhost.d.ts.map +1 -0
  204. package/dist/storage/utility/is-localhost.js +9 -0
  205. package/dist/storage/utility/make-key.d.ts +3 -0
  206. package/dist/storage/utility/make-key.d.ts.map +1 -0
  207. package/dist/storage/utility/make-key.js +4 -0
  208. package/dist/utility/db.d.ts +5 -0
  209. package/dist/utility/db.d.ts.map +1 -0
  210. package/dist/utility/db.js +2 -0
  211. package/dist/utility/ensure-id-from-params.d.ts +3 -0
  212. package/dist/utility/ensure-id-from-params.d.ts.map +1 -0
  213. package/dist/utility/ensure-id-from-params.js +7 -0
  214. package/dist/utility/ensure-id.d.ts +3 -0
  215. package/dist/utility/ensure-id.d.ts.map +1 -0
  216. package/dist/utility/ensure-id.js +9 -0
  217. package/dist/utility/generate-id.d.ts +3 -0
  218. package/dist/utility/generate-id.d.ts.map +1 -0
  219. package/dist/utility/generate-id.js +12 -0
  220. package/dist/utility/get-id-from-params.d.ts +3 -0
  221. package/dist/utility/get-id-from-params.d.ts.map +1 -0
  222. package/dist/utility/get-id-from-params.js +18 -0
  223. package/dist/utility/guard-id.d.ts +4 -0
  224. package/dist/utility/guard-id.d.ts.map +1 -0
  225. package/dist/utility/guard-id.js +11 -0
  226. package/dist/utility/index.d.ts +7 -14
  227. package/dist/utility/index.d.ts.map +1 -0
  228. package/dist/utility/index.js +6 -2
  229. package/dist/{interfaces-DTUqy5Oj.d.ts → utility/interfaces.d.ts} +4 -5
  230. package/dist/utility/interfaces.d.ts.map +1 -0
  231. package/dist/utility/interfaces.js +1 -0
  232. package/dist/utility/syslog.d.ts +3 -0
  233. package/dist/utility/syslog.d.ts.map +1 -0
  234. package/dist/utility/syslog.js +16 -0
  235. package/package.json +20 -20
  236. package/dist/chunk-2ZLU4AUD.js +0 -2
  237. package/dist/chunk-2ZLU4AUD.js.map +0 -1
  238. package/dist/chunk-6GDOIHTS.js +0 -2
  239. package/dist/chunk-6GDOIHTS.js.map +0 -1
  240. package/dist/chunk-BA3BC4CD.js +0 -2
  241. package/dist/chunk-BA3BC4CD.js.map +0 -1
  242. package/dist/chunk-UCMLSO7F.js +0 -3
  243. package/dist/chunk-UCMLSO7F.js.map +0 -1
  244. package/dist/csv/index.js.map +0 -1
  245. package/dist/database/index.js.map +0 -1
  246. package/dist/forms/index.js.map +0 -1
  247. package/dist/interfaces-cnzok1wV.d.ts +0 -13
  248. package/dist/json/index.js.map +0 -1
  249. package/dist/mail/index.js.map +0 -1
  250. package/dist/proxy/index.js.map +0 -1
  251. package/dist/storage/index.js.map +0 -1
  252. package/dist/utility/index.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ declare function generateCSVBlob(data: string[][]): Blob;
2
+ export default generateCSVBlob;
3
+ //# sourceMappingURL=generate-csv-blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-csv-blob.d.ts","sourceRoot":"","sources":["../../src/csv/generate-csv-blob.ts"],"names":[],"mappings":"AAEA,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAE/C;eAEc,eAAe"}
@@ -0,0 +1,5 @@
1
+ import generateCSV from './generate-csv';
2
+ function generateCSVBlob(data) {
3
+ return new Blob([generateCSV(data)], { type: 'text/csv' });
4
+ }
5
+ export default generateCSVBlob;
@@ -0,0 +1,3 @@
1
+ declare function generateCSV(data: string[][]): string;
2
+ export default generateCSV;
3
+ //# sourceMappingURL=generate-csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-csv.d.ts","sourceRoot":"","sources":["../../src/csv/generate-csv.ts"],"names":[],"mappings":"AAEA,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAE7C;eAEc,WAAW"}
@@ -0,0 +1,5 @@
1
+ import { stringify } from 'csv/sync';
2
+ function generateCSV(data) {
3
+ return stringify(data);
4
+ }
5
+ export default generateCSV;
@@ -1,7 +1,4 @@
1
- declare function generateCSV(data: string[][]): string;
2
-
3
- declare function generateCSVBlob(data: string[][]): Blob;
4
-
5
- declare function parseCSV(csv: string): string[][];
6
-
7
- export { generateCSV, generateCSVBlob, parseCSV };
1
+ export { default as generateCSV } from './generate-csv';
2
+ export { default as generateCSVBlob } from './generate-csv-blob';
3
+ export { default as parseCSV } from './parse-csv';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/csv/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/csv/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export{a as parseCSV}from'../chunk-UCMLSO7F.js';import {stringify}from'csv/sync';function n(e){return stringify(e)}var t=n;function a(e){return new Blob([t(e)],{type:"text/csv"})}var f=a;export{t as generateCSV,f as generateCSVBlob};//# sourceMappingURL=index.js.map
2
- //# sourceMappingURL=index.js.map
1
+ export { default as generateCSV } from './generate-csv';
2
+ export { default as generateCSVBlob } from './generate-csv-blob';
3
+ export { default as parseCSV } from './parse-csv';
@@ -0,0 +1,3 @@
1
+ declare function parseCSV(csv: string): string[][];
2
+ export default parseCSV;
3
+ //# sourceMappingURL=parse-csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-csv.d.ts","sourceRoot":"","sources":["../../src/csv/parse-csv.ts"],"names":[],"mappings":"AAEA,iBAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAazC;eAEc,QAAQ"}
@@ -0,0 +1,13 @@
1
+ import { parse } from 'csv/sync';
2
+ function parseCSV(csv) {
3
+ const records = [];
4
+ const lines = csv.split('\n').filter((item) => item.trim() !== '');
5
+ for (const line of lines) {
6
+ const record = parse(line, {
7
+ skip_empty_lines: true,
8
+ });
9
+ records.push(record[0].map((item) => item.trim()));
10
+ }
11
+ return records;
12
+ }
13
+ export default parseCSV;
@@ -0,0 +1,41 @@
1
+ import { PgColumn } from 'drizzle-orm/pg-core';
2
+ import z from 'zod';
3
+ import { Paginated } from '../utility/interfaces';
4
+ import { PaginatedFunctionConfig, RepositoryConfig, SelectFunctionConfig, UnwrapColumnType, UnwrapDropdown, UnwrapFilters, UnwrapGuards, UnwrapID, UnwrapInsert, UnwrapModel, UnwrapParamKey, UnwrapUpdate } from './interfaces';
5
+ declare function createRepository<TConfig extends RepositoryConfig<TIndexes, any, any>, TIndexes extends Record<string, PgColumn<any>> = Record<string, PgColumn<any>>>(config: TConfig): {
6
+ create: (data: UnwrapInsert<TConfig>['data']) => Promise<UnwrapInsert<TConfig>['model']>;
7
+ delete: (id: UnwrapID<TConfig>) => Promise<void>;
8
+ ensureByID: (id: UnwrapID<TConfig>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>>;
9
+ ensureByIndex: <K extends keyof TIndexes>(key: K, value: UnwrapColumnType<TIndexes[K]>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>> | undefined) => Promise<UnwrapModel<TConfig>>;
10
+ ensureFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>>;
11
+ ensureFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>, key?: string) => Promise<UnwrapModel<TConfig>>;
12
+ ensureID: (id: string | null | undefined) => UnwrapID<TConfig>;
13
+ ensureIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<UnwrapID<TConfig>>;
14
+ ensureIDFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, key?: string) => Promise<UnwrapID<TConfig>>;
15
+ getAll: (fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>[]>;
16
+ getAutocomplete: {
17
+ ({ id, }: {
18
+ id?: UnwrapID<TConfig>;
19
+ }, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>): Promise<UnwrapDropdown<TConfig> | null>;
20
+ ({ search, }: {
21
+ search?: string;
22
+ }, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>): Promise<UnwrapDropdown<TConfig>[]>;
23
+ };
24
+ getByID: (id: UnwrapID<TConfig>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
25
+ getByIndex: <K extends keyof TIndexes>(key: K, value: UnwrapColumnType<TIndexes[K]>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
26
+ getDropdown: (fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapDropdown<TConfig>[]>;
27
+ getFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
28
+ getFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>, key?: string) => Promise<UnwrapModel<TConfig> | null>;
29
+ getIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<UnwrapID<TConfig> | null>;
30
+ getIDFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, key?: string) => Promise<UnwrapID<TConfig> | null>;
31
+ getIDRule: (idKey: string) => import(".").ValidationRule<z.ZodTemplateLiteral<UnwrapID<TConfig>>, <T extends object>(data: T) => Promise<T & Record<UnwrapParamKey<TConfig>, UnwrapModel<TConfig>>>, undefined>;
32
+ getPaginated: (fnConfig?: PaginatedFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<Paginated<UnwrapModel<TConfig>>>;
33
+ guardID: {
34
+ (id: (string | null | undefined)[]): UnwrapID<TConfig>[];
35
+ (id: string | null | undefined): UnwrapID<TConfig> | null;
36
+ };
37
+ undelete: (id: UnwrapID<TConfig>) => Promise<void>;
38
+ update: (data: UnwrapUpdate<TConfig>['data']) => Promise<UnwrapUpdate<TConfig>['model']>;
39
+ };
40
+ export default createRepository;
41
+ //# sourceMappingURL=create-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-repository.d.ts","sourceRoot":"","sources":["../../src/database/create-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ import { eq } from 'drizzle-orm';
2
+ import { notFound } from 'next/navigation';
3
+ import { cache } from 'react';
4
+ import z from 'zod';
5
+ import createRule from '../forms/create-rule';
6
+ import getExistsTransformer from '../forms/transformers/get-exists-transformer';
7
+ import ensureIDFn from '../utility/ensure-id';
8
+ import ensureIDFromParamsFn from '../utility/ensure-id-from-params';
9
+ import getIDFromParamsFn from '../utility/get-id-from-params';
10
+ import guardIDFn from '../utility/guard-id';
11
+ function ensureConfig(config, keys) {
12
+ for (const key of keys) {
13
+ if (config[key] === undefined || config[key] === null) {
14
+ throw new Error(`Repository config is missing required field: "${String(key)}"`);
15
+ }
16
+ }
17
+ return config;
18
+ }
19
+ function createRepository(config) {
20
+ function guardID(id) {
21
+ const { prefix } = ensureConfig(config, ['prefix']);
22
+ if (Array.isArray(id)) {
23
+ return guardIDFn(id, prefix);
24
+ }
25
+ return guardIDFn(id, prefix);
26
+ }
27
+ function ensureID(id) {
28
+ const { prefix } = ensureConfig(config, ['prefix']);
29
+ return ensureIDFn(id, prefix);
30
+ }
31
+ async function getIDFromParams(params) {
32
+ const { paramKey, prefix } = ensureConfig(config, ['paramKey', 'prefix']);
33
+ return getIDFromParamsFn(paramKey, prefix, params);
34
+ }
35
+ async function ensureIDFromParams(params) {
36
+ const { paramKey, prefix } = ensureConfig(config, ['paramKey', 'prefix']);
37
+ try {
38
+ const id = await ensureIDFromParamsFn(paramKey, prefix, params);
39
+ return id;
40
+ }
41
+ catch (err) {
42
+ notFound();
43
+ }
44
+ }
45
+ async function getIDFromSearchParams(searchParams, key = 'id') {
46
+ const { prefix } = ensureConfig(config, ['prefix']);
47
+ return getIDFromParamsFn(key, prefix, searchParams);
48
+ }
49
+ async function ensureIDFromSearchParams(searchParams, key = 'id') {
50
+ const { prefix } = ensureConfig(config, ['prefix']);
51
+ try {
52
+ const id = await ensureIDFromParamsFn(key, prefix, searchParams);
53
+ return id;
54
+ }
55
+ catch (err) {
56
+ notFound();
57
+ }
58
+ }
59
+ async function uncached_getAll(fnConfig) {
60
+ const { makeQuery } = ensureConfig(config, ['makeQuery']);
61
+ const conditions = [];
62
+ const filters = await config.applyFilters?.(fnConfig?.filters ?? null);
63
+ conditions.push(...(filters || []));
64
+ const guards = await config.applyGuards?.(fnConfig?.guards ?? null);
65
+ conditions.push(...(guards || []));
66
+ return makeQuery(conditions, {
67
+ limit: fnConfig?.limit ?? -1,
68
+ offset: fnConfig?.offset ?? 0,
69
+ });
70
+ }
71
+ async function uncached_getPaginated(fnConfig) {
72
+ const { makeCountQuery, makeQuery } = ensureConfig(config, ['makeCountQuery', 'makeQuery']);
73
+ const conditions = [];
74
+ const filters = await config.applyFilters?.(fnConfig?.filters ?? null);
75
+ conditions.push(...(filters || []));
76
+ const guards = await config.applyGuards?.(fnConfig?.guards ?? null);
77
+ conditions.push(...(guards || []));
78
+ const total = await makeCountQuery(conditions);
79
+ const data = await makeQuery(conditions, {
80
+ limit: fnConfig?.limit ?? 10,
81
+ offset: ((fnConfig?.page ?? 1) - 1) * (fnConfig?.limit ?? 10),
82
+ });
83
+ return {
84
+ data,
85
+ meta: { limit: fnConfig?.limit ?? 10, page: fnConfig?.page ?? 1, total },
86
+ };
87
+ }
88
+ async function uncached_getByIndex(key, value, fnConfig) {
89
+ const { makeQuery } = ensureConfig(config, ['makeQuery']);
90
+ if (!config.indexes?.[key]) {
91
+ throw new Error(`'Could not \`getByIndex\`. Index ${String(key)} is not defined in the repository configuration.`);
92
+ }
93
+ const conditions = [];
94
+ const filters = await config.applyFilters?.(fnConfig?.filters ?? null);
95
+ conditions.push(...(filters || []));
96
+ const guards = await config.applyGuards?.(fnConfig?.guards ?? null);
97
+ conditions.push(...(guards || []));
98
+ conditions.push(eq(config.indexes[key], value));
99
+ const [result] = await makeQuery(conditions, { limit: 1, offset: 0 });
100
+ return result ?? null;
101
+ }
102
+ async function uncached_ensureByIndex(...args) {
103
+ const result = await uncached_getByIndex(...args);
104
+ if (!result) {
105
+ return notFound();
106
+ }
107
+ return result;
108
+ }
109
+ async function uncached_getByID(id, fnConfig) {
110
+ return uncached_getByIndex('id', id, fnConfig);
111
+ }
112
+ async function uncached_ensureByID(id, fnConfig) {
113
+ return uncached_ensureByIndex('id', id, fnConfig);
114
+ }
115
+ async function uncached_getFromParams(params, fnConfig) {
116
+ const id = await getIDFromParams(params);
117
+ return id ? uncached_getByID(id, fnConfig) : null;
118
+ }
119
+ async function uncached_ensureFromParams(params, fnConfig) {
120
+ const id = await ensureIDFromParams(params);
121
+ return uncached_ensureByID(id, fnConfig);
122
+ }
123
+ async function uncached_getFromSearchParams(searchParams, fnConfig, key = 'id') {
124
+ const id = await getIDFromSearchParams(searchParams, key);
125
+ return id ? uncached_getByID(id, fnConfig) : null;
126
+ }
127
+ async function uncached_ensureFromSearchParams(searchParams, fnConfig, key = 'id') {
128
+ const id = await ensureIDFromSearchParams(searchParams, key);
129
+ return uncached_ensureByID(id, fnConfig);
130
+ }
131
+ async function uncached_getAutocomplete({ id, search, }, fnConfig) {
132
+ ensureConfig(config, ['makeQuery', 'transformDropdown']);
133
+ if (id) {
134
+ const result = await uncached_getByID(id, fnConfig);
135
+ return result ? config.transformDropdown(result) : null;
136
+ }
137
+ if (search) {
138
+ const results = await uncached_getAll({
139
+ ...fnConfig,
140
+ filters: { ...(fnConfig?.filters || {}), search },
141
+ limit: 4,
142
+ });
143
+ return Promise.all(results.map(config.transformDropdown));
144
+ }
145
+ return null;
146
+ }
147
+ async function uncached_getDropdown(fnConfig) {
148
+ ensureConfig(config, ['makeQuery', 'transformDropdown']);
149
+ const results = await uncached_getAll(fnConfig);
150
+ return Promise.all(results.map(config.transformDropdown));
151
+ }
152
+ async function create(data) {
153
+ const { makeInsertMutation } = ensureConfig(config, ['makeInsertMutation']);
154
+ return makeInsertMutation(data);
155
+ }
156
+ async function update(data) {
157
+ const { makeUpdateMutation } = ensureConfig(config, ['makeUpdateMutation']);
158
+ return makeUpdateMutation(data);
159
+ }
160
+ async function $delete(id) {
161
+ const { makeDeleteMutation } = ensureConfig(config, ['makeDeleteMutation']);
162
+ return makeDeleteMutation(id);
163
+ }
164
+ async function undelete(id) {
165
+ const { makeUndeleteMutation } = ensureConfig(config, ['makeUndeleteMutation']);
166
+ return makeUndeleteMutation(id);
167
+ }
168
+ function makeTransformer(idKey) {
169
+ return async (data) => {
170
+ const { paramKey } = ensureConfig(config, ['paramKey']);
171
+ const id = data[idKey];
172
+ const model = await getExistsTransformer(idKey, id, cache(uncached_getByID));
173
+ return { ...data, [paramKey]: model };
174
+ };
175
+ }
176
+ function getIDRule(idKey) {
177
+ const { prefix } = ensureConfig(config, ['paramKey', 'prefix']);
178
+ const validator = z.templateLiteral([prefix, '_', z.string()]);
179
+ return createRule({ validator, transformer: makeTransformer(idKey) });
180
+ }
181
+ return {
182
+ create,
183
+ delete: $delete,
184
+ ensureByID: cache(uncached_ensureByID),
185
+ ensureByIndex: cache(uncached_ensureByIndex),
186
+ ensureFromParams: cache(uncached_ensureFromParams),
187
+ ensureFromSearchParams: cache(uncached_ensureFromSearchParams),
188
+ ensureID,
189
+ ensureIDFromParams,
190
+ ensureIDFromSearchParams,
191
+ getAll: cache(uncached_getAll),
192
+ getAutocomplete: cache(uncached_getAutocomplete),
193
+ getByID: cache(uncached_getByID),
194
+ getByIndex: cache(uncached_getByIndex),
195
+ getDropdown: cache(uncached_getDropdown),
196
+ getFromParams: cache(uncached_getFromParams),
197
+ getFromSearchParams: cache(uncached_getFromSearchParams),
198
+ getIDFromParams,
199
+ getIDFromSearchParams,
200
+ getIDRule,
201
+ getPaginated: cache(uncached_getPaginated),
202
+ guardID,
203
+ undelete,
204
+ update,
205
+ };
206
+ }
207
+ export default createRepository;
@@ -0,0 +1,6 @@
1
+ import { Pool } from 'pg';
2
+ declare const db: import("drizzle-orm/node-postgres").NodePgDatabase<Record<string, never>> & {
3
+ $client: Pool;
4
+ };
5
+ export default db;
6
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,MAAM,EAAE;;CAAgB,CAAC;eAEV,EAAE"}
@@ -0,0 +1,7 @@
1
+ import { drizzle } from 'drizzle-orm/node-postgres';
2
+ import { Pool } from 'pg';
3
+ const pool = new Pool({
4
+ connectionString: process.env.DATABASE_URL,
5
+ });
6
+ const db = drizzle(pool);
7
+ export default db;
@@ -1,99 +1,5 @@
1
- import { SQL } from 'drizzle-orm';
2
- import { PgColumn } from 'drizzle-orm/pg-core';
3
- import { V as ValidationRule } from '../interfaces-cnzok1wV.js';
4
- import z from 'zod';
5
- import { P as Paginated } from '../interfaces-DTUqy5Oj.js';
6
- import * as drizzle_orm_node_postgres from 'drizzle-orm/node-postgres';
7
- import { Pool } from 'pg';
8
-
9
- type QueryConditions = (SQL | undefined)[];
10
- type UnwrapColumnType<T> = T extends PgColumn<infer C, any, any> ? C['data'] : never;
11
- type UnwrapDropdown<TConfig extends RepositoryConfig> = TConfig['transformDropdown'] extends (...args: any) => infer U ? U : never;
12
- type UnwrapInsert<TConfig> = TConfig extends {
13
- makeInsertMutation: (values: infer Data) => Promise<infer Model>;
14
- } ? {
15
- data: Data;
16
- model: Model;
17
- } : never;
18
- type UnwrapFilters<TConfig extends RepositoryConfig> = TConfig['applyFilters'] extends (filters: infer TFilters) => any ? TFilters : never;
19
- type UnwrapGuards<TConfig extends RepositoryConfig> = TConfig['applyGuards'] extends (guards: infer TGuards) => any ? TGuards : never;
20
- type UnwrapID<TConfig extends RepositoryConfig> = TConfig extends {
21
- indexes: {
22
- id: infer IDColumn;
23
- };
24
- } ? UnwrapColumnType<IDColumn> : never;
25
- type UnwrapModel<TConfig extends RepositoryConfig> = TConfig['makeQuery'] extends (...args: any) => Promise<(infer U)[]> ? U : never;
26
- type UnwrapParamKey<TConfig extends RepositoryConfig> = TConfig['paramKey'] extends infer U ? U extends string ? U : never : never;
27
- type UnwrapUpdate<TConfig> = TConfig extends {
28
- makeUpdateMutation: (values: infer Data) => Promise<infer Model>;
29
- } ? {
30
- data: Data;
31
- model: Model;
32
- } : never;
33
- interface QueryConfig {
34
- limit: number;
35
- offset: number;
36
- }
37
- interface SelectFunctionConfig<TFilters, TGuards> extends Partial<QueryConfig> {
38
- filters?: TFilters;
39
- guards?: TGuards;
40
- }
41
- interface PaginatedFunctionConfig<TFilters, TGuards> extends SelectFunctionConfig<TFilters, TGuards> {
42
- page?: number | null;
43
- }
44
- type RepositoryConfig<TIndexes extends Record<string, PgColumn<any>> = Record<string, PgColumn<any>>, TFilters = never, TGuards = never, TParamKey extends string = string> = {
45
- indexes?: TIndexes;
46
- makeCountQuery?: (conditions: QueryConditions) => Promise<number>;
47
- makeDeleteMutation?: (id: any) => Promise<void>;
48
- makeInsertMutation?: (values: any) => Promise<any>;
49
- makeQuery?: (conditions: QueryConditions, config: QueryConfig) => Promise<any[]>;
50
- makeUndeleteMutation?: (id: any) => Promise<void>;
51
- makeUpdateMutation?: (values: any) => Promise<any>;
52
- applyFilters?: (filters: TFilters) => Promise<QueryConditions>;
53
- applyGuards?: (guards: TGuards) => Promise<QueryConditions>;
54
- paramKey?: TParamKey;
55
- prefix?: string;
56
- transformDropdown?: (value: any) => any;
57
- };
58
-
59
- declare function createRepository<TConfig extends RepositoryConfig<TIndexes, any, any>, TIndexes extends Record<string, PgColumn<any>> = Record<string, PgColumn<any>>>(config: TConfig): {
60
- create: (data: UnwrapInsert<TConfig>["data"]) => Promise<UnwrapInsert<TConfig>["model"]>;
61
- delete: (id: UnwrapID<TConfig>) => Promise<void>;
62
- ensureByID: (id: UnwrapID<TConfig>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>>;
63
- ensureByIndex: <K extends keyof TIndexes>(key: K, value: UnwrapColumnType<TIndexes[K]>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>> | undefined) => Promise<UnwrapModel<TConfig>>;
64
- ensureFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>>;
65
- ensureFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>, key?: string) => Promise<UnwrapModel<TConfig>>;
66
- ensureID: (id: string | null | undefined) => UnwrapID<TConfig>;
67
- ensureIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<UnwrapID<TConfig>>;
68
- ensureIDFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, key?: string) => Promise<UnwrapID<TConfig>>;
69
- getAll: (fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig>[]>;
70
- getAutocomplete: {
71
- ({ id, }: {
72
- id?: UnwrapID<TConfig>;
73
- }, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>): Promise<UnwrapDropdown<TConfig> | null>;
74
- ({ search, }: {
75
- search?: string;
76
- }, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>): Promise<UnwrapDropdown<TConfig>[]>;
77
- };
78
- getByID: (id: UnwrapID<TConfig>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
79
- getByIndex: <K extends keyof TIndexes>(key: K, value: UnwrapColumnType<TIndexes[K]>, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
80
- getDropdown: (fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapDropdown<TConfig>[]>;
81
- getFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<UnwrapModel<TConfig> | null>;
82
- getFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, fnConfig?: SelectFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>, key?: string) => Promise<UnwrapModel<TConfig> | null>;
83
- getIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<UnwrapID<TConfig> | null>;
84
- getIDFromSearchParams: (searchParams?: Promise<Record<string, string>> | Record<string, string> | null, key?: string) => Promise<UnwrapID<TConfig> | null>;
85
- getIDRule: (idKey: string) => ValidationRule<z.ZodTemplateLiteral<UnwrapID<TConfig>>, <T>(data: T) => Promise<T & Record<UnwrapParamKey<TConfig>, UnwrapModel<TConfig>>>, undefined>;
86
- getPaginated: (fnConfig?: PaginatedFunctionConfig<UnwrapFilters<TConfig>, UnwrapGuards<TConfig>>) => Promise<Paginated<UnwrapModel<TConfig>>>;
87
- guardID: {
88
- (id: (string | null | undefined)[]): UnwrapID<TConfig>[];
89
- (id: string | null | undefined): UnwrapID<TConfig> | null;
90
- };
91
- undelete: (id: UnwrapID<TConfig>) => Promise<void>;
92
- update: (data: UnwrapUpdate<TConfig>["data"]) => Promise<UnwrapUpdate<TConfig>["model"]>;
93
- };
94
-
95
- declare const db: drizzle_orm_node_postgres.NodePgDatabase<Record<string, never>> & {
96
- $client: Pool;
97
- };
98
-
99
- export { type PaginatedFunctionConfig, type QueryConditions, type QueryConfig, type RepositoryConfig, type SelectFunctionConfig, type UnwrapColumnType, type UnwrapDropdown, type UnwrapFilters, type UnwrapGuards, type UnwrapID, type UnwrapInsert, type UnwrapModel, type UnwrapParamKey, type UnwrapUpdate, ValidationRule, createRepository, db };
1
+ export type * from './interfaces';
2
+ export type { ValidationRule } from '../forms/utility/interfaces';
3
+ export { default as createRepository } from './create-repository';
4
+ export { default as db } from './db';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,cAAc,CAAC;AAQlC,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,MAAM,CAAC"}
@@ -1,2 +1,2 @@
1
- import {a as a$1,c as c$1}from'../chunk-2ZLU4AUD.js';import {a,b,c}from'../chunk-BA3BC4CD.js';import {eq}from'drizzle-orm';import {notFound}from'next/navigation';import {cache}from'react';import k from'zod';import {drizzle}from'drizzle-orm/node-postgres';import {Pool}from'pg';async function $(e,l,u){let c$1=await c(e,l,u);return b(c$1,l)}var U=$;function i(e,l){for(let u of l)if(e[u]===void 0||e[u]===null)throw new Error(`Repository config is missing required field: "${String(u)}"`);return e}function V(e){function l(n){let{prefix:r}=i(e,["prefix"]);return Array.isArray(n)?a(n,r):a(n,r)}function u(n){let{prefix:r}=i(e,["prefix"]);return b(n,r)}async function c$2(n){let{paramKey:r,prefix:t}=i(e,["paramKey","prefix"]);return c(r,t,n)}async function I(n){let{paramKey:r,prefix:t}=i(e,["paramKey","prefix"]);try{return await U(r,t,n)}catch{notFound();}}async function D(n,r="id"){let{prefix:t}=i(e,["prefix"]);return c(r,t,n)}async function F(n,r="id"){let{prefix:t}=i(e,["prefix"]);try{return await U(r,t,n)}catch{notFound();}}async function f(n){let{makeQuery:r}=i(e,["makeQuery"]),t=[],o=await e.applyFilters?.(n?.filters??null);t.push(...o||[]);let s=await e.applyGuards?.(n?.guards??null);return t.push(...s||[]),r(t,{limit:n?.limit??-1,offset:n?.offset??0})}async function K(n){let{makeCountQuery:r,makeQuery:t}=i(e,["makeCountQuery","makeQuery"]),o=[],s=await e.applyFilters?.(n?.filters??null);o.push(...s||[]);let T=await e.applyGuards?.(n?.guards??null);o.push(...T||[]);let C=await r(o);return {data:await t(o,{limit:n?.limit??10,offset:((n?.page??1)-1)*(n?.limit??10)}),meta:{limit:n?.limit??10,page:n?.page??1,total:C}}}async function g(n,r,t){let{makeQuery:o}=i(e,["makeQuery"]);if(!e.indexes?.[n])throw new Error(`'Could not \`getByIndex\`. Index ${String(n)} is not defined in the repository configuration.`);let s=[],T=await e.applyFilters?.(t?.filters??null);s.push(...T||[]);let C=await e.applyGuards?.(t?.guards??null);s.push(...C||[]),s.push(eq(e.indexes[n],r));let[h]=await o(s,{limit:1,offset:0});return h??null}async function x(...n){let r=await g(...n);return r||notFound()}async function p(n,r){return g("id",n,r)}async function w(n,r){return x("id",n,r)}async function M(n,r){let t=await c$2(n);return t?p(t,r):null}async function G(n,r){let t=await I(n);return w(t,r)}async function _(n,r,t="id"){let o=await D(n,t);return o?p(o,r):null}async function Q(n,r,t="id"){let o=await F(n,t);return w(o,r)}async function A({id:n,search:r},t){if(i(e,["makeQuery","transformDropdown"]),n){let o=await p(n,t);return o?e.transformDropdown(o):null}if(r){let o=await f({...t,filters:{...t?.filters||{},search:r},limit:4});return Promise.all(o.map(e.transformDropdown))}return null}async function B(n){i(e,["makeQuery","transformDropdown"]);let r=await f(n);return Promise.all(r.map(e.transformDropdown))}async function b$1(n){let{makeInsertMutation:r}=i(e,["makeInsertMutation"]);return r(n)}async function v(n){let{makeUpdateMutation:r}=i(e,["makeUpdateMutation"]);return r(n)}async function z(n){let{makeDeleteMutation:r}=i(e,["makeDeleteMutation"]);return r(n)}async function E(n){let{makeUndeleteMutation:r}=i(e,["makeUndeleteMutation"]);return r(n)}function N(n){return async r=>{let{paramKey:t}=i(e,["paramKey"]),o=await c$1(n,r[n],cache(p));return {...r,[t]:o}}}function L(n){let{prefix:r}=i(e,["paramKey","prefix"]),t=k.templateLiteral([r,"_",k.string()]);return a$1({validator:t,transformer:N(n)})}return {create:b$1,delete:z,ensureByID:cache(w),ensureByIndex:cache(x),ensureFromParams:cache(G),ensureFromSearchParams:cache(Q),ensureID:u,ensureIDFromParams:I,ensureIDFromSearchParams:F,getAll:cache(f),getAutocomplete:cache(A),getByID:cache(p),getByIndex:cache(g),getDropdown:cache(B),getFromParams:cache(M),getFromSearchParams:cache(_),getIDFromParams:c$2,getIDFromSearchParams:D,getIDRule:L,getPaginated:cache(K),guardID:l,undelete:E,update:v}}var Z=V;var J=new Pool({connectionString:process.env.DATABASE_URL}),O=drizzle(J),W=O;export{Z as createRepository,W as db};//# sourceMappingURL=index.js.map
2
- //# sourceMappingURL=index.js.map
1
+ export { default as createRepository } from './create-repository';
2
+ export { default as db } from './db';
@@ -0,0 +1,52 @@
1
+ import { SQL } from 'drizzle-orm';
2
+ import { PgColumn } from 'drizzle-orm/pg-core';
3
+ export type QueryConditions = (SQL | undefined)[];
4
+ export type UnwrapColumnType<T> = T extends PgColumn<infer C, any, any> ? C['data'] : never;
5
+ export type UnwrapDropdown<TConfig extends RepositoryConfig> = TConfig['transformDropdown'] extends (...args: any) => infer U ? U : never;
6
+ export type UnwrapInsert<TConfig> = TConfig extends {
7
+ makeInsertMutation: (values: infer Data) => Promise<infer Model>;
8
+ } ? {
9
+ data: Data;
10
+ model: Model;
11
+ } : never;
12
+ export type UnwrapFilters<TConfig extends RepositoryConfig> = TConfig['applyFilters'] extends (filters: infer TFilters) => any ? TFilters : never;
13
+ export type UnwrapGuards<TConfig extends RepositoryConfig> = TConfig['applyGuards'] extends (guards: infer TGuards) => any ? TGuards : never;
14
+ export type UnwrapID<TConfig extends RepositoryConfig> = TConfig extends {
15
+ indexes: {
16
+ id: infer IDColumn;
17
+ };
18
+ } ? UnwrapColumnType<IDColumn> : never;
19
+ export type UnwrapModel<TConfig extends RepositoryConfig> = TConfig['makeQuery'] extends (...args: any) => Promise<(infer U)[]> ? U : never;
20
+ export type UnwrapParamKey<TConfig extends RepositoryConfig> = TConfig['paramKey'] extends infer U ? U extends string ? U : never : never;
21
+ export type UnwrapUpdate<TConfig> = TConfig extends {
22
+ makeUpdateMutation: (values: infer Data) => Promise<infer Model>;
23
+ } ? {
24
+ data: Data;
25
+ model: Model;
26
+ } : never;
27
+ export interface QueryConfig {
28
+ limit: number;
29
+ offset: number;
30
+ }
31
+ export interface SelectFunctionConfig<TFilters, TGuards> extends Partial<QueryConfig> {
32
+ filters?: TFilters;
33
+ guards?: TGuards;
34
+ }
35
+ export interface PaginatedFunctionConfig<TFilters, TGuards> extends SelectFunctionConfig<TFilters, TGuards> {
36
+ page?: number | null;
37
+ }
38
+ export type RepositoryConfig<TIndexes extends Record<string, PgColumn<any>> = Record<string, PgColumn<any>>, TFilters = never, TGuards = never, TParamKey extends string = string> = {
39
+ indexes?: TIndexes;
40
+ makeCountQuery?: (conditions: QueryConditions) => Promise<number>;
41
+ makeDeleteMutation?: (id: any) => Promise<void>;
42
+ makeInsertMutation?: (values: any) => Promise<any>;
43
+ makeQuery?: (conditions: QueryConditions, config: QueryConfig) => Promise<any[]>;
44
+ makeUndeleteMutation?: (id: any) => Promise<void>;
45
+ makeUpdateMutation?: (values: any) => Promise<any>;
46
+ applyFilters?: (filters: TFilters) => Promise<QueryConditions>;
47
+ applyGuards?: (guards: TGuards) => Promise<QueryConditions>;
48
+ paramKey?: TParamKey;
49
+ prefix?: string;
50
+ transformDropdown?: (value: any) => any;
51
+ };
52
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/database/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Custom error class to represent validation errors in form processing.
3
+ *
4
+ * It extends the built-in Error class and includes a messages property
5
+ * that holds a record of validation error messages.
6
+ */
7
+ declare class ValidationError extends Error {
8
+ messages: Record<string, string>;
9
+ constructor(messages: Record<string, string>);
10
+ }
11
+ export default ValidationError;
12
+ //# sourceMappingURL=ValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../src/forms/ValidationError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAM,eAAgB,SAAQ,KAAK;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,YAAmB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAKlD;CACJ;eAEc,eAAe"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Custom error class to represent validation errors in form processing.
3
+ *
4
+ * It extends the built-in Error class and includes a messages property
5
+ * that holds a record of validation error messages.
6
+ */
7
+ class ValidationError extends Error {
8
+ messages;
9
+ constructor(messages) {
10
+ super(JSON.stringify(messages));
11
+ this.messages = messages;
12
+ this.name = 'ValidationError';
13
+ }
14
+ }
15
+ export default ValidationError;
@@ -0,0 +1,8 @@
1
+ import type { ValidationRule } from './utility/interfaces';
2
+ declare function createRule<V, T = undefined, R = undefined>(config: {
3
+ validator: V;
4
+ transformer?: T;
5
+ refiner?: R;
6
+ }): ValidationRule<V, T, R>;
7
+ export default createRule;
8
+ //# sourceMappingURL=create-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-rule.d.ts","sourceRoot":"","sources":["../../src/forms/create-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iBAAS,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE;IACzD,SAAS,EAAE,CAAC,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,CAAC;CACf,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE1B;eAEc,UAAU"}
@@ -0,0 +1,4 @@
1
+ function createRule(config) {
2
+ return config;
3
+ }
4
+ export default createRule;
@@ -0,0 +1,3 @@
1
+ declare function putFile(file: File): Promise<string>;
2
+ export default putFile;
3
+ //# sourceMappingURL=put-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"put-file.d.ts","sourceRoot":"","sources":["../../../src/forms/files/put-file.ts"],"names":[],"mappings":"AAIA,iBAAe,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlD;eAEc,OAAO"}
@@ -0,0 +1,9 @@
1
+ import { put } from '@vercel/blob';
2
+ import transformFilePath from '../utility/transform-file-path';
3
+ async function putFile(file) {
4
+ const result = await put(transformFilePath(file), file, {
5
+ access: 'public',
6
+ });
7
+ return result.url;
8
+ }
9
+ export default putFile;
@@ -0,0 +1,4 @@
1
+ import type { FormResponse } from '../utility/interfaces';
2
+ declare function uploadFile(file: File): FormResponse<string>;
3
+ export default uploadFile;
4
+ //# sourceMappingURL=upload-file.d.ts.map