sonamu 0.2.38 → 0.2.40

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 (265) hide show
  1. package/dist/bin/cli-wrapper.d.mts +1 -0
  2. package/dist/bin/cli-wrapper.d.ts +0 -2
  3. package/dist/bin/cli-wrapper.js +26 -23
  4. package/dist/bin/cli-wrapper.js.map +1 -1
  5. package/dist/bin/cli-wrapper.mjs +34 -0
  6. package/dist/bin/cli-wrapper.mjs.map +1 -0
  7. package/dist/bin/cli.d.mts +2 -0
  8. package/dist/bin/cli.d.ts +2 -2
  9. package/dist/bin/cli.js +856 -407
  10. package/dist/bin/cli.js.map +1 -1
  11. package/dist/bin/cli.mjs +887 -0
  12. package/dist/bin/cli.mjs.map +1 -0
  13. package/dist/chunk-BPT5ZXMX.js +7444 -0
  14. package/dist/chunk-BPT5ZXMX.js.map +1 -0
  15. package/dist/chunk-JXJTFHF7.mjs +20 -0
  16. package/dist/chunk-JXJTFHF7.mjs.map +1 -0
  17. package/dist/chunk-OTFO46SP.mjs +7443 -0
  18. package/dist/chunk-OTFO46SP.mjs.map +1 -0
  19. package/dist/index.d.mts +1419 -0
  20. package/dist/index.d.ts +1419 -19
  21. package/dist/index.js +422 -32
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +427 -0
  24. package/dist/index.mjs.map +1 -0
  25. package/package.json +1 -1
  26. package/tsup.config.js +8 -0
  27. package/dist/api/caster.d.ts +0 -10
  28. package/dist/api/caster.d.ts.map +0 -1
  29. package/dist/api/caster.js +0 -81
  30. package/dist/api/caster.js.map +0 -1
  31. package/dist/api/code-converters.d.ts +0 -22
  32. package/dist/api/code-converters.d.ts.map +0 -1
  33. package/dist/api/code-converters.js +0 -507
  34. package/dist/api/code-converters.js.map +0 -1
  35. package/dist/api/context.d.ts +0 -11
  36. package/dist/api/context.d.ts.map +0 -1
  37. package/dist/api/context.js +0 -3
  38. package/dist/api/context.js.map +0 -1
  39. package/dist/api/decorators.d.ts +0 -29
  40. package/dist/api/decorators.d.ts.map +0 -1
  41. package/dist/api/decorators.js +0 -26
  42. package/dist/api/decorators.js.map +0 -1
  43. package/dist/api/index.d.ts +0 -6
  44. package/dist/api/index.d.ts.map +0 -1
  45. package/dist/api/index.js +0 -22
  46. package/dist/api/index.js.map +0 -1
  47. package/dist/api/init.d.ts +0 -42
  48. package/dist/api/init.d.ts.map +0 -1
  49. package/dist/api/init.js +0 -175
  50. package/dist/api/init.js.map +0 -1
  51. package/dist/api/sonamu.d.ts +0 -66
  52. package/dist/api/sonamu.d.ts.map +0 -1
  53. package/dist/api/sonamu.js +0 -204
  54. package/dist/api/sonamu.js.map +0 -1
  55. package/dist/bin/cli-wrapper.d.ts.map +0 -1
  56. package/dist/bin/cli.d.ts.map +0 -1
  57. package/dist/database/_batch_update.d.ts +0 -15
  58. package/dist/database/_batch_update.d.ts.map +0 -1
  59. package/dist/database/_batch_update.js +0 -89
  60. package/dist/database/_batch_update.js.map +0 -1
  61. package/dist/database/base-model.d.ts +0 -39
  62. package/dist/database/base-model.d.ts.map +0 -1
  63. package/dist/database/base-model.js +0 -270
  64. package/dist/database/base-model.js.map +0 -1
  65. package/dist/database/db.d.ts +0 -21
  66. package/dist/database/db.d.ts.map +0 -1
  67. package/dist/database/db.js +0 -99
  68. package/dist/database/db.js.map +0 -1
  69. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
  70. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
  71. package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -37
  72. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  73. package/dist/database/upsert-builder.d.ts +0 -34
  74. package/dist/database/upsert-builder.d.ts.map +0 -1
  75. package/dist/database/upsert-builder.js +0 -240
  76. package/dist/database/upsert-builder.js.map +0 -1
  77. package/dist/entity/entity-manager.d.ts +0 -32
  78. package/dist/entity/entity-manager.d.ts.map +0 -1
  79. package/dist/entity/entity-manager.js +0 -135
  80. package/dist/entity/entity-manager.js.map +0 -1
  81. package/dist/entity/entity-utils.d.ts +0 -61
  82. package/dist/entity/entity-utils.d.ts.map +0 -1
  83. package/dist/entity/entity-utils.js +0 -124
  84. package/dist/entity/entity-utils.js.map +0 -1
  85. package/dist/entity/entity.d.ts +0 -59
  86. package/dist/entity/entity.d.ts.map +0 -1
  87. package/dist/entity/entity.js +0 -697
  88. package/dist/entity/entity.js.map +0 -1
  89. package/dist/entity/migrator.d.ts +0 -143
  90. package/dist/entity/migrator.d.ts.map +0 -1
  91. package/dist/entity/migrator.js +0 -1434
  92. package/dist/entity/migrator.js.map +0 -1
  93. package/dist/entity/smd-utils.d.ts +0 -61
  94. package/dist/entity/smd-utils.d.ts.map +0 -1
  95. package/dist/entity/smd-utils.js +0 -121
  96. package/dist/entity/smd-utils.js.map +0 -1
  97. package/dist/exceptions/error-handler.d.ts +0 -3
  98. package/dist/exceptions/error-handler.d.ts.map +0 -1
  99. package/dist/exceptions/error-handler.js +0 -34
  100. package/dist/exceptions/error-handler.js.map +0 -1
  101. package/dist/exceptions/so-exceptions.d.ts +0 -48
  102. package/dist/exceptions/so-exceptions.d.ts.map +0 -1
  103. package/dist/exceptions/so-exceptions.js +0 -105
  104. package/dist/exceptions/so-exceptions.js.map +0 -1
  105. package/dist/index.d.ts.map +0 -1
  106. package/dist/smd/entity-manager.d.ts +0 -28
  107. package/dist/smd/entity-manager.d.ts.map +0 -1
  108. package/dist/smd/entity-manager.js +0 -119
  109. package/dist/smd/entity-manager.js.map +0 -1
  110. package/dist/smd/entity.d.ts +0 -40
  111. package/dist/smd/entity.d.ts.map +0 -1
  112. package/dist/smd/entity.js +0 -430
  113. package/dist/smd/entity.js.map +0 -1
  114. package/dist/smd/migrator.d.ts +0 -109
  115. package/dist/smd/migrator.d.ts.map +0 -1
  116. package/dist/smd/migrator.js +0 -1164
  117. package/dist/smd/migrator.js.map +0 -1
  118. package/dist/smd/smd-manager.d.ts +0 -28
  119. package/dist/smd/smd-manager.d.ts.map +0 -1
  120. package/dist/smd/smd-manager.js +0 -146
  121. package/dist/smd/smd-manager.js.map +0 -1
  122. package/dist/smd/smd-utils.d.ts +0 -61
  123. package/dist/smd/smd-utils.d.ts.map +0 -1
  124. package/dist/smd/smd-utils.js +0 -121
  125. package/dist/smd/smd-utils.js.map +0 -1
  126. package/dist/smd/smd.d.ts +0 -40
  127. package/dist/smd/smd.d.ts.map +0 -1
  128. package/dist/smd/smd.js +0 -429
  129. package/dist/smd/smd.js.map +0 -1
  130. package/dist/syncer/index.d.ts +0 -2
  131. package/dist/syncer/index.d.ts.map +0 -1
  132. package/dist/syncer/index.js +0 -18
  133. package/dist/syncer/index.js.map +0 -1
  134. package/dist/syncer/syncer.d.ts +0 -108
  135. package/dist/syncer/syncer.d.ts.map +0 -1
  136. package/dist/syncer/syncer.js +0 -1119
  137. package/dist/syncer/syncer.js.map +0 -1
  138. package/dist/templates/base-template.d.ts +0 -13
  139. package/dist/templates/base-template.d.ts.map +0 -1
  140. package/dist/templates/base-template.js +0 -10
  141. package/dist/templates/base-template.js.map +0 -1
  142. package/dist/templates/entity.template.d.ts +0 -17
  143. package/dist/templates/entity.template.d.ts.map +0 -1
  144. package/dist/templates/entity.template.js +0 -78
  145. package/dist/templates/entity.template.js.map +0 -1
  146. package/dist/templates/generated.template.d.ts +0 -27
  147. package/dist/templates/generated.template.d.ts.map +0 -1
  148. package/dist/templates/generated.template.js +0 -239
  149. package/dist/templates/generated.template.js.map +0 -1
  150. package/dist/templates/generated_http.template.d.ts +0 -24
  151. package/dist/templates/generated_http.template.d.ts.map +0 -1
  152. package/dist/templates/generated_http.template.js +0 -133
  153. package/dist/templates/generated_http.template.js.map +0 -1
  154. package/dist/templates/generated_sso.template.d.ts +0 -17
  155. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  156. package/dist/templates/generated_sso.template.js +0 -66
  157. package/dist/templates/generated_sso.template.js.map +0 -1
  158. package/dist/templates/index.d.ts +0 -2
  159. package/dist/templates/index.d.ts.map +0 -1
  160. package/dist/templates/index.js +0 -18
  161. package/dist/templates/index.js.map +0 -1
  162. package/dist/templates/init_enums.template.d.ts +0 -17
  163. package/dist/templates/init_enums.template.d.ts.map +0 -1
  164. package/dist/templates/init_enums.template.js +0 -54
  165. package/dist/templates/init_enums.template.js.map +0 -1
  166. package/dist/templates/init_generated.template.d.ts +0 -17
  167. package/dist/templates/init_generated.template.d.ts.map +0 -1
  168. package/dist/templates/init_generated.template.js +0 -46
  169. package/dist/templates/init_generated.template.js.map +0 -1
  170. package/dist/templates/init_types.template.d.ts +0 -17
  171. package/dist/templates/init_types.template.d.ts.map +0 -1
  172. package/dist/templates/init_types.template.js +0 -37
  173. package/dist/templates/init_types.template.js.map +0 -1
  174. package/dist/templates/model.template.d.ts +0 -17
  175. package/dist/templates/model.template.d.ts.map +0 -1
  176. package/dist/templates/model.template.js +0 -168
  177. package/dist/templates/model.template.js.map +0 -1
  178. package/dist/templates/model_test.template.d.ts +0 -17
  179. package/dist/templates/model_test.template.d.ts.map +0 -1
  180. package/dist/templates/model_test.template.js +0 -34
  181. package/dist/templates/model_test.template.js.map +0 -1
  182. package/dist/templates/service.template.d.ts +0 -28
  183. package/dist/templates/service.template.d.ts.map +0 -1
  184. package/dist/templates/service.template.js +0 -167
  185. package/dist/templates/service.template.js.map +0 -1
  186. package/dist/templates/smd.template.d.ts +0 -17
  187. package/dist/templates/smd.template.d.ts.map +0 -1
  188. package/dist/templates/smd.template.js +0 -49
  189. package/dist/templates/smd.template.js.map +0 -1
  190. package/dist/templates/view_enums_buttonset.template.d.ts +0 -17
  191. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  192. package/dist/templates/view_enums_buttonset.template.js +0 -30
  193. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  194. package/dist/templates/view_enums_dropdown.template.d.ts +0 -18
  195. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  196. package/dist/templates/view_enums_dropdown.template.js +0 -68
  197. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  198. package/dist/templates/view_enums_select.template.d.ts +0 -17
  199. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  200. package/dist/templates/view_enums_select.template.js +0 -54
  201. package/dist/templates/view_enums_select.template.js.map +0 -1
  202. package/dist/templates/view_form.template.d.ts +0 -74
  203. package/dist/templates/view_form.template.d.ts.map +0 -1
  204. package/dist/templates/view_form.template.js +0 -368
  205. package/dist/templates/view_form.template.js.map +0 -1
  206. package/dist/templates/view_id_all_select.template.d.ts +0 -17
  207. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  208. package/dist/templates/view_id_all_select.template.js +0 -30
  209. package/dist/templates/view_id_all_select.template.js.map +0 -1
  210. package/dist/templates/view_id_async_select.template.d.ts +0 -17
  211. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  212. package/dist/templates/view_id_async_select.template.js +0 -104
  213. package/dist/templates/view_id_async_select.template.js.map +0 -1
  214. package/dist/templates/view_list.template.d.ts +0 -86
  215. package/dist/templates/view_list.template.d.ts.map +0 -1
  216. package/dist/templates/view_list.template.js +0 -526
  217. package/dist/templates/view_list.template.js.map +0 -1
  218. package/dist/templates/view_list_columns.template.d.ts +0 -17
  219. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  220. package/dist/templates/view_list_columns.template.js +0 -47
  221. package/dist/templates/view_list_columns.template.js.map +0 -1
  222. package/dist/templates/view_search_input.template.d.ts +0 -17
  223. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  224. package/dist/templates/view_search_input.template.js +0 -63
  225. package/dist/templates/view_search_input.template.js.map +0 -1
  226. package/dist/testing/fixture-manager.d.ts +0 -18
  227. package/dist/testing/fixture-manager.d.ts.map +0 -1
  228. package/dist/testing/fixture-manager.js +0 -238
  229. package/dist/testing/fixture-manager.js.map +0 -1
  230. package/dist/types/smd.types.d.ts +0 -741
  231. package/dist/types/smd.types.d.ts.map +0 -1
  232. package/dist/types/smd.types.js +0 -292
  233. package/dist/types/smd.types.js.map +0 -1
  234. package/dist/types/types.d.ts +0 -721
  235. package/dist/types/types.d.ts.map +0 -1
  236. package/dist/types/types.js +0 -287
  237. package/dist/types/types.js.map +0 -1
  238. package/dist/ui/index.d.ts +0 -4
  239. package/dist/ui/index.d.ts.map +0 -1
  240. package/dist/ui/index.js +0 -14
  241. package/dist/ui/index.js.map +0 -1
  242. package/dist/ui/main.d.ts +0 -4
  243. package/dist/ui/main.d.ts.map +0 -1
  244. package/dist/ui/main.js +0 -15
  245. package/dist/ui/main.js.map +0 -1
  246. package/dist/utils/controller.d.ts +0 -9
  247. package/dist/utils/controller.d.ts.map +0 -1
  248. package/dist/utils/controller.js +0 -36
  249. package/dist/utils/controller.js.map +0 -1
  250. package/dist/utils/lodash-able.d.ts +0 -2
  251. package/dist/utils/lodash-able.d.ts.map +0 -1
  252. package/dist/utils/lodash-able.js +0 -9
  253. package/dist/utils/lodash-able.js.map +0 -1
  254. package/dist/utils/model.d.ts +0 -17
  255. package/dist/utils/model.d.ts.map +0 -1
  256. package/dist/utils/model.js +0 -23
  257. package/dist/utils/model.js.map +0 -1
  258. package/dist/utils/sql-parser.d.ts +0 -4
  259. package/dist/utils/sql-parser.d.ts.map +0 -1
  260. package/dist/utils/sql-parser.js +0 -40
  261. package/dist/utils/sql-parser.js.map +0 -1
  262. package/dist/utils/utils.d.ts +0 -9
  263. package/dist/utils/utils.d.ts.map +0 -1
  264. package/dist/utils/utils.js +0 -100
  265. package/dist/utils/utils.js.map +0 -1
