@arcaelas/dynamite 1.0.0 → 1.0.1

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 (83) hide show
  1. package/SECURITY.md +41 -0
  2. package/build/__tests__/crud.spec.d.ts +1 -0
  3. package/build/__tests__/crud.spec.js +123 -0
  4. package/build/__tests__/crud.spec.js.map +1 -0
  5. package/build/__tests__/decorators.spec.d.ts +1 -0
  6. package/build/__tests__/decorators.spec.js +183 -0
  7. package/build/__tests__/decorators.spec.js.map +1 -0
  8. package/build/__tests__/instance-crud.spec.d.ts +1 -0
  9. package/build/__tests__/instance-crud.spec.js +82 -0
  10. package/build/__tests__/instance-crud.spec.js.map +1 -0
  11. package/build/index.js +2 -0
  12. package/build/index.js.map +7 -0
  13. package/build/src/core/table.d.ts +17 -0
  14. package/build/src/core/table.js +223 -0
  15. package/build/src/core/table.js.map +1 -0
  16. package/build/src/core/wrapper.d.ts +47 -0
  17. package/build/src/core/wrapper.js +57 -0
  18. package/build/src/core/wrapper.js.map +1 -0
  19. package/build/src/decorators/created_at.d.ts +4 -0
  20. package/build/src/decorators/created_at.js +22 -0
  21. package/build/src/decorators/created_at.js.map +1 -0
  22. package/build/src/decorators/default.d.ts +1 -0
  23. package/build/src/decorators/default.js +55 -0
  24. package/build/src/decorators/default.js.map +1 -0
  25. package/build/src/decorators/index.d.ts +1 -0
  26. package/build/src/decorators/index.js +24 -0
  27. package/build/src/decorators/index.js.map +1 -0
  28. package/build/src/decorators/index_sort.d.ts +1 -0
  29. package/build/src/decorators/index_sort.js +27 -0
  30. package/build/src/decorators/index_sort.js.map +1 -0
  31. package/build/src/decorators/mutate.d.ts +2 -0
  32. package/build/src/decorators/mutate.js +53 -0
  33. package/build/src/decorators/mutate.js.map +1 -0
  34. package/build/src/decorators/name.d.ts +1 -0
  35. package/build/src/decorators/name.js +41 -0
  36. package/build/src/decorators/name.js.map +1 -0
  37. package/build/src/decorators/not_null.d.ts +4 -0
  38. package/build/src/decorators/not_null.js +28 -0
  39. package/build/src/decorators/not_null.js.map +1 -0
  40. package/build/src/decorators/primary_key.d.ts +7 -0
  41. package/build/src/decorators/primary_key.js +30 -0
  42. package/build/src/decorators/primary_key.js.map +1 -0
  43. package/build/src/decorators/updated_at.d.ts +4 -0
  44. package/build/src/decorators/updated_at.js +23 -0
  45. package/build/src/decorators/updated_at.js.map +1 -0
  46. package/build/src/decorators/validate.d.ts +1 -0
  47. package/build/src/decorators/validate.js +54 -0
  48. package/build/src/decorators/validate.js.map +1 -0
  49. package/{src/index.ts → build/src/index.d.ts} +0 -3
  50. package/build/src/index.js +31 -0
  51. package/build/src/index.js.map +1 -0
  52. package/build/src/utils/naming.d.ts +1 -0
  53. package/build/src/utils/naming.js +18 -0
  54. package/build/src/utils/naming.js.map +1 -0
  55. package/build/tests/crud.spec.d.ts +1 -0
  56. package/build/tests/crud.spec.js +123 -0
  57. package/build/tests/crud.spec.js.map +1 -0
  58. package/build/tests/decorators.spec.d.ts +1 -0
  59. package/build/tests/decorators.spec.js +183 -0
  60. package/build/tests/decorators.spec.js.map +1 -0
  61. package/build/tests/instance-crud.spec.d.ts +1 -0
  62. package/build/tests/instance-crud.spec.js +82 -0
  63. package/build/tests/instance-crud.spec.js.map +1 -0
  64. package/package.json +35 -11
  65. package/.eslintrc.js +0 -0
  66. package/.prettierrc +0 -0
  67. package/__tests__/crud.spec.ts +0 -77
  68. package/__tests__/decorators.spec.ts +0 -134
  69. package/__tests__/instance-crud.spec.ts +0 -86
  70. package/jest.config.ts +0 -23
  71. package/src/core/table.ts +0 -226
  72. package/src/core/wrapper.ts +0 -103
  73. package/src/decorators/created_at.ts +0 -17
  74. package/src/decorators/default.ts +0 -56
  75. package/src/decorators/index.ts +0 -26
  76. package/src/decorators/index_sort.ts +0 -32
  77. package/src/decorators/mutate.ts +0 -54
  78. package/src/decorators/name.ts +0 -50
  79. package/src/decorators/not_null.ts +0 -21
  80. package/src/decorators/primary_key.ts +0 -26
  81. package/src/decorators/updated_at.ts +0 -18
  82. package/src/decorators/validate.ts +0 -59
  83. package/src/utils/naming.ts +0 -12
