vsrepo 2.1.0 → 2.2.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 (134) hide show
  1. package/README.md +54 -10
  2. package/README.pt-BR.md +54 -10
  3. package/dist/VSRepoAdapter.js +1 -0
  4. package/dist/VSRepoAdapter.js.map +1 -0
  5. package/dist/VSRepository.d.ts +9 -6
  6. package/dist/VSRepository.js +14 -1
  7. package/dist/VSRepository.js.map +1 -0
  8. package/dist/decorators/dynamic-method.decorator.js +1 -0
  9. package/dist/decorators/dynamic-method.decorator.js.map +1 -0
  10. package/dist/decorators/query-method.decorator.d.ts +26 -3
  11. package/dist/decorators/query-method.decorator.js +26 -2
  12. package/dist/decorators/query-method.decorator.js.map +1 -0
  13. package/dist/errors/VSRepoAdapterError.js +1 -0
  14. package/dist/errors/VSRepoAdapterError.js.map +1 -0
  15. package/dist/errors/VSRepoError.js +1 -0
  16. package/dist/errors/VSRepoError.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.js +7 -1
  19. package/dist/index.js.map +1 -0
  20. package/dist/internal/constants/debug-arg-symbol.constant.js +1 -0
  21. package/dist/internal/constants/debug-arg-symbol.constant.js.map +1 -0
  22. package/dist/internal/constants/dynamic-methods-key.constant.js +1 -0
  23. package/dist/internal/constants/dynamic-methods-key.constant.js.map +1 -0
  24. package/dist/internal/constants/query-methods-key.constant.js +1 -0
  25. package/dist/internal/constants/query-methods-key.constant.js.map +1 -0
  26. package/dist/internal/enums/adapter-error-code.enum.js +1 -0
  27. package/dist/internal/enums/adapter-error-code.enum.js.map +1 -0
  28. package/dist/internal/enums/transaction-isolation-level.enum.js +1 -0
  29. package/dist/internal/enums/transaction-isolation-level.enum.js.map +1 -0
  30. package/dist/internal/enums/vs-log-level.enum.js +1 -0
  31. package/dist/internal/enums/vs-log-level.enum.js.map +1 -0
  32. package/dist/internal/enums/vsrepo-error-type.enum.d.ts +1 -1
  33. package/dist/internal/enums/vsrepo-error-type.enum.js +2 -1
  34. package/dist/internal/enums/vsrepo-error-type.enum.js.map +1 -0
  35. package/dist/internal/resolvers/dynamic-methods.resolver.js +33 -6
  36. package/dist/internal/resolvers/dynamic-methods.resolver.js.map +1 -0
  37. package/dist/internal/resolvers/merge-wheres.resolver.js +1 -0
  38. package/dist/internal/resolvers/merge-wheres.resolver.js.map +1 -0
  39. package/dist/internal/utils/db-arg.util.d.ts +15 -0
  40. package/dist/internal/utils/db-arg.util.js +23 -0
  41. package/dist/internal/utils/db-arg.util.js.map +1 -0
  42. package/dist/internal/utils/uncapitalize.util.js +1 -0
  43. package/dist/internal/utils/uncapitalize.util.js.map +1 -0
  44. package/dist/internal/utils/vs-logger.util.js +1 -0
  45. package/dist/internal/utils/vs-logger.util.js.map +1 -0
  46. package/dist/internal/utils/with-db.util.d.ts +19 -0
  47. package/dist/internal/utils/with-db.util.js +24 -0
  48. package/dist/internal/utils/with-db.util.js.map +1 -0
  49. package/dist/internal/validators/decorators.validator.js +3 -0
  50. package/dist/internal/validators/decorators.validator.js.map +1 -0
  51. package/dist/internal/validators/schemas/ordering.schema.js +1 -0
  52. package/dist/internal/validators/schemas/ordering.schema.js.map +1 -0
  53. package/dist/internal/validators/schemas/pagination.schema.js +1 -0
  54. package/dist/internal/validators/schemas/pagination.schema.js.map +1 -0
  55. package/dist/internal/validators/schemas/where.schema.js +1 -0
  56. package/dist/internal/validators/schemas/where.schema.js.map +1 -0
  57. package/dist/internal/validators/vsrepo.validator.d.ts +1 -1
  58. package/dist/internal/validators/vsrepo.validator.js +2 -0
  59. package/dist/internal/validators/vsrepo.validator.js.map +1 -0
  60. package/dist/types/adapter/adapter-method-options.type.js +1 -0
  61. package/dist/types/adapter/adapter-method-options.type.js.map +1 -0
  62. package/dist/types/adapter/adapter-query-options.type.js +1 -0
  63. package/dist/types/adapter/adapter-query-options.type.js.map +1 -0
  64. package/dist/types/decorators/dynamic-method-options.type.js +1 -0
  65. package/dist/types/decorators/dynamic-method-options.type.js.map +1 -0
  66. package/dist/types/decorators/query-method-options.type.d.ts +35 -1
  67. package/dist/types/decorators/query-method-options.type.js +1 -0
  68. package/dist/types/decorators/query-method-options.type.js.map +1 -0
  69. package/dist/types/dynamic-methods/dynamic-method-customization.type.js +1 -0
  70. package/dist/types/dynamic-methods/dynamic-method-customization.type.js.map +1 -0
  71. package/dist/types/dynamic-methods/dynamic-method-info.type.js +1 -0
  72. package/dist/types/dynamic-methods/dynamic-method-info.type.js.map +1 -0
  73. package/dist/types/dynamic-methods/dynamic-method-where-ops.type.js +1 -0
  74. package/dist/types/dynamic-methods/dynamic-method-where-ops.type.js.map +1 -0
  75. package/dist/types/utils/count-result.type.js +1 -0
  76. package/dist/types/utils/count-result.type.js.map +1 -0
  77. package/dist/types/utils/decimal-like.type.js +1 -0
  78. package/dist/types/utils/decimal-like.type.js.map +1 -0
  79. package/dist/types/utils/deep-partial.type.js +1 -0
  80. package/dist/types/utils/deep-partial.type.js.map +1 -0
  81. package/dist/types/utils/keys-of-type.type.js +1 -0
  82. package/dist/types/utils/keys-of-type.type.js.map +1 -0
  83. package/dist/types/utils/methods-options.type.js +1 -0
  84. package/dist/types/utils/methods-options.type.js.map +1 -0
  85. package/dist/types/utils/numeric-keys.type.js +1 -0
  86. package/dist/types/utils/numeric-keys.type.js.map +1 -0
  87. package/dist/types/utils/numeric-like.type.js +1 -0
  88. package/dist/types/utils/numeric-like.type.js.map +1 -0
  89. package/dist/types/utils/ordering.type.js +1 -0
  90. package/dist/types/utils/ordering.type.js.map +1 -0
  91. package/dist/types/utils/pagination.type.js +1 -0
  92. package/dist/types/utils/pagination.type.js.map +1 -0
  93. package/dist/types/utils/perform-data.type.js +1 -0
  94. package/dist/types/utils/perform-data.type.js.map +1 -0
  95. package/dist/types/utils/primitive.type.js +1 -0
  96. package/dist/types/utils/primitive.type.js.map +1 -0
  97. package/dist/types/utils/query-args.type.d.ts +30 -0
  98. package/dist/types/utils/query-args.type.js +3 -0
  99. package/dist/types/utils/query-args.type.js.map +1 -0
  100. package/dist/types/utils/query-method-arg.type.d.ts +3 -2
  101. package/dist/types/utils/query-method-arg.type.js +1 -0
  102. package/dist/types/utils/query-method-arg.type.js.map +1 -0
  103. package/dist/types/utils/restrict-method-options.type.js +1 -0
  104. package/dist/types/utils/restrict-method-options.type.js.map +1 -0
  105. package/dist/types/utils/see-mode.type.js +1 -0
  106. package/dist/types/utils/see-mode.type.js.map +1 -0
  107. package/dist/types/vsrepo/vsrepo-args.type.js +1 -0
  108. package/dist/types/vsrepo/vsrepo-args.type.js.map +1 -0
  109. package/dist/types/vsrepo/vsrepo-method.type.js +1 -0
  110. package/dist/types/vsrepo/vsrepo-method.type.js.map +1 -0
  111. package/dist/types/vsrepo/vsrepo-options.type.js +1 -0
  112. package/dist/types/vsrepo/vsrepo-options.type.js.map +1 -0
  113. package/dist/types/vsrepo/vsrepo-orm-types.type.js +1 -0
  114. package/dist/types/vsrepo/vsrepo-orm-types.type.js.map +1 -0
  115. package/dist/types/vsrepo/vsrepo-pretty-where.type.js +1 -0
  116. package/dist/types/vsrepo/vsrepo-pretty-where.type.js.map +1 -0
  117. package/dist/types/vsrepo/vsrepo-query-options.type.d.ts +14 -0
  118. package/dist/types/vsrepo/vsrepo-query-options.type.js +1 -0
  119. package/dist/types/vsrepo/vsrepo-query-options.type.js.map +1 -0
  120. package/dist/types/vsrepo/vsrepo-query.type.js +1 -0
  121. package/dist/types/vsrepo/vsrepo-query.type.js.map +1 -0
  122. package/dist/types/vsrepo/vsrepo-relations.type.js +1 -0
  123. package/dist/types/vsrepo/vsrepo-relations.type.js.map +1 -0
  124. package/dist/types/vsrepo/vsrepo-resolve-args-data.type.js +1 -0
  125. package/dist/types/vsrepo/vsrepo-resolve-args-data.type.js.map +1 -0
  126. package/dist/types/vsrepo/vsrepo-select.type.js +1 -0
  127. package/dist/types/vsrepo/vsrepo-select.type.js.map +1 -0
  128. package/dist/types/vsrepo/vsrepo-transaction-options.type.js +1 -0
  129. package/dist/types/vsrepo/vsrepo-transaction-options.type.js.map +1 -0
  130. package/dist/types/vsrepo/vsrepo-ugly-where.type.js +1 -0
  131. package/dist/types/vsrepo/vsrepo-ugly-where.type.js.map +1 -0
  132. package/dist/types/vsrepo/vsrepo-where.type.js +1 -0
  133. package/dist/types/vsrepo/vsrepo-where.type.js.map +1 -0
  134. package/package.json +1 -1
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pagination.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.type.js","sourceRoot":"","sources":["../../../src/types/utils/pagination.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=perform-data.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perform-data.type.js","sourceRoot":"","sources":["../../../src/types/utils/perform-data.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=primitive.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.type.js","sourceRoot":"","sources":["../../../src/types/utils/primitive.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { DbArg } from "../../internal/utils/db-arg.util";
2
+ import { VSRepoOrmTypes } from "../vsrepo/vsrepo-orm-types.type";
3
+ /**
4
+ * Types the parameter list of a `@QueryMethod` declared with
5
+ * `{ spreadArgs: true }`: the SQL placeholder values (`T`), in order,
6
+ * followed by an optional trailing {@link DbArg} — built via {@link withDb} —
7
+ * to run the query against a specific client or transaction instead of the
8
+ * repository's default one.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * class UserRepository extends VSRepository<User, string> {
13
+ * @QueryMethod('SELECT * FROM "user" WHERE email = $1 AND "userType" = $2', {
14
+ * spreadArgs: true,
15
+ * })
16
+ * declare findByEmailAndType: (
17
+ * ...args: QueryArgs<[email: string, userType: string]>
18
+ * ) => Promise<User[]>;
19
+ * }
20
+ *
21
+ * await userRepository.findByEmailAndType("joao@email.com", "admin");
22
+ * await userRepository.findByEmailAndType("joao@email.com", "admin", withDb(tx));
23
+ * ```
24
+ *
25
+ * @publicApi
26
+ */
27
+ export type QueryArgs<T extends Array<any> = [], O extends VSRepoOrmTypes = VSRepoOrmTypes> = [
28
+ ...T,
29
+ db?: DbArg<O>
30
+ ];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=query-args.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-args.type.js","sourceRoot":"","sources":["../../../src/types/utils/query-args.type.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import { VSRepoOrmTypes } from "../vsrepo/vsrepo-orm-types.type";
1
2
  /**
2
3
  * Single argument accepted by a method declared with `@QueryMethod`.
3
4
  *
@@ -19,9 +20,9 @@
19
20
  *
20
21
  * @publicApi
21
22
  */
