@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
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /*
3
+ * Dinamite ORM — @NotNull Decorator (wrapper)
4
+ * ------------------------------------------
5
+ * Valida que el valor no sea null, undefined ni cadena vacía.
6
+ * Internamente aplica @Validate con una función sincrónica.
7
+ *
8
+ * © 2025 Miguel Alejandro
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.default = NotNull;
15
+ const validate_1 = __importDefault(require("./validate"));
16
+ /**
17
+ * Decorador wrapper que asegura no-null / no-empty.
18
+ */
19
+ function NotNull() {
20
+ return validate_1.default((value, key) => {
21
+ if (value === null || value === undefined)
22
+ return false;
23
+ if (typeof value === "string" && value.trim() === "")
24
+ return false;
25
+ return true;
26
+ });
27
+ }
28
+ //# sourceMappingURL=not_null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not_null.js","sourceRoot":"","sources":["../../../src/decorators/not_null.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;AAOH,0BAMC;AAXD,0DAAkC;AAElC;;GAEG;AACH,SAAwB,OAAO;IAC7B,OAAQ,kBAAgB,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Atajo para definir clave primaria compuesta (PK + SK).
3
+ * El parámetro `name` queda reservado por si en el futuro
4
+ * se almacena un identificador lógico de índice, pero hoy
5
+ * NO se pasa a ningún decorador interno.
6
+ */
7
+ export default function PrimaryKey(name?: string): PropertyDecorator;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /*
3
+ * Dinamite ORM — @PrimaryKey
4
+ * --------------------------
5
+ * Declara simultáneamente Partition Key y Sort Key
6
+ * sobre la misma propiedad.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.default = PrimaryKey;
13
+ const index_1 = __importDefault(require("./index"));
14
+ const index_sort_1 = __importDefault(require("./index_sort"));
15
+ /**
16
+ * Atajo para definir clave primaria compuesta (PK + SK).
17
+ * El parámetro `name` queda reservado por si en el futuro
18
+ * se almacena un identificador lógico de índice, pero hoy
19
+ * NO se pasa a ningún decorador interno.
20
+ */
21
+ function PrimaryKey(name = "primary") {
22
+ if (typeof name !== "string" || !name.trim()) {
23
+ throw new TypeError("@PrimaryKey requiere un nombre de índice válido");
24
+ }
25
+ return (target, prop) => {
26
+ (0, index_1.default)()(target, prop); // Partition Key
27
+ (0, index_sort_1.default)()(target, prop); // Sort Key
28
+ };
29
+ }
30
+ //# sourceMappingURL=primary_key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primary_key.js","sourceRoot":"","sources":["../../../src/decorators/primary_key.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAWH,6BASC;AAlBD,oDAA4B;AAC5B,8DAAqC;AAErC;;;;;GAKG;AACH,SAAwB,UAAU,CAAC,IAAI,GAAG,SAAS;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,IAAA,eAAK,GAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB;QACvC,IAAA,oBAAS,GAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW;IACxC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Actualiza automáticamente la marca temporal en cada asignación.
3
+ */
4
+ export default function UpdatedAt(): PropertyDecorator;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /*
3
+ * Dinamite ORM — @UpdatedAt Decorator (wrapper)
4
+ * --------------------------------------------
5
+ * Actualiza la fecha/hora cada vez que la propiedad recibe un nuevo valor
6
+ * (incluyendo actualizaciones mediante Model.save()).
7
+ * Internamente aplica @Mutate con una factory de timestamp ISO.
8
+ *
9
+ * © 2025 Miguel Alejandro
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.default = UpdatedAt;
16
+ const mutate_1 = __importDefault(require("./mutate"));
17
+ /**
18
+ * Actualiza automáticamente la marca temporal en cada asignación.
19
+ */
20
+ function UpdatedAt() {
21
+ return (0, mutate_1.default)(() => new Date().toISOString());
22
+ }
23
+ //# sourceMappingURL=updated_at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updated_at.js","sourceRoot":"","sources":["../../../src/decorators/updated_at.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAOH,4BAEC;AAPD,sDAA8B;AAE9B;;GAEG;AACH,SAAwB,SAAS;IAC/B,OAAO,IAAA,gBAAM,EAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1 @@
1
+ export default function Validate(validators: ((v: unknown) => true | string) | ((v: unknown) => true | string)[]): PropertyDecorator;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /*
3
+ * Dinamite ORM — @Validate
4
+ * ------------------------
5
+ * Registra validadores y crea virtual si falta.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.default = Validate;
9
+ const wrapper_1 = require("../core/wrapper");
10
+ const naming_1 = require("../utils/naming");
11
+ function Validate(validators) {
12
+ const list = Array.isArray(validators) ? validators : [validators];
13
+ if (!list.length || list.some((v) => typeof v !== "function")) {
14
+ throw new TypeError("@Validate requiere funciones");
15
+ }
16
+ return (target, prop) => {
17
+ const ctor = target.constructor;
18
+ const entry = (0, wrapper_1.ensureConfig)(ctor, (0, naming_1.toSnakePlural)(ctor.name));
19
+ const col = (0, wrapper_1.ensureColumn)(entry, prop, String(prop));
20
+ col.validate ??= [];
21
+ col.validate.push(...list);
22
+ if (!Object.getOwnPropertyDescriptor(ctor.prototype, prop)?.set) {
23
+ defineVirtual(ctor.prototype, col, prop);
24
+ }
25
+ };
26
+ }
27
+ /* ------------------------------------------------------------------ */
28
+ function defineVirtual(proto, col, prop) {
29
+ Object.defineProperty(proto, prop, {
30
+ get() {
31
+ return (this[wrapper_1.STORE] ?? {})[prop];
32
+ },
33
+ set(val) {
34
+ const buf = (this[wrapper_1.STORE] ??= {});
35
+ if (val === undefined && col.default !== undefined) {
36
+ val = typeof col.default === "function" ? col.default() : col.default;
37
+ }
38
+ if (col.mutate)
39
+ for (const m of col.mutate)
40
+ val = m(val);
41
+ if (col.validate) {
42
+ for (const v of col.validate) {
43
+ const r = v(val);
44
+ if (r !== true)
45
+ throw new Error(typeof r === "string" ? r : "Validación fallida");
46
+ }
47
+ }
48
+ buf[prop] = val;
49
+ },
50
+ enumerable: true,
51
+ configurable: true,
52
+ });
53
+ }
54
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/decorators/validate.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,2BAsBC;AAzBD,6CAA4E;AAC5E,4CAAgD;AAEhD,SAAwB,QAAQ,CAC9B,UAEqC;IAErC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,IAAqB,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpD,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAChE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAU,EAAE,GAAW,EAAE,IAAqB;IACnE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;QACjC,GAAG;YACD,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,CAAC,GAAY;YACd,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnD,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACxE,CAAC;YACD,IAAI,GAAG,CAAC,MAAM;gBAAE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM;oBAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,CAAC,KAAK,IAAI;wBACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC"}
@@ -1,13 +1,10 @@
1
1
  export { connect, default as Table } from "./core/table";
