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