@avytrix/nestjs-drizzle-crud 0.0.0-stage → 3.6.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 (82) hide show
  1. package/AGENT.md +513 -0
  2. package/AGENTS.template.md +31 -0
  3. package/CHANGELOG.md +565 -0
  4. package/CLAUDE.template.md +18 -0
  5. package/LICENSE +21 -0
  6. package/README.md +1307 -2
  7. package/dist/controller/crud-controller.factory.d.ts +28 -0
  8. package/dist/controller/crud-controller.factory.js +279 -0
  9. package/dist/controller/crud-controller.factory.js.map +1 -0
  10. package/dist/core/abstract/sql-base-crud.service.d.ts +230 -0
  11. package/dist/core/abstract/sql-base-crud.service.js +2899 -0
  12. package/dist/core/abstract/sql-base-crud.service.js.map +1 -0
  13. package/dist/core/context/crud-context.d.ts +6 -0
  14. package/dist/core/context/crud-context.js +27 -0
  15. package/dist/core/context/crud-context.js.map +1 -0
  16. package/dist/core/events/crud-event-bus.d.ts +7 -0
  17. package/dist/core/events/crud-event-bus.js +30 -0
  18. package/dist/core/events/crud-event-bus.js.map +1 -0
  19. package/dist/core/interfaces/crud-service.interface.d.ts +54 -0
  20. package/dist/core/interfaces/crud-service.interface.js +3 -0
  21. package/dist/core/interfaces/crud-service.interface.js.map +1 -0
  22. package/dist/core/interfaces/drizzle-crud-config.interface.d.ts +39 -0
  23. package/dist/core/interfaces/drizzle-crud-config.interface.js +3 -0
  24. package/dist/core/interfaces/drizzle-crud-config.interface.js.map +1 -0
  25. package/dist/core/interfaces/events.interface.d.ts +39 -0
  26. package/dist/core/interfaces/events.interface.js +3 -0
  27. package/dist/core/interfaces/events.interface.js.map +1 -0
  28. package/dist/core/interfaces/query.interface.d.ts +112 -0
  29. package/dist/core/interfaces/query.interface.js +3 -0
  30. package/dist/core/interfaces/query.interface.js.map +1 -0
  31. package/dist/core/interfaces/scope.interface.d.ts +3 -0
  32. package/dist/core/interfaces/scope.interface.js +3 -0
  33. package/dist/core/interfaces/scope.interface.js.map +1 -0
  34. package/dist/core/interfaces/sql-crud-config.interface.d.ts +87 -0
  35. package/dist/core/interfaces/sql-crud-config.interface.js +3 -0
  36. package/dist/core/interfaces/sql-crud-config.interface.js.map +1 -0
  37. package/dist/core/types/sql.types.d.ts +7 -0
  38. package/dist/core/types/sql.types.js +3 -0
  39. package/dist/core/types/sql.types.js.map +1 -0
  40. package/dist/core/utils/cursor.d.ts +2 -0
  41. package/dist/core/utils/cursor.js +44 -0
  42. package/dist/core/utils/cursor.js.map +1 -0
  43. package/dist/core/utils/merge-config.d.ts +2 -0
  44. package/dist/core/utils/merge-config.js +22 -0
  45. package/dist/core/utils/merge-config.js.map +1 -0
  46. package/dist/core/utils/query-parser.d.ts +4 -0
  47. package/dist/core/utils/query-parser.js +538 -0
  48. package/dist/core/utils/query-parser.js.map +1 -0
  49. package/dist/decorators/crud-service.decorator.d.ts +4 -0
  50. package/dist/decorators/crud-service.decorator.js +10 -0
  51. package/dist/decorators/crud-service.decorator.js.map +1 -0
  52. package/dist/decorators/index.d.ts +1 -0
  53. package/dist/decorators/index.js +6 -0
  54. package/dist/decorators/index.js.map +1 -0
  55. package/dist/exceptions/crud.exceptions.d.ts +46 -0
  56. package/dist/exceptions/crud.exceptions.js +93 -0
  57. package/dist/exceptions/crud.exceptions.js.map +1 -0
  58. package/dist/index.d.ts +23 -0
  59. package/dist/index.js +61 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/mcp/server.d.ts +8 -0
  62. package/dist/mcp/server.js +236 -0
  63. package/dist/mcp/server.js.map +1 -0
  64. package/dist/modules/drizzle-connection.d.ts +12 -0
  65. package/dist/modules/drizzle-connection.js +73 -0
  66. package/dist/modules/drizzle-connection.js.map +1 -0
  67. package/dist/modules/drizzle-crud.module.d.ts +11 -0
  68. package/dist/modules/drizzle-crud.module.js +165 -0
  69. package/dist/modules/drizzle-crud.module.js.map +1 -0
  70. package/dist/openapi/api-crud.decorators.d.ts +10 -0
  71. package/dist/openapi/api-crud.decorators.js +216 -0
  72. package/dist/openapi/api-crud.decorators.js.map +1 -0
  73. package/dist/test-utils/base-crud.spec-helper.d.ts +64 -0
  74. package/dist/test-utils/base-crud.spec-helper.js +119 -0
  75. package/dist/test-utils/base-crud.spec-helper.js.map +1 -0
  76. package/dist/test-utils/index.d.ts +2 -0
  77. package/dist/test-utils/index.js +8 -0
  78. package/dist/test-utils/index.js.map +1 -0
  79. package/dist/test-utils/test-factory.d.ts +29 -0
  80. package/dist/test-utils/test-factory.js +81 -0
  81. package/dist/test-utils/test-factory.js.map +1 -0
  82. package/package.json +110 -5
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_FILTER_DEPTH = void 0;
4
+ exports.assertFilterDepth = assertFilterDepth;
5
+ exports.parseCrudQuery = parseCrudQuery;
6
+ const common_1 = require("@nestjs/common");
7
+ const drizzle_orm_1 = require("drizzle-orm");
8
+ const merge_config_1 = require("./merge-config");
9
+ const PARAMS = new Set([
10
+ "page",
11
+ "limit",
12
+ "sortBy",
13
+ "sortOrder",
14
+ "search",
15
+ "fields",
16
+ "with",
17
+ "cursor",
18
+ "after",
19
+ "count",
20
+ "withCount",
21
+ "counts",
22
+ ]);
23
+ const TRASH_PARAMS = new Set(["withDeleted", "onlyDeleted"]);
24
+ const GROUP_KEYS = new Set(["and", "or", "not"]);
25
+ const QUANTIFIERS = new Set(["some", "none", "every"]);
26
+ const UNSAFE_KEYS = new Set(["__proto__", "constructor", "prototype"]);
27
+ const OPERATORS = {
28
+ eq: "value",
29
+ neq: "value",
30
+ gt: "value",
31
+ gte: "value",
32
+ lt: "value",
33
+ lte: "value",
34
+ like: "text",
35
+ ilike: "text",
36
+ in: "list",
37
+ notIn: "list",
38
+ between: "list",
39
+ isNull: "flag",
40
+ isNotNull: "flag",
41
+ startsWith: "text",
42
+ endsWith: "text",
43
+ contains: "text",
44
+ iStartsWith: "text",
45
+ iEndsWith: "text",
46
+ iContains: "text",
47
+ arrayContains: "list",
48
+ arrayOverlaps: "list",
49
+ jsonContains: "json",
50
+ };
51
+ const bad = (message) => new common_1.BadRequestException(message);
52
+ exports.MAX_FILTER_DEPTH = 32;
53
+ function assertFilterDepth(filters) {
54
+ const stack = [[filters, 0]];
55
+ while (stack.length > 0) {
56
+ const [node, depth] = stack.pop();
57
+ const children = Array.isArray(node)
58
+ ? node.map((item) => [item, depth])
59
+ : (0, merge_config_1.isPlainObject)(node)
60
+ ? Object.values(node).map((item) => [
61
+ item,
62
+ depth + 1,
63
+ ])
64
+ : [];
65
+ if (depth > exports.MAX_FILTER_DEPTH) {
66
+ throw bad(`Filter is nested too deeply (max ${exports.MAX_FILTER_DEPTH} levels)`);
67
+ }
68
+ stack.push(...children);
69
+ }
70
+ }
71
+ function parseCrudQuery(query, table, options = {}) {
72
+ const tree = normalizeQuery(query);
73
+ for (const key of options.ignore ?? [])
74
+ delete tree[key];
75
+ const params = {};
76
+ for (const key of Object.keys(tree)) {
77
+ if (PARAMS.has(key) || (options.allowTrash && TRASH_PARAMS.has(key))) {
78
+ params[key] = tree[key];
79
+ delete tree[key];
80
+ }
81
+ }
82
+ const context = { table, options };
83
+ const pagination = {};
84
+ const page = positiveInt(params.page, "page");
85
+ if (page !== undefined)
86
+ pagination.page = page;
87
+ const limit = positiveInt(params.limit, "limit");
88
+ if (limit !== undefined)
89
+ pagination.limit = limit;
90
+ const sort = parseSort(params.sortBy, params.sortOrder, context);
91
+ if (sort.length > 0)
92
+ pagination.sortBy = sort;
93
+ const isCursor = "cursor" in params || "after" in params;
94
+ if (isCursor) {
95
+ const cursor = single(params.cursor ?? params.after, "cursor");
96
+ pagination.cursor = cursor ? cursor : null;
97
+ }
98
+ if (params.count !== undefined) {
99
+ pagination.count = flag(params.count, "count");
100
+ }
101
+ if (params.withCount !== undefined) {
102
+ pagination.withCount = flag(params.withCount, "withCount");
103
+ }
104
+ const operation = {};
105
+ const select = list(params.fields, "fields");
106
+ if (select) {
107
+ for (const path of select)
108
+ checkSelectPath(path, context);
109
+ operation.select = select;
110
+ }
111
+ const relations = list(params.with, "with");
112
+ if (relations) {
113
+ for (const path of relations)
114
+ checkRelationPath(path, context);
115
+ operation.relations = relations;
116
+ }
117
+ const counts = list(params.counts, "counts");
118
+ if (counts) {
119
+ for (const name of counts)
120
+ checkCountPath(name, context);
121
+ operation.counts = counts;
122
+ }
123
+ const term = single(params.search, "search")?.trim();
124
+ if (term) {
125
+ const columns = options.searchColumns ?? options.searchableColumns;
126
+ if (!columns || columns.length === 0) {
127
+ throw bad("Search is not enabled for this resource");
128
+ }
129
+ operation.search = { term, columns };
130
+ }
131
+ if (params.withDeleted !== undefined) {
132
+ operation.withDeleted = flag(params.withDeleted, "withDeleted");
133
+ }
134
+ if (params.onlyDeleted !== undefined) {
135
+ operation.onlyDeleted = flag(params.onlyDeleted, "onlyDeleted");
136
+ }
137
+ const filters = parseFilter(tree, context, {
138
+ table,
139
+ relations: relationsOf(context),
140
+ });
141
+ return {
142
+ filters,
143
+ pagination,
144
+ sort,
145
+ select: operation.select,
146
+ relations: operation.relations,
147
+ search: operation.search,
148
+ counts,
149
+ options: operation,
150
+ isCursor,
151
+ };
152
+ }
153
+ function normalizeQuery(query) {
154
+ const root = {};
155
+ if (query === null || query === undefined)
156
+ return root;
157
+ if (typeof query !== "object")
158
+ throw bad("The query must be an object");
159
+ assertFilterDepth(query);
160
+ for (const [key, value] of Object.entries(query)) {
161
+ if (value === undefined)
162
+ continue;
163
+ assign(root, splitKey(key), value);
164
+ }
165
+ return arrayify(root);
166
+ }
167
+ function splitKey(key) {
168
+ const match = /^([^[\]]*)((?:\[[^[\]]*\])*)$/.exec(key);
169
+ if (!match)
170
+ throw bad(`Malformed query parameter: ${key}`);
171
+ const head = match[1].split(".");
172
+ const brackets = Array.from(match[2].matchAll(/\[([^[\]]*)\]/g), (m) => m[1]);
173
+ const path = [...head, ...brackets];
174
+ if (path.length > exports.MAX_FILTER_DEPTH) {
175
+ throw bad(`Filter is nested too deeply (max ${exports.MAX_FILTER_DEPTH} levels)`);
176
+ }
177
+ for (const segment of path) {
178
+ if (UNSAFE_KEYS.has(segment)) {
179
+ throw bad(`Malformed query parameter: ${key}`);
180
+ }
181
+ }
182
+ return path;
183
+ }
184
+ function assign(root, path, value) {
185
+ if (path.length > 1 && path[path.length - 1] === "") {
186
+ path = path.slice(0, -1);
187
+ value = Array.isArray(value) ? value : [value];
188
+ }
189
+ let node = root;
190
+ for (let i = 0; i < path.length - 1; i++) {
191
+ const key = path[i];
192
+ if (!key)
193
+ throw bad(`Malformed query parameter: ${path.join(".")}`);
194
+ if (node[key] === undefined)
195
+ node[key] = {};
196
+ else if (!(0, merge_config_1.isPlainObject)(node[key])) {
197
+ throw bad(`Conflicting query parameters for "${path.slice(0, i + 1).join(".")}"`);
198
+ }
199
+ node = node[key];
200
+ }
201
+ const last = path[path.length - 1];
202
+ if (!last)
203
+ throw bad(`Malformed query parameter: ${path.join(".")}`);
204
+ if ((0, merge_config_1.isPlainObject)(value)) {
205
+ for (const [key, inner] of Object.entries(value)) {
206
+ if (UNSAFE_KEYS.has(key))
207
+ throw bad(`Malformed query parameter: ${last}`);
208
+ if (inner === undefined)
209
+ continue;
210
+ assign(node, [last, key], inner);
211
+ }
212
+ return;
213
+ }
214
+ if (node[last] !== undefined) {
215
+ throw bad(`Conflicting query parameters for "${path.join(".")}"`);
216
+ }
217
+ node[last] = value;
218
+ }
219
+ function arrayify(node) {
220
+ if (Array.isArray(node))
221
+ return node.map(arrayify);
222
+ if (!(0, merge_config_1.isPlainObject)(node))
223
+ return node;
224
+ const keys = Object.keys(node);
225
+ if (keys.length > 0 && keys.every((key) => /^\d+$/.test(key))) {
226
+ return keys
227
+ .sort((a, b) => Number(a) - Number(b))
228
+ .map((key) => arrayify(node[key]));
229
+ }
230
+ const out = {};
231
+ for (const key of keys)
232
+ out[key] = arrayify(node[key]);
233
+ return out;
234
+ }
235
+ function single(value, name) {
236
+ if (value === undefined)
237
+ return undefined;
238
+ if (Array.isArray(value))
239
+ throw bad(`"${name}" was given more than once`);
240
+ if (typeof value === "number" || typeof value === "boolean") {
241
+ return String(value);
242
+ }
243
+ if (typeof value !== "string")
244
+ throw bad(`"${name}" must be a single value`);
245
+ return value;
246
+ }
247
+ function list(value, name) {
248
+ if (value === undefined)
249
+ return undefined;
250
+ const parts = (Array.isArray(value) ? value : [value]).flatMap((item) => {
251
+ if (typeof item !== "string")
252
+ throw bad(`"${name}" must be a list of names`);
253
+ return item.split(",");
254
+ });
255
+ const out = parts.map((part) => part.trim()).filter(Boolean);
256
+ return out.length > 0 ? out : undefined;
257
+ }
258
+ function positiveInt(value, name) {
259
+ const raw = single(value, name);
260
+ if (raw === undefined || raw === "")
261
+ return undefined;
262
+ const number = Number(raw);
263
+ if (!Number.isInteger(number) || number < 1) {
264
+ throw bad(`"${name}" must be a positive integer`);
265
+ }
266
+ return number;
267
+ }
268
+ function flag(value, name) {
269
+ const raw = single(value, name);
270
+ if (raw === "" || raw === "true" || raw === "1")
271
+ return true;
272
+ if (raw === "false" || raw === "0")
273
+ return false;
274
+ throw bad(`"${name}" must be true or false`);
275
+ }
276
+ function columnOf(table, name) {
277
+ const columns = (0, drizzle_orm_1.getTableColumns)(table) ?? table;
278
+ return Object.hasOwn(columns, name) ? columns[name] : undefined;
279
+ }
280
+ function allow(context, list, path, label) {
281
+ const allowed = context.options[list];
282
+ if (!allowed || allowed.includes(path))
283
+ return;
284
+ if (path === (context.options.primaryKey ?? "id") &&
285
+ (list === "selectableColumns" || list === "sortableColumns")) {
286
+ return;
287
+ }
288
+ if (list === "loadableRelations" &&
289
+ allowed.some((entry) => entry.startsWith(`${path}.`))) {
290
+ return;
291
+ }
292
+ throw bad(`${label} "${path}" is not allowed`);
293
+ }
294
+ function relationsOf(context) {
295
+ return context.options.relations ?? {};
296
+ }
297
+ function walkRelations(path, context, full) {
298
+ let level = relationsOf(context);
299
+ let table = context.table;
300
+ for (const name of path) {
301
+ const relation = Object.hasOwn(level, name) ? level[name] : undefined;
302
+ if (!relation)
303
+ throw bad(`Unknown relation: ${full}`);
304
+ table = relation.table;
305
+ level = relation.relations ?? {};
306
+ }
307
+ return table;
308
+ }
309
+ function checkRelationPath(path, context) {
310
+ walkRelations(path.split("."), context, path);
311
+ allow(context, "loadableRelations", path, "Loading the relation");
312
+ }
313
+ function checkCountPath(name, context) {
314
+ const relations = relationsOf(context);
315
+ const relation = Object.hasOwn(relations, name) ? relations[name] : undefined;
316
+ if (!relation)
317
+ throw bad(`Unknown relation to count: ${name}`);
318
+ if (relation.type !== "hasMany" && relation.type !== "manyToMany") {
319
+ throw bad(`Cannot count "${name}": only a has-many or many-to-many relation has a count`);
320
+ }
321
+ allow(context, "loadableRelations", name, "Loading the relation");
322
+ }
323
+ function checkSelectPath(path, context) {
324
+ const segments = path.split(".");
325
+ const table = walkRelations(segments.slice(0, -1), context, path);
326
+ if (!columnOf(table, segments[segments.length - 1])) {
327
+ throw bad(`Unknown column: ${path}`);
328
+ }
329
+ allow(context, "selectableColumns", path, "Selecting");
330
+ }
331
+ function parseSort(sortBy, sortOrder, context) {
332
+ const order = single(sortOrder, "sortOrder");
333
+ if (order !== undefined && order !== "asc" && order !== "desc") {
334
+ throw bad(`Invalid sortOrder: ${order} (expected 'asc' or 'desc')`);
335
+ }
336
+ const entries = list(sortBy, "sortBy") ?? [];
337
+ return entries.map((entry) => {
338
+ let column = entry;
339
+ let direction = order ?? "asc";
340
+ if (entry.startsWith("-")) {
341
+ column = entry.slice(1);
342
+ direction = "desc";
343
+ }
344
+ else if (entry.startsWith("+")) {
345
+ column = entry.slice(1);
346
+ direction = "asc";
347
+ }
348
+ checkSortPath(column, context);
349
+ return { column, order: direction };
350
+ });
351
+ }
352
+ function checkSortPath(path, context) {
353
+ const dot = path.indexOf(".");
354
+ if (dot < 0) {
355
+ if (!columnOf(context.table, path)) {
356
+ throw bad(`Unknown sort column: ${path}`);
357
+ }
358
+ }
359
+ else {
360
+ const name = path.slice(0, dot);
361
+ const relations = relationsOf(context);
362
+ const relation = Object.hasOwn(relations, name)
363
+ ? relations[name]
364
+ : undefined;
365
+ if (!relation || !columnOf(relation.table, path.slice(dot + 1))) {
366
+ throw bad(`Unknown sort column: ${path}`);
367
+ }
368
+ if (relation.type === "hasMany" || relation.type === "manyToMany") {
369
+ throw bad(`Cannot sort by "${path}": only a belongs-to relation column can be sorted on`);
370
+ }
371
+ }
372
+ allow(context, "sortableColumns", path, "Sorting by");
373
+ }
374
+ function parseFilter(node, context, scope) {
375
+ if (!(0, merge_config_1.isPlainObject)(node)) {
376
+ throw bad("Each member of a filter group must be an object of filters");
377
+ }
378
+ const out = {};
379
+ const relations = scope.relations;
380
+ for (const [key, raw] of Object.entries(node)) {
381
+ const column = columnOf(scope.table, key);
382
+ const relation = !column && Object.hasOwn(relations, key) ? relations[key] : undefined;
383
+ if (!column && !relation && GROUP_KEYS.has(key)) {
384
+ if (key === "not") {
385
+ out.not = parseFilter(raw, context, scope);
386
+ }
387
+ else {
388
+ const members = Array.isArray(raw) ? raw : [raw];
389
+ out[key] = members.map((member) => parseFilter(member, context, scope));
390
+ }
391
+ continue;
392
+ }
393
+ if (relation) {
394
+ const path = scope.prefix ? `${scope.prefix}.${key}` : key;
395
+ if (!(0, merge_config_1.isPlainObject)(raw)) {
396
+ throw bad(`Filter on relation "${path}" needs a column, as in ${key}[column]=value`);
397
+ }
398
+ const inner = {
399
+ table: relation.table,
400
+ relations: relation.relations ?? {},
401
+ prefix: path,
402
+ };
403
+ const collection = relation.type === "hasMany" || relation.type === "manyToMany";
404
+ const keys = Object.keys(raw);
405
+ if (collection &&
406
+ keys.length > 0 &&
407
+ keys.every((name) => QUANTIFIERS.has(name) && !columnOf(relation.table, name))) {
408
+ const quantified = {};
409
+ for (const [quantifier, member] of Object.entries(raw)) {
410
+ if (member === "") {
411
+ const allowed = context.options.filterableColumns;
412
+ if (allowed &&
413
+ !allowed.some((entry) => entry === path || entry.startsWith(`${path}.`))) {
414
+ throw bad(`Filtering on "${path}" is not allowed`);
415
+ }
416
+ quantified[quantifier] = {};
417
+ }
418
+ else {
419
+ quantified[quantifier] = parseFilter(member, context, inner);
420
+ }
421
+ }
422
+ out[key] = quantified;
423
+ }
424
+ else {
425
+ out[key] = parseFilter(raw, context, inner);
426
+ }
427
+ continue;
428
+ }
429
+ const path = scope.prefix ? `${scope.prefix}.${key}` : key;
430
+ if (!column)
431
+ throw bad(`Unknown filter column: ${path}`);
432
+ allow(context, "filterableColumns", path, "Filtering on");
433
+ out[key] = parseColumnFilter(column, raw, path);
434
+ }
435
+ return out;
436
+ }
437
+ function parseColumnFilter(column, raw, path) {
438
+ if (Array.isArray(raw)) {
439
+ return raw.map((item) => coerce(column, item, path));
440
+ }
441
+ if (!(0, merge_config_1.isPlainObject)(raw))
442
+ return coerce(column, raw, path);
443
+ const out = {};
444
+ for (const [op, value] of Object.entries(raw)) {
445
+ const shape = OPERATORS[op];
446
+ if (!shape || !Object.hasOwn(OPERATORS, op)) {
447
+ throw bad(`Unknown filter operator: ${op}`);
448
+ }
449
+ const label = `${path}[${op}]`;
450
+ switch (shape) {
451
+ case "value":
452
+ out[op] = coerce(column, scalar(value, label), label);
453
+ break;
454
+ case "text":
455
+ out[op] = scalar(value, label);
456
+ break;
457
+ case "flag":
458
+ out[op] = flag(value, label);
459
+ break;
460
+ case "json": {
461
+ const text = scalar(value, label);
462
+ try {
463
+ out[op] = typeof text === "string" ? JSON.parse(text) : text;
464
+ }
465
+ catch {
466
+ throw bad(`"${label}" must be JSON`);
467
+ }
468
+ break;
469
+ }
470
+ default: {
471
+ const element = op === "arrayContains" || op === "arrayOverlaps"
472
+ ? column?.baseColumn
473
+ : column;
474
+ const items = (list(value, label) ?? []).map((item) => coerce(element, item, label));
475
+ if (op === "between" && items.length !== 2) {
476
+ throw bad(`"${label}" expects two values: from,to`);
477
+ }
478
+ out[op] = items;
479
+ }
480
+ }
481
+ }
482
+ return out;
483
+ }
484
+ function scalar(value, label) {
485
+ if (Array.isArray(value))
486
+ throw bad(`"${label}" was given more than once`);
487
+ if ((0, merge_config_1.isPlainObject)(value))
488
+ throw bad(`"${label}" must be a single value`);
489
+ return value;
490
+ }
491
+ function coerce(column, value, label) {
492
+ if (typeof value !== "string" || !column)
493
+ return value;
494
+ const invalid = (what) => bad(`Invalid ${what} for "${label}": ${value}`);
495
+ const text = value.trim();
496
+ switch (column.dataType) {
497
+ case "number": {
498
+ const number = Number(text);
499
+ if (!text || !Number.isFinite(number))
500
+ throw invalid("number");
501
+ return number;
502
+ }
503
+ case "bigint":
504
+ try {
505
+ if (!text)
506
+ throw invalid("integer");
507
+ return BigInt(text);
508
+ }
509
+ catch {
510
+ throw invalid("integer");
511
+ }
512
+ case "boolean":
513
+ if (text === "true" || text === "1")
514
+ return true;
515
+ if (text === "false" || text === "0")
516
+ return false;
517
+ throw invalid("boolean");
518
+ case "date": {
519
+ const date = new Date(text);
520
+ if (!text || Number.isNaN(date.getTime()))
521
+ throw invalid("date");
522
+ return date;
523
+ }
524
+ }
525
+ const type = column.columnType ?? "";
526
+ if (/Numeric|Decimal/.test(type)) {
527
+ if (!text || !Number.isFinite(Number(text)))
528
+ throw invalid("number");
529
+ return text;
530
+ }
531
+ if (/DateString|TimestampString|DateTimeString/.test(type)) {
532
+ if (!text || Number.isNaN(new Date(text).getTime()))
533
+ throw invalid("date");
534
+ return text;
535
+ }
536
+ return value;
537
+ }
538
+ //# sourceMappingURL=query-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../../src/core/utils/query-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SqlCrudConfig } from "../core/interfaces/sql-crud-config.interface";
2
+ export declare function CrudService(config: Omit<SqlCrudConfig, "db" | "table"> & {
3
+ table: any;
4
+ }): ClassDecorator;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudService = CrudService;
4
+ function CrudService(config) {
5
+ return (target) => {
6
+ Reflect.defineMetadata("crud:config", config, target);
7
+ return target;
8
+ };
9
+ }
10
+ //# sourceMappingURL=crud-service.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-service.decorator.js","sourceRoot":"","sources":["../../src/decorators/crud-service.decorator.ts"],"names":[],"mappings":";;;AAEA,qBACC,MAA4D;IAE5D,OAAO,CAAC,MAAW,EAAE,EAAE;QAEtB,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export { CrudService } from "./crud-service.decorator";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudService = void 0;
4
+ var crud_service_decorator_1 = require("./crud-service.decorator");
5
+ Object.defineProperty(exports, "CrudService", { enumerable: true, get: function () { return crud_service_decorator_1.CrudService; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,mEAAuD;AAA9C,qHAAA,WAAW,OAAA"}
@@ -0,0 +1,46 @@
1
+ import { BadRequestException, ConflictException, ForbiddenException, InternalServerErrorException, NotFoundException } from "@nestjs/common";
2
+ export declare class EntityNotFoundException extends NotFoundException {
3
+ constructor(entityName: string, id: any);
4
+ }
5
+ export declare class DuplicateEntityException extends ConflictException {
6
+ constructor(entityName: string, field: string, value: any);
7
+ }
8
+ export declare class ValidationFailedException extends BadRequestException {
9
+ constructor(message: string);
10
+ }
11
+ export declare class ForeignKeyViolationException extends BadRequestException {
12
+ constructor(entityName: string, field: string);
13
+ }
14
+ export declare class EntityInUseException extends ConflictException {
15
+ constructor(entityName: string);
16
+ }
17
+ export declare class StaleVersionException extends ConflictException {
18
+ constructor(entityName: string, id: any);
19
+ }
20
+ export declare class MissingScopeException extends ForbiddenException {
21
+ constructor(entityName: string, key: string);
22
+ }
23
+ export interface BulkOperationItemError {
24
+ index?: number;
25
+ id?: any;
26
+ status: number;
27
+ message: string;
28
+ }
29
+ export declare class BulkOperationException extends BadRequestException {
30
+ readonly errors: Array<{
31
+ id?: any;
32
+ index?: number;
33
+ error: Error;
34
+ }>;
35
+ constructor(message: string, errors: Array<{
36
+ id?: any;
37
+ index?: number;
38
+ error: Error;
39
+ }>);
40
+ }
41
+ export declare class DatabaseConnectionException extends InternalServerErrorException {
42
+ constructor(message?: string);
43
+ }
44
+ export declare class TransactionException extends InternalServerErrorException {
45
+ constructor(message?: string);
46
+ }