@arcaelas/dynamite 1.0.9 → 1.0.13

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 (88) hide show
  1. package/LICENSE.txt +32 -0
  2. package/README.txt +206 -0
  3. package/package.json +5 -4
  4. package/src/@types/index.d.ts +96 -0
  5. package/src/@types/index.js +9 -0
  6. package/src/core/client.d.ts +69 -0
  7. package/src/core/client.js +164 -0
  8. package/src/core/table.d.ts +98 -0
  9. package/src/core/table.js +459 -0
  10. package/src/core/wrapper.d.ts +17 -0
  11. package/src/core/wrapper.js +46 -0
  12. package/src/decorators/belongs_to.d.ts +1 -0
  13. package/src/decorators/belongs_to.js +24 -0
  14. package/src/decorators/created_at.d.ts +1 -0
  15. package/{build → src}/decorators/created_at.js +0 -11
  16. package/src/decorators/default.d.ts +1 -0
  17. package/{build → src}/decorators/default.js +7 -12
  18. package/src/decorators/has_many.d.ts +1 -0
  19. package/src/decorators/has_many.js +24 -0
  20. package/src/decorators/index.d.ts +11 -0
  21. package/src/decorators/index.js +36 -0
  22. package/src/decorators/index_sort.d.ts +12 -0
  23. package/src/decorators/index_sort.js +43 -0
  24. package/{build → src}/decorators/mutate.js +12 -14
  25. package/{build → src}/decorators/name.js +1 -14
  26. package/src/decorators/not_null.d.ts +1 -0
  27. package/src/decorators/not_null.js +13 -0
  28. package/src/decorators/primary_key.d.ts +6 -0
  29. package/src/decorators/primary_key.js +30 -0
  30. package/src/decorators/updated_at.d.ts +12 -0
  31. package/src/decorators/updated_at.js +26 -0
  32. package/{build → src}/decorators/validate.js +12 -13
  33. package/src/index.d.ts +22 -0
  34. package/{build → src}/index.js +22 -6
  35. package/src/utils/batch-relations.d.ts +14 -0
  36. package/src/utils/batch-relations.js +131 -0
  37. package/src/utils/circular-detector.d.ts +82 -0
  38. package/src/utils/circular-detector.js +209 -0
  39. package/src/utils/memory-manager.d.ts +42 -0
  40. package/src/utils/memory-manager.js +108 -0
  41. package/src/utils/naming.d.ts +8 -0
  42. package/src/utils/naming.js +18 -0
  43. package/src/utils/projection.d.ts +12 -0
  44. package/src/utils/projection.js +51 -0
  45. package/src/utils/relations.d.ts +17 -0
  46. package/src/utils/relations.js +166 -0
  47. package/src/utils/security-validator.d.ts +49 -0
  48. package/src/utils/security-validator.js +152 -0
  49. package/src/utils/throttle-manager.d.ts +78 -0
  50. package/src/utils/throttle-manager.js +196 -0
  51. package/src/utils/transaction-manager.d.ts +88 -0
  52. package/src/utils/transaction-manager.js +298 -0
  53. package/build/core/table.d.ts +0 -138
  54. package/build/core/table.js +0 -400
  55. package/build/core/table.js.map +0 -1
  56. package/build/core/wrapper.d.ts +0 -44
  57. package/build/core/wrapper.js +0 -26
  58. package/build/core/wrapper.js.map +0 -1
  59. package/build/decorators/created_at.d.ts +0 -4
  60. package/build/decorators/created_at.js.map +0 -1
  61. package/build/decorators/default.d.ts +0 -2
  62. package/build/decorators/default.js.map +0 -1
  63. package/build/decorators/index.d.ts +0 -1
  64. package/build/decorators/index.js +0 -24
  65. package/build/decorators/index.js.map +0 -1
  66. package/build/decorators/index_sort.d.ts +0 -1
  67. package/build/decorators/index_sort.js +0 -27
  68. package/build/decorators/index_sort.js.map +0 -1
  69. package/build/decorators/mutate.js.map +0 -1
  70. package/build/decorators/name.js.map +0 -1
  71. package/build/decorators/not_null.d.ts +0 -4
  72. package/build/decorators/not_null.js +0 -28
  73. package/build/decorators/not_null.js.map +0 -1
  74. package/build/decorators/primary_key.d.ts +0 -7
  75. package/build/decorators/primary_key.js +0 -30
  76. package/build/decorators/primary_key.js.map +0 -1
  77. package/build/decorators/updated_at.d.ts +0 -4
  78. package/build/decorators/updated_at.js +0 -23
  79. package/build/decorators/updated_at.js.map +0 -1
  80. package/build/decorators/validate.js.map +0 -1
  81. package/build/index.d.ts +0 -11
  82. package/build/index.js.map +0 -1
  83. package/build/utils/naming.d.ts +0 -1
  84. package/build/utils/naming.js +0 -18
  85. package/build/utils/naming.js.map +0 -1
  86. /package/{build → src}/decorators/mutate.d.ts +0 -0
  87. /package/{build → src}/decorators/name.d.ts +0 -0
  88. /package/{build → src}/decorators/validate.d.ts +0 -0
