@arcaelas/dynamite 1.0.29 → 2.1.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 (130) hide show
  1. package/README.md +13 -13
  2. package/{src → build/cjs}/@types/index.d.ts +26 -1
  3. package/build/cjs/@types/index.js.map +1 -0
  4. package/{src → build/cjs}/core/client.d.ts +22 -19
  5. package/build/cjs/core/client.js +384 -0
  6. package/build/cjs/core/client.js.map +1 -0
  7. package/build/cjs/core/decorator.d.ts +38 -0
  8. package/build/cjs/core/decorator.js +38 -0
  9. package/build/cjs/core/decorator.js.map +1 -0
  10. package/build/cjs/core/table.d.ts +55 -0
  11. package/build/cjs/core/table.js +851 -0
  12. package/build/cjs/core/table.js.map +1 -0
  13. package/build/cjs/decorators/indexes.d.ts +20 -0
  14. package/build/cjs/decorators/indexes.js +45 -0
  15. package/build/cjs/decorators/indexes.js.map +1 -0
  16. package/{src → build/cjs}/decorators/relations.d.ts +8 -7
  17. package/{src → build/cjs}/decorators/relations.js +9 -8
  18. package/build/cjs/decorators/relations.js.map +1 -0
  19. package/build/cjs/decorators/timestamps.d.ts +20 -0
  20. package/build/cjs/decorators/timestamps.js +34 -0
  21. package/build/cjs/decorators/timestamps.js.map +1 -0
  22. package/build/cjs/decorators/transforms.d.ts +41 -0
  23. package/build/cjs/decorators/transforms.js +98 -0
  24. package/build/cjs/decorators/transforms.js.map +1 -0
  25. package/{src → build/cjs}/index.d.ts +5 -3
  26. package/{src → build/cjs}/index.js +7 -6
  27. package/build/cjs/index.js.map +1 -0
  28. package/build/cjs/package.json +1 -0
  29. package/build/cjs/test/basic.d.ts +1 -0
  30. package/build/cjs/test/basic.js +248 -0
  31. package/build/cjs/test/basic.js.map +1 -0
  32. package/build/cjs/test/bulk.d.ts +1 -0
  33. package/build/cjs/test/bulk.js +108 -0
  34. package/build/cjs/test/bulk.js.map +1 -0
  35. package/build/cjs/test/contracts.d.ts +1 -0
  36. package/build/cjs/test/contracts.js +343 -0
  37. package/build/cjs/test/contracts.js.map +1 -0
  38. package/build/cjs/test/filters.d.ts +1 -0
  39. package/build/cjs/test/filters.js +190 -0
  40. package/build/cjs/test/filters.js.map +1 -0
  41. package/build/cjs/test/index.js +36 -0
  42. package/build/cjs/test/index.js.map +1 -0
  43. package/build/cjs/test/query_scan.d.ts +1 -0
  44. package/build/cjs/test/query_scan.js +195 -0
  45. package/build/cjs/test/query_scan.js.map +1 -0
  46. package/build/cjs/test/relations.d.ts +1 -0
  47. package/build/cjs/test/relations.js +246 -0
  48. package/build/cjs/test/relations.js.map +1 -0
  49. package/build/cjs/test/transactions.d.ts +1 -0
  50. package/build/cjs/test/transactions.js +145 -0
  51. package/build/cjs/test/transactions.js.map +1 -0
  52. package/{src → build/cjs}/utils/relations.js +1 -8
  53. package/build/cjs/utils/relations.js.map +1 -0
  54. package/build/cjs/utils/ulid.d.ts +10 -0
  55. package/build/cjs/utils/ulid.js +55 -0
  56. package/build/cjs/utils/ulid.js.map +1 -0
  57. package/build/esm/@types/index.d.ts +213 -0
  58. package/build/esm/@types/index.js +8 -0
  59. package/build/esm/@types/index.js.map +1 -0
  60. package/build/esm/core/client.d.ts +96 -0
  61. package/build/esm/core/client.js +375 -0
  62. package/build/esm/core/client.js.map +1 -0
  63. package/build/esm/core/decorator.d.ts +38 -0
  64. package/build/esm/core/decorator.js +34 -0
  65. package/build/esm/core/decorator.js.map +1 -0
  66. package/build/esm/core/table.d.ts +55 -0
  67. package/build/esm/core/table.js +848 -0
  68. package/build/esm/core/table.js.map +1 -0
  69. package/build/esm/decorators/indexes.d.ts +20 -0
  70. package/build/esm/decorators/indexes.js +42 -0
  71. package/build/esm/decorators/indexes.js.map +1 -0
  72. package/build/esm/decorators/relations.d.ts +75 -0
  73. package/build/esm/decorators/relations.js +112 -0
  74. package/build/esm/decorators/relations.js.map +1 -0
  75. package/build/esm/decorators/timestamps.d.ts +20 -0
  76. package/build/esm/decorators/timestamps.js +31 -0
  77. package/build/esm/decorators/timestamps.js.map +1 -0
  78. package/build/esm/decorators/transforms.d.ts +41 -0
  79. package/build/esm/decorators/transforms.js +92 -0
  80. package/build/esm/decorators/transforms.js.map +1 -0
  81. package/build/esm/index.d.ts +17 -0
  82. package/build/esm/index.js +24 -0
  83. package/build/esm/index.js.map +1 -0
  84. package/build/esm/package.json +1 -0
  85. package/build/esm/test/basic.d.ts +1 -0
  86. package/build/esm/test/basic.js +245 -0
  87. package/build/esm/test/basic.js.map +1 -0
  88. package/build/esm/test/bulk.d.ts +1 -0
  89. package/build/esm/test/bulk.js +105 -0
  90. package/build/esm/test/bulk.js.map +1 -0
  91. package/build/esm/test/contracts.d.ts +1 -0
  92. package/build/esm/test/contracts.js +340 -0
  93. package/build/esm/test/contracts.js.map +1 -0
  94. package/build/esm/test/filters.d.ts +1 -0
  95. package/build/esm/test/filters.js +187 -0
  96. package/build/esm/test/filters.js.map +1 -0
  97. package/build/esm/test/index.d.ts +1 -0
  98. package/build/esm/test/index.js +31 -0
  99. package/build/esm/test/index.js.map +1 -0
  100. package/build/esm/test/query_scan.d.ts +1 -0
  101. package/build/esm/test/query_scan.js +192 -0
  102. package/build/esm/test/query_scan.js.map +1 -0
  103. package/build/esm/test/relations.d.ts +1 -0
  104. package/build/esm/test/relations.js +243 -0
  105. package/build/esm/test/relations.js.map +1 -0
  106. package/build/esm/test/transactions.d.ts +1 -0
  107. package/build/esm/test/transactions.js +142 -0
  108. package/build/esm/test/transactions.js.map +1 -0
  109. package/build/esm/utils/relations.d.ts +42 -0
  110. package/build/esm/utils/relations.js +207 -0
  111. package/build/esm/utils/relations.js.map +1 -0
  112. package/build/esm/utils/ulid.d.ts +10 -0
  113. package/build/esm/utils/ulid.js +52 -0
  114. package/build/esm/utils/ulid.js.map +1 -0
  115. package/package.json +31 -9
  116. package/src/core/client.js +0 -296
  117. package/src/core/decorator.d.ts +0 -29
  118. package/src/core/decorator.js +0 -103
  119. package/src/core/table.d.ts +0 -81
  120. package/src/core/table.js +0 -892
  121. package/src/decorators/indexes.d.ts +0 -38
  122. package/src/decorators/indexes.js +0 -59
  123. package/src/decorators/timestamps.d.ts +0 -54
  124. package/src/decorators/timestamps.js +0 -72
  125. package/src/decorators/transforms.d.ts +0 -99
  126. package/src/decorators/transforms.js +0 -166
  127. package/src/index.test.js +0 -37
  128. /package/{src → build/cjs}/@types/index.js +0 -0
  129. /package/{src/index.test.d.ts → build/cjs/test/index.d.ts} +0 -0
  130. /package/{src → build/cjs}/utils/relations.d.ts +0 -0
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.default = contracts;
13
+ const index_1 = require("../index");
14
+ // -- Modelos --
15
+ let CUser = class CUser extends index_1.Table {
16
+ };
17
+ __decorate([
18
+ (0, index_1.PrimaryKey)(),
19
+ __metadata("design:type", Object)
20
+ ], CUser.prototype, "id", void 0);
21
+ __decorate([
22
+ (0, index_1.Get)((v) => typeof v === 'string' ? v.toUpperCase() : v),
23
+ (0, index_1.Validate)((next) => (typeof next === 'string' && next.length >= 2) || 'Min 2 chars'),
24
+ (0, index_1.Set)((next) => typeof next === 'string' ? next.trim() : next),
25
+ __metadata("design:type", String)
26
+ ], CUser.prototype, "name", void 0);
27
+ __decorate([
28
+ (0, index_1.Name)('user_email'),
29
+ (0, index_1.Default)(''),
30
+ __metadata("design:type", String)
31
+ ], CUser.prototype, "email", void 0);
32
+ __decorate([
33
+ (0, index_1.Default)(() => 0),
34
+ __metadata("design:type", Object)
35
+ ], CUser.prototype, "score", void 0);
36
+ __decorate([
37
+ (0, index_1.CreatedAt)(),
38
+ __metadata("design:type", Object)
39
+ ], CUser.prototype, "created_at", void 0);
40
+ __decorate([
41
+ (0, index_1.UpdatedAt)(),
42
+ __metadata("design:type", Object)
43
+ ], CUser.prototype, "updated_at", void 0);
44
+ __decorate([
45
+ (0, index_1.DeleteAt)(),
46
+ __metadata("design:type", Object)
47
+ ], CUser.prototype, "deleted_at", void 0);
48
+ __decorate([
49
+ (0, index_1.HasMany)(() => CPost, 'user_id', 'id'),
50
+ __metadata("design:type", Object)
51
+ ], CUser.prototype, "posts", void 0);
52
+ CUser = __decorate([
53
+ (0, index_1.Name)('test_contract_users')
54
+ ], CUser);
55
+ let CPost = class CPost extends index_1.Table {
56
+ };
57
+ __decorate([
58
+ (0, index_1.PrimaryKey)(),
59
+ __metadata("design:type", Object)
60
+ ], CPost.prototype, "id", void 0);
61
+ __decorate([
62
+ (0, index_1.NotNull)(),
63
+ __metadata("design:type", String)
64
+ ], CPost.prototype, "title", void 0);
65
+ __decorate([
66
+ (0, index_1.Default)(''),
67
+ __metadata("design:type", String)
68
+ ], CPost.prototype, "user_id", void 0);
69
+ __decorate([
70
+ (0, index_1.BelongsTo)(() => CUser, 'id', 'user_id'),
71
+ __metadata("design:type", Object)
72
+ ], CPost.prototype, "author", void 0);
73
+ CPost = __decorate([
74
+ (0, index_1.Name)('test_contract_posts')
75
+ ], CPost);
76
+ let passed = 0;
77
+ let failed = 0;
78
+ function assert(label, condition, detail) {
79
+ if (condition) {
80
+ console.log(` OK ${label}`);
81
+ passed++;
82
+ }
83
+ else {
84
+ console.error(` FAIL ${label}${detail ? ` -- ${detail}` : ''}`);
85
+ failed++;
86
+ }
87
+ }
88
+ async function contracts() {
89
+ console.log('\n=== CONTRACTS ===\n');
90
+ const dynamite = new index_1.Dynamite({
91
+ tables: [CUser, CPost],
92
+ region: 'local',
93
+ endpoint: 'http://localhost:8000',
94
+ credentials: { accessKeyId: 'local', secretAccessKey: 'local' },
95
+ });
96
+ await dynamite.connect();
97
+ await dynamite.sync();
98
+ // =====================================================
99
+ // 1. Pipeline order: Set -> Validate -> Get
100
+ // =====================================================
101
+ console.log('-- Pipeline order --');
102
+ // Set trims, then Validate checks length >= 2. " ab " -> "ab" -> valid
103
+ const u1 = await CUser.create({ name: ' alice ' });
104
+ assert('Set runs before Validate: trimmed " alice " passes validation', u1.name === 'ALICE');
105
+ // Reject short value after trim: use a value that fails even untrimmed
106
+ let short_threw = false;
107
+ try {
108
+ await CUser.create({ name: 'x' });
109
+ }
110
+ catch {
111
+ short_threw = true;
112
+ }
113
+ assert('Validate rejects: "x" (1 char) -> fails', short_threw);
114
+ // Get transforms on read: stored as "alice", read as "ALICE"
115
+ const fetched = await CUser.first({ id: u1.id });
116
+ assert('Get transforms on read: "alice" -> "ALICE"', fetched?.name === 'ALICE');
117
+ // Multiple Sets on same field execute in declaration order
118
+ // name has: Set(trim) -> Validate(>=2) -> Get(upper)
119
+ // If order reversed (Validate before Set), " ab " (length 6) would pass without trim
120
+ const u_spaces = await CUser.create({ name: ' ab ' });
121
+ assert('Pipeline order preserved: trim then validate then upper', u_spaces.name === 'AB');
122
+ // =====================================================
123
+ // 2. @Name mapping roundtrip
124
+ // =====================================================
125
+ console.log('\n-- @Name mapping roundtrip --');
126
+ const u2 = await CUser.create({ name: 'bob', email: 'bob@test.com' });
127
+ // Write: email property -> user_email column in DynamoDB
128
+ // Read: user_email column -> email property
129
+ const read_back = await CUser.first({ id: u2.id });
130
+ assert('@Name write+read: email roundtrip', read_back?.email === 'bob@test.com');
131
+ // Filter by TS property name should work (mapped internally)
132
+ const by_email = await CUser.where({ email: 'bob@test.com' });
133
+ assert('@Name filter: where({ email }) works', by_email.length === 1 && by_email[0].id === u2.id);
134
+ // Update by TS property name
135
+ await CUser.update({ email: 'updated@test.com' }, { id: u2.id });
136
+ const after_update = await CUser.first({ id: u2.id });
137
+ assert('@Name update: email updated via TS name', after_update?.email === 'updated@test.com');
138
+ // =====================================================
139
+ // 3. Soft delete consistency
140
+ // =====================================================
141
+ console.log('\n-- Soft delete consistency --');
142
+ const u3 = await CUser.create({ name: 'charlie', email: 'c@test.com' });
143
+ // Normal where excludes nothing (deleted_at is null/absent)
144
+ const before = await CUser.where({ id: u3.id });
145
+ assert('before destroy: visible in where', before.length === 1);
146
+ // destroy() sets deleted_at, doesn't delete
147
+ await u3.destroy();
148
+ const after_destroy = await CUser.where({ id: u3.id });
149
+ assert('after destroy: excluded from where', after_destroy.length === 0);
150
+ // _includeTrashed shows it
151
+ const with_trashed = await CUser.where({ id: u3.id }, { _includeTrashed: true });
152
+ assert('_includeTrashed: visible', with_trashed.length === 1);
153
+ assert('_includeTrashed: has deleted_at timestamp', typeof with_trashed[0].deleted_at === 'string' && with_trashed[0].deleted_at.length > 0);
154
+ // forceDestroy actually removes from DB
155
+ await u3.forceDestroy();
156
+ const after_force = await CUser.where({ id: u3.id }, { _includeTrashed: true });
157
+ assert('forceDestroy: gone even with _includeTrashed', after_force.length === 0);
158
+ // Soft delete doesn't affect other records
159
+ const u1_still = await CUser.first({ id: u1.id });
160
+ assert('soft delete isolation: u1 still exists', u1_still?.id === u1.id);
161
+ // =====================================================
162
+ // 4. Transaction atomicity under failure
163
+ // =====================================================
164
+ console.log('\n-- Transaction atomicity --');
165
+ const u4 = await CUser.create({ name: 'dave', score: 100 });
166
+ const u5 = await CUser.create({ name: 'eve', score: 200 });
167
+ // Successful tx: both changes persist
168
+ await dynamite.tx(async (tx) => {
169
+ await CUser.increment('score', 50, { id: u4.id }, tx);
170
+ await CUser.increment('score', 50, { id: u5.id }, tx);
171
+ });
172
+ const d_after = await CUser.first({ id: u4.id });
173
+ const e_after = await CUser.first({ id: u5.id });
174
+ assert('tx success: dave 100+50=150', d_after?.score === 150);
175
+ assert('tx success: eve 200+50=250', e_after?.score === 250);
176
+ // Failed tx: neither change persists
177
+ try {
178
+ await dynamite.tx(async (tx) => {
179
+ await CUser.increment('score', 1000, { id: u4.id }, tx);
180
+ await CPost.create({ title: 'orphan', user_id: u4.id }, tx);
181
+ throw new Error('Forced rollback');
182
+ });
183
+ }
184
+ catch { }
185
+ const d_after_fail = await CUser.first({ id: u4.id });
186
+ assert('tx fail: dave score unchanged (150)', d_after_fail?.score === 150);
187
+ const orphan = await CPost.where({ title: 'orphan' });
188
+ assert('tx fail: orphan post not created', orphan.length === 0);
189
+ // Multiple creates in tx: all or nothing
190
+ let tx_ids = [];
191
+ try {
192
+ await dynamite.tx(async (tx) => {
193
+ for (let i = 0; i < 5; i++) {
194
+ const p = await CPost.create({ title: `tx_post_${i}`, user_id: u4.id }, tx);
195
+ tx_ids.push(p.id);
196
+ }
197
+ throw new Error('Abort after 5 creates');
198
+ });
199
+ }
200
+ catch { }
201
+ for (const tid of tx_ids) {
202
+ const found = await CPost.first({ id: tid });
203
+ assert(`tx all-or-nothing: post ${tid.slice(0, 8)} not persisted`, found === undefined);
204
+ }
205
+ // =====================================================
206
+ // 5. __isPersisted state machine
207
+ // =====================================================
208
+ console.log('\n-- __isPersisted state machine --');
209
+ // New instance: false
210
+ const fresh = new CUser({ name: 'frank' });
211
+ assert('new instance: __isPersisted = false', fresh.__isPersisted === false);
212
+ // After create: true
213
+ const created = await CUser.create({ name: 'grace' });
214
+ assert('after create: __isPersisted = true', created.__isPersisted === true);
215
+ // After save (new): true
216
+ const saved = new CUser({ name: 'heidi' });
217
+ assert('before save: __isPersisted = false', saved.__isPersisted === false);
218
+ await saved.save();
219
+ assert('after save: __isPersisted = true', saved.__isPersisted === true);
220
+ // In tx before commit: false
221
+ let tx_instance;
222
+ await dynamite.tx(async (tx) => {
223
+ tx_instance = await CUser.create({ name: 'ivan' }, tx);
224
+ assert('in tx before commit: false', tx_instance.__isPersisted === false);
225
+ });
226
+ assert('after tx commit: true', tx_instance.__isPersisted === true);
227
+ // Failed tx: stays false
228
+ let failed_instance;
229
+ try {
230
+ await dynamite.tx(async (tx) => {
231
+ failed_instance = await CUser.create({ name: 'judy' }, tx);
232
+ throw new Error('fail');
233
+ });
234
+ }
235
+ catch { }
236
+ assert('failed tx: stays false', failed_instance.__isPersisted === false);
237
+ // From where: true
238
+ const from_db = await CUser.first({ id: created.id });
239
+ assert('from where: __isPersisted = true', from_db.__isPersisted === true);
240
+ // =====================================================
241
+ // 6. Boundary inputs in where()
242
+ // =====================================================
243
+ console.log('\n-- Boundary inputs --');
244
+ // Use CUser for boundary tests -- filter by known good records to avoid @Validate issues on reconstruction
245
+ const all = await CUser.where({ id: u1.id });
246
+ assert('where with filter: returns records', all.length > 0);
247
+ // limit: 0 returns empty
248
+ const zero = await CUser.where({}, { limit: 0 });
249
+ assert('limit: 0 returns []', zero.length === 0);
250
+ // $in with 1 element
251
+ const in_one = await CUser.where({ id: { $in: [u1.id] } });
252
+ assert('$in with 1 element', in_one.length === 1 && in_one[0].id === u1.id);
253
+ // $in with many elements
254
+ const all_ids = all.map((u) => u.id);
255
+ const in_many = await CUser.where({ id: { $in: all_ids } }, { _includeTrashed: true });
256
+ assert('$in with many elements', in_many.length === all_ids.length);
257
+ // Unknown field throws
258
+ let unknown_threw = false;
259
+ try {
260
+ await CPost.where({ nonexistent: 'x' });
261
+ }
262
+ catch {
263
+ unknown_threw = true;
264
+ }
265
+ assert('unknown field throws', unknown_threw);
266
+ // $in empty throws
267
+ let in_empty_threw = false;
268
+ try {
269
+ await CPost.where({ id: { $in: [] } });
270
+ }
271
+ catch {
272
+ in_empty_threw = true;
273
+ }
274
+ assert('$in empty throws', in_empty_threw);
275
+ // =====================================================
276
+ // 7. CreatedAt immutability + UpdatedAt mutation
277
+ // =====================================================
278
+ console.log('\n-- Timestamp contracts --');
279
+ const ts_user = await CUser.create({ name: 'timestamps' });
280
+ const original_created = ts_user.created_at;
281
+ const original_updated = ts_user.updated_at;
282
+ await new Promise(r => setTimeout(r, 50));
283
+ await ts_user.update({ email: 'ts@test.com' });
284
+ const after = await CUser.first({ id: ts_user.id });
285
+ assert('CreatedAt immutable after update', after?.created_at === original_created);
286
+ assert('UpdatedAt changed after update', after?.updated_at !== original_updated);
287
+ // UpdatedAt respeta valor explícito
288
+ const explicit_ts = '2020-01-01T00:00:00.000Z';
289
+ const ts_explicit = await CUser.create({ name: 'ts_explicit', updated_at: explicit_ts });
290
+ assert('UpdatedAt respeta valor explicito', ts_explicit.updated_at === explicit_ts);
291
+ // =====================================================
292
+ // 8. PrimaryKey inmutable en update
293
+ // =====================================================
294
+ console.log('\n-- PrimaryKey immutability --');
295
+ const pk_user = await CUser.create({ name: 'pk_test' });
296
+ const original_pk = pk_user.id;
297
+ await pk_user.update({ name: 'pk_changed' });
298
+ assert('PK no cambia en instance update', pk_user.id === original_pk);
299
+ const pk_after = await CUser.first({ id: original_pk });
300
+ assert('PK no cambia en DB', pk_after?.name === 'PK_CHANGED');
301
+ // =====================================================
302
+ // 9. create() con PK duplicado
303
+ // =====================================================
304
+ console.log('\n-- PK duplicate --');
305
+ const dup_user = await CUser.create({ name: 'original' });
306
+ let dup_threw = false;
307
+ try {
308
+ await CUser.create({ id: dup_user.id, name: 'duplicate' });
309
+ }
310
+ catch (e) {
311
+ dup_threw = e.message.includes('already exists');
312
+ }
313
+ assert('create con PK duplicado lanza error', dup_threw);
314
+ const dup_check = await CUser.first({ id: dup_user.id });
315
+ assert('registro original intacto', dup_check?.name === 'ORIGINAL');
316
+ // =====================================================
317
+ // 10. Default en set pipeline (no lazy)
318
+ // =====================================================
319
+ console.log('\n-- Default eager (not lazy) --');
320
+ const eager = new CUser({ name: 'eager_test' });
321
+ assert('id existe desde construccion (no lazy)', typeof eager.id === 'string' && eager.id.length === 26);
322
+ assert('created_at existe desde construccion', typeof eager.created_at === 'string' && eager.created_at.length > 0);
323
+ assert('updated_at existe desde construccion', typeof eager.updated_at === 'string' && eager.updated_at.length > 0);
324
+ // Dos instancias secuenciales tienen IDs ordenados
325
+ const seq1 = new CUser({ name: 'seq1' });
326
+ const seq2 = new CUser({ name: 'seq2' });
327
+ assert('ULIDs secuenciales: seq1 < seq2', seq1.id < seq2.id);
328
+ // =====================================================
329
+ // 11. ULID secuencialidad en creates
330
+ // =====================================================
331
+ console.log('\n-- ULID sequential creates --');
332
+ const ids = [];
333
+ for (let i = 0; i < 20; i++) {
334
+ const u = await CUser.create({ name: `seq_${i}` });
335
+ ids.push(u.id);
336
+ }
337
+ const sorted_ids = [...ids].sort();
338
+ assert('20 creates secuenciales: IDs monotonicos', JSON.stringify(ids) === JSON.stringify(sorted_ids));
339
+ assert('20 creates secuenciales: todos unicos', new Set(ids).size === 20);
340
+ console.log(`\n Contracts: ${passed} passed, ${failed} failed`);
341
+ return failed;
342
+ }
343
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/test/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function filters(): Promise<number>;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.default = filters;
13
+ const index_1 = require("../index");
14
+ let Product = class Product extends index_1.Table {
15
+ };
16
+ __decorate([
17
+ (0, index_1.PrimaryKey)(),
18
+ __metadata("design:type", Object)
19
+ ], Product.prototype, "id", void 0);
20
+ __decorate([
21
+ (0, index_1.NotNull)(),
22
+ __metadata("design:type", String)
23
+ ], Product.prototype, "name", void 0);
24
+ __decorate([
25
+ (0, index_1.Default)(''),
26
+ __metadata("design:type", String)
27
+ ], Product.prototype, "category", void 0);
28
+ __decorate([
29
+ (0, index_1.Default)(() => 0),
30
+ __metadata("design:type", Object)
31
+ ], Product.prototype, "price", void 0);
32
+ __decorate([
33
+ (0, index_1.Default)(() => 0),
34
+ __metadata("design:type", Object)
35
+ ], Product.prototype, "stock", void 0);
36
+ __decorate([
37
+ (0, index_1.Default)(''),
38
+ __metadata("design:type", String)
39
+ ], Product.prototype, "tags", void 0);
40
+ __decorate([
41
+ (0, index_1.Default)(() => true),
42
+ __metadata("design:type", Object)
43
+ ], Product.prototype, "active", void 0);
44
+ Product = __decorate([
45
+ (0, index_1.Name)('test_filter_products')
46
+ ], Product);
47
+ let passed = 0;
48
+ let failed = 0;
49
+ function assert(label, condition, detail) {
50
+ if (condition) {
51
+ console.log(` OK ${label}`);
52
+ passed++;
53
+ }
54
+ else {
55
+ console.error(` FAIL ${label}${detail ? ` -- ${detail}` : ''}`);
56
+ failed++;
57
+ }
58
+ }
59
+ async function filters() {
60
+ console.log('\n=== FILTERS ===\n');
61
+ const dynamite = new index_1.Dynamite({
62
+ tables: [Product],
63
+ region: 'local',
64
+ endpoint: 'http://localhost:8000',
65
+ credentials: { accessKeyId: 'local', secretAccessKey: 'local' },
66
+ });
67
+ await dynamite.connect();
68
+ await dynamite.sync();
69
+ // -- Seed 20 products --
70
+ const items = [];
71
+ for (let i = 0; i < 20; i++) {
72
+ items.push(Product.create({
73
+ name: `Product_${i}`,
74
+ category: i < 10 ? 'electronics' : 'clothing',
75
+ price: (i + 1) * 10,
76
+ stock: i % 3 === 0 ? 0 : (i + 1) * 5,
77
+ tags: i < 5 ? 'featured,new' : i < 15 ? 'sale' : 'clearance',
78
+ active: i < 18,
79
+ }));
80
+ }
81
+ const products = await Promise.all(items);
82
+ console.log(` Seeded ${products.length} products\n`);
83
+ // ===================== BASIC =====================
84
+ console.log('-- Filtros basicos --');
85
+ // $eq plano
86
+ const by_name = await Product.where({ name: 'Product_0' });
87
+ assert('$eq plano: name = Product_0', by_name.length === 1 && by_name[0].name === 'Product_0');
88
+ // $eq explicito
89
+ const by_eq = await Product.where({ name: { $eq: 'Product_5' } });
90
+ assert('$eq explicito', by_eq.length === 1);
91
+ // Sobrecarga key, value
92
+ const by_kv = await Product.where('name', 'Product_3');
93
+ assert('sobrecarga (key, value)', by_kv.length === 1);
94
+ // Sobrecarga key, operator, value
95
+ const by_kov = await Product.where('name', '=', 'Product_3');
96
+ assert('sobrecarga (key, op, value)', by_kov.length === 1);
97
+ // null ($eq null -> attribute_not_exists)
98
+ // Todos los productos tienen name, asi que buscar uno sin category custom
99
+ const no_results = await Product.where({ name: null });
100
+ assert('$eq null -> attribute_not_exists', no_results.length === 0);
101
+ // $ne
102
+ const not_electronics = await Product.where({ category: { $ne: 'electronics' } });
103
+ assert('$ne: no electronics', not_electronics.every(p => p.category !== 'electronics'));
104
+ assert('$ne: count correcto', not_electronics.length === 10);
105
+ // ===================== ADVANCED =====================
106
+ console.log('\n-- Filtros avanzados --');
107
+ // $gt
108
+ const expensive = await Product.where({ price: { $gt: 150 } });
109
+ assert('$gt: price > 150', expensive.every(p => p.price > 150));
110
+ assert('$gt: count', expensive.length === 5); // 160,170,180,190,200
111
+ // $gte
112
+ const gte150 = await Product.where({ price: { $gte: 150 } });
113
+ assert('$gte: price >= 150', gte150.length === 6); // 150,160,...,200
114
+ // $lt
115
+ const cheap = await Product.where({ price: { $lt: 50 } });
116
+ assert('$lt: price < 50', cheap.every(p => p.price < 50));
117
+ assert('$lt: count', cheap.length === 4); // 10,20,30,40
118
+ // $lte
119
+ const lte50 = await Product.where({ price: { $lte: 50 } });
120
+ assert('$lte: price <= 50', lte50.length === 5); // 10,20,30,40,50
121
+ // $in
122
+ const specific = await Product.where({ name: { $in: ['Product_0', 'Product_5', 'Product_19'] } });
123
+ assert('$in: 3 productos especificos', specific.length === 3);
124
+ // $in vacio lanza error
125
+ let in_empty_threw = false;
126
+ try {
127
+ await Product.where({ name: { $in: [] } });
128
+ }
129
+ catch {
130
+ in_empty_threw = true;
131
+ }
132
+ assert('$in vacio lanza error', in_empty_threw);
133
+ // $include (contains)
134
+ const featured = await Product.where({ tags: { $include: 'featured' } });
135
+ assert('$include: tags contiene featured', featured.length === 5);
136
+ // Multi-campo
137
+ const multi = await Product.where({ category: 'electronics', active: true });
138
+ assert('multi-campo: electronics + active', multi.length === 10 && multi.every(p => p.category === 'electronics'));
139
+ // ===================== SUPREME =====================
140
+ console.log('\n-- Filtros nivel supremo --');
141
+ // Rango: price >= 50 AND price <= 150
142
+ const range = await Product.where({ price: { $gte: 50, $lte: 150 } });
143
+ assert('rango: 50 <= price <= 150', range.every(p => p.price >= 50 && p.price <= 150));
144
+ assert('rango: count', range.length === 11); // 50,60,...,150
145
+ // Multi-campo + operadores: electronics + price > 80 + stock > 0
146
+ const complex = await Product.where({
147
+ category: 'electronics',
148
+ price: { $gt: 80 },
149
+ stock: { $gt: 0 },
150
+ });
151
+ assert('supremo: electronics + price>80 + stock>0', complex.every(p => p.category === 'electronics' && p.price > 80 && p.stock > 0));
152
+ // $ne null -> attribute_exists (campo existe)
153
+ const has_category = await Product.where({ category: { $ne: null } });
154
+ assert('$ne null: todos tienen category', has_category.length === 20);
155
+ // $include + rango
156
+ const sale_mid = await Product.where({
157
+ tags: { $include: 'sale' },
158
+ price: { $gte: 80, $lte: 120 },
159
+ });
160
+ assert('$include + rango', sale_mid.every(p => p.tags.includes('sale') && p.price >= 80 && p.price <= 120));
161
+ // Combinacion de todo: category + price range + active + tags
162
+ const ultimate = await Product.where({
163
+ category: 'electronics',
164
+ price: { $gte: 30, $lte: 90 },
165
+ active: true,
166
+ tags: { $include: 'sale' },
167
+ });
168
+ assert('ultimate: 4 condiciones combinadas', ultimate.every(p => p.category === 'electronics' &&
169
+ p.price >= 30 && p.price <= 90 &&
170
+ p.active === true &&
171
+ p.tags.includes('sale')));
172
+ // -- Paginacion --
173
+ console.log('\n-- Paginacion --');
174
+ const page1 = await Product.where({}, { limit: 5, order: { price: 'ASC' } });
175
+ assert('limit 5', page1.length === 5);
176
+ assert('order ASC', page1[0].price <= page1[4].price);
177
+ const page2 = await Product.where({}, { limit: 5, offset: 5, order: { price: 'ASC' } });
178
+ assert('offset 5 no repite', page2[0].price > page1[4].price);
179
+ const desc = await Product.where({}, { limit: 3, order: { price: 'DESC' } });
180
+ assert('order DESC', desc[0].price >= desc[2].price);
181
+ assert('DESC top = 200', desc[0].price === 200);
182
+ // -- Proyeccion --
183
+ console.log('\n-- Proyeccion --');
184
+ const projected = await Product.where({}, { attributes: ['name', 'price'], limit: 1 });
185
+ assert('attributes: tiene name', projected[0]?.name !== undefined);
186
+ assert('attributes: tiene price', projected[0]?.price !== undefined);
187
+ console.log(`\n Filters: ${passed} passed, ${failed} failed`);
188
+ return failed;
189
+ }
190
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/test/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const basic_1 = __importDefault(require("./basic"));
7
+ const transactions_1 = __importDefault(require("./transactions"));
8
+ const relations_1 = __importDefault(require("./relations"));
9
+ const filters_1 = __importDefault(require("./filters"));
10
+ const bulk_1 = __importDefault(require("./bulk"));
11
+ const query_scan_1 = __importDefault(require("./query_scan"));
12
+ const contracts_1 = __importDefault(require("./contracts"));
13
+ (async function () {
14
+ try {
15
+ let total_failures = 0;
16
+ total_failures += await (0, basic_1.default)();
17
+ total_failures += await (0, transactions_1.default)();
18
+ total_failures += await (0, relations_1.default)();
19
+ total_failures += await (0, filters_1.default)();
20
+ total_failures += await (0, bulk_1.default)();
21
+ total_failures += await (0, query_scan_1.default)();
22
+ total_failures += await (0, contracts_1.default)();
23
+ console.log(`\n${'='.repeat(40)}`);
24
+ console.log(total_failures === 0
25
+ ? ` ALL TESTS PASSED`
26
+ : ` ${total_failures} TOTAL FAILURES`);
27
+ console.log('='.repeat(40));
28
+ process.exit(total_failures > 0 ? 1 : 0);
29
+ }
30
+ catch (error) {
31
+ console.error('\nFatal error:', error.message);
32
+ console.error(error.stack);
33
+ process.exit(1);
34
+ }
35
+ })();
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,kEAA0C;AAC1C,4DAAoC;AACpC,wDAAgC;AAChC,kDAA0B;AAC1B,8DAAsC;AACtC,4DAAoC;AAEpC,CAAC,KAAK;IACJ,IAAI,CAAC;QACH,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,cAAc,IAAI,MAAM,IAAA,eAAK,GAAE,CAAC;QAChC,cAAc,IAAI,MAAM,IAAA,sBAAY,GAAE,CAAC;QACvC,cAAc,IAAI,MAAM,IAAA,mBAAS,GAAE,CAAC;QACpC,cAAc,IAAI,MAAM,IAAA,iBAAO,GAAE,CAAC;QAClC,cAAc,IAAI,MAAM,IAAA,cAAI,GAAE,CAAC;QAC/B,cAAc,IAAI,MAAM,IAAA,oBAAU,GAAE,CAAC;QACrC,cAAc,IAAI,MAAM,IAAA,mBAAS,GAAE,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC;YAC9B,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,KAAK,cAAc,iBAAiB,CACvC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export default function query_scan(): Promise<number>;