vsrepo 2.6.0 → 2.7.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 (41) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +3 -2
  3. package/README.pt-BR.md +3 -2
  4. package/dist/VSRepoAdapter.d.ts +12 -0
  5. package/dist/VSRepoAdapter.js.map +1 -1
  6. package/dist/VSRepository.d.ts +50 -4
  7. package/dist/VSRepository.js +57 -28
  8. package/dist/VSRepository.js.map +1 -1
  9. package/dist/decorators/query-method.decorator.d.ts +3 -24
  10. package/dist/decorators/query-method.decorator.js +4 -27
  11. package/dist/decorators/query-method.decorator.js.map +1 -1
  12. package/dist/index.d.ts +4 -0
  13. package/dist/index.js +5 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/internal/resolvers/dynamic-methods.resolver.d.ts +6 -5
  16. package/dist/internal/resolvers/dynamic-methods.resolver.js +112 -98
  17. package/dist/internal/resolvers/dynamic-methods.resolver.js.map +1 -1
  18. package/dist/internal/utils/vs-placeholder-parser.util.d.ts +2 -0
  19. package/dist/internal/utils/vs-placeholder-parser.util.js +62 -0
  20. package/dist/internal/utils/vs-placeholder-parser.util.js.map +1 -0
  21. package/dist/internal/utils/vs-query-builder.util.d.ts +5 -1
  22. package/dist/internal/utils/vs-query-builder.util.js +1 -13
  23. package/dist/internal/utils/vs-query-builder.util.js.map +1 -1
  24. package/dist/internal/utils/vs-raw-query-builder.util.d.ts +238 -0
  25. package/dist/internal/utils/vs-raw-query-builder.util.js +433 -0
  26. package/dist/internal/utils/vs-raw-query-builder.util.js.map +1 -0
  27. package/dist/internal/utils/vs-sql.util.d.ts +100 -0
  28. package/dist/internal/utils/vs-sql.util.js +151 -0
  29. package/dist/internal/utils/vs-sql.util.js.map +1 -0
  30. package/dist/internal/validators/decorators.validator.js +1 -1
  31. package/dist/internal/validators/decorators.validator.js.map +1 -1
  32. package/dist/internal/validators/vsrepo.validator.js +1 -0
  33. package/dist/internal/validators/vsrepo.validator.js.map +1 -1
  34. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.d.ts +8 -0
  35. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js +3 -0
  36. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js.map +1 -0
  37. package/dist/types/vsrepo/vs-raw-query-builder-target.type.d.ts +7 -0
  38. package/dist/types/vsrepo/vs-raw-query-builder-target.type.js +3 -0
  39. package/dist/types/vsrepo/vs-raw-query-builder-target.type.js.map +1 -0
  40. package/dist/types/vsrepo/vsrepo-options.type.d.ts +18 -0
  41. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,30 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  ---
8
8
 