package/SECURITY.md ADDED
@@ -0,0 +1,41 @@
1
+ # Security Policies and Procedures
2
+
3
+ This document outlines security procedures and general policies for the `standard`
4
+ project.
5
+
6
+ - [Reporting a Bug](https://github.com/arcaelas/dynamite/issues)
7
+ - [Read Wiki - BETA](https://github.com/arcaelas/dynamite/wiki)
8
+
9
+ ## Reporting a Bug
10
+
11
+ The `standard` team and community take all security bugs in `standard` seriously.
12
+ Thank you for improving the security of `standard`. We appreciate your efforts and
13
+ responsible disclosure and will make every effort to acknowledge your
14
+ contributions.
15
+
16
+ Report security bugs by emailing the lead maintainer at arcaelas12@gmail.com.
17
+
18
+ The lead maintainer will acknowledge your email within 48 hours, and will send a
19
+ more detailed response within 48 hours indicating the next steps in handling
20
+ your report. After the initial reply to your report, the security team will
21
+ endeavor to keep you informed of the progress towards a fix and full
22
+ announcement, and may ask for additional information or guidance.
23
+
24
+ Report security bugs in third-party modules to the person or team maintaining
25
+ the module.
26
+
27
+ ## Disclosure Policy
28
+
29
+ When the security team receives a security bug report, they will assign it to a
30
+ primary handler. This person will coordinate the fix and release process,
31
+ involving the following steps:
32
+
33
+ - Confirm the problem and determine the affected versions.
34
+ - Audit code to find any potential similar problems.
35
+ - Prepare fixes for all releases still under maintenance. These fixes will be
36
+ released as fast as possible to npm.
37
+
38
+ ## Comments on this Policy
39
+
40
+ If you have suggestions on how this process could be improved please submit a
41
+ pull request.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /* __tests__/crud.spec.ts
3
+ * -----------------------------------------------------------
4
+ * CRUD end-to-end contra DynamoDB Local (puerto 7007)
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
23
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25
+ 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;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ };
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ var __metadata = (this && this.__metadata) || function (k, v) {
46
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
47
+ };
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
53
+ const table_1 = __importStar(require("../src/core/table"));
54
+ const wrapper_1 = __importDefault(require("../src/core/wrapper"));
55
+ const default_1 = __importDefault(require("../src/decorators/default"));
56
+ const name_1 = __importDefault(require("../src/decorators/name"));
57
+ const not_null_1 = __importDefault(require("../src/decorators/not_null"));
58
+ const primary_key_1 = __importDefault(require("../src/decorators/primary_key"));
59
+ const ddbCfg = {
60
+ region: "local",
61
+ endpoint: "http://localhost:7007",
62
+ credentials: { accessKeyId: "x", secretAccessKey: "x" },
63
+ };
64
+ beforeAll(() => (0, table_1.connect)(ddbCfg));
65
+ afterEach(async () => {
66
+ /* Eliminar todas las tablas creadas por los tests */
67
+ const ddb = new client_dynamodb_1.DynamoDBClient(ddbCfg);
68
+ for (const e of wrapper_1.default.values()) {
69
+ try {
70
+ await ddb.send(new client_dynamodb_1.DeleteTableCommand({ TableName: e.name }));
71
+ }
72
+ catch (_) {
73
+ /* tabla puede no existir */
74
+ }
75
+ }
76
+ wrapper_1.default.clear();
77
+ });
78
+ describe("CRUD Dinamite ORM (DynamoDB Local)", () => {
79
+ jest.setTimeout(10_000);
80
+ it("create → update → where → destroy", async () => {
81
+ let User = class User extends table_1.default {
82
+ };
83
+ __decorate([
84
+ (0, primary_key_1.default)(),
85
+ __metadata("design:type", String)
86
+ ], User.prototype, "id", void 0);
87
+ __decorate([
88
+ (0, not_null_1.default)(),
89
+ __metadata("design:type", String)
90
+ ], User.prototype, "email", void 0);
91
+ __decorate([
92
+ (0, default_1.default)(() => new Date().toISOString()),
93
+ __metadata("design:type", String)
94
+ ], User.prototype, "created_at", void 0);
95
+ User = __decorate([
96
+ (0, name_1.default)("crud_users1")
97
+ ], User);
98
+ /* ---------- create (auto-crea tabla) ---------- */
99
+ const u1 = await User.create({ id: "u1", email: "a@b.com" });
100
+ expect(u1.email).toBe("a@b.com");
101
+ /* ---------- update ---------- */
102
+ await User.update("u1", { email: "c@d.com" });
103
+ const [after] = await User.where();
104
+ expect(after.email).toBe("c@d.com");
105
+ /* ---------- destroy ---------- */
106
+ await User.destroy("u1");
107
+ expect(await User.where()).toHaveLength(0);
108
+ });
109
+ it("where() devuelve [] si la tabla no existe", async () => {
110
+ let Ghost = class Ghost extends table_1.default {
111
+ };
112
+ __decorate([
113
+ (0, primary_key_1.default)(),
114
+ __metadata("design:type", String)
115
+ ], Ghost.prototype, "id", void 0);
116
+ Ghost = __decorate([
117
+ (0, name_1.default)("ghosts")
118
+ ], Ghost);
119
+ const rows = await Ghost.where();
120
+ expect(rows).toEqual([]);
121
+ });
122
+ });
123
+ //# sourceMappingURL=crud.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud.spec.js","sourceRoot":"","sources":["../../__tests__/crud.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,8DAA8E;AAE9E,2DAA8D;AAC9D,kEAA0C;AAE1C,wEAAgD;AAChD,kEAA0C;AAC1C,0EAAiD;AACjD,gFAAuD;AAEvD,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,uBAAuB;IACjC,WAAW,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE;CACxD,CAAC;AAEF,SAAS,CAAC,GAAG,EAAE,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,CAAC,CAAC;AAEjC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,gCAAc,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,iBAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,oCAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,4BAA4B;QAC9B,CAAC;IACH,CAAC;IACD,iBAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAExB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAEjD,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,eAAK;SASvB,CAAA;QAPS;YADP,IAAA,qBAAU,GAAE;;wCACM;QAGX;YADP,IAAA,kBAAO,GAAE;;2CACY;QAGd;YADP,IAAA,iBAAO,EAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;;gDACb;QARvB,IAAI;YADT,IAAA,cAAI,EAAC,aAAa,CAAC;WACd,IAAI,CAST;QAED,oDAAoD;QACpD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,kCAAkC;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,mCAAmC;QACnC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAEzD,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,eAAK;SAGxB,CAAA;QADS;YADP,IAAA,qBAAU,GAAE;;yCACM;QAFf,KAAK;YADV,IAAA,cAAI,EAAC,QAAQ,CAAC;WACT,KAAK,CAGV;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ /* __tests__/decorators.spec.ts
3
+ * -----------------------------------------------------------
4
+ * Suite para verificar todos los decoradores Dinamite ORM.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
23
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25
+ 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;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ };
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ var __metadata = (this && this.__metadata) || function (k, v) {
46
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
47
+ };
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ const wrapper_1 = __importStar(require("../src/core/wrapper"));
53
+ const created_at_1 = __importDefault(require("../src/decorators/created_at"));
54
+ const default_1 = __importDefault(require("../src/decorators/default"));
55
+ const index_1 = __importDefault(require("../src/decorators/index"));
56
+ const index_sort_1 = __importDefault(require("../src/decorators/index_sort"));
57
+ const mutate_1 = __importDefault(require("../src/decorators/mutate"));
58
+ const name_1 = __importDefault(require("../src/decorators/name"));
59
+ const not_null_1 = __importDefault(require("../src/decorators/not_null"));
60
+ const primary_key_1 = __importDefault(require("../src/decorators/primary_key"));
61
+ const updated_at_1 = __importDefault(require("../src/decorators/updated_at"));
62
+ const validate_1 = __importDefault(require("../src/decorators/validate"));
63
+ describe("Decoradores Dinamite ORM", () => {
64
+ beforeEach(() => wrapper_1.default.clear());
65
+ /* ---------------------------------------------------------- */
66
+ it("nombre de tabla por defecto (snake_plural) cuando no se usa @Name", () => {
67
+ class Book {
68
+ }
69
+ __decorate([
70
+ (0, not_null_1.default)(),
71
+ __metadata("design:type", String)
72
+ ], Book.prototype, "title", void 0);
73
+ const meta = wrapper_1.default.get(Book);
74
+ expect(meta.name).toBe("books"); // Book → books
75
+ });
76
+ /* ---------------------------------------------------------- */
77
+ it("@Name (clase y propiedad)", () => {
78
+ let User = class User {
79
+ };
80
+ __decorate([
81
+ (0, name_1.default)("correo"),
82
+ __metadata("design:type", String)
83
+ ], User.prototype, "email", void 0);
84
+ User = __decorate([
85
+ (0, name_1.default)("usuarios")
86
+ ], User);
87
+ const meta = wrapper_1.default.get(User);
88
+ expect(meta.name).toBe("usuarios");
89
+ expect(meta.columns.get("email").name).toBe("correo");
90
+ });
91
+ /* ---------------------------------------------------------- */
92
+ it("@Index + @IndexSort (PK + SK)", () => {
93
+ class Post {
94
+ }
95
+ __decorate([
96
+ (0, index_1.default)() // Partition Key
97
+ ,
98
+ __metadata("design:type", String)
99
+ ], Post.prototype, "slug", void 0);
100
+ __decorate([
101
+ (0, index_sort_1.default)() // Sort Key
102
+ ,
103
+ __metadata("design:type", String)
104
+ ], Post.prototype, "created", void 0);
105
+ const meta = wrapper_1.default.get(Post);
106
+ const pkCol = meta.columns.get("slug");
107
+ const skCol = meta.columns.get("created");
108
+ expect(pkCol.index).toBe(true);
109
+ expect(skCol.indexSort).toBe(true);
110
+ });
111
+ /* ---------------------------------------------------------- */
112
+ it("@PrimaryKey (combinado)", () => {
113
+ class Comment {
114
+ }
115
+ __decorate([
116
+ (0, primary_key_1.default)(),
117
+ __metadata("design:type", String)
118
+ ], Comment.prototype, "id", void 0);
119
+ const meta = wrapper_1.default.get(Comment);
120
+ const col = meta.columns.get("id");
121
+ expect(col.index).toBe(true);
122
+ expect(col.indexSort).toBe(true);
123
+ });
124
+ /* ---------------------------------------------------------- */
125
+ it("@Default + @Mutate + @Validate pipeline", () => {
126
+ let Model = class Model {
127
+ };
128
+ __decorate([
129
+ (0, default_1.default)(() => 10),
130
+ (0, mutate_1.default)((v) => v * 2),
131
+ (0, validate_1.default)((v) => (v >= 20 ? true : "menor a 20")),
132
+ __metadata("design:type", Number)
133
+ ], Model.prototype, "score", void 0);
134
+ Model = __decorate([
135
+ (0, name_1.default)("tests")
136
+ ], Model);
137
+ const m = new Model();
138
+ m.score = undefined; // dispara pipeline
139
+ expect(m.score).toBe(20);
140
+ expect(m[wrapper_1.STORE].score).toBe(20);
141
+ expect(() => {
142
+ m.score = 5;
143
+ }).toThrow("menor a 20");
144
+ });
145
+ /* ---------------------------------------------------------- */
146
+ it("@NotNull rechaza null/undefined/cadena vacía", () => {
147
+ class File {
148
+ }
149
+ __decorate([
150
+ (0, not_null_1.default)(),
151
+ __metadata("design:type", String)
152
+ ], File.prototype, "path", void 0);
153
+ const f = new File();
154
+ expect(() => (f.path = null)).toThrow();
155
+ expect(() => (f.path = " ")).toThrow();
156
+ f.path = "/tmp/file";
157
+ expect(f.path).toBe("/tmp/file");
158
+ });
159
+ /* ---------------------------------------------------------- */
160
+ it("@CreatedAt y @UpdatedAt gestionan timestamps", () => {
161
+ class Audit {
162
+ }
163
+ __decorate([
164
+ (0, created_at_1.default)(),
165
+ __metadata("design:type", String)
166
+ ], Audit.prototype, "created", void 0);
167
+ __decorate([
168
+ (0, updated_at_1.default)(),
169
+ __metadata("design:type", String)
170
+ ], Audit.prototype, "updated", void 0);
171
+ const a = new Audit();
172
+ a.created = undefined;
173
+ a.updated = undefined;
174
+ const firstCreated = a.created;
175
+ const firstUpdated = a.updated;
176
+ return new Promise((r) => setTimeout(r, 10)).then(() => {
177
+ a.updated = undefined;
178
+ expect(a.created).toBe(firstCreated);
179
+ expect(a.updated).not.toBe(firstUpdated);
180
+ });
181
+ });
182
+ });
183
+ //# sourceMappingURL=decorators.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.spec.js","sourceRoot":"","sources":["../../__tests__/decorators.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
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
+ /* __tests__/instance-crud.spec.ts
13
+ * ------------------------------------------------------------------
14
+ * CRUD usando métodos de **instancia** de Dinamite ORM con DynamoDB Local.
15
+ * Se asume que DynamoDB Local está corriendo en http://localhost:7007.
16
+ * ------------------------------------------------------------------ */
17
+ const src_1 = require("../src");
18
+ // ---------- conexión DynamoDB Local ----------
19
+ beforeAll(() => (0, src_1.connect)({
20
+ region: "local",
21
+ endpoint: "http://localhost:7007",
22
+ credentials: { accessKeyId: "x", secretAccessKey: "x" },
23
+ }));
24
+ // ---------- Modelo de prueba ----------
25
+ let User = class User extends src_1.Table {
26
+ };
27
+ __decorate([
28
+ (0, src_1.PrimaryKey)(),
29
+ __metadata("design:type", String)
30
+ ], User.prototype, "id", void 0);
31
+ __decorate([
32
+ (0, src_1.NotNull)() // ← registra la columna en el wrapper
33
+ ,
34
+ __metadata("design:type", String)
35
+ ], User.prototype, "email", void 0);
36
+ __decorate([
37
+ (0, src_1.CreatedAt)(),
38
+ __metadata("design:type", String)
39
+ ], User.prototype, "created", void 0);
40
+ __decorate([
41
+ (0, src_1.UpdatedAt)(),
42
+ __metadata("design:type", String)
43
+ ], User.prototype, "updated", void 0);
44
+ User = __decorate([
45
+ (0, src_1.Name)("users")
46
+ ], User);
47
+ describe("CRUD Dinamite ORM – instancia", () => {
48
+ it("where() antes de existir la tabla → []", async () => {
49
+ const rows = await User.where();
50
+ expect(rows).toEqual([]);
51
+ });
52
+ it("save() → crea, update() → modifica, destroy() → elimina", async () => {
53
+ /* ---------- save (create) ---------- */
54
+ const u = new User({ id: "u1", email: "a@b.com" });
55
+ await u.save();
56
+ let rows = await User.where();
57
+ expect(rows).toHaveLength(1);
58
+ expect(rows[0].email).toBe("a@b.com");
59
+ const firstCreated = rows[0].created;
60
+ const firstUpdated = rows[0].updated;
61
+ /* ---------- update ---------- */
62
+ await u.update({ email: "c@d.com" });
63
+ rows = await User.where();
64
+ expect(rows[0].email).toBe("c@d.com");
65
+ expect(rows[0].updated).not.toBe(firstUpdated);
66
+ expect(rows[0].created).toBe(firstCreated);
67
+ /* ---------- destroy ---------- */
68
+ await u.destroy();
69
+ rows = await User.where();
70
+ expect(rows).toEqual([]);
71
+ });
72
+ it("la tabla realmente contiene el ítem mientras existe", async () => {
73
+ const u = new User({ id: "u2", email: "real@test.com" });
74
+ await u.save();
75
+ let rows = await User.where();
76
+ expect(rows.map((x) => x.id)).toContain("u2");
77
+ await u.destroy();
78
+ rows = await User.where();
79
+ expect(rows.map((x) => x.id)).not.toContain("u2");
80
+ });
81
+ });
82
+ //# sourceMappingURL=instance-crud.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-crud.spec.js","sourceRoot":"","sources":["../../__tests__/instance-crud.spec.ts"],"names":[],"mappings":"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"}
package/build/index.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var I=Object.create;var f=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var r in t)f(e,r,{get:t[r],enumerable:!0})},u=(e,t,r,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of C(t))!K.call(e,o)&&o!==r&&f(e,o,{get:()=>t[o],enumerable:!(l=b(t,o))||l.enumerable});return e};var a=(e,t,r)=>(r=e!=null?I(D(e)):{},u(t||!e||!e.__esModule?f(r,"default",{value:e,enumerable:!0}):r,e)),P=e=>u(f({},"__esModule",{value:!0}),e);var S={};M(S,{CreatedAt:()=>c.default,Default:()=>m.default,Index:()=>x.default,IndexSort:()=>p.default,Mutate:()=>s.default,Name:()=>n.default,NotNull:()=>i.default,PrimaryKey:()=>y.default,Table:()=>d.default,UpdatedAt:()=>A.default,Validate:()=>N.default,connect:()=>d.connect});module.exports=P(S);var d=a(require("./core/table")),m=a(require("./decorators/default")),x=a(require("./decorators/index")),p=a(require("./decorators/index_sort")),s=a(require("./decorators/mutate")),n=a(require("./decorators/name")),N=a(require("./decorators/validate")),c=a(require("./decorators/created_at")),i=a(require("./decorators/not_null")),y=a(require("./decorators/primary_key")),A=a(require("./decorators/updated_at"));0&&(module.exports={CreatedAt,Default,Index,IndexSort,Mutate,Name,NotNull,PrimaryKey,Table,UpdatedAt,Validate,connect});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["export { connect, default as Table } from \"./core/table\";\n\n// Decoradores\nexport { default as Default } from \"./decorators/default\";\nexport { default as Index } from \"./decorators/index\";\nexport { default as IndexSort } from \"./decorators/index_sort\";\nexport { default as Mutate } from \"./decorators/mutate\";\nexport { default as Name } from \"./decorators/name\";\nexport { default as Validate } from \"./decorators/validate\";\n\nexport { default as CreatedAt } from \"./decorators/created_at\";\nexport { default as NotNull } from \"./decorators/not_null\";\nexport { default as PrimaryKey } from \"./decorators/primary_key\";\nexport { default as UpdatedAt } from \"./decorators/updated_at\";\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4RAAAE,EAAAF,GAAA,IAAAG,EAA0C,2BAG1CC,EAAmC,mCACnCC,EAAiC,iCACjCC,EAAqC,sCACrCC,EAAkC,kCAClCC,EAAgC,gCAChCC,EAAoC,oCAEpCC,EAAqC,sCACrCC,EAAmC,oCACnCC,EAAsC,uCACtCC,EAAqC",
6
+ "names": ["index_exports", "__export", "__toCommonJS", "import_table", "import_default", "import_decorators", "import_index_sort", "import_mutate", "import_name", "import_validate", "import_created_at", "import_not_null", "import_primary_key", "import_updated_at"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import { DynamoDBClientConfig } from "@aws-sdk/client-dynamodb";
2
+ import { STORE, WrapperEntry } from "./wrapper";
3
+ export declare function connect(cfg: DynamoDBClientConfig): void;
4
+ export default class Table<T extends object = object> {
5
+ private [STORE];
6
+ constructor(data?: Partial<T>);
7
+ toJSON(): Record<string, unknown>;
8
+ save(): Promise<this>;
9
+ update(patch: Partial<T>): Promise<this>;
10
+ destroy(): Promise<void>;
11
+ static create<M extends Table>(this: new (d?: Partial<M>) => M, data: Partial<M>): Promise<M>;
12
+ static update<M extends Table>(this: new (d?: Partial<M>) => M, id: string, record: Partial<M>): Promise<void>;
13
+ static destroy<M extends Table>(this: new () => M, id: string): Promise<null>;
14
+ static where<M extends Table>(this: new (d?: any) => M): Promise<M[]>;
15
+ }
16
+ export { STORE };
17
+ export type { WrapperEntry };