package/dist/index.mjs ADDED
@@ -0,0 +1,427 @@
1
+ const require = (await import('module')).createRequire(import.meta.url);
2
+ import {
3
+ AlreadyProcessedException,
4
+ ApiParamType,
5
+ BadRequestException,
6
+ BaseModel,
7
+ BaseModelClass,
8
+ DB,
9
+ DuplicateRowException,
10
+ EntityManager,
11
+ FixtureManager,
12
+ FixtureManagerClass,
13
+ GenerateOptions,
14
+ InternalServerErrorException,
15
+ Migrator,
16
+ NotFoundException,
17
+ PathAndCode,
18
+ RenderingNode,
19
+ SQLDateTimeString,
20
+ ServiceUnavailableException,
21
+ SoException,
22
+ Sonamu,
23
+ SonamuQueryMode,
24
+ Syncer,
25
+ TargetNotFoundException,
26
+ TemplateKey,
27
+ TemplateOptions,
28
+ UnauthorizedException,
29
+ UpsertBuilder,
30
+ api,
31
+ apiParamToTsCode,
32
+ apiParamTypeToTsType,
33
+ findApiRootPath,
34
+ findAppRootPath,
35
+ getTextTypeLength,
36
+ getZodObjectFromApi,
37
+ getZodObjectFromApiParams,
38
+ getZodTypeFromApiParamType,
39
+ globAsync,
40
+ importMultiple,
41
+ isBelongsToOneRelationProp,
42
+ isBigIntegerProp,
43
+ isBooleanProp,
44
+ isCustomJoinClause,
45
+ isDaemonServer,
46
+ isDateProp,
47
+ isDateTimeProp,
48
+ isDecimalProp,
49
+ isDevelopment,
50
+ isDoubleProp,
51
+ isEnumProp,
52
+ isFloatProp,
53
+ isHasManyRelationProp,
54
+ isInDocker,
55
+ isIntegerProp,
56
+ isJsonProp,
57
+ isKnexError,
58
+ isLocal,
59
+ isManyToManyRelationProp,
60
+ isOneToOneRelationProp,
61
+ isProduction,
62
+ isRefField,
63
+ isRelationProp,
64
+ isRemote,
65
+ isSoException,
66
+ isStaging,
67
+ isStringProp,
68
+ isTest,
69
+ isTextProp,
70
+ isTimeProp,
71
+ isTimestampProp,
72
+ isUuidProp,
73
+ isVirtualProp,
74
+ nonNullable,
75
+ propNodeToZodTypeDef,
76
+ propToZodTypeDef,
77
+ registeredApis,
78
+ serializeZodType,
79
+ unwrapPromiseOnce,
80
+ zArrayable,
81
+ zodTypeToTsTypeDef,
82
+ zodTypeToZodCode
83
+ } from "./chunk-OTFO46SP.mjs";
84
+ import "./chunk-JXJTFHF7.mjs";
85
+
86
+ // src/exceptions/error-handler.ts
87
+ function setupErrorHandler(server) {
88
+ server.setErrorHandler((error, request, reply) => {
89
+ error.statusCode ?? (error.statusCode = 400);
90
+ if (isSoException(error) && error.payload && Array.isArray(error.payload)) {
91
+ const issues = error.payload;
92
+ const [issue] = issues;
93
+ const message = `${issue.message} (${issue.path.join("/")})`;
94
+ request.log.error(`${error.statusCode} ${message}`);
95
+ reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
96
+ name: error.name,
97
+ code: error.code,
98
+ message,
99
+ validationErrors: error.validation,
100
+ issues
101
+ });
102
+ } else {
103
+ request.log.error(`${error.statusCode} ${error.message}`);
104
+ reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
105
+ name: error.name,
106
+ code: error.code,
107
+ message: error.message,
108
+ validationErrors: error.validation
109
+ });
110
+ }
111
+ });
112
+ }
113
+
114
+ // src/entity/entity-utils.ts
115
+ import inflection from "inflection";
116
+
117
+ // src/utils/model.ts
118
+ function asArray(param) {
119
+ if (Array.isArray(param)) {
120
+ return param;
121
+ } else {
122
+ return [param];
123
+ }
124
+ }
125
+ function objToMap(obj) {
126
+ const keys = Object.keys(obj);
127
+ if (keys.every((key) => parseInt(key).toString() === key)) {
128
+ return new Map(keys.map((key) => [parseInt(key), obj[key]]));
129
+ } else {
130
+ return new Map(Object.entries(obj));
131
+ }
132
+ }
133
+
134
+ // src/entity/entity-utils.ts
135
+ var p = {
136
+ integer,
137
+ bigInteger,
138
+ text,
139
+ string,
140
+ float,
141
+ double,
142
+ decimal,
143
+ boolean,
144
+ date,
145
+ dateTime,
146
+ time,
147
+ timestamp,
148
+ json,
149
+ uuid,
150
+ enums,
151
+ virtual,
152
+ relationOneToOne,
153
+ relationBelongsToOne,
154
+ relationHasMany,
155
+ relationManyToMany
156
+ };
157
+ function integer(name, option) {
158
+ return {
159
+ name,
160
+ type: "integer",
161
+ ...option
162
+ };
163
+ }
164
+ function bigInteger(name, option) {
165
+ return {
166
+ name,
167
+ type: "bigInteger",
168
+ ...option
169
+ };
170
+ }
171
+ function text(name, option) {
172
+ return {
173
+ name,
174
+ type: "text",
175
+ ...option
176
+ };
177
+ }
178
+ function string(name, option) {
179
+ return {
180
+ name,
181
+ type: "string",
182
+ ...option
183
+ };
184
+ }
185
+ function float(name, option) {
186
+ return {
187
+ name,
188
+ type: "float",
189
+ precision: 8,
190
+ scale: 2,
191
+ ...option
192
+ };
193
+ }
194
+ function double(name, option) {
195
+ return {
196
+ name,
197
+ type: "double",
198
+ precision: 8,
199
+ scale: 2,
200
+ ...option
201
+ };
202
+ }
203
+ function decimal(name, option) {
204
+ return {
205
+ name,
206
+ type: "decimal",
207
+ precision: 8,
208
+ scale: 2,
209
+ ...option
210
+ };
211
+ }
212
+ function boolean(name, option) {
213
+ return {
214
+ name,
215
+ type: "boolean",
216
+ ...option
217
+ };
218
+ }
219
+ function date(name, option) {
220
+ if (option?.now === true) {
221
+ delete option.now;
222
+ option.dbDefault = "CURRENT_TIMESTAMP";
223
+ }
224
+ return {
225
+ name,
226
+ type: "date",
227
+ ...option
228
+ };
229
+ }
230
+ function dateTime(name, option) {
231
+ if (option?.now === true) {
232
+ delete option.now;
233
+ option.dbDefault = "CURRENT_TIMESTAMP";
234
+ }
235
+ return {
236
+ name,
237
+ type: "dateTime",
238
+ ...option
239
+ };
240
+ }
241
+ function time(name, option) {
242
+ if (option?.now === true) {
243
+ delete option.now;
244
+ option.dbDefault = "CURRENT_TIMESTAMP";
245
+ }
246
+ return {
247
+ name,
248
+ type: "time",
249
+ ...option
250
+ };
251
+ }
252
+ function timestamp(name, option) {
253
+ if (option?.now === true) {
254
+ delete option.now;
255
+ option.dbDefault = "CURRENT_TIMESTAMP";
256
+ }
257
+ return {
258
+ name,
259
+ type: "timestamp",
260
+ ...option
261
+ };
262
+ }
263
+ function json(name, option) {
264
+ return {
265
+ name,
266
+ type: "json",
267
+ ...option
268
+ };
269
+ }
270
+ function uuid(name, option) {
271
+ return {
272
+ name,
273
+ type: "uuid",
274
+ ...option
275
+ };
276
+ }
277
+ function enums(name, option) {
278
+ return {
279
+ name,
280
+ type: "enum",
281
+ id: option.id ?? `$Model${inflection.camelize(name)}`,
282
+ ...option
283
+ };
284
+ }
285
+ function virtual(name, option) {
286
+ return {
287
+ name,
288
+ type: "virtual",
289
+ ...option
290
+ };
291
+ }
292
+ function relationOneToOne(name, option) {
293
+ return {
294
+ name,
295
+ type: "relation",
296
+ relationType: "OneToOne",
297
+ ...option
298
+ };
299
+ }
300
+ function relationBelongsToOne(name, option) {
301
+ return {
302
+ name,
303
+ type: "relation",
304
+ relationType: "BelongsToOne",
305
+ ...option
306
+ };
307
+ }
308
+ function relationHasMany(name, option) {
309
+ return {
310
+ name,
311
+ type: "relation",
312
+ relationType: "HasMany",
313
+ ...option
314
+ };
315
+ }
316
+ function relationManyToMany(name, option) {
317
+ return {
318
+ name,
319
+ type: "relation",
320
+ relationType: "ManyToMany",
321
+ ...option
322
+ };
323
+ }
324
+ var i = {
325
+ index,
326
+ unique
327
+ };
328
+ function index(columns) {
329
+ return {
330
+ type: "index",
331
+ columns: asArray(columns)
332
+ };
333
+ }
334
+ function unique(columns) {
335
+ return {
336
+ type: "unique",
337
+ columns: asArray(columns)
338
+ };
339
+ }
340
+ export {
341
+ AlreadyProcessedException,
342
+ ApiParamType,
343
+ BadRequestException,
344
+ BaseModel,
345
+ BaseModelClass,
346
+ DB,
347
+ DuplicateRowException,
348
+ EntityManager,
349
+ FixtureManager,
350
+ FixtureManagerClass,
351
+ GenerateOptions,
352
+ InternalServerErrorException,
353
+ Migrator,
354
+ NotFoundException,
355
+ PathAndCode,
356
+ RenderingNode,
357
+ SQLDateTimeString,
358
+ ServiceUnavailableException,
359
+ SoException,
360
+ Sonamu,
361
+ SonamuQueryMode,
362
+ Syncer,
363
+ TargetNotFoundException,
364
+ TemplateKey,
365
+ TemplateOptions,
366
+ UnauthorizedException,
367
+ UpsertBuilder,
368
+ api,
369
+ apiParamToTsCode,
370
+ apiParamTypeToTsType,
371
+ asArray,
372
+ findApiRootPath,
373
+ findAppRootPath,
374
+ getTextTypeLength,
375
+ getZodObjectFromApi,
376
+ getZodObjectFromApiParams,
377
+ getZodTypeFromApiParamType,
378
+ globAsync,
379
+ i,
380
+ importMultiple,
381
+ isBelongsToOneRelationProp,
382
+ isBigIntegerProp,
383
+ isBooleanProp,
384
+ isCustomJoinClause,
385
+ isDaemonServer,
386
+ isDateProp,
387
+ isDateTimeProp,
388
+ isDecimalProp,
389
+ isDevelopment,
390
+ isDoubleProp,
391
+ isEnumProp,
392
+ isFloatProp,
393
+ isHasManyRelationProp,
394
+ isInDocker,
395
+ isIntegerProp,
396
+ isJsonProp,
397
+ isKnexError,
398
+ isLocal,
399
+ isManyToManyRelationProp,
400
+ isOneToOneRelationProp,
401
+ isProduction,
402
+ isRefField,
403
+ isRelationProp,
404
+ isRemote,
405
+ isSoException,
406
+ isStaging,
407
+ isStringProp,
408
+ isTest,
409
+ isTextProp,
410
+ isTimeProp,
411
+ isTimestampProp,
412
+ isUuidProp,
413
+ isVirtualProp,
414
+ nonNullable,
415
+ objToMap,
416
+ p,
417
+ propNodeToZodTypeDef,
418
+ propToZodTypeDef,
419
+ registeredApis,
420
+ serializeZodType,
421
+ setupErrorHandler,
422
+ unwrapPromiseOnce,
423
+ zArrayable,
424
+ zodTypeToTsTypeDef,
425
+ zodTypeToZodCode
426
+ };
427
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/exceptions/error-handler.ts","../src/entity/entity-utils.ts","../src/utils/model.ts"],"sourcesContent":["import { FastifyInstance } from \"fastify\";\nimport { ZodIssue } from \"zod\";\nimport { isSoException } from \"./so-exceptions\";\n\nexport function setupErrorHandler(server: FastifyInstance) {\n server.setErrorHandler((error, request, reply) => {\n error.statusCode ??= 400;\n\n if (isSoException(error) && error.payload && Array.isArray(error.payload)) {\n const issues = error.payload as ZodIssue[];\n const [issue] = issues;\n const message = `${issue.message} (${issue.path.join(\"/\")})`;\n\n request.log.error(`${error.statusCode} ${message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: message,\n validationErrors: error.validation,\n issues,\n });\n } else {\n request.log.error(`${error.statusCode} ${error.message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: error.message,\n validationErrors: error.validation,\n });\n }\n });\n}\n","import inflection from \"inflection\";\nimport {\n BelongsToOneRelationProp,\n BigIntegerProp,\n BooleanProp,\n DateProp,\n DateTimeProp,\n DecimalProp,\n DistributiveOmit,\n DoubleProp,\n EnumProp,\n FloatProp,\n HasManyRelationProp,\n IntegerProp,\n JsonProp,\n ManyToManyRelationProp,\n OneToOneRelationProp,\n EntityIndex,\n StringProp,\n TextProp,\n TimeProp,\n TimestampProp,\n UuidProp,\n VirtualProp,\n} from \"../types/types\";\nimport { asArray } from \"../utils/model\";\n\nexport const p = {\n integer,\n bigInteger,\n text,\n string,\n float,\n double,\n decimal,\n boolean,\n date,\n dateTime,\n time,\n timestamp,\n json,\n uuid,\n enums,\n virtual,\n relationOneToOne,\n relationBelongsToOne,\n relationHasMany,\n relationManyToMany,\n};\n\nfunction integer(\n name: string,\n option?: Omit<IntegerProp, \"name\" | \"type\">\n): IntegerProp {\n return {\n name,\n type: \"integer\",\n ...option,\n };\n}\nfunction bigInteger(\n name: string,\n option?: Omit<BigIntegerProp, \"name\" | \"type\">\n): BigIntegerProp {\n return {\n name,\n type: \"bigInteger\",\n ...option,\n };\n}\nfunction text(name: string, option: Omit<TextProp, \"name\" | \"type\">): TextProp {\n return {\n name,\n type: \"text\",\n ...option,\n };\n}\nfunction string(\n name: string,\n option: Omit<StringProp, \"name\" | \"type\">\n): StringProp {\n return {\n name,\n type: \"string\",\n ...option,\n };\n}\nfunction float(\n name: string,\n option?: Omit<FloatProp, \"name\" | \"type\">\n): FloatProp {\n return {\n name,\n type: \"float\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction double(\n name: string,\n option?: Omit<DoubleProp, \"name\" | \"type\">\n): DoubleProp {\n return {\n name,\n type: \"double\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction decimal(\n name: string,\n option?: Omit<DecimalProp, \"name\" | \"type\">\n): DecimalProp {\n return {\n name,\n type: \"decimal\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction boolean(\n name: string,\n option?: Omit<BooleanProp, \"name\" | \"type\">\n): BooleanProp {\n return {\n name,\n type: \"boolean\",\n ...option,\n };\n}\nfunction date(\n name: string,\n option?: Omit<DateProp, \"name\" | \"type\"> & { now?: true }\n): DateProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"date\",\n ...option,\n };\n}\nfunction dateTime(\n name: string,\n option?: Omit<DateTimeProp, \"name\" | \"type\"> & { now?: true }\n): DateTimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"dateTime\",\n ...option,\n };\n}\nfunction time(\n name: string,\n option?: Omit<TimeProp, \"name\" | \"type\"> & { now?: true }\n): TimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"time\",\n ...option,\n };\n}\nfunction timestamp(\n name: string,\n option?: Omit<TimestampProp, \"name\" | \"type\"> & { now?: true }\n): TimestampProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"timestamp\",\n ...option,\n };\n}\nfunction json(name: string, option: Omit<JsonProp, \"name\" | \"type\">): JsonProp {\n return {\n name,\n type: \"json\",\n ...option,\n };\n}\nfunction uuid(name: string, option: Omit<UuidProp, \"name\" | \"type\">): UuidProp {\n return {\n name,\n type: \"uuid\",\n ...option,\n };\n}\nfunction enums(\n name: string,\n option: Omit<EnumProp, \"name\" | \"type\" | \"id\"> & { id?: string }\n): EnumProp {\n return {\n name,\n type: \"enum\",\n id: option.id ?? `$Model${inflection.camelize(name)}`,\n ...option,\n };\n}\nfunction virtual(\n name: string,\n option: Omit<VirtualProp, \"name\" | \"type\" | \"dbDefault\" | \"toFilter\">\n): VirtualProp {\n return {\n name,\n type: \"virtual\",\n ...option,\n };\n}\nfunction relationOneToOne(\n name: string,\n option: DistributiveOmit<\n OneToOneRelationProp,\n \"name\" | \"type\" | \"relationType\"\n >\n): OneToOneRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"OneToOne\",\n ...option,\n };\n}\nfunction relationBelongsToOne(\n name: string,\n option: Omit<BelongsToOneRelationProp, \"name\" | \"type\" | \"relationType\">\n): BelongsToOneRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"BelongsToOne\",\n ...option,\n };\n}\nfunction relationHasMany(\n name: string,\n option: Omit<HasManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): HasManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"HasMany\",\n ...option,\n };\n}\nfunction relationManyToMany(\n name: string,\n option: Omit<ManyToManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): ManyToManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"ManyToMany\",\n ...option,\n };\n}\n\nexport const i = {\n index,\n unique,\n};\n\nfunction index(columns: string | string[]): EntityIndex {\n return {\n type: \"index\",\n columns: asArray(columns),\n };\n}\n\nfunction unique(columns: string | string[]): EntityIndex {\n return {\n type: \"unique\",\n columns: asArray(columns),\n };\n}\n","import _ from \"lodash\";\n\nexport type ListResult<T> = {\n rows: T[];\n total?: number;\n};\n\nexport type ArrayOr<T> = T | T[];\n\nexport function asArray<T>(param: T | T[]): T[] {\n if (Array.isArray(param)) {\n return param;\n } else {\n return [param as T] as T[];\n }\n}\n\nexport function objToMap<T>(obj: { [k: string]: T }) {\n const keys = Object.keys(obj);\n if (keys.every((key) => parseInt(key).toString() === key)) {\n return new Map<number, T>(keys.map((key) => [parseInt(key), obj[key]]));\n } else {\n return new Map<string, T>(Object.entries(obj));\n }\n}\n\nexport interface BaseListParams {\n id?: number | number[];\n num?: number;\n page?: number;\n keyword?: string;\n queryMode?: \"list\" | \"count\" | \"both\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,SAAS,kBAAkB,QAAyB;AACzD,SAAO,gBAAgB,CAAC,OAAO,SAAS,UAAU;AAChD,UAAM,eAAN,MAAM,aAAe;AAErB,QAAI,cAAc,KAAK,KAAK,MAAM,WAAW,MAAM,QAAQ,MAAM,OAAO,GAAG;AACzE,YAAM,SAAS,MAAM;AACrB,YAAM,CAAC,KAAK,IAAI;AAChB,YAAM,UAAU,GAAG,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC;AAEzD,cAAQ,IAAI,MAAM,GAAG,MAAM,UAAU,IAAI,OAAO,EAAE;AAClD,YAAM,OAAO,MAAM,cAAc,MAAM,MAAM,aAAa,GAAG,EAAE,KAAK;AAAA,QAClE,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ;AAAA,QACA,kBAAkB,MAAM;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,IAAI,MAAM,GAAG,MAAM,UAAU,IAAI,MAAM,OAAO,EAAE;AACxD,YAAM,OAAO,MAAM,cAAc,MAAM,MAAM,aAAa,GAAG,EAAE,KAAK;AAAA,QAClE,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA,QACf,kBAAkB,MAAM;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AC/BA,OAAO,gBAAgB;;;ACShB,SAAS,QAAW,OAAqB;AAC9C,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,CAAC,KAAU;AAAA,EACpB;AACF;AAEO,SAAS,SAAY,KAAyB;AACnD,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,MAAI,KAAK,MAAM,CAAC,QAAQ,SAAS,GAAG,EAAE,SAAS,MAAM,GAAG,GAAG;AACzD,WAAO,IAAI,IAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AAAA,EACxE,OAAO;AACL,WAAO,IAAI,IAAe,OAAO,QAAQ,GAAG,CAAC;AAAA,EAC/C;AACF;;;ADGO,IAAM,IAAI;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,WACP,MACA,QACgB;AAChB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,OACP,MACA,QACY;AACZ,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,MACP,MACA,QACW;AACX,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,OACP,MACA,QACY;AACZ,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KACP,MACA,QACU;AACV,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,SACP,MACA,QACc;AACd,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KACP,MACA,QACU;AACV,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,UACP,MACA,QACe;AACf,MAAI,QAAQ,QAAQ,MAAM;AACxB,WAAO,OAAO;AACd,WAAO,YAAY;AAAA,EACrB;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,KAAK,MAAc,QAAmD;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,MACP,MACA,QACU;AACV,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,IAAI,OAAO,MAAM,SAAS,WAAW,SAAS,IAAI,CAAC;AAAA,IACnD,GAAG;AAAA,EACL;AACF;AACA,SAAS,QACP,MACA,QACa;AACb,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,GAAG;AAAA,EACL;AACF;AACA,SAAS,iBACP,MACA,QAIsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,qBACP,MACA,QAC0B;AAC1B,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,gBACP,MACA,QACqB;AACrB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AACA,SAAS,mBACP,MACA,QACwB;AACxB,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,cAAc;AAAA,IACd,GAAG;AAAA,EACL;AACF;AAEO,IAAM,IAAI;AAAA,EACf;AAAA,EACA;AACF;AAEA,SAAS,MAAM,SAAyC;AACtD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,OAAO;AAAA,EAC1B;AACF;AAEA,SAAS,OAAO,SAAyC;AACvD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,OAAO;AAAA,EAC1B;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.2.38",
3
+ "version": "0.2.40",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
package/tsup.config.js CHANGED
@@ -18,4 +18,12 @@ export default defineConfig({
18
18
  };
19
19
  }