22
- export type QueryMethodArg<T extends Array<any>> = {
23
+ export type QueryMethodArg<T extends Array<any> = [], O extends VSRepoOrmTypes = VSRepoOrmTypes> = {
23
24
  /** Positional parameters injected into the SQL placeholders (`$1`, `$2`, ...). */
24
25
  args?: T;
25
26
  /** Database client or transaction to run this query in, instead of the repository's default client. */
26
- db?: any;
27
+ db?: O["dbClient"] | O["dbTransaction"];
27
28
  };
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=query-method-arg.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-method-arg.type.js","sourceRoot":"","sources":["../../../src/types/utils/query-method-arg.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=restrict-method-options.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restrict-method-options.type.js","sourceRoot":"","sources":["../../../src/types/utils/restrict-method-options.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=see-mode.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"see-mode.type.js","sourceRoot":"","sources":["../../../src/types/utils/see-mode.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-args.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-args.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-args.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-method.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-method.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-method.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-options.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-options.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-options.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-orm-types.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-orm-types.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-orm-types.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-pretty-where.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-pretty-where.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-pretty-where.type.ts"],"names":[],"mappings":""}
@@ -14,4 +14,18 @@ export type VSRepoQueryOptions<T extends VSRepoOrmTypes = VSRepoOrmTypes> = {
14
14
  * @default false
15
15
  */
16
16
  modifying?: boolean;
17
+ /**
18
+ * When `true`, the array returned by the underlying query is collapsed
19
+ * into its first element (`null` if the array is empty) before
20
+ * being resolved to the caller. Has no effect when the query resolves
21
+ * to something other than an array (e.g. a `modifying` query's
22
+ * affected-row count).
23
+ *
24
+ * Useful for queries you already know return at most one row (e.g. a
25
+ * `SELECT ... LIMIT 1` or a lookup by a unique column), where declaring
26
+ * the return type as an array would be misleading.
27
+ *
28
+ * @default false
29
+ */
30
+ singleResult?: boolean;
17
31
  };
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-query-options.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-query-options.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-query-options.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-query.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-query.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-query.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-relations.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-relations.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-relations.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-resolve-args-data.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-resolve-args-data.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-resolve-args-data.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-select.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-select.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-select.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-transaction-options.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-transaction-options.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-transaction-options.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-ugly-where.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-ugly-where.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-ugly-where.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vsrepo-where.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsrepo-where.type.js","sourceRoot":"","sources":["../../../src/types/vsrepo/vsrepo-where.type.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vsrepo",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "ORM-agnostic repository pattern library with full TypeScript support and automatic type inference.",
5
5
  "homepage": "https://github.com/jaobrabo123/VSRepository#readme",
6
6
  "repository": {