@@ -1,400 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.STORE = void 0;
37
- exports.connect = connect;
38
- /* src/core/table.ts
39
- * Dinamite ORM — runtime
40
- * --------------------------------------------------
41
- * CRUD + autocreación de tablas (DynamoDB v3)
42
- * Serialización estricta mediante toJSON()
43
- * © 2025 Miguel Alejandro
44
- */
45
- const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
46
- const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
47
- const wrapper_1 = __importStar(require("./wrapper"));
48
- Object.defineProperty(exports, "STORE", { enumerable: true, get: function () { return wrapper_1.STORE; } });
49
- /* -------------------------------------------------------------------------- */
50
- /* Utils internos */
51
- /* -------------------------------------------------------------------------- */
52
- async function createTable(ctor) {
53
- if (!client)
54
- throw new Error("connect() no llamado");
55
- const meta = wrapper_1.default.get(ctor);
56
- if (!meta)
57
- throw new Error(`Clase ${ctor.name} no registrada en wrapper`);
58
- const cols = [...meta.columns.values()];
59
- const pk = cols.find((c) => c.index);
60
- if (!pk)
61
- throw new Error(`PartitionKey faltante en ${ctor.name}`);
62
- const sk = cols.find((c) => c.indexSort);
63
- const attr = new Map();
64
- attr.set(pk.name, "S");
65
- if (sk)
66
- attr.set(sk.name, "S");
67
- const schema = [{ AttributeName: pk.name, KeyType: "HASH" }];
68
- if (sk && sk.name !== pk.name)
69
- schema.push({ AttributeName: sk.name, KeyType: "RANGE" });
70
- try {
71
- await client.send(new client_dynamodb_1.CreateTableCommand({
72
- TableName: meta.name,
73
- BillingMode: "PAY_PER_REQUEST",
74
- AttributeDefinitions: [...attr].map(([AttributeName, AttributeType]) => ({
75
- AttributeName,
76
- AttributeType,
77
- })),
78
- KeySchema: schema,
79
- }));
80
- }
81
- catch (error) {
82
- // Ignorar error si la tabla ya existe
83
- if (error.name !== "ResourceInUseException") {
84
- throw error;
85
- }
86
- }
87
- }
88
- function requireClient() {
89
- if (!client)
90
- throw new Error("connect() debe llamarse antes de usar Table");
91
- }
92
- function mustMeta(ctor) {
93
- const meta = wrapper_1.default.get(ctor);
94
- if (!meta)
95
- throw new Error(`Metadata no encontrada para ${ctor.name}`);
96
- return meta;
97
- }
98
- /* -------------------------------------------------------------------------- */
99
- /* Configuración de cliente DynamoDB */
100
- /* -------------------------------------------------------------------------- */
101
- let client;
102
- function connect(cfg) {
103
- client = new client_dynamodb_1.DynamoDBClient(cfg);
104
- }
105
- /* -------------------------------------------------------------------------- */
106
- /* Clase base Table */
107
- /* -------------------------------------------------------------------------- */
108
- class Table {
109
- /* ------------------------------ constructor ----------------------------- */
110
- constructor(data) {
111
- requireClient();
112
- const meta = mustMeta(Object.getPrototypeOf(this).constructor);
113
- /* crear todas las props declaradas como undefined si no vienen en data */
114
- meta.columns.forEach((c) => {
115
- if (!(c.name in data))
116
- this[c.name] = undefined;
117
- });
118
- Object.assign(this, data);
119
- }
120
- /* --------------------------------- save -------------------------------- */
121
- async save() {
122
- const id = this["id"];
123
- const Ctor = this.constructor;
124
- const record = this.toJSON();
125
- if (id === undefined || id === null) {
126
- delete record.id; // permitir que Dynamo genere el id, si procede
127
- const fresh = await Ctor.create(record);
128
- Object.assign(this, fresh);
129
- }
130
- else {
131
- await Ctor.update(String(id), record);
132
- }
133
- return this;
134
- }
135
- /* -------------------------------- update ------------------------------- */
136
- async update(patch) {
137
- const id = this["id"];
138
- if (id === undefined || id === null)
139
- throw new Error("update() requiere id");
140
- Object.assign(this, patch);
141
- const Ctor = this.constructor;
142
- await Ctor.update(String(id), this.toJSON());
143
- return this;
144
- }
145
- /* ------------------------------- destroy ------------------------------- */
146
- async destroy() {
147
- const id = this["id"];
148
- if (id === undefined || id === null)
149
- throw new Error("destroy() requiere id");
150
- const Ctor = this.constructor;
151
- await Ctor.destroy(String(id));
152
- }
153
- /* ------------------------------- static CRUD --------------------------- */
154
- static async create(data) {
155
- const meta = mustMeta(this);
156
- const payload = new this(data).toJSON();
157
- const put = () => client.send(new client_dynamodb_1.PutItemCommand({
158
- TableName: meta.name,
159
- Item: (0, util_dynamodb_1.marshall)(payload, { removeUndefinedValues: true }),
160
- }));
161
- try {
162
- await put();
163
- }
164
- catch (err) {
165
- if (err?.name === "ResourceNotFoundException") {
166
- await createTable(this);
167
- await put();
168
- }
169
- else
170
- throw err;
171
- }
172
- return new this(data);
173
- }
174
- // prettier-ignore
175
- static async update(id, record) {
176
- const meta = mustMeta(this);
177
- const payload = { ...record, id };
178
- const put = () => client.send(new client_dynamodb_1.PutItemCommand({
179
- TableName: meta.name,
180
- Item: (0, util_dynamodb_1.marshall)(payload, { removeUndefinedValues: true }),
181
- }));
182
- try {
183
- await put();
184
- }
185
- catch (err) {
186
- if (err?.name === "ResourceNotFoundException") {
187
- await createTable(this);
188
- await put();
189
- }
190
- else
191
- throw err;
192
- }
193
- }
194
- // prettier-ignore
195
- static async destroy(id) {
196
- requireClient();
197
- try {
198
- await client.send(new client_dynamodb_1.DeleteItemCommand({
199
- TableName: mustMeta(this).name,
200
- Key: (0, util_dynamodb_1.marshall)({ id }),
201
- }));
202
- }
203
- catch (err) {
204
- if (err.name === "ResourceNotFoundException")
205
- return null;
206
- throw err;
207
- }
208
- return null;
209
- }
210
- static async where(...args) {
211
- requireClient();
212
- const meta = mustMeta(this);
213
- const conditions = [];
214
- // Detección y extracción de opciones
215
- const last = args.at(-1);
216
- const hasOptions = typeof last === "object" &&
217
- last !== null &&
218
- ("limit" in last || "skip" in last || "order" in last);
219
- const options = hasOptions ? args.pop() : {};
220
- // Validar opciones
221
- if (options.limit !== undefined && options.limit < 0) {
222
- throw new Error("Argumentos inválidos");
223
- }
224
- if (options.skip !== undefined && options.skip < 0) {
225
- throw new Error("Argumentos inválidos");
226
- }
227
- if (options.order !== undefined &&
228
- !["ASC", "DESC"].includes(options.order)) {
229
- throw new Error("Argumentos inválidos");
230
- }
231
- const limit = options.limit ?? 100;
232
- const skip = options.skip ?? 0;
233
- const order = (options.order ?? "ASC");
234
- // Parseo de condiciones según variante
235
- if (args.length === 1 &&
236
- typeof args[0] === "object" &&
237
- !Array.isArray(args[0])) {
238
- for (const [key, value] of Object.entries(args[0])) {
239
- // Validar que el campo existe en el modelo
240
- if (!meta.columns.has(key)) {
241
- return [];
242
- }
243
- // Detectar arrays y convertir a operador 'in'
244
- if (Array.isArray(value)) {
245
- if (value.length === 0) {
246
- throw new Error("Array vacío no permitido en filtros");
247
- }
248
- if (value.length > 100) {
249
- throw new Error("Operador 'in' limitado a 100 valores máximo");
250
- }
251
- conditions.push({ key, op: "in", value });
252
- }
253
- else {
254
- conditions.push({ key, op: "=", value });
255
- }
256
- }
257
- }
258
- else if (args.length === 2) {
259
- const [key, value] = args;
260
- // Validar que el campo existe en el modelo
261
- if (!meta.columns.has(key)) {
262
- return [];
263
- }
264
- conditions.push({ key, op: "=", value });
265
- }
266
- else if (args.length === 3) {
267
- const [key, op, value] = args;
268
- // Validar operador
269
- const validOps = ["=", "!=", "<", "<=", ">", ">=", "in", "not-in"];
270
- if (!validOps.includes(op)) {
271
- throw new Error("Argumentos inválidos");
272
- }
273
- // Validar arrays para operadores in/not-in
274
- if (op === "in" || op === "not-in") {
275
- if (!Array.isArray(value)) {
276
- throw new Error(`Operador '${op}' requiere un array`);
277
- }
278
- if (value.length === 0) {
279
- throw new Error(`Operador '${op}' requiere array no vacío`);
280
- }
281
- if (value.length > 100) {
282
- throw new Error(`Operador '${op}' limitado a 100 valores máximo`);
283
- }
284
- }
285
- else if (Array.isArray(value)) {
286
- throw new Error(`Operador '${op}' no acepta arrays`);
287
- }
288
- // Validar que el campo existe en el modelo
289
- if (!meta.columns.has(key)) {
290
- return [];
291
- }
292
- conditions.push({ key, op, value });
293
- }
294
- else {
295
- throw new Error("Argumentos inválidos");
296
- }
297
- // Query optimizado si es por PK/SK e igualdad
298
- const column = meta.columns.get(conditions[0].key);
299
- const isIndex = column?.index || column?.indexSort;
300
- if (conditions.length === 1 && isIndex && conditions[0].op === "=") {
301
- const { key, value } = conditions[0];
302
- const res = await client.send(new client_dynamodb_1.QueryCommand({
303
- TableName: meta.name,
304
- KeyConditionExpression: `#K = :v`,
305
- ExpressionAttributeNames: { "#K": key },
306
- ExpressionAttributeValues: (0, util_dynamodb_1.marshall)({ ":v": value }),
307
- Limit: limit,
308
- ScanIndexForward: order === "ASC",
309
- }));
310
- let items = (res.Items ?? []).map((i) => new this((0, util_dynamodb_1.unmarshall)(i)));
311
- return skip > 0 ? items.slice(skip, skip + limit) : items;
312
- }
313
- // Fallback: Scan + FilterExpression
314
- const normalize = (op) => (op === "!=" ? "<>" : op);
315
- const exprParts = [];
316
- const names = {};
317
- const vals = {};
318
- conditions.forEach((c, i) => {
319
- const nk = `#k${i}`;
320
- names[nk] = c.key;
321
- if (c.op === "in" || c.op === "not-in") {
322
- // Manejar arrays para operadores IN/NOT-IN
323
- const values = c.value;
324
- const placeholders = values.map((_, idx) => `:v${i}_${idx}`).join(", ");
325
- const expression = c.op === "in"
326
- ? `${nk} IN (${placeholders})`
327
- : `NOT (${nk} IN (${placeholders}))`;
328
- exprParts.push(expression);
329
- // Agregar cada valor del array
330
- values.forEach((val, idx) => {
331
- vals[`:v${i}_${idx}`] = val;
332
- });
333
- }
334
- else {
335
- // Operadores simples
336
- const nv = `:v${i}`;
337
- exprParts.push(`${nk} ${normalize(c.op)} ${nv}`);
338
- vals[nv] = c.value;
339
- }
340
- });
341
- const res = await client.send(new client_dynamodb_1.ScanCommand({
342
- TableName: meta.name,
343
- FilterExpression: exprParts.join(" AND "),
344
- ExpressionAttributeNames: names,
345
- ExpressionAttributeValues: (0, util_dynamodb_1.marshall)(vals),
346
- }));
347
- let items = (res.Items ?? []).map((i) => new this((0, util_dynamodb_1.unmarshall)(i)));
348
- // Ordenar items según el primer campo de condición
349
- if (conditions.length > 0) {
350
- const sortKey = conditions[0].key;
351
- items.sort((a, b) => {
352
- const aVal = a[sortKey];
353
- const bVal = b[sortKey];
354
- // Ordenamiento numérico o string
355
- if (typeof aVal === "number" && typeof bVal === "number") {
356
- return order === "ASC" ? aVal - bVal : bVal - aVal;
357
- }
358
- else {
359
- const comparison = String(aVal).localeCompare(String(bVal));
360
- return order === "ASC" ? comparison : -comparison;
361
- }
362
- });
363
- }
364
- return items.slice(skip, skip + limit);
365
- }
366
- static async first(...args) {
367
- const results = await this.where(...args, {
368
- limit: 1,
369
- skip: 0,
370
- order: "ASC",
371
- });
372
- return results[0] || undefined;
373
- }
374
- static async last(...args) {
375
- const results = await this.where(...args, {
376
- limit: 1,
377
- skip: 0,
378
- order: "DESC",
379
- });
380
- return results[0] || undefined;
381
- }
382
- /* --------------------------- helpers de instancia ---------------------- */
383
- toJSON() {
384
- const meta = mustMeta(Object.getPrototypeOf(this).constructor);
385
- const buf = this[wrapper_1.STORE] ?? {};
386
- const out = {};
387
- for (const [prop, col] of meta.columns) {
388
- if (prop in buf)
389
- out[col.name] = buf[prop];
390
- else if (prop in this)
391
- out[col.name] = this[prop];
392
- }
393
- return out;
394
- }
395
- toString() {
396
- return JSON.stringify(this.toJSON());
397
- }
398
- }
399
- exports.default = Table;
400
- //# sourceMappingURL=table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/core/table.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- declare const NonAttributeBrand: unique symbol;
2
- export type NonAttribute<T> = T & {
3
- [NonAttributeBrand]?: true;
4
- };
5
- declare const CreationOptionalBrand: unique symbol;
6
- export type CreationOptional<T> = T & {
7
- [CreationOptionalBrand]?: true;
8
- };
9
- type IsBranded<T, Brand extends symbol> = keyof NonNullable<T> extends keyof Omit<NonNullable<T>, Brand> ? false : true;
10
- type RemoveNullish<T> = Omit<T, keyof KeepNullish<T>>;
11
- type RemoveFunction<T> = Omit<T, keyof KeepFunction<T>>;
12
- type RemoveBranded<T, Brand extends symbol> = Omit<T, keyof KeepBranded<T, Brand>>;
13
- type KeepNullish<T> = {
14
- [K in keyof T as undefined extends T[K] ? K : never]: T[K];
15
- };
16
- type KeepFunction<T> = {
17
- [K in keyof T as T[K] extends (...args: any[]) => any ? K : never]: T[K];
18
- };
19
- type KeepBranded<T, Brand extends symbol> = {
20
- [K in keyof T as IsBranded<T[K], Brand> extends true ? K : never]: T[K];
21
- };
22
- export type InferAttributes<T> = RemoveFunction<RemoveNullish<RemoveBranded<RemoveBranded<T, typeof CreationOptionalBrand>, typeof NonAttributeBrand>>> & Partial<KeepBranded<T, typeof CreationOptionalBrand>>;
23
- export type Mutate = (value: any) => Inmutable;
24
- export type Default = Inmutable | (() => Inmutable);
25
- export type Validate = (value: any) => true | string;
26
- export type Inmutable = string | number | boolean | null | object;
27
- export interface Column {
28
- name: string;
29
- default?: Default;
30
- mutate?: Mutate[];
31
- validate?: Validate[];
32
- index?: true;
33
- indexSort?: true;
34
- unique?: true;
35
- }
36
- export interface WrapperEntry {
37
- name: string;
38
- columns: Map<string | symbol, Column>;
39
- }
40
- declare const wrapper: Map<Function, WrapperEntry>;
41
- export declare const STORE: unique symbol;
42
- export default wrapper;
43
- export declare function ensureConfig(ctor: Function, tableName: string): WrapperEntry;
44
- export declare function ensureColumn(entry: WrapperEntry, prop: string | symbol, columnName: string): Column;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STORE = void 0;
4
- exports.ensureConfig = ensureConfig;
5
- exports.ensureColumn = ensureColumn;
6
- const wrapper = new Map();
7
- exports.STORE = Symbol("dynamite:values");
8
- exports.default = wrapper;
9
- function ensureConfig(ctor, tableName) {
10
- let entry = wrapper.get(ctor);
11
- if (!entry) {
12
- entry = { name: tableName, columns: new Map() };
13
- wrapper.set(ctor, entry);
14
- }
15
- return entry;
16
- }
17
- // prettier-ignore
18
- function ensureColumn(entry, prop, columnName) {
19
- let col = entry.columns.get(prop);
20
- if (!col) {
21
- col = { name: columnName, mutate: [], validate: [] };
22
- entry.columns.set(prop, col);
23
- }
24
- return col;
25
- }
26
- //# sourceMappingURL=wrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../src/core/wrapper.ts"],"names":[],"mappings":";;;AAmDA,oCAOC;AAGD,oCAOC;AArBD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;AACrC,QAAA,KAAK,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC9D,kBAAe,OAAO,CAAC;AAEvB,SAAgB,YAAY,CAAC,IAAc,EAAE,SAAiB;IAC5D,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kBAAkB;AAClB,SAAgB,YAAY,CAAC,KAAmB,EAAE,IAAqB,EAAE,UAAkB;IACzF,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Asigna automáticamente la fecha de creación en nuevas instancias.
3
- */
4
- export default function CreatedAt(): PropertyDecorator;
@@ -1 +0,0 @@
1
- {"version":3,"file":"created_at.js","sourceRoot":"","sources":["../../src/decorators/created_at.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAOH,4BAEC;AAPD,wDAAgC;AAEhC;;GAEG;AACH,SAAwB,SAAS;IAC/B,OAAO,IAAA,iBAAO,EAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -1,2 +0,0 @@
1
- export default function Default(value: unknown): PropertyDecorator;
2
- export default function Default(func: () => unknown): PropertyDecorator;
@@ -1 +0,0 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/decorators/default.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAOH,0BAYC;AAjBD,6CAA4E;AAC5E,4CAAgD;AAIhD,SAAwB,OAAO,CAAC,OAAY;IAC1C,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,OAAO;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAChE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAU,EAAE,GAAW,EAAE,IAAqB;IACnE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;QACjC,GAAG;YACD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,GAAY;YACd,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnD,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACxE,CAAC;YACD,IAAI,GAAG,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;oBAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,CAAC,KAAK,IAAI;wBACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- export default function Index(): PropertyDecorator;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- /*
3
- * Dinamite ORM — @Index (Partition Key)
4
- * -------------------------------------
5
- * Marca la propiedad como clave de partición.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.default = Index;
9
- const wrapper_1 = require("../core/wrapper");
10
- const naming_1 = require("../utils/naming");
11
- function Index() {
12
- return (target, prop) => {
13
- const ctor = target.constructor;
14
- const entry = (0, wrapper_1.ensureConfig)(ctor, (0, naming_1.toSnakePlural)(ctor.name));
15
- /* Evitar duplicados */
16
- const already = [...entry.columns.values()].find((c) => c.index);
17
- if (already && already !== entry.columns.get(prop)) {
18
- throw new Error(`La tabla ${ctor.name} ya tiene PartitionKey (${already.name})`);
19
- }
20
- const col = (0, wrapper_1.ensureColumn)(entry, prop, String(prop));
21
- col.index = true;
22
- };
23
- }
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,wBAgBC;AAnBD,6CAA6D;AAC7D,4CAAgD;AAEhD,SAAwB,KAAK;IAC3B,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,uBAAuB;QACvB,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,CAAC,IAAI,2BAA2B,OAAO,CAAC,IAAI,GAAG,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- export default function IndexSort(): PropertyDecorator;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- /*
3
- * Dinamite ORM — @IndexSort (Sort Key)
4
- * ------------------------------------
5
- * Marca la propiedad como clave de ordenamiento.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.default = IndexSort;
9
- const wrapper_1 = require("../core/wrapper");
10
- const naming_1 = require("../utils/naming");
11
- function IndexSort() {
12
- return (target, prop) => {
13
- const ctor = target.constructor;
14
- const entry = (0, wrapper_1.ensureConfig)(ctor, (0, naming_1.toSnakePlural)(ctor.name));
15
- const pkExists = [...entry.columns.values()].some((c) => c.index);
16
- if (!pkExists) {
17
- throw new Error(`PartitionKey no definido en ${ctor.name}; declara @Index primero`);
18
- }
19
- const already = [...entry.columns.values()].find((c) => c.indexSort);
20
- if (already && already !== entry.columns.get(prop)) {
21
- throw new Error(`La tabla ${ctor.name} ya tiene SortKey (${already.name})`);
22
- }
23
- const col = (0, wrapper_1.ensureColumn)(entry, prop, String(prop));
24
- col.indexSort = true;
25
- };
26
- }
27
- //# sourceMappingURL=index_sort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index_sort.js","sourceRoot":"","sources":["../../src/decorators/index_sort.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,4BAsBC;AAzBD,6CAA6D;AAC7D,4CAAgD;AAEhD,SAAwB,SAAS;IAC/B,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,IAAI,0BAA0B,CACnE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,CAAC,IAAI,sBAAsB,OAAO,CAAC,IAAI,GAAG,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../src/decorators/mutate.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAMH,yBAeC;AAlBD,6CAAoE;AACpE,4CAAgD;AAEhD,SAAwB,MAAM,CAAC,EAAU;IACvC,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAE9E,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAChE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAU,EAAE,GAAW,EAAE,IAAqB;IACnE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;QACjC,GAAG;YACD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,GAAY;YACd,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnD,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACxE,CAAC;YACD,IAAI,GAAG,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;oBAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,CAAC,KAAK,IAAI;wBACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/decorators/name.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAKH,uBAoCC;AAvCD,6CAA6D;AAC7D,4CAAgD;AAEhD,SAAwB,IAAI,CAC1B,KAAa;IAEb,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,MAAW,EAAE,IAAsB,EAAQ,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,8CAA8C;YAE9C,MAAM,IAAI,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtC,sDAAsD;YACtD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,CAAC,IAAI,gCAAgC,KAAK,CAAC,IAAI,GAAG,CACnE,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,4CAA4C;YAE5C,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAE7C,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CACb,eAAe,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,IAAI,GAAG,CACrE,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Decorador wrapper que asegura no-null / no-empty.
3
- */
4
- export default function NotNull(): PropertyDecorator;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- /*
3
- * Dinamite ORM — @NotNull Decorator (wrapper)
4
- * ------------------------------------------
5
- * Valida que el valor no sea null, undefined ni cadena vacía.
6
- * Internamente aplica @Validate con una función sincrónica.
7
- *
8
- * © 2025 Miguel Alejandro
9
- */
10
- var __importDefault = (this && this.__importDefault) || function (mod) {
11
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.default = NotNull;
15
- const validate_1 = __importDefault(require("./validate"));
16
- /**
17
- * Decorador wrapper que asegura no-null / no-empty.
18
- */
19
- function NotNull() {
20
- return validate_1.default((value, key) => {
21
- if (value === null || value === undefined)
22
- return false;
23
- if (typeof value === "string" && value.trim() === "")
24
- return false;
25
- return true;
26
- });
27
- }
28
- //# sourceMappingURL=not_null.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"not_null.js","sourceRoot":"","sources":["../../src/decorators/not_null.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAOH,0BAMC;AAXD,0DAAkC;AAElC;;GAEG;AACH,SAAwB,OAAO;IAC7B,OAAQ,kBAAgB,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Atajo para definir clave primaria compuesta (PK + SK).
3
- * El parámetro `name` queda reservado por si en el futuro
4
- * se almacena un identificador lógico de índice, pero hoy
5
- * NO se pasa a ningún decorador interno.
6
- */
7
- export default function PrimaryKey(name?: string): PropertyDecorator;