20
20
  },
21
+ external: [
22
+ "zod",
23
+ "fastify",
24
+ "inflection",
25
+ "source-map-support",
26
+ "typescript",
27
+ "prettier",
28
+ ],
21
29
  });
@@ -1,10 +0,0 @@
1
- import { z } from "zod";
2
- export declare function caster(zodType: z.ZodType<any>, raw: any): any;
3
- export declare function fastifyCaster(schema: z.ZodObject<any>): z.ZodEffects<z.ZodObject<any, z.UnknownKeysParam, z.ZodTypeAny, {
4
- [x: string]: any;
5
- }, {
6
- [x: string]: any;
7
- }>, {
8
- [x: string]: any;
9
- }, unknown>;
10
- //# sourceMappingURL=caster.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caster.d.ts","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,wBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAkD7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;;;;;;YAIrD"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fastifyCaster = exports.caster = void 0;
4
- const zod_1 = require("zod");
5
- // optional, nullable 무관하게 ZodNumber 체크
6
- function isZodNumberAnyway(zodType) {
7
- if (zodType instanceof zod_1.z.ZodNumber) {
8
- return true;
9
- }
10
- else if (zodType instanceof zod_1.z.ZodNullable &&
11
- zodType._def.innerType instanceof zod_1.z.ZodNumber) {
12
- return true;
13
- }
14
- else if (zodType instanceof zod_1.z.ZodOptional &&
15
- zodType._def.innerType instanceof zod_1.z.ZodNumber) {
16
- }
17
- else if (zodType instanceof zod_1.z.ZodOptional &&
18
- zodType._def.innerType instanceof zod_1.z.ZodOptional &&
19
- zodType._type.def.innerType instanceof zod_1.z.ZodNumber) {
20
- return true;
21
- }
22
- return false;
23
- }
24
- // ZodType을 이용해 raw를 Type Coercing
25
- function caster(zodType, raw) {
26
- if (isZodNumberAnyway(zodType) && typeof raw === "string") {
27
- // number
28
- return Number(raw);
29
- }
30
- else if (zodType instanceof zod_1.z.ZodUnion &&
31
- zodType.options.some((opt) => isZodNumberAnyway(opt))) {
32
- // zArrayable Number 케이스 처리
33
- if (Array.isArray(raw)) {
34
- const numType = zodType.options.find((opt) => opt instanceof zod_1.z.ZodNumber);
35
- return raw.map((elem) => caster(numType, elem));
36
- }
37
- else {
38
- return Number(raw);
39
- }
40
- }
41
- else if (zodType instanceof zod_1.z.ZodBoolean &&
42
- (raw === "true" || raw === "false")) {
43
- // boolean
44
- return raw === "true";
45
- }
46
- else if (raw !== null &&
47
- Array.isArray(raw) &&
48
- zodType instanceof zod_1.z.ZodArray) {
49
- // array
50
- return raw.map((elem) => caster(zodType.element, elem));
51
- }
52
- else if (zodType instanceof zod_1.z.ZodObject &&
53
- typeof raw === "object" &&
54
- raw !== null) {
55
- // object
56
- return Object.keys(raw).reduce((r, rawKey) => {
57
- r[rawKey] = caster(zodType.shape[rawKey], raw[rawKey]);
58
- return r;
59
- }, {});
60
- }
61
- else if (zodType instanceof zod_1.z.ZodOptional) {
62
- // optional
63
- return caster(zodType._def.innerType, raw);
64
- }
65
- else if (zodType instanceof zod_1.z.ZodNullable) {
66
- // nullable
67
- return caster(zodType._def.innerType, raw);
68
- }
69
- else {
70
- // 나머지는 처리 안함
71
- return raw;
72
- }
73
- }
74
- exports.caster = caster;
75
- function fastifyCaster(schema) {
76
- return zod_1.z.preprocess((raw) => {
77
- return caster(schema, raw);
78
- }, schema);
79
- }
80
- exports.fastifyCaster = fastifyCaster;
81
- //# sourceMappingURL=caster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caster.js","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { z } from "zod";
2
- import { ApiParam, ApiParamType, EntityProp, EntityPropNode, TextProp } from "../types/types";
3
- import { ExtendedApi } from "./decorators";
4
- export declare function getZodObjectFromApi(api: ExtendedApi, references?: {
5
- [id: string]: z.ZodObject<any>;
6
- }): z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
7
- export declare function getZodObjectFromApiParams(apiParams: ApiParam[], references?: {
8
- [id: string]: z.ZodObject<any>;
9
- }): z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
10
- export declare function getZodTypeFromApiParamType(paramType: ApiParamType, references: {
11
- [id: string]: z.ZodObject<any>;
12
- }): z.ZodType<unknown>;
13
- export declare function propNodeToZodTypeDef(propNode: EntityPropNode, injectImportKeys: string[]): string;
14
- export declare function getTextTypeLength(textType: TextProp["textType"]): number;
15
- export declare function propToZodTypeDef(prop: EntityProp, injectImportKeys: string[]): string;
16
- export declare function zodTypeToZodCode(zt: z.ZodFirstPartySchemaTypes | z.ZodObject<any>): string;
17
- export declare function apiParamToTsCode(params: ApiParam[], injectImportKeys: string[]): string;
18
- export declare function apiParamTypeToTsType(paramType: ApiParamType, injectImportKeys: string[]): string;
19
- export declare function unwrapPromiseOnce(paramType: ApiParamType): ApiParamType;
20
- export declare function serializeZodType(zt: z.ZodTypeAny): any;
21
- export declare function zodTypeToTsTypeDef(zt: z.ZodFirstPartySchemaTypes | z.ZodObject<any>): string;
22
- //# sourceMappingURL=code-converters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-converters.d.ts","sourceRoot":"","sources":["../../src/api/code-converters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAa,MAAM,KAAK,CAAC;AACnC,OAAO,EACL,QAAQ,EACR,YAAY,EAoBZ,UAAU,EACV,cAAc,EACd,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,GAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAC3B,kDAuBP;AAKD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,GAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAC3B,GACL,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAahD;AAKD,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAChC,GACA,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAgHpB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CA8BR;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CASxE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAChB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CAyDR;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAChD,MAAM,CA+DR;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,EAAE,EAClB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CAUR;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,YAAY,EACvB,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,CAqER;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,gBAMxD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,GAAG,CAuEtD;AAED,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAChD,MAAM,CAkER"}