2
-
3
- // Decoradores
4
2
  export { default as Default } from "./decorators/default";
5
3
  export { default as Index } from "./decorators/index";
6
4
  export { default as IndexSort } from "./decorators/index_sort";
7
5
  export { default as Mutate } from "./decorators/mutate";
8
6
  export { default as Name } from "./decorators/name";
9
7
  export { default as Validate } from "./decorators/validate";
10
-
11
8
  export { default as CreatedAt } from "./decorators/created_at";
12
9
  export { default as NotNull } from "./decorators/not_null";
13
10
  export { default as PrimaryKey } from "./decorators/primary_key";
@@ -0,0 +1,31 @@
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
+ exports.UpdatedAt = exports.PrimaryKey = exports.NotNull = exports.CreatedAt = exports.Validate = exports.Name = exports.Mutate = exports.IndexSort = exports.Index = exports.Default = exports.Table = exports.connect = void 0;
7
+ var table_1 = require("./core/table");
8
+ Object.defineProperty(exports, "connect", { enumerable: true, get: function () { return table_1.connect; } });
9
+ Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return __importDefault(table_1).default; } });
10
+ // Decoradores
11
+ var default_1 = require("./decorators/default");
12
+ Object.defineProperty(exports, "Default", { enumerable: true, get: function () { return __importDefault(default_1).default; } });
13
+ var index_1 = require("./decorators/index");
14
+ Object.defineProperty(exports, "Index", { enumerable: true, get: function () { return __importDefault(index_1).default; } });
15
+ var index_sort_1 = require("./decorators/index_sort");
16
+ Object.defineProperty(exports, "IndexSort", { enumerable: true, get: function () { return __importDefault(index_sort_1).default; } });
17
+ var mutate_1 = require("./decorators/mutate");
18
+ Object.defineProperty(exports, "Mutate", { enumerable: true, get: function () { return __importDefault(mutate_1).default; } });
19
+ var name_1 = require("./decorators/name");
20
+ Object.defineProperty(exports, "Name", { enumerable: true, get: function () { return __importDefault(name_1).default; } });
21
+ var validate_1 = require("./decorators/validate");
22
+ Object.defineProperty(exports, "Validate", { enumerable: true, get: function () { return __importDefault(validate_1).default; } });
23
+ var created_at_1 = require("./decorators/created_at");
24
+ Object.defineProperty(exports, "CreatedAt", { enumerable: true, get: function () { return __importDefault(created_at_1).default; } });
25
+ var not_null_1 = require("./decorators/not_null");
26
+ Object.defineProperty(exports, "NotNull", { enumerable: true, get: function () { return __importDefault(not_null_1).default; } });
27
+ var primary_key_1 = require("./decorators/primary_key");
28
+ Object.defineProperty(exports, "PrimaryKey", { enumerable: true, get: function () { return __importDefault(primary_key_1).default; } });
29
+ var updated_at_1 = require("./decorators/updated_at");
30
+ Object.defineProperty(exports, "UpdatedAt", { enumerable: true, get: function () { return __importDefault(updated_at_1).default; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAyD;AAAhD,gGAAA,OAAO,OAAA;AAAE,+GAAA,OAAO,OAAS;AAElC,cAAc;AACd,gDAA0D;AAAjD,mHAAA,OAAO,OAAW;AAC3B,4CAAsD;AAA7C,+GAAA,OAAO,OAAS;AACzB,sDAA+D;AAAtD,wHAAA,OAAO,OAAa;AAC7B,8CAAwD;AAA/C,iHAAA,OAAO,OAAU;AAC1B,0CAAoD;AAA3C,6GAAA,OAAO,OAAQ;AACxB,kDAA4D;AAAnD,qHAAA,OAAO,OAAY;AAE5B,sDAA+D;AAAtD,wHAAA,OAAO,OAAa;AAC7B,kDAA2D;AAAlD,oHAAA,OAAO,OAAW;AAC3B,wDAAiE;AAAxD,0HAAA,OAAO,OAAc;AAC9B,sDAA+D;AAAtD,wHAAA,OAAO,OAAa"}
@@ -0,0 +1 @@
1
+ export declare function toSnakePlural(input: string): string;
@@ -0,0 +1,18 @@
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
+ exports.toSnakePlural = toSnakePlural;
7
+ /* src/utils/naming.ts
8
+ * -------------------------------------------------
9
+ * Convierte Camel/Pascal → snake_case y pluraliza.
10
+ * Se importa allí donde se necesite.
11
+ */
12
+ const pluralize_1 = __importDefault(require("pluralize"));
13
+ function toSnakePlural(input) {
14
+ // camelCase / PascalCase → snake_case
15
+ const snake = input.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase();
16
+ return (0, pluralize_1.default)(snake); // “user” → “users”, “status” → “statuses”…
17
+ }
18
+ //# sourceMappingURL=naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../src/utils/naming.ts"],"names":[],"mappings":";;;;;AAOA,sCAIC;AAXD;;;;GAIG;AACH,0DAAkC;AAElC,SAAgB,aAAa,CAAC,KAAa;IACzC,wCAAwC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACzE,OAAO,IAAA,mBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;AACtE,CAAC"}
@@ -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 {};