Skip to content

feat(parser-mongo): mongodb query parser dialect - #751

Merged
tada5hi merged 3 commits into
masterfrom
feat/701-parser-mongo
Jul 8, 2026
Merged

feat(parser-mongo): mongodb query parser dialect#751
tada5hi merged 3 commits into
masterfrom
feat/701-parser-mongo

Conversation

@tada5hi

@tada5hi tada5hi commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Implements issue #701: a new parser dialect accepting MongoDB-style filter documents, designed against the ucast reference implementation (mapped in .agents/references/ucast.md). Dialect semantics were settled by a design review across three lenses (mongo fidelity, IR consistency, consumer DX); decisions recorded in local plan 013.

Design decisions

  1. Two-class failure model (load-bearing): grammar errors — unknown/misplaced $-operators, malformed operator values, invalid compound arrays, mixed operator/plain keys, non-object input, nesting deeper than 32 levels — always throw typed FiltersParseError, independent of throwOnFailure. A $-prefixed key is never a field name, and a silently dropped $where or typo'd operator would mean an unfiltered result set. Field-key/allow-list failures stay schema-governed (drop by default, throw under throwOnFailure), exactly like the simple dialect.
  2. $not/$nor desugar via De Morgan operator negation ($eq$ne, $lt$gte, $in$nin, AND ↔ OR, $exists flips its value) — the expression dialect's not(...) precedent; the AST deliberately has no NOT compound. Non-negatable operators ($regex/$mod/$elemMatch) under negation throw OPERATOR_UNSUPPORTED.
  3. Full IR coverage via extensions: $startsWith/$notStartsWith/$endsWith/$notEndsWith/$contains/$notContains are accepted as documented rapiq extensions ($ + FilterFieldOperator value, aligned with the build layer's $-vocabulary from plan 012) — the only dialect covering the entire operator inventory, so a future mongo codec's encode is total under the subset law.
  4. Deviations from MongoDB (documented in the docs page): operator-free nested objects expand to dotted key paths ({ realm: { name: 'x' } }{ 'realm.name': 'x' }); bare arrays mean $in; algebraic negation does not replicate mongo's missing-field semantics; $elemMatch supports the nested-document form only (the IR has no element self-reference marker); $where/$size/$all/$type and the evaluation/geo/bitwise operators throw.
  5. $regex accepts bare RegExp, $regex: RegExp, and $regex: string + $options (key-order independent); the AST value is always a RegExp instance (the SQL visitor dereferences .source/.ignoreCase). Dangling $options and $options beside a RegExp-valued $regex throw.
  6. Values stay typed — no wire-string coercion, no ISO-string→Date guessing; Date instances pass through. Strict per-operator argument validation throws unconditionally.

Changes

@rapiq/parser-mongo (new)

  • MongoFiltersParser: document walk (implicit AND, explicit $and/$or/$nor always materialized, nested compounds preserved — no flattening), operator objects, $elemMatch with schema descend (related schema via schemaMapping, unbound fallback for schemaless array columns, relations gating respected), schema defaults on absent/{}/all-dropped input, recursion depth cap (crafted ~17KB nested-$and JSON previously escaped as an untyped RangeError).
  • MongoParser composing the filters parser with the simple-dialect parsers for fields/relations/pagination/sort (parser-expression template).
  • Typed input surface: parseTyped(input: MongoFiltersParserInput<RECORD>) — field keys via NestedKeys, per-path operator objects, $not typed to the negatable subset.
  • 113 unit specs (operator matrix incl. negation flips, compound algebra, $elemMatch scoping, schema policy/strict/defaults, grammar always-throws set, hostile inputs).

@rapiq/core

  • ParseError.operatorUnsupported(...) / ParseError.featureUnsupported(...) factories (existing ErrorCode members), mirroring AdapterError/BuildError.

@rapiq/sql

  • Fix: visitFilterElemMatch reset the adapter field prefix instead of composing it, so a nested elemMatch interior bound relative to the root (registering relation parts instead of items.parts). Newly client-reachable through this dialect; pre-existing for hand-built ASTs.

Docs

  • New integrations/mongo.md (operator table with extension markers, deviations callout, failure model, usage) + sidebar, integrations index, installation, root README package table, .agents/{structure,architecture}.md updated (the "$and/$or reserved for a future mongo parser dialect" note now points here), guide/build.md reserved-keys note linked.

Closes #701

Summary by CodeRabbit

  • New Features
    • Added a new @rapiq/parser-mongo package to parse MongoDB-style filters into the shared query AST (including $and/$or/$nor, common comparison/string operators, and $elemMatch).
  • Bug Fixes
    • Improved parse error coverage with dedicated “unsupported operator/feature” error helpers.
    • Fixed nested $elemMatch field-prefix handling in SQL generation to produce correct nested paths.
  • Documentation
    • Added Mongo Parser integration/guide pages and updated installation/navigation and architecture notes.
  • Tests
    • Added comprehensive unit test suites for Mongo parser behaviors and SQL elemMatch nesting.

tada5hi added 3 commits July 7, 2026 22:49
…factories

Mirrors the AdapterError/BuildError factories on ParseError so parser
dialects can throw typed operator/feature errors; first consumer is the
mongo dialect's always-throw grammar class.
visitFilterElemMatch reset the adapter's field prefix to the current
elemMatch field instead of appending to the active prefix, so a nested
elemMatch interior bound relative to the root (registering relation
"parts") instead of the enclosing element path ("items.parts").
MongoFiltersParser parses MongoDB-style filter documents ($and/$or
compounds, operator objects, $not/$nor via De Morgan negation,
$regex/$options, $elemMatch) into the Filters AST, schema-validated
through ResolutionScope; MongoParser composes it with the simple
dialect parsers for the other four parameters. Grammar errors always
throw typed FiltersParseError, field/allow-list failures follow the
schema failure policy. Includes the integrations/mongo docs page and
the ucast reference mapping.
Copilot AI review requested due to automatic review settings July 7, 2026 20:50
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f2216401-1dae-4823-9338-ce989e26df3f

📥 Commits

Reviewing files that changed from the base of the PR and between be7796d and 48c7dd4.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (38)
  • .agents/architecture.md
  • .agents/references/ucast.md
  • .agents/structure.md
  • README.md
  • packages/core/src/errors/parse.ts
  • packages/docs/.vitepress/config.mjs
  • packages/docs/getting-started/installation.md
  • packages/docs/guide/build.md
  • packages/docs/integrations/index.md
  • packages/docs/integrations/mongo.md
  • packages/parser-mongo/README.md
  • packages/parser-mongo/package.json
  • packages/parser-mongo/src/index.ts
  • packages/parser-mongo/src/module.ts
  • packages/parser-mongo/src/parameter/fields/index.ts
  • packages/parser-mongo/src/parameter/fields/module.ts
  • packages/parser-mongo/src/parameter/filters/constants.ts
  • packages/parser-mongo/src/parameter/filters/index.ts
  • packages/parser-mongo/src/parameter/filters/module.ts
  • packages/parser-mongo/src/parameter/filters/types.ts
  • packages/parser-mongo/src/parameter/index.ts
  • packages/parser-mongo/src/parameter/pagination/index.ts
  • packages/parser-mongo/src/parameter/pagination/module.ts
  • packages/parser-mongo/src/parameter/relations/index.ts
  • packages/parser-mongo/src/parameter/relations/module.ts
  • packages/parser-mongo/src/parameter/sorts/index.ts
  • packages/parser-mongo/src/parameter/sorts/module.ts
  • packages/parser-mongo/test/data/index.ts
  • packages/parser-mongo/test/data/schema.ts
  • packages/parser-mongo/test/data/type.ts
  • packages/parser-mongo/test/unit/parser/filters.spec.ts
  • packages/parser-mongo/test/unit/parser/parser.spec.ts
  • packages/parser-mongo/test/vitest.config.ts
  • packages/parser-mongo/tsconfig.build.json
  • packages/parser-mongo/tsconfig.json
  • packages/parser-mongo/tsdown.config.ts
  • packages/sql/src/visitor/filters.ts
  • packages/sql/test/unit/interpreters/elem-match.spec.ts

📝 Walkthrough

Walkthrough

This PR adds @rapiq/parser-mongo with MongoDB-style filter parsing, full-query parser wiring, tests, fixtures, and documentation. It also adds new ParseError helpers and adjusts SQL nested elemMatch prefix handling.

Changes

Mongo Parser Feature

Layer / File(s) Summary
Core error factories
packages/core/src/errors/parse.ts
Adds operatorUnsupported and featureUnsupported static factories to ParseError.
Mongo operator model
packages/parser-mongo/src/parameter/filters/constants.ts, packages/parser-mongo/src/parameter/filters/types.ts
Defines Mongo compound and field operator constants plus typed Mongo filter input shapes.
MongoFiltersParser implementation
packages/parser-mongo/src/parameter/filters/module.ts
Implements Mongo filter parsing, schema-aware resolution, operator validation, and AST building for compounds, $regex, $in, $not, and $elemMatch.
Parser wiring and barrels
packages/parser-mongo/src/module.ts, packages/parser-mongo/src/index.ts, packages/parser-mongo/src/parameter/*
Adds MongoParser, parameter sub-parsers, and barrel exports for the package surface.
Test fixtures
packages/parser-mongo/test/data/*
Adds shared schema registry and entity type fixtures for tests.
MongoFiltersParser tests
packages/parser-mongo/test/unit/parser/filters.spec.ts
Covers desugaring, operators, compounds, negation, schema policy, $elemMatch, and parseTyped.
MongoParser tests
packages/parser-mongo/test/unit/parser/parser.spec.ts
Covers full query parsing, relation gating, dotted paths, strict mode, and unsupported grammar errors.
Package config and README
packages/parser-mongo/package.json, packages/parser-mongo/tsconfig*.json, packages/parser-mongo/tsdown.config.ts, packages/parser-mongo/test/vitest.config.ts, packages/parser-mongo/README.md
Adds package metadata, build/test config, and package documentation.
Documentation updates
.agents/*, README.md, packages/docs/*
Updates architecture, structure, README, and docs pages to describe the Mongo parser package.
SQL nested elemMatch fix
packages/sql/src/visitor/filters.ts, packages/sql/test/unit/interpreters/elem-match.spec.ts
Preserves nested elemMatch field prefixes and adds a regression test.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant MongoParser
  participant MongoFiltersParser
  participant SchemaRegistry
  Caller->>MongoParser: parse(query, schema)
  MongoParser->>MongoFiltersParser: parse(filters, options)
  MongoFiltersParser->>SchemaRegistry: resolve field / relation scope
  SchemaRegistry-->>MongoFiltersParser: allowed / dropped / rejected
  MongoFiltersParser-->>MongoParser: Query AST
  MongoParser-->>Caller: parsed query
Loading

Possibly related PRs

  • tada5hi/rapiq#745: Introduces the base query parser orchestration that MongoParser extends and composes.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly names the new MongoDB parser dialect and matches the main change set.
Linked Issues check ✅ Passed The new parser, typed inputs, compound operators, regex/options, elemMatch support, and strict grammar handling satisfy #701.
Out of Scope Changes check ✅ Passed No obvious unrelated changes stand out; the docs, parse error helpers, and SQL elemMatch fix all support the Mongo parser feature.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/701-parser-mongo

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new MongoDB-style filters dialect to rapiq by introducing @rapiq/parser-mongo, expanding core parse-error factories, fixing nested $elemMatch prefix handling in the SQL visitor, and documenting the dialect and its failure model in the docs site.

Changes:

  • Introduce @rapiq/parser-mongo with a MongoFiltersParser (MongoDB-like filter documents → rapiq Filters AST) and a MongoParser that composes simple parsers for non-filter parameters.
  • Extend core parsing errors with ParseError.operatorUnsupported(...) and ParseError.featureUnsupported(...) factories.
  • Fix SQL nested elemMatch field-prefix composition and add unit coverage for the nested case; add docs pages + navigation updates.

Reviewed changes

Copilot reviewed 38 out of 39 changed files in this pull request and generated no comments.

Show a summary per file
File Description
README.md Adds @rapiq/parser-mongo to the package overview table.
packages/sql/test/unit/interpreters/elem-match.spec.ts Adds a regression test for nested elemMatch join-path composition.
packages/sql/src/visitor/filters.ts Fixes visitFilterElemMatch to compose (not reset) the adapter field prefix.
packages/parser-mongo/tsdown.config.ts Adds tsdown build config for the new package.
packages/parser-mongo/tsconfig.json Adds package TS config (incl. vitest globals typing for tests).
packages/parser-mongo/tsconfig.build.json Adds build-only TS config for the new package.
packages/parser-mongo/test/vitest.config.ts Adds vitest config and coverage settings for the new package.
packages/parser-mongo/test/unit/parser/parser.spec.ts Adds end-to-end MongoParser unit tests over full query inputs.
packages/parser-mongo/test/unit/parser/filters.spec.ts Adds extensive unit coverage for Mongo filter grammar/semantics, schema policy, defaults, and typing surface.
packages/parser-mongo/test/data/type.ts Adds shared test entity types used by parser specs.
packages/parser-mongo/test/data/schema.ts Adds a schema registry used by parser tests (allow-lists, mappings, defaults).
packages/parser-mongo/test/data/index.ts Barrel export for parser-mongo test data.
packages/parser-mongo/src/parameter/sorts/module.ts Introduces MongoSortParser (currently delegating to simple dialect).
packages/parser-mongo/src/parameter/sorts/index.ts Exports mongo sorts parser module.
packages/parser-mongo/src/parameter/relations/module.ts Introduces MongoRelationsParser (delegating to simple dialect).
packages/parser-mongo/src/parameter/relations/index.ts Exports mongo relations parser module.
packages/parser-mongo/src/parameter/pagination/module.ts Introduces MongoPaginationParser (delegating to simple dialect).
packages/parser-mongo/src/parameter/pagination/index.ts Exports mongo pagination parser module.
packages/parser-mongo/src/parameter/index.ts Barrel export for all mongo parameter parsers.
packages/parser-mongo/src/parameter/filters/types.ts Defines typed input surface for mongo filter documents (MongoFiltersParserInput, operator object types).
packages/parser-mongo/src/parameter/filters/module.ts Implements MongoFiltersParser (Mongo-style document walk, operator validation, De Morgan negation, $elemMatch, schema policy integration).
packages/parser-mongo/src/parameter/filters/index.ts Barrel export for filters parser, constants, and types.
packages/parser-mongo/src/parameter/filters/constants.ts Defines supported/unsupported mongo operator vocabulary and AST mappings.
packages/parser-mongo/src/parameter/fields/module.ts Introduces MongoFieldsParser (delegating to simple dialect).
packages/parser-mongo/src/parameter/fields/index.ts Exports mongo fields parser module.
packages/parser-mongo/src/module.ts Adds MongoParser composing mongo filters + simple parsers for other parameters.
packages/parser-mongo/src/index.ts Package entry-point exports for mongo parser and parameters.
packages/parser-mongo/README.md Adds package-level README describing usage, semantics, and docs link.
packages/parser-mongo/package.json Adds the new workspace package manifest and scripts.
packages/docs/integrations/mongo.md Adds the Mongo parser documentation (operators, deviations, failure model, usage, errors).
packages/docs/integrations/index.md Links the Mongo parser docs from the integrations index.
packages/docs/guide/build.md Updates reserved-keys note to point to the Mongo parser documentation.
packages/docs/getting-started/installation.md Adds @rapiq/parser-mongo to installation guidance.
packages/docs/.vitepress/config.mjs Adds “Mongo Parser” to the docs sidebar navigation.
packages/core/src/errors/parse.ts Adds ParseError.operatorUnsupported and ParseError.featureUnsupported factories.
package-lock.json Adds workspace lock entries for @rapiq/parser-mongo.
.agents/structure.md Updates package inventory + layer notes to include parser-mongo.
.agents/references/ucast.md Adds a reference note on ucast and how it maps to rapiq’s mongo dialect approach.
.agents/architecture.md Updates architecture notes to document the new mongo parser dialect and reserved keys.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
packages/sql/src/visitor/filters.ts (1)

89-99: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Consider restoring prefix in a finally block.

If expr.value.accept(this) throws, setFieldPrefix(oldPrefix) (line 96) never runs, leaving the adapter's field prefix in a corrupted composed state for any subsequent use of the same adapter instance. Since the fix now makes prefixes compose across nesting levels, a stale un-restored prefix is more error-prone to diagnose than before.

♻️ Suggested fix
     visitFilterElemMatch(expr: Filter<FilterFieldOperator.ELEM_MATCH, Filter | Filters>): IFiltersAdapter {
         const oldPrefix = this.adapter.getFieldPrefix();

         this.adapter.setFieldPrefix(`${oldPrefix}${expr.field}.`);

-        expr.value.accept(this);
-
-        this.adapter.setFieldPrefix(oldPrefix);
+        try {
+            expr.value.accept(this);
+        } finally {
+            this.adapter.setFieldPrefix(oldPrefix);
+        }

         return this.adapter;
     }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/sql/src/visitor/filters.ts` around lines 89 - 99, The field prefix
in visitFilterElemMatch is not safely restored if expr.value.accept(this)
throws, which can leave the shared adapter state corrupted. Update
visitFilterElemMatch in filters.ts to restore the previous prefix inside a
finally block around expr.value.accept(this), using oldPrefix and
this.adapter.setFieldPrefix so the prefix is always reset even on errors.
packages/parser-mongo/test/unit/parser/parser.spec.ts (1)

125-129: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

toThrow(error) matches by message, not by reference/type.

Vitest's toThrow with an Error instance argument asserts message equality only, so this test would still pass even if the thrown error were a different error class with the same message. Consider asserting the error type as well (e.g. toThrow(FiltersParseError) combined with a message check, or catching and checking instanceof) to more precisely lock in the "always throws typed FiltersParseError" contract described in the PR objectives.

♻️ Suggested strengthening of the assertion
-        expect(() => parser.parse({ filters: { $where: 'this.a > 1' } }, { schema: 'user' })).toThrow(error);
+        expect(() => parser.parse({ filters: { $where: 'this.a > 1' } }, { schema: 'user' }))
+            .toThrowError(expect.objectContaining({ name: error.name, message: error.message }));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/parser-mongo/test/unit/parser/parser.spec.ts` around lines 125 -
129, The assertion in parser.spec.ts only checks error message equality via
parser.parse and toThrow(error), so it can miss the wrong error type. Strengthen
the test around parser.parse, FiltersParseError.operatorUnsupported, and the
full-query filter grammar case by asserting the thrown error is a
FiltersParseError type as well as matching the expected message, using either
toThrow(FiltersParseError) plus a message check or a try/catch with instanceof.
packages/parser-mongo/src/parameter/filters/module.ts (1)

601-641: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

User-controlled $regex pattern feeds new RegExp.

Static analysis flags new RegExp(value, flags) as ReDoS-prone since value is client-supplied. This file only constructs the RegExp for syntax validation, but the resulting pattern is stored on the Filter and will eventually be evaluated downstream (SQL/in-memory visitor) against real data — an attacker can still submit a catastrophic-backtracking pattern (e.g. (a+)+$) through $regex/$options.

Consider documenting this risk for consumers of the dialect (untrusted $regex input should be treated as executable), and/or adding a cheap safeguard such as a maximum pattern length or a complexity check before constructing the RegExp.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/parser-mongo/src/parameter/filters/module.ts` around lines 601 -
641, The validateRegex() path accepts user-controlled $regex/$options and
directly constructs a RegExp, which can carry ReDoS risk into later Filter
evaluation. Update validateRegex() in the parser-mongo filters module to either
add a lightweight safeguard before new RegExp(value, flags) (for example a
maximum pattern length or simple complexity guard) or explicitly document in
this code path that untrusted regex input is dangerous and must be constrained
by consumers. Keep the checks aligned with the existing RegExp handling and
keyValueInvalid / syntaxInvalid error flow.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@packages/parser-mongo/src/parameter/filters/module.ts`:
- Around line 601-641: The validateRegex() path accepts user-controlled
$regex/$options and directly constructs a RegExp, which can carry ReDoS risk
into later Filter evaluation. Update validateRegex() in the parser-mongo filters
module to either add a lightweight safeguard before new RegExp(value, flags)
(for example a maximum pattern length or simple complexity guard) or explicitly
document in this code path that untrusted regex input is dangerous and must be
constrained by consumers. Keep the checks aligned with the existing RegExp
handling and keyValueInvalid / syntaxInvalid error flow.

In `@packages/parser-mongo/test/unit/parser/parser.spec.ts`:
- Around line 125-129: The assertion in parser.spec.ts only checks error message
equality via parser.parse and toThrow(error), so it can miss the wrong error
type. Strengthen the test around parser.parse,
FiltersParseError.operatorUnsupported, and the full-query filter grammar case by
asserting the thrown error is a FiltersParseError type as well as matching the
expected message, using either toThrow(FiltersParseError) plus a message check
or a try/catch with instanceof.

In `@packages/sql/src/visitor/filters.ts`:
- Around line 89-99: The field prefix in visitFilterElemMatch is not safely
restored if expr.value.accept(this) throws, which can leave the shared adapter
state corrupted. Update visitFilterElemMatch in filters.ts to restore the
previous prefix inside a finally block around expr.value.accept(this), using
oldPrefix and this.adapter.setFieldPrefix so the prefix is always reset even on
errors.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1b2e40a3-218e-41a7-9c88-c7172b6cb3ff

📥 Commits

Reviewing files that changed from the base of the PR and between be7796d and 48c7dd4.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (38)
  • .agents/architecture.md
  • .agents/references/ucast.md
  • .agents/structure.md
  • README.md
  • packages/core/src/errors/parse.ts
  • packages/docs/.vitepress/config.mjs
  • packages/docs/getting-started/installation.md
  • packages/docs/guide/build.md
  • packages/docs/integrations/index.md
  • packages/docs/integrations/mongo.md
  • packages/parser-mongo/README.md
  • packages/parser-mongo/package.json
  • packages/parser-mongo/src/index.ts
  • packages/parser-mongo/src/module.ts
  • packages/parser-mongo/src/parameter/fields/index.ts
  • packages/parser-mongo/src/parameter/fields/module.ts
  • packages/parser-mongo/src/parameter/filters/constants.ts
  • packages/parser-mongo/src/parameter/filters/index.ts
  • packages/parser-mongo/src/parameter/filters/module.ts
  • packages/parser-mongo/src/parameter/filters/types.ts
  • packages/parser-mongo/src/parameter/index.ts
  • packages/parser-mongo/src/parameter/pagination/index.ts
  • packages/parser-mongo/src/parameter/pagination/module.ts
  • packages/parser-mongo/src/parameter/relations/index.ts
  • packages/parser-mongo/src/parameter/relations/module.ts
  • packages/parser-mongo/src/parameter/sorts/index.ts
  • packages/parser-mongo/src/parameter/sorts/module.ts
  • packages/parser-mongo/test/data/index.ts
  • packages/parser-mongo/test/data/schema.ts
  • packages/parser-mongo/test/data/type.ts
  • packages/parser-mongo/test/unit/parser/filters.spec.ts
  • packages/parser-mongo/test/unit/parser/parser.spec.ts
  • packages/parser-mongo/test/vitest.config.ts
  • packages/parser-mongo/tsconfig.build.json
  • packages/parser-mongo/tsconfig.json
  • packages/parser-mongo/tsdown.config.ts
  • packages/sql/src/visitor/filters.ts
  • packages/sql/test/unit/interpreters/elem-match.spec.ts

@tada5hi

tada5hi commented Jul 8, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@tada5hi
tada5hi merged commit d96711b into master Jul 8, 2026
8 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 7, 2026
@github-actions github-actions Bot mentioned this pull request Jul 15, 2026
@github-actions github-actions Bot mentioned this pull request Jul 19, 2026
@tada5hi
tada5hi deleted the feat/701-parser-mongo branch July 27, 2026 07:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: MongoDB Query Parser

2 participants