9
+ ## [2.7.0] - 2026-09-26
10
+
11
+ ### Added
12
+ - **`createRawQueryBuilder(db?)`** — new method on every `VSRepository` that returns a fluent, SQL-agnostic `VSRawQueryBuilder` for hand-written `SELECT` queries too SQL-specific (window functions, vendor-specific syntax, ad-hoc subqueries, CTEs, ...) for `createQueryBuilder()`'s `where`/`relations` model. Chain `select`, `from`, `innerJoin`/`leftJoin`/`rightJoin`/`fullJoin`, `where`/`andWhere`/`orWhere`, `groupBy`, `having`/`andHaving`/`orHaving`, `orderBy`, `limit` and `offset` — each accepting either a raw, trusted string (an identifier, or a parameter-free condition for `on`/`where`/`having`, e.g. `.andWhere("deleted_at is null")`) or a `VSSql` fragment for anything parameterized. `from()`/joins also accept another `VSRawQueryBuilder`, or a subquery function (`sub => sub.select(...)...`) that receives a fresh builder sharing the same `db`/adapter/logger, compiled inline as a subquery; any subquery can also be spliced directly into a `VSSql` fragment via `toVSSql()` (e.g. inside a `WHERE ... IN (...)`). `with(name, query, columns?)`/`withRecursive(name, query, columns?)` add named CTEs (a single `WITH RECURSIVE` clause once any CTE is recursive) that the rest of the query can reference like real tables. Run it with `toVSSql()` (the compiled `VSSql` fragment), `toSql()` (the plain SQL string, rendered with the adapter's placeholder syntax) or `execute<T>()` (runs it through the adapter and returns the result); all three require the adapter to implement `getPlaceholder()`. The builder respects `clone()` and lazy `setDb()`, same as `createQueryBuilder()`, and is exported as `VSRawQueryBuilder`/`VSRawQueryBuilderTarget`/`VSRawQueryBuilderCteQuery`. Every raw string accepted as an identifier, condition, alias or CTE name/column is validated as non-empty/non-blank as soon as it's passed, throwing a `VSRepoError` instead of silently compiling into broken SQL
13
+ - **`VSSql`** — ORM-agnostic, composable SQL fragments for raw queries: build one with `VSSql.sql` (a tagged template where every interpolated value becomes a bound parameter), `VSSql.raw` (inserts trusted, unparameterized text — for identifiers only, never user input), `VSSql.join` (builds a parameterized list, e.g. an `IN (...)`) and `VSSql.empty` (contributes no text/params, for conditional fragments). Fragments nest freely and the placeholder numbering stays correct; passing one to `VSRepository.query()` compiles it through `adapter.getPlaceholder()` — so `VSSql` works with every database and is safe from SQL injection by construction
14
+ - **`vsPlaceholders`** constructor option — when `true`, raw SQL strings passed to `query()` and `@QueryMethod` use VSRepository's own agnostic, 1-based, positional placeholders (`?1`, `?2`, ...) instead of the adapter's native syntax; the same index can repeat (`?1 ... ?1`) to reuse an argument. Requires the adapter to implement `getPlaceholder()` — enabling it without one throws a `VSRepoError`
15
+ - **`VSRepoAdapter.getPlaceholder?`** — new optional adapter method declaring the placeholder syntax for the Nth (0-based) bound parameter (e.g. `` `$${index + 1}` `` for PostgreSQL, `"?"` for SQLite/MySQL). Implementing it is what enables `VSSql` fragments and `vsPlaceholders`
16
+ - **Query method logs** — `query()` and `@QueryMethod` now log the compiled query and its args at `DEBUG` (the `db` is never logged) and time the execution (`Took Xms ...`, promoted to `WARN` above `logSlowThresholdMs`), like the rest of the library
17
+
18
+ ### Documentation
19
+ - New [Raw query builder](./docs/raw-query-builder.md) guide, covering `createRawQueryBuilder()`, building the query, subqueries (builder or function), CTEs with `with()`/`withRecursive()`, running it (`toVSSql`/`toSql`/`execute`), transactions/`setDb()`, cloning, validation and logs — added to both READMEs' documentation index, with a cross-link from the [Query builder](./docs/query-builder.md) guide
20
+
21
+ ## [2.7.0] - 2026-09-26 (Português)
22
+
23
+ ### Adicionado
24
+ - **`createRawQueryBuilder(db?)`** — novo método em todo `VSRepository` que retorna um `VSRawQueryBuilder` fluente e agnóstico de SQL para queries `SELECT` escritas à mão, específicas demais (funções de janela, sintaxe específica do banco, subqueries ad-hoc, CTEs, ...) para o modelo `where`/`relations` do `createQueryBuilder()`. Encadeie `select`, `from`, `innerJoin`/`leftJoin`/`rightJoin`/`fullJoin`, `where`/`andWhere`/`orWhere`, `groupBy`, `having`/`andHaving`/`orHaving`, `orderBy`, `limit` e `offset` — cada um aceitando uma string crua e confiável (um identificador, ou uma condição sem parâmetros para `on`/`where`/`having`, ex.: `.andWhere("deleted_at is null")`) ou um fragmento `VSSql` para qualquer coisa parametrizada. `from()`/joins também aceitam outro `VSRawQueryBuilder`, ou uma função de subquery (`sub => sub.select(...)...`) que recebe um builder novo compartilhando o mesmo `db`/adapter/logger, compilada inline como subquery; qualquer subquery também pode ser inserida diretamente num fragmento `VSSql` via `toVSSql()` (ex.: dentro de um `WHERE ... IN (...)`). `with(name, query, columns?)`/`withRecursive(name, query, columns?)` adicionam CTEs nomeadas (uma única cláusula `WITH RECURSIVE` quando qualquer CTE é recursiva) que o resto da query pode referenciar como tabelas normais. Execute com `toVSSql()` (o fragmento `VSSql` compilado), `toSql()` (a string SQL simples, renderizada com a sintaxe de placeholder do adapter) ou `execute<T>()` (executa através do adapter e retorna o resultado); os três exigem que o adapter implemente `getPlaceholder()`. O builder respeita `clone()` e `setDb()` lazy, igual ao `createQueryBuilder()`, e é exportado como `VSRawQueryBuilder`/`VSRawQueryBuilderTarget`/`VSRawQueryBuilderCteQuery`. Toda string crua aceita como identificador, condição, alias ou nome/coluna de CTE é validada como não-vazia/não-em-branco assim que é passada, lançando um `VSRepoError` em vez de compilar silenciosamente em SQL quebrado
25
+ - **`VSSql`** — fragmentos SQL agnósticos de ORM e componíveis para queries raw: monte um com `VSSql.sql` (um template literal com tag em que todo valor interpolado vira um parâmetro ligado), `VSSql.raw` (insere texto confiável e não parametrizado — só para identificadores, nunca input do usuário), `VSSql.join` (monta uma lista parametrizada, ex.: um `IN (...)`) e `VSSql.empty` (não contribui com texto nem parâmetros, para fragmentos condicionais). Fragmentos aninham livremente e a numeração dos placeholders continua correta; passar um para o `VSRepository.query()` compila via `adapter.getPlaceholder()` — então `VSSql` funciona com qualquer banco e é seguro contra SQL injection por construção
26
+ - **Option `vsPlaceholders`** no construtor — quando `true`, strings SQL cruas passadas para `query()` e `@QueryMethod` usam os placeholders próprios, agnósticos, posicionais e de base 1 do VSRepository (`?1`, `?2`, ...) em vez da sintaxe nativa do adapter; o mesmo índice pode se repetir (`?1 ... ?1`) para reutilizar um argumento. Exige que o adapter implemente `getPlaceholder()` — ligar essa option sem ele lança um `VSRepoError`
27
+ - **`VSRepoAdapter.getPlaceholder?`** — novo método opcional no adapter que declara a sintaxe de placeholder para o N-ésimo (base 0) parâmetro ligado (ex.: `` `$${index + 1}` `` para o PostgreSQL, `"?"` para SQLite/MySQL). Implementá-lo é o que habilita os fragmentos `VSSql` e o `vsPlaceholders`
28
+ - **Logs dos métodos de query** — `query()` e `@QueryMethod` agora logam a query compilada e seus args em `DEBUG` (o `db` nunca é logado) e medem a execução (`Took Xms ...`, promovido para `WARN` acima do `logSlowThresholdMs`), como no resto da biblioteca
29
+
30
+ ### Documentação
31
+ - Novo guia [Raw query builder](./docs/raw-query-builder.pt-BR.md), cobrindo o `createRawQueryBuilder()`, a construção da query, subqueries (builder ou função), CTEs com `with()`/`withRecursive()`, execução (`toVSSql`/`toSql`/`execute`), transações/`setDb()`, clonagem, validação e logs — adicionado ao índice de documentação dos dois READMEs, com um cross-link a partir do guia [Query builder](./docs/query-builder.pt-BR.md)
32
+
9
33
  ## [2.6.0] - 2026-09-24
10
34
 
11
35
  ### Added
package/README.md CHANGED
@@ -20,7 +20,7 @@ VSRepository lets you create strongly-typed repositories with:
20
20
  - Automatic **base methods**: `get`, `getOrThrow`, `getList`, `save`, `saveList`, `remove`, `removeList`, `patch`, `merge`, `getAll`, `total`, `has`
21
21
  - **Native soft-delete**: `softRemove`, `softRemoveList`, `restore`, `restoreList`
22
22
  - **Dynamic methods** inferred from a `declare` field name via the `@DynamicMethod` decorator: `findOneByEmail`, `findByStatusPaginated`, `updateById`
23
- - **Raw SQL query methods** via the `@QueryMethod` decorator, bypassing the name-parsing engine entirely
23
+ - **Raw SQL query methods** via the `@QueryMethod` decorator (bypassing the name-parsing engine entirely), parameterized `VSSql` fragments for ad-hoc `query()` calls, and agnostic `?1`, `?2` placeholders with `vsPlaceholders`
24
24
  - Ad-hoc **`select`/`relations`** per call — no more pre-declared named projections
25
25
  - **Type safety** across 100% of operations
26
26
  - Native ORM **transactions**, shared across repositories
@@ -37,8 +37,9 @@ The sections below (adapter status, installation, basic usage) are the essential
37
37
  | [Base methods, configuration & soft-delete](./docs/base-methods.md) | Constructor options, the 12 automatic CRUD methods, native soft-delete, and the 8 atomic/aggregate methods (`increment`, `sum`, ...). |
38
38
  | [`select` and `relations`](./docs/select-and-relations.md) | Ad-hoc field selection and eager relation loading on any call, and `InferMethodReturn` to narrow the return type accordingly. |
39
39
  | [Dynamic methods](./docs/dynamic-methods.md) | `findByEmail`-style methods parsed from a `declare`d method name: prefixes, field filters, logical operators, relation filters, ordering/pagination/distinct. |
40
- | [Query methods (raw SQL)](./docs/query-methods.md) | Raw SQL methods via `@QueryMethod`, bypassing the dynamic-method name parser entirely. |
40
+ | [Query methods (raw SQL)](./docs/query-methods.md) | Raw SQL via `@QueryMethod`, parameterized `VSSql` fragments and the agnostic `?1`/`?2` placeholders (`vsPlaceholders`). |
41
41
  | [Query builder](./docs/query-builder.md) | The fluent `createQueryBuilder()` API for queries assembled at runtime, including pagination, soft-delete visibility and transactions. |
42
+ | [Raw query builder](./docs/raw-query-builder.md) | The fluent `createRawQueryBuilder()` API for hand-written `SELECT` queries too SQL-specific for the query builder — joins, subqueries, CTEs (`with`/`withRecursive`). |
42
43
  | [Transactions](./docs/transactions.md) | Running several repositories against the same native ORM transaction. |
43
44
  | [Utility types](./docs/utility-types.md) | The exported helper types (`InferMethodType`, `InferMethodReturn`, `KeysOfType`, ...) and where each one is used. |
44
45
  | [Writing your own adapter](./docs/writing-an-adapter.md) | How to implement `VSRepoAdapter` for a new ORM or database, method by method. |
package/README.pt-BR.md CHANGED
@@ -20,7 +20,7 @@ O VSRepository permite criar repositories fortemente tipados com:
20
20
  - **Métodos base** automáticos: `get`, `getOrThrow`, `getList`, `save`, `saveList`, `remove`, `removeList`, `patch`, `merge`, `getAll`, `total`, `has`
21
21
  - **Soft-delete nativo**: `softRemove`, `softRemoveList`, `restore`, `restoreList`
22
22
  - **Métodos dinâmicos** inferidos a partir do nome de um campo `declare` via o decorador `@DynamicMethod`: `findOneByEmail`, `findByStatusPaginated`, `updateById`
23
- - **Métodos de query SQL raw** através do decorador `@QueryMethod`, ignorando totalmente o engine de parsing por nome
23
+ - **Métodos de query SQL raw** através do decorador `@QueryMethod` (ignorando totalmente o engine de parsing por nome), fragmentos parametrizados `VSSql` para chamadas pontuais de `query()`, e placeholders agnósticos `?1`, `?2` com `vsPlaceholders`
24
24
  - **`select`/`relations`** ad-hoc em cada chamada — sem mais projeções nomeadas pré-declaradas
25
25
  - **Type safety** em 100% das operações
26
26
  - **Transações** nativas do ORM, compartilhadas entre repositories
@@ -37,8 +37,9 @@ As seções abaixo (status dos adapters, instalação, uso básico) são o essen
37
37
  | [Métodos base, configuração & soft-delete](./docs/base-methods.pt-BR.md) | Options do construtor, os 12 métodos CRUD automáticos, soft-delete nativo, e os 8 métodos atômicos/de agregação (`increment`, `sum`, ...). |
38
38
  | [`select` e `relations`](./docs/select-and-relations.pt-BR.md) | Seleção de campos e carregamento de relações ad-hoc em qualquer chamada, e o `InferMethodReturn` para estreitar o tipo de retorno de acordo. |
39
39
  | [Métodos dinâmicos](./docs/dynamic-methods.pt-BR.md) | Métodos no estilo `findByEmail`, resolvidos a partir de um nome de método `declare`d: prefixos, filtros de campo, operadores lógicos, filtros de relação, ordenação/paginação/distinct. |
40
- | [Query methods (SQL raw)](./docs/query-methods.pt-BR.md) | Métodos de SQL raw via `@QueryMethod`, ignorando totalmente o parser de nomes dos métodos dinâmicos. |
40
+ | [Query methods (SQL raw)](./docs/query-methods.pt-BR.md) | SQL raw via `@QueryMethod`, fragmentos parametrizados `VSSql` e os placeholders agnósticos `?1`/`?2` (`vsPlaceholders`). |
41
41
  | [Query builder](./docs/query-builder.pt-BR.md) | A API fluente `createQueryBuilder()` para queries montadas em tempo de execução, incluindo paginação, visibilidade de soft-delete e transações. |
42
+ | [Raw query builder](./docs/raw-query-builder.pt-BR.md) | A API fluente `createRawQueryBuilder()` para queries `SELECT` escritas à mão, específicas demais para o query builder — joins, subqueries, CTEs (`with`/`withRecursive`). |
42
43
  | [Transações](./docs/transactions.pt-BR.md) | Rodando vários repositories na mesma transação nativa do ORM. |
43
44
  | [Tipos utilitários](./docs/utility-types.pt-BR.md) | Os tipos utilitários exportados (`InferMethodType`, `InferMethodReturn`, `KeysOfType`, ...) e onde cada um é usado. |
44
45
  | [Escrevendo seu próprio adapter](./docs/writing-an-adapter.pt-BR.md) | Como implementar o `VSRepoAdapter` para um novo ORM ou banco, método a método. |
@@ -108,4 +108,16 @@ export declare abstract class VSRepoAdapter<T> {
108
108
  abstract max(field: NumericKeys<T>, where?: VSRepoWhere<T>, options?: AdapterMethodOptions<T>): Promise<number | null>;
109
109
  /** Optional method for the adapter itself to return the "pkName", instead of the user having to configure it manually in the VSRepository constructor. */
110
110
  getPkName?(): string;
111
+ /**
112
+ * Optional method for the adapter to declare the placeholder syntax its
113
+ * database/driver expects in a raw `query()` string, given the 0-based
114
+ * position of the parameter in the `args` array (e.g. Postgres would
115
+ * return `` `$${index + 1}` ``, SQLite/MySQL would ignore `index` and
116
+ * always return `"?"`).
117
+ *
118
+ * Implementing this is what lets `VSRepository.query()` accept a `VSSql`
119
+ * fragment (built with `VSSql.sql`/`raw`/`join`/`empty`) in addition to a
120
+ * plain string: without it, passing a `VSSql` fragment throws.
121
+ */
122
+ getPlaceholder?(index: number): string;
111
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VSRepoAdapter.js","sourceRoot":"","sources":["../src/VSRepoAdapter.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;GAWG;AACH,MAAsB,aAAa;CAgLlC;AAhLD,sCAgLC"}
1
+ {"version":3,"file":"VSRepoAdapter.js","sourceRoot":"","sources":["../src/VSRepoAdapter.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;GAWG;AACH,MAAsB,aAAa;CA6LlC;AA7LD,sCA6LC"}
@@ -12,6 +12,8 @@ import { VSRepoQueryOptions } from "./types/vsrepo/vsrepo-query-options.type";
12
12
  import { NumericKeys } from "./types/utils/numeric-keys.type";
13
13
  import { RestrictMethodOptions } from "./types/utils/restrict-method-options.type";
14
14
  import { VSQueryBuilder } from "./internal/utils/vs-query-builder.util";
15
+ import { VSRawQueryBuilder } from "./internal/utils/vs-raw-query-builder.util";
16
+ import { VSSql } from "./internal/utils/vs-sql.util";
15
17
  /**
16
18
  * ORM-agnostic base repository, exposing a complete set of ready-to-use CRUD
17
19
  * and soft-delete methods around an entity, plus any `@DynamicMethod`/`@QueryMethod`
@@ -51,6 +53,7 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
51
53
  private readonly validator;
52
54
  private readonly softRemoveKey?;
53
55
  private readonly defaultOrdering?;
56
+ private readonly vsPlaceholders;
54
57
  /**
55
58
  * Whether `resolveDynamicMethods` has already run once for this instance.
56
59
  * Used to warn on redundant re-resolutions (e.g. calling it manually
@@ -109,15 +112,45 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
109
112
  * ```
110
113
  */
111
114
  createQueryBuilder(db?: OrmTypes["dbClient"] | OrmTypes["dbTransaction"]): VSQueryBuilder<Entity, OrmTypes>;
115
+ /**
116
+ * Returns a fluent {@link VSRawQueryBuilder}, for hand-written `SELECT` queries whose SQL is
117
+ * too specific (window functions, vendor-specific syntax, ad-hoc subqueries, ...) for
118
+ * {@link VSRepository.createQueryBuilder}'s `where`/`relations` model.
119
+ *
120
+ * Goes through the same adapter as every other method, and requires the adapter to implement
121
+ * `getPlaceholder()` (see {@link VSSql}). Nothing runs until
122
+ * {@link VSRawQueryBuilder.execute} is called.
123
+ *
124
+ * @param db Client or transaction to run in. Defaults to the repository's own client — see
125
+ * `VSRawQueryBuilder.setDb()` to change it later, or run inside a `transaction()`.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const rows = await userRepository
130
+ * .createRawQueryBuilder()
131
+ * .select("id", "name")
132
+ * .from("user")
133
+ * .where(VSSql.sql`active = ${true}`)
134
+ * .orderBy("name")
135
+ * .limit(20)
136
+ * .execute<User[]>();
137
+ * ```
138
+ */
139
+ createRawQueryBuilder(db?: OrmTypes["dbClient"] | OrmTypes["dbTransaction"]): VSRawQueryBuilder<OrmTypes>;
112
140
  /**
113
141
  * Executes a raw query/statement directly against the underlying database.
114
142
  *
115
- * Use placeholders for values passed via `options.args` — never interpolate
116
- * values directly into `query`, to avoid SQL injection. The placeholder
117
- * syntax depends on the database/driver behind your adapter.
143
+ * Accepts either a plain SQL string — use placeholders for values passed
144
+ * via `options.args`, never interpolate values directly into `query`, to
145
+ * avoid SQL injection; the placeholder syntax depends on the
146
+ * database/driver behind your adapter — or a `VSSql` fragment built with
147
+ * `VSSql.sql`/`raw`/`join`/`empty`, which is parameterized automatically
148
+ * and compiled using your adapter's own placeholder syntax (requires the
149
+ * adapter to implement `getPlaceholder()`; see {@link VSSql}).
150
+ *
118
151
  * Set `options.modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
119
152
  * Set `options.singleResult: true` to collapse an array result into its
120
- * first element (`null` if empty) — see {@link VSRepoQueryOptions.singleResult}.
153
+ * first element (`null` if empty).
121
154
  *
122
155
  * @example
123
156
  * ```typescript
@@ -137,9 +170,22 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
137
170
  * 'SELECT * FROM "user" WHERE id = $1 LIMIT 1',
138
171
  * { args: ["123"], singleResult: true },
139
172
  * );
173
+ *
174
+ * // Same thing, built with a `VSSql` fragment instead of a hand-written
175
+ * // placeholder string — `email` is still sent as a parameter.
176
+ * const usersViaSql = await userRepository.query<User[]>(VSSql.sql`SELECT * FROM "user" WHERE email = ${"joao@email.com"}`);
177
+ *
178
+ * // With `vsPlaceholders: true` in the constructor options, plain
179
+ * // strings use VSRepository's own `?1`, `?2`, ... placeholders instead
180
+ * // of the adapter's native syntax — `?1` may repeat to reuse an arg.
181
+ * const usersViaVsPlaceholders = await userRepository.query<User[]>(
182
+ * 'SELECT * FROM "user" WHERE email = ?1',
183
+ * { args: ["joao@email.com"] },
184
+ * );
140
185
  * ```
141
186
  */
142
187
  query<T = any>(query: string, options?: VSRepoQueryOptions<OrmTypes>): Promise<T>;
188
+ query<T = any>(sql: VSSql, options?: Omit<VSRepoQueryOptions<OrmTypes>, "args">): Promise<T>;
143
189
  /** Fetches a record by its primary key (PK). */
144
190
  get(pk: PKType, options?: MethodOptions<Entity, OrmTypes>): Promise<Entity | null>;
145
191
  /** Fetches a record by PK and throws an Error if not found. */
@@ -9,6 +9,9 @@ const dynamic_methods_resolver_1 = require("./internal/resolvers/dynamic-methods
9
9
  const VSRepoError_1 = require("./errors/VSRepoError");
10
10
  const vsrepo_error_type_enum_1 = require("./internal/enums/vsrepo-error-type.enum");
11
11
  const vs_query_builder_util_1 = require("./internal/utils/vs-query-builder.util");
12
+ const vs_raw_query_builder_util_1 = require("./internal/utils/vs-raw-query-builder.util");
13
+ const vs_sql_util_1 = require("./internal/utils/vs-sql.util");
14
+ const vs_placeholder_parser_util_1 = require("./internal/utils/vs-placeholder-parser.util");
12
15
  /**
13
16
  * ORM-agnostic base repository, exposing a complete set of ready-to-use CRUD
14
17
  * and soft-delete methods around an entity, plus any `@DynamicMethod`/`@QueryMethod`
@@ -48,6 +51,7 @@ class VSRepository {
48
51
  validator;
49
52
  softRemoveKey;
50
53
  defaultOrdering;
54
+ vsPlaceholders;
51
55
  /**
52
56
  * Whether `resolveDynamicMethods` has already run once for this instance.
53
57
  * Used to warn on redundant re-resolutions (e.g. calling it manually
@@ -78,6 +82,10 @@ class VSRepository {
78
82
  }
79
83
  this.softRemoveKey = optionsValidated.softRemoveKey;
80
84
  this.defaultOrdering = optionsValidated.defaultOrdering;
85
+ this.vsPlaceholders = optionsValidated.vsPlaceholders ?? false;
86
+ if (this.vsPlaceholders && !this.adapter.getPlaceholder) {
87
+ throw new VSRepoError_1.VSRepoError("'vsPlaceholders' is enabled but your adapter did not implement the 'getPlaceholder' method; try updating your adapter to a newer version or disable 'vsPlaceholders'.", vsrepo_error_type_enum_1.VSRepoErrorType.VALIDATOR);
88
+ }
81
89
  this.mergeWheresResolver = new merge_wheres_resolver_1.MergeWheresResolver(this.softRemoveKey);
82
90
  this.logger = new vs_logger_util_1.VSLogger(optionsValidated.logLevel ?? vs_log_level_enum_1.VSLogLevel.WARN, this.constructor.name + "Logger", optionsValidated.logSlowThresholdMs);
83
91
  this.validator.setLogger(this.logger);
@@ -114,7 +122,7 @@ class VSRepository {
114
122
  `If you are calling it manually, make sure lazyDynamicMethods is set to true ` +
115
123
  `in the constructor options to skip the automatic resolution.`);
116
124
  }
117
- const dynamicMethodsResolver = new dynamic_methods_resolver_1.DynamicMethodsResolver(this.logger, this.adapter, this.mergeWheresResolver, this.validator, this.defaultOrdering);
125
+ const dynamicMethodsResolver = new dynamic_methods_resolver_1.DynamicMethodsResolver(this.logger, this.adapter, this.mergeWheresResolver, this.validator, this.defaultOrdering, this.vsPlaceholders);
118
126
  let dynamicMethodsCount = 0;
119
127
  let queryMethodsCount = 0;
120
128
  try {
@@ -198,41 +206,62 @@ class VSRepository {
198
206
  return new vs_query_builder_util_1.VSQueryBuilder(db ?? this.adapter.getDbClient(), this.adapter, this.mergeWheresResolver, this.logger);
199
207
  }
200
208
  /**
201
- * Executes a raw query/statement directly against the underlying database.
209
+ * Returns a fluent {@link VSRawQueryBuilder}, for hand-written `SELECT` queries whose SQL is
210
+ * too specific (window functions, vendor-specific syntax, ad-hoc subqueries, ...) for
211
+ * {@link VSRepository.createQueryBuilder}'s `where`/`relations` model.
212
+ *
213
+ * Goes through the same adapter as every other method, and requires the adapter to implement
214
+ * `getPlaceholder()` (see {@link VSSql}). Nothing runs until
215
+ * {@link VSRawQueryBuilder.execute} is called.
202
216
  *
203
- * Use placeholders for values passed via `options.args` — never interpolate
204
- * values directly into `query`, to avoid SQL injection. The placeholder
205
- * syntax depends on the database/driver behind your adapter.
206
- * Set `options.modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
207
- * Set `options.singleResult: true` to collapse an array result into its
208
- * first element (`null` if empty) — see {@link VSRepoQueryOptions.singleResult}.
217
+ * @param db Client or transaction to run in. Defaults to the repository's own client — see
218
+ * `VSRawQueryBuilder.setDb()` to change it later, or run inside a `transaction()`.
209
219
  *
210
220
  * @example
211
221
  * ```typescript
212
- * const users = await userRepository.query<User[]>(
213
- * 'SELECT * FROM "user" WHERE email = $1',
214
- * { args: ["joao@email.com"] },
215
- * );
216
- *
217
- * const affected = await userRepository.query<number>(
218
- * 'UPDATE "user" SET active = true WHERE id = $1',
219
- * { args: ["123"], modifying: true },
220
- * );
221
- *
222
- * // Only one row is ever expected here, so `singleResult` collapses the
223
- * // array into a single object (or `null` when no row matches).
224
- * const user = await userRepository.query<User | null>(
225
- * 'SELECT * FROM "user" WHERE id = $1 LIMIT 1',
226
- * { args: ["123"], singleResult: true },
227
- * );
222
+ * const rows = await userRepository
223
+ * .createRawQueryBuilder()
224
+ * .select("id", "name")
225
+ * .from("user")
226
+ * .where(VSSql.sql`active = ${true}`)
227
+ * .orderBy("name")
228
+ * .limit(20)
229
+ * .execute<User[]>();
228
230
  * ```
229
231
  */
230
- async query(query, options) {
231
- if (typeof query !== "string") {
232
- this.fail("'query' must be a valid string", vsrepo_error_type_enum_1.VSRepoErrorType.BASE);
232
+ createRawQueryBuilder(db) {
233
+ return new vs_raw_query_builder_util_1.VSRawQueryBuilder(db ?? this.adapter.getDbClient(), this.adapter, this.logger);
234
+ }
235
+ async query(queryOrSql, options) {
236
+ let query;
237
+ let args = options?.args;
238
+ const sqlFragment = queryOrSql instanceof vs_sql_util_1.VSSql
239
+ ? queryOrSql
240
+ : typeof queryOrSql === "string" && this.vsPlaceholders
241
+ ? vs_placeholder_parser_util_1.VSPlaceholdersParser.parse(queryOrSql, args ?? [])
242
+ : undefined;
243
+ if (sqlFragment) {
244
+ if (!this.adapter.getPlaceholder) {
245
+ this.fail("Your adapter did not implement the 'getPlaceholder' method, required to compile a 'VSSql' fragment or a 'vsPlaceholders' query; try updating your adapter to a newer version.", vsrepo_error_type_enum_1.VSRepoErrorType.VALIDATOR);
246
+ }
247
+ const compiled = sqlFragment.compile(index => this.adapter.getPlaceholder(index));
248
+ query = compiled.text;
249
+ args = compiled.args;
250
+ }
251
+ else if (typeof queryOrSql === "string") {
252
+ query = queryOrSql;
253
+ }
254
+ else {
255
+ this.fail("'query' must be a valid string or a 'VSSql' fragment", vsrepo_error_type_enum_1.VSRepoErrorType.BASE);
233
256
  }
234
- const optionsValidated = this.validator.validateQueryOptions(options);
257
+ const optionsValidated = this.validator.validateQueryOptions({ ...options, args });
235
258
  optionsValidated.db ??= this.getDbClient();
259
+ this.logger.logDebug(`${this.constructor.name} query:`, {
260
+ query,
261
+ args: optionsValidated.args ?? [],
262
+ modifying: optionsValidated.modifying ?? false,
263
+ singleResult: optionsValidated.singleResult ?? false,
264
+ });
236
265
  const start = this.logger.startPerformLog("run query");
237
266
  try {
238
267
  const result = await this.adapter.query(query, {
@@ -1 +1 @@
1
- {"version":3,"file":"VSRepository.js","sourceRoot":"","sources":["../src/VSRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VSRepository.js","sourceRoot":"","sources":["../src/VSRepository.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,12 @@ import type { QueryMethodOptions } from "../types/decorators/query-method-option
9
9
  * `spreadArgs: true`, via separate positional arguments instead.
10
10
  *
11
11
  * The placeholder syntax depends on the database/driver behind your adapter. Check your adapter's
12
- * documentation for the exact syntax before writing queries.
12
+ * documentation for the exact syntax before writing queries — or set `vsPlaceholders: true` in the
13
+ * `VSRepository` constructor options to use `?1`, `?2`, ... instead, regardless of adapter.
13
14
  *
14
15
  * @param value Raw SQL statement to execute. Use placeholders for the values
15
16
  * that will be passed via `args` — never interpolate values directly into `value`.
16
- * @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements,
17
- * `singleResult: true` to collapse an array result into its first element, and
18
- * `spreadArgs: true` to receive placeholder values as separate arguments instead of a
19
- * single `QueryMethodArg` object — see {@link QueryMethodOptions.singleResult} and
20
- * {@link QueryMethodOptions.spreadArgs}.
17
+ * @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
21
18
  *
22
19
  * @example
23
20
  * ```typescript
@@ -27,25 +24,7 @@ import type { QueryMethodOptions } from "../types/decorators/query-method-option
27
24
  *
28
25
  * @QueryMethod('UPDATE "user" SET active = true WHERE id = $1', { modifying: true })
29
26
  * declare activateUser: (arg: QueryMethodArg<[id: string]>) => Promise<number>;
30
- *
31
- * // Only one row is ever expected here, so `singleResult` collapses the
32
- * // array into a single object (or `null` when no row matches).
33
- * @QueryMethod('SELECT * FROM "user" WHERE id = $1 LIMIT 1', { singleResult: true })
34
- * declare findByIdRaw: (arg: QueryMethodArg<[id: string]>) => Promise<User | null>;
35
- *
36
- * // `spreadArgs: true` takes placeholder values as separate arguments,
37
- * // JpaRepository style, instead of a single `{ args: [...] }` object.
38
- * // An optional trailing `withDb(tx)` runs the query in a transaction.
39
- * @QueryMethod('SELECT * FROM "user" WHERE email = $1 AND "userType" = $2', {
40
- * spreadArgs: true,
41
- * })
42
- * declare findByEmailAndType: (
43
- * ...args: QueryArgs<[email: string, userType: string]>
44
- * ) => Promise<User[]>;
45
27
  * }
46
- *
47
- * await userRepository.findByEmailAndType("joao@email.com", "admin");
48
- * await userRepository.findByEmailAndType("joao@email.com", "admin", withDb(tx));
49
28
  * ```
50
29
  *
51
30
  * @publicApi
@@ -15,15 +15,12 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
15
15
  * `spreadArgs: true`, via separate positional arguments instead.
16
16
  *
17
17
  * The placeholder syntax depends on the database/driver behind your adapter. Check your adapter's
18
- * documentation for the exact syntax before writing queries.
18
+ * documentation for the exact syntax before writing queries — or set `vsPlaceholders: true` in the
19
+ * `VSRepository` constructor options to use `?1`, `?2`, ... instead, regardless of adapter.
19
20
  *
20
21
  * @param value Raw SQL statement to execute. Use placeholders for the values
21
22
  * that will be passed via `args` — never interpolate values directly into `value`.
22
- * @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements,
23
- * `singleResult: true` to collapse an array result into its first element, and
24
- * `spreadArgs: true` to receive placeholder values as separate arguments instead of a
25
- * single `QueryMethodArg` object — see {@link QueryMethodOptions.singleResult} and
26
- * {@link QueryMethodOptions.spreadArgs}.
23
+ * @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
27
24
  *
28
25
  * @example
29
26
  * ```typescript
@@ -33,25 +30,7 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
33
30
  *
34
31
  * @QueryMethod('UPDATE "user" SET active = true WHERE id = $1', { modifying: true })
35
32
  * declare activateUser: (arg: QueryMethodArg<[id: string]>) => Promise<number>;
36
- *
37
- * // Only one row is ever expected here, so `singleResult` collapses the
38
- * // array into a single object (or `null` when no row matches).
39
- * @QueryMethod('SELECT * FROM "user" WHERE id = $1 LIMIT 1', { singleResult: true })
40
- * declare findByIdRaw: (arg: QueryMethodArg<[id: string]>) => Promise<User | null>;
41
- *
42
- * // `spreadArgs: true` takes placeholder values as separate arguments,
43
- * // JpaRepository style, instead of a single `{ args: [...] }` object.
44
- * // An optional trailing `withDb(tx)` runs the query in a transaction.
45
- * @QueryMethod('SELECT * FROM "user" WHERE email = $1 AND "userType" = $2', {
46
- * spreadArgs: true,
47
- * })
48
- * declare findByEmailAndType: (
49
- * ...args: QueryArgs<[email: string, userType: string]>
50
- * ) => Promise<User[]>;
51
33
  * }
52
- *
53
- * await userRepository.findByEmailAndType("joao@email.com", "admin");
54
- * await userRepository.findByEmailAndType("joao@email.com", "admin", withDb(tx));
55
34
  * ```
56
35
  *
57
36
  * @publicApi
@@ -60,9 +39,7 @@ function QueryMethod(value, options) {
60
39
  if (typeof value !== "string") {
61
40
  throw new VSRepoError_1.VSRepoError(`'value' must be a valid string`, vsrepo_error_type_enum_1.VSRepoErrorType.DECORATOR);
62
41
  }
63
- const validatedConfig = options
64
- ? decorators_validator_1.DecoratorsValidator.validateQueryMethodOptions(options)
65
- : { modifying: false };
42
+ const validatedConfig = decorators_validator_1.DecoratorsValidator.validateQueryMethodOptions(options);
66
43
  return (target, propertyKey) => {
67
44
  const methods = Reflect.getMetadata(query_methods_key_constant_1.QUERY_METHODS_KEY, target) ?? [];
68
45
  methods.push({ ...validatedConfig, value, propertyKey });
@@ -1 +1 @@
1
- {"version":3,"file":"query-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/query-method.decorator.ts"],"names":[],"mappings":";;AA0DA,kCAgBC;AA1ED,uDAAoD;AACpD,iGAAqF;AACrF,qFAA2E;AAC3E,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,OAA4B;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAW,CAAC,gCAAgC,EAAE,wCAAe,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,eAAe,GAAuB,OAAO;QAC/C,CAAC,CAAC,0CAAmB,CAAC,0BAA0B,CAAC,OAAO,CAAC;QACzD,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAE3B,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,OAAO,GAAkB,OAAO,CAAC,WAAW,CAAC,8CAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEzD,OAAO,CAAC,cAAc,CAAC,8CAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"query-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/query-method.decorator.ts"],"names":[],"mappings":";;AAqCA,kCAcC;AAnDD,uDAAoD;AACpD,iGAAqF;AACrF,qFAA2E;AAC3E,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,OAA4B;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAW,CAAC,gCAAgC,EAAE,wCAAe,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,eAAe,GAAuB,0CAAmB,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpG,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,OAAO,GAAkB,OAAO,CAAC,WAAW,CAAC,8CAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEzD,OAAO,CAAC,cAAc,CAAC,8CAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACN,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export { VSRepoError } from "./errors/VSRepoError.js";
5
5
  export { VSRepoAdapterError } from "./errors/VSRepoAdapterError.js";
6
6
  export { DbArg } from "./internal/utils/db-arg.util.js";
7
7
  export { VSQueryBuilder } from "./internal/utils/vs-query-builder.util.js";
8
+ export { VSRawQueryBuilder } from "./internal/utils/vs-raw-query-builder.util.js";
9
+ export { VSSql } from "./internal/utils/vs-sql.util.js";
8
10
  export { DynamicMethod } from "./decorators/dynamic-method.decorator.js";
9
11
  export { QueryMethod } from "./decorators/query-method.decorator.js";
10
12
  export { VSRepoErrorType } from "./internal/enums/vsrepo-error-type.enum.js";
@@ -41,4 +43,6 @@ export type { NumericKeys } from "./types/utils/numeric-keys.type.js";
41
43
  export type { NumericLike } from "./types/utils/numeric-like.type.js";
42
44
  export type { RestrictMethodOptions } from "./types/utils/restrict-method-options.type.js";
43
45
  export type { QueryArgs } from "./types/utils/query-args.type.js";
46
+ export type { VSRawQueryBuilderTarget } from "./types/vsrepo/vs-raw-query-builder-target.type.js";
47
+ export type { VSRawQueryBuilderCteQuery } from "./types/vsrepo/vs-raw-query-builder-cte-query.type.js";
44
48
  export { VSLogger } from "./internal/utils/vs-logger.util.js";
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VSLogger = exports.withDb = exports.AdapterErrorCode = exports.TransactionIsolationLevel = exports.VSLogLevel = exports.VSRepoErrorType = exports.QueryMethod = exports.DynamicMethod = exports.VSQueryBuilder = exports.DbArg = exports.VSRepoAdapterError = exports.VSRepoError = exports.VSRepoAdapter = exports.VSRepository = void 0;
3
+ exports.VSLogger = exports.withDb = exports.AdapterErrorCode = exports.TransactionIsolationLevel = exports.VSLogLevel = exports.VSRepoErrorType = exports.QueryMethod = exports.DynamicMethod = exports.VSSql = exports.VSRawQueryBuilder = exports.VSQueryBuilder = exports.DbArg = exports.VSRepoAdapterError = exports.VSRepoError = exports.VSRepoAdapter = exports.VSRepository = void 0;
4
4
  require("reflect-metadata");
5
5
  // Public classes / constructors
6
6
  var VSRepository_js_1 = require("./VSRepository.js");
@@ -15,6 +15,10 @@ var db_arg_util_js_1 = require("./internal/utils/db-arg.util.js");
15
15
  Object.defineProperty(exports, "DbArg", { enumerable: true, get: function () { return db_arg_util_js_1.DbArg; } });
16
16
  var vs_query_builder_util_js_1 = require("./internal/utils/vs-query-builder.util.js");
17
17
  Object.defineProperty(exports, "VSQueryBuilder", { enumerable: true, get: function () { return vs_query_builder_util_js_1.VSQueryBuilder; } });
18
+ var vs_raw_query_builder_util_js_1 = require("./internal/utils/vs-raw-query-builder.util.js");
19
+ Object.defineProperty(exports, "VSRawQueryBuilder", { enumerable: true, get: function () { return vs_raw_query_builder_util_js_1.VSRawQueryBuilder; } });
20
+ var vs_sql_util_js_1 = require("./internal/utils/vs-sql.util.js");
21
+ Object.defineProperty(exports, "VSSql", { enumerable: true, get: function () { return vs_sql_util_js_1.VSSql; } });
18
22
  // Decorators
19
23
  var dynamic_method_decorator_js_1 = require("./decorators/dynamic-method.decorator.js");
20
24
  Object.defineProperty(exports, "DynamicMethod", { enumerable: true, get: function () { return dynamic_method_decorator_js_1.DynamicMethod; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,gCAAgC;AAChC,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AACrB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,0DAAsD;AAA7C,6GAAA,WAAW,OAAA;AACpB,wEAAoE;AAA3D,2HAAA,kBAAkB,OAAA;AAC3B,kEAAwD;AAA/C,uGAAA,KAAK,OAAA;AACd,sFAA2E;AAAlE,0HAAA,cAAc,OAAA;AAEvB,aAAa;AACb,wFAAyE;AAAhE,4HAAA,aAAa,OAAA;AACtB,oFAAqE;AAA5D,wHAAA,WAAW,OAAA;AAEpB,eAAe;AACf,wFAA6E;AAApE,4HAAA,eAAe,OAAA;AACxB,8EAAmE;AAA1D,kHAAA,UAAU,OAAA;AACnB,4GAAiG;AAAxF,gJAAA,yBAAyB,OAAA;AAClC,0FAA+E;AAAtE,8HAAA,gBAAgB,OAAA;AAEzB,mBAAmB;AACnB,oEAA0D;AAAjD,yGAAA,MAAM,OAAA;AAsCf,oBAAoB;AACpB,wEAA8D;AAArD,6GAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,gCAAgC;AAChC,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AACrB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AACtB,0DAAsD;AAA7C,6GAAA,WAAW,OAAA;AACpB,wEAAoE;AAA3D,2HAAA,kBAAkB,OAAA;AAC3B,kEAAwD;AAA/C,uGAAA,KAAK,OAAA;AACd,sFAA2E;AAAlE,0HAAA,cAAc,OAAA;AACvB,8FAAkF;AAAzE,iIAAA,iBAAiB,OAAA;AAC1B,kEAAwD;AAA/C,uGAAA,KAAK,OAAA;AAEd,aAAa;AACb,wFAAyE;AAAhE,4HAAA,aAAa,OAAA;AACtB,oFAAqE;AAA5D,wHAAA,WAAW,OAAA;AAEpB,eAAe;AACf,wFAA6E;AAApE,4HAAA,eAAe,OAAA;AACxB,8EAAmE;AAA1D,kHAAA,UAAU,OAAA;AACnB,4GAAiG;AAAxF,gJAAA,yBAAyB,OAAA;AAClC,0FAA+E;AAAtE,8HAAA,gBAAgB,OAAA;AAEzB,mBAAmB;AACnB,oEAA0D;AAAjD,yGAAA,MAAM,OAAA;AAwCf,oBAAoB;AACpB,wEAA8D;AAArD,6GAAA,QAAQ,OAAA"}
@@ -10,11 +10,12 @@ export declare class DynamicMethodsResolver<T, K> {
10
10
  private readonly mergeWheresResolver;
11
11
  private readonly validator;
12
12
  private readonly defaultOrdering?;
13
- constructor(logger: VSLogger, adapter: VSRepoAdapter<T>, mergeWheresResolver: MergeWheresResolver<T>, validator: VSRepoValidator<T, K>, defaultOrdering?: Ordering<T> | undefined);
14
- private keywordTemplate;
15
- private fieldModifiers;
16
- private operators;
17
- private customizationModifiers;
13
+ private readonly vsPlaceholders;
14
+ constructor(logger: VSLogger, adapter: VSRepoAdapter<T>, mergeWheresResolver: MergeWheresResolver<T>, validator: VSRepoValidator<T, K>, defaultOrdering?: Ordering<T> | undefined, vsPlaceholders?: boolean);
15
+ private static keywordTemplate;
16
+ private static fieldModifiers;
17
+ private static operators;
18
+ private static customizationModifiers;
18
19
  private logAndThrowError;
19
20
  private validateIndexedArg;
20
21
  private resolveDynamicMethodInfo;