eslint-plugin-mongodb-security 8.0.0 → 8.1.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.
- package/CHANGELOG.md +1 -1
- package/README.md +110 -193
- package/package.json +1 -1
- package/src/index.d.ts +5 -0
- package/src/index.js +3 -13
- package/src/index.js.map +1 -1
- package/src/rules/no-bypass-middleware/index.d.ts +7 -1
- package/src/rules/no-bypass-middleware/index.js +5 -0
- package/src/rules/no-bypass-middleware/index.js.map +1 -1
- package/src/rules/no-debug-mode-production/index.d.ts +7 -1
- package/src/rules/no-debug-mode-production/index.js +5 -0
- package/src/rules/no-debug-mode-production/index.js.map +1 -1
- package/src/rules/no-hardcoded-connection-string/index.d.ts +7 -1
- package/src/rules/no-hardcoded-connection-string/index.js +5 -0
- package/src/rules/no-hardcoded-connection-string/index.js.map +1 -1
- package/src/rules/no-hardcoded-credentials/index.d.ts +7 -1
- package/src/rules/no-hardcoded-credentials/index.js +5 -0
- package/src/rules/no-hardcoded-credentials/index.js.map +1 -1
- package/src/rules/no-operator-injection/index.d.ts +7 -1
- package/src/rules/no-operator-injection/index.js +5 -0
- package/src/rules/no-operator-injection/index.js.map +1 -1
- package/src/rules/no-select-sensitive-fields/index.d.ts +7 -1
- package/src/rules/no-select-sensitive-fields/index.js +5 -0
- package/src/rules/no-select-sensitive-fields/index.js.map +1 -1
- package/src/rules/no-unbounded-find/index.d.ts +7 -1
- package/src/rules/no-unbounded-find/index.js +5 -0
- package/src/rules/no-unbounded-find/index.js.map +1 -1
- package/src/rules/no-unsafe-populate/index.d.ts +7 -1
- package/src/rules/no-unsafe-populate/index.js +5 -0
- package/src/rules/no-unsafe-populate/index.js.map +1 -1
- package/src/rules/no-unsafe-query/index.d.ts +17 -1
- package/src/rules/no-unsafe-query/index.js +5 -0
- package/src/rules/no-unsafe-query/index.js.map +1 -1
- package/src/rules/no-unsafe-regex-query/index.d.ts +7 -1
- package/src/rules/no-unsafe-regex-query/index.js +5 -0
- package/src/rules/no-unsafe-regex-query/index.js.map +1 -1
- package/src/rules/no-unsafe-where/index.d.ts +7 -1
- package/src/rules/no-unsafe-where/index.js +5 -0
- package/src/rules/no-unsafe-where/index.js.map +1 -1
- package/src/rules/require-auth-mechanism/index.d.ts +7 -1
- package/src/rules/require-auth-mechanism/index.js +5 -0
- package/src/rules/require-auth-mechanism/index.js.map +1 -1
- package/src/rules/require-lean-queries/index.d.ts +7 -1
- package/src/rules/require-lean-queries/index.js +5 -0
- package/src/rules/require-lean-queries/index.js.map +1 -1
- package/src/rules/require-projection/index.d.ts +7 -1
- package/src/rules/require-projection/index.js +5 -0
- package/src/rules/require-projection/index.js.map +1 -1
- package/src/rules/require-schema-validation/index.d.ts +7 -1
- package/src/rules/require-schema-validation/index.js +5 -0
- package/src/rules/require-schema-validation/index.js.map +1 -1
- package/src/rules/require-tls-connection/index.d.ts +7 -1
- package/src/rules/require-tls-connection/index.js +5 -0
- package/src/rules/require-tls-connection/index.js.map +1 -1
- package/src/types/index.d.ts +5 -0
- package/src/types/index.js +3 -8
- package/src/types/index.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,7 @@ All notable changes to `eslint-plugin-mongodb-security` will be documented in th
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.0.0] - 2026-01-
|
|
8
|
+
## [1.0.0] - 2026-01-09
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
package/README.md
CHANGED
|
@@ -1,238 +1,155 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://eslint.interlace.tools" target="blank"><img src="https://eslint.interlace.tools/eslint-interlace-logo-light.svg" alt="ESLint Interlace Logo" width="120" /></a>
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
>
|
|
5
|
+
<p align="center">
|
|
6
|
+
Security rules for MongoDB queries and interactions (NoSQL injection).
|
|
7
|
+
</p>
|
|
4
8
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/eslint-plugin-mongodb-security" target="_blank"><img src="https://img.shields.io/npm/v/eslint-plugin-mongodb-security.svg" alt="NPM Version" /></a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/eslint-plugin-mongodb-security" target="_blank"><img src="https://img.shields.io/npm/dm/eslint-plugin-mongodb-security.svg" alt="NPM Downloads" /></a>
|
|
12
|
+
<a href="https://opensource.org/licenses/MIT" target="_blank"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="Package License" /></a>
|
|
13
|
+
<a href="https://app.codecov.io/gh/ofri-peretz/eslint/components?components%5B0%5D=mongodb-security" target="_blank"><img src="https://codecov.io/gh/ofri-peretz/eslint/graph/badge.svg?component=mongodb-security" alt="Codecov" /></a>
|
|
14
|
+
<a href="https://github.com/ofri-peretz/eslint" target="_blank"><img src="https://img.shields.io/badge/Since-Dec_2025-blue?logo=rocket&logoColor=white" alt="Since Dec 2025" /></a>
|
|
15
|
+
</p>
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## 🎯 The One-Stop Shop for MongoDB Security Linting
|
|
14
|
-
|
|
15
|
-
**This is the comprehensive, actively-maintained ESLint plugin for MongoDB security in Node.js environments.**
|
|
16
|
-
|
|
17
|
-
> ⚠️ **Note**: Other packages like `eslint-plugin-mongodb` and `eslint-plugin-mongo` exist on npm but are outdated, unmaintained, or limited in scope. **eslint-plugin-mongodb-security** is purpose-built for modern security needs, covering the entire MongoDB ecosystem with CVE detection, OWASP mapping, and AI-optimized error messages.
|
|
17
|
+
## Description
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
This plugin is essential for securing specific MongoDB interactions, primarily focusing on preventing NoSQL injection attacks. It analyzes your queries and database operations to flag potentially unsafe patterns that could be exploited by malicious actors. By adopting these rules, you can safeguard your data integrity and prevent unauthorized access through injection vulnerabilities.
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Philosophy
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
- **Full Ecosystem Coverage** — MongoDB driver, Mongoose ODM, Client-Side Encryption, Typegoose
|
|
25
|
-
- **2025 CVE Detection** — CVE-2025-23061, CVE-2024-53900 ($where injection in Mongoose)
|
|
26
|
-
- **OWASP Top 10 Mapped** — Every rule references CWE and OWASP categories
|
|
27
|
-
- **AI-Optimized** — Structured messages for GitHub Copilot, Cursor, Claude assistance
|
|
23
|
+
**Interlace** fosters **strength through integration**. Instead of stacking isolated rules, we **interlace** security directly into your workflow to create a resilient fabric of code. We believe tools should **guide rather than gatekeep**, providing educational feedback that strengthens the developer with every interaction.
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
## Getting Started
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
- To check out the [guide](https://eslint.interlace.tools/docs/mongodb-security), visit [eslint.interlace.tools](https://eslint.interlace.tools). 📚
|
|
28
|
+
- 要查看中文 [指南](https://eslint.interlace.tools/docs/mongodb-security), 请访问 [eslint.interlace.tools](https://eslint.interlace.tools). 📚
|
|
29
|
+
- [가이드](https://eslint.interlace.tools/docs/mongodb-security) 문서는 [eslint.interlace.tools](https://eslint.interlace.tools)에서 확인하실 수 있습니다. 📚
|
|
30
|
+
- [ガイド](https://eslint.interlace.tools/docs/mongodb-security)は [eslint.interlace.tools](https://eslint.interlace.tools)でご確認ください。 📚
|
|
31
|
+
- Para ver la [guía](https://eslint.interlace.tools/docs/mongodb-security), visita [eslint.interlace.tools](https://eslint.interlace.tools). 📚
|
|
32
|
+
- للاطلاع على [الدليل](https://eslint.interlace.tools/docs/mongodb-security)، قم بزيارة [eslint.interlace.tools](https://eslint.interlace.tools). 📚
|
|
32
33
|
|
|
33
34
|
```bash
|
|
34
|
-
npm install
|
|
35
|
-
# or
|
|
36
|
-
pnpm add -D eslint-plugin-mongodb-security
|
|
35
|
+
npm install eslint-plugin-mongodb-security --save-dev
|
|
37
36
|
```
|
|
38
37
|
|
|
39
|
-
##
|
|
38
|
+
## Usage Examples
|
|
40
39
|
|
|
41
|
-
###
|
|
40
|
+
### Prevent NoSQL Injection (`no-operator-injection`)
|
|
42
41
|
|
|
43
42
|
```javascript
|
|
44
|
-
//
|
|
45
|
-
|
|
43
|
+
// ❌ Incorrect (Vulnerable to { $ne: null })
|
|
44
|
+
User.findOne({ email: req.body.email, password: req.body.password });
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// or mongodbSecurity.configs.strict for maximum security
|
|
50
|
-
];
|
|
46
|
+
// ✅ Correct (Safe execution)
|
|
47
|
+
User.findOne({ email: { $eq: email }, password: { $eq: password } });
|
|
51
48
|
```
|
|
52
49
|
|
|
53
|
-
###
|
|
50
|
+
### Prevent JavaScript Injection (`no-unsafe-where`)
|
|
54
51
|
|
|
55
52
|
```javascript
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
export default [
|
|
59
|
-
{
|
|
60
|
-
plugins: { 'mongodb-security': mongodbSecurity },
|
|
61
|
-
rules: {
|
|
62
|
-
// Critical - NoSQL Injection
|
|
63
|
-
'mongodb-security/no-unsafe-query': 'error',
|
|
64
|
-
'mongodb-security/no-operator-injection': 'error',
|
|
65
|
-
'mongodb-security/no-unsafe-where': 'error',
|
|
66
|
-
|
|
67
|
-
// High - Credentials & Connection
|
|
68
|
-
'mongodb-security/no-hardcoded-connection-string': 'error',
|
|
69
|
-
'mongodb-security/require-tls-connection': 'warn',
|
|
70
|
-
|
|
71
|
-
// Medium - ODM Best Practices
|
|
72
|
-
'mongodb-security/require-schema-validation': 'warn',
|
|
73
|
-
'mongodb-security/no-select-sensitive-fields': 'warn',
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 🔐 Rules
|
|
82
|
-
|
|
83
|
-
💼 = Set in `recommended` | 🔧 = Auto-fixable | 💡 = Has suggestions
|
|
84
|
-
|
|
85
|
-
### Critical Severity (NoSQL Injection)
|
|
86
|
-
|
|
87
|
-
| Rule | CWE | OWASP | CVE | Description | 💼 | 💡 |
|
|
88
|
-
| ------------------------------------------------------------ | ------- | -------- | -------------- | ---------------------------------------- | --- | --- |
|
|
89
|
-
| [no-unsafe-query](docs/rules/no-unsafe-query.md) | CWE-943 | A03:2021 | — | Prevents string concatenation in queries | 💼 | 💡 |
|
|
90
|
-
| [no-operator-injection](docs/rules/no-operator-injection.md) | CWE-943 | A03:2021 | — | Prevents $ne, $gt, $lt injection attacks | 💼 | 💡 |
|
|
91
|
-
| [no-unsafe-where](docs/rules/no-unsafe-where.md) | CWE-943 | A01:2021 | CVE-2025-23061 | Prevents $where operator RCE | 💼 | 💡 |
|
|
92
|
-
| [no-unsafe-regex-query](docs/rules/no-unsafe-regex-query.md) | CWE-400 | A03:2021 | — | Prevents ReDoS via $regex | 💼 | 💡 |
|
|
93
|
-
|
|
94
|
-
### High Severity (Credentials & Connection)
|
|
95
|
-
|
|
96
|
-
| Rule | CWE | OWASP | Description | 💼 | 💡 |
|
|
97
|
-
| ------------------------------------------------------------------------------ | ------- | -------- | --------------------------------------- | --- | --- |
|
|
98
|
-
| [no-hardcoded-connection-string](docs/rules/no-hardcoded-connection-string.md) | CWE-798 | A07:2021 | Prevents credentials in connection URIs | 💼 | 💡 |
|
|
99
|
-
| [no-hardcoded-credentials](docs/rules/no-hardcoded-credentials.md) | CWE-798 | A07:2021 | Prevents hardcoded auth options | 💼 | 💡 |
|
|
100
|
-
| [require-tls-connection](docs/rules/require-tls-connection.md) | CWE-295 | A02:2021 | Requires TLS for production connections | 💼 | 💡 |
|
|
101
|
-
| [require-auth-mechanism](docs/rules/require-auth-mechanism.md) | CWE-287 | A07:2021 | Requires explicit SCRAM-SHA-256 | 💼 | 💡 |
|
|
102
|
-
|
|
103
|
-
### Medium Severity (Mongoose ODM)
|
|
104
|
-
|
|
105
|
-
| Rule | CWE | OWASP | Description | 💼 | 💡 |
|
|
106
|
-
| ---------------------------------------------------------------------- | ------- | -------- | ---------------------------------------- | --- | --- |
|
|
107
|
-
| [require-schema-validation](docs/rules/require-schema-validation.md) | CWE-20 | A04:2021 | Requires Mongoose schema validators | 💼 | 💡 |
|
|
108
|
-
| [no-select-sensitive-fields](docs/rules/no-select-sensitive-fields.md) | CWE-200 | A01:2021 | Prevents returning password/token fields | 💼 | 💡 |
|
|
109
|
-
| [no-bypass-middleware](docs/rules/no-bypass-middleware.md) | CWE-284 | A01:2021 | Prevents bypassing pre/post hooks | 💼 | 💡 |
|
|
110
|
-
| [no-unsafe-populate](docs/rules/no-unsafe-populate.md) | CWE-943 | A03:2021 | Prevents user-controlled populate() | 💼 | 💡 |
|
|
111
|
-
|
|
112
|
-
### Low Severity (Best Practices)
|
|
113
|
-
|
|
114
|
-
| Rule | CWE | OWASP | Description | 💼 | 💡 |
|
|
115
|
-
| ------------------------------------------------------------------ | ------- | -------- | -------------------------------------- | --- | --- |
|
|
116
|
-
| [no-unbounded-find](docs/rules/no-unbounded-find.md) | CWE-400 | A04:2021 | Requires limit() on find queries | | 💡 |
|
|
117
|
-
| [require-projection](docs/rules/require-projection.md) | CWE-200 | A01:2021 | Requires field projection | | 💡 |
|
|
118
|
-
| [require-lean-queries](docs/rules/require-lean-queries.md) | CWE-400 | A04:2021 | Suggests .lean() for read-only queries | | 💡 |
|
|
119
|
-
| [no-debug-mode-production](docs/rules/no-debug-mode-production.md) | CWE-489 | A05:2021 | Prevents debug mode in production | 💼 | 💡 |
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## 📚 Supported Libraries
|
|
124
|
-
|
|
125
|
-
This plugin analyzes code that uses the following MongoDB/Mongoose libraries. **Both are optional peer dependencies** — you only need to have installed the ones you're using:
|
|
126
|
-
|
|
127
|
-
| Library | npm | Detection | Notes |
|
|
128
|
-
| ------------------------- | --------------------------------------------------------------- | ---------- | ---------------------------------- |
|
|
129
|
-
| mongodb |  | ✅ Full | Native MongoDB driver |
|
|
130
|
-
| mongoose |  | ✅ Full | ODM with schema validation |
|
|
131
|
-
| @nestjs/mongoose |  | ✅ Full | NestJS integration for Mongoose |
|
|
132
|
-
| mongodb-client-encryption |  | ✅ Full | Client-Side Field Level Encryption |
|
|
133
|
-
| @typegoose/typegoose |  | ✅ Partial | TypeScript decorators for Mongoose |
|
|
134
|
-
|
|
135
|
-
> **Note**: `mongodb` and `mongoose` are listed as optional peer dependencies (`peerDependenciesMeta.optional: true`). The plugin works regardless of which MongoDB library you use — rules detect patterns in your code, not the presence of specific packages.
|
|
136
|
-
>
|
|
137
|
-
> **Not covered**: `mongodb-core` (deprecated, merged into mongodb 4.x), `mongodb-memory-server` (testing utility).
|
|
138
|
-
>
|
|
139
|
-
> **NestJS users**: `@nestjs/mongoose` uses standard Mongoose under the hood — all rules apply. For comprehensive NestJS coverage, combine with [`eslint-plugin-nestjs-security`](https://npmjs.com/package/eslint-plugin-nestjs-security).
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## 🔒 OWASP Top 10 2021 Coverage
|
|
144
|
-
|
|
145
|
-
| OWASP Category | Rules | Coverage |
|
|
146
|
-
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -------- |
|
|
147
|
-
| **A01:2021 Broken Access Control** | `no-unsafe-where`, `no-select-sensitive-fields`, `no-bypass-middleware` | ✅ |
|
|
148
|
-
| **A02:2021 Cryptographic Failures** | `require-tls-connection` | ✅ |
|
|
149
|
-
| **A03:2021 Injection** | `no-unsafe-query`, `no-operator-injection`, `no-unsafe-where`, `no-unsafe-regex-query`, `no-unsafe-populate` | ✅ |
|
|
150
|
-
| **A04:2021 Insecure Design** | `require-schema-validation`, `no-unbounded-find`, `require-lean-queries` | ✅ |
|
|
151
|
-
| **A05:2021 Security Misconfiguration** | `no-debug-mode-production` | ✅ |
|
|
152
|
-
| **A07:2021 Identification Failures** | `no-hardcoded-connection-string`, `no-hardcoded-credentials`, `require-auth-mechanism` | ✅ |
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 🛡️ Security Research Coverage
|
|
157
|
-
|
|
158
|
-
### CVE-2025-23061 & CVE-2024-53900 (Mongoose $where Injection)
|
|
159
|
-
|
|
160
|
-
The `no-unsafe-where` rule detects `$where` operator usage that allows RCE through JavaScript injection.
|
|
161
|
-
|
|
162
|
-
```javascript
|
|
163
|
-
// ❌ Vulnerable - Allows Remote Code Execution
|
|
53
|
+
// ❌ Incorrect (Allows RCE)
|
|
164
54
|
User.find({ $where: `this.name === '${userInput}'` });
|
|
165
|
-
User.find().populate({ path: 'posts', match: { $where: userControlled } });
|
|
166
55
|
|
|
167
|
-
// ✅
|
|
56
|
+
// ✅ Correct (Standard operators)
|
|
168
57
|
User.find({ name: { $eq: sanitize(userInput) } });
|
|
169
58
|
```
|
|
170
59
|
|
|
171
|
-
### NoSQL Operator Injection
|
|
172
|
-
|
|
173
|
-
The `no-operator-injection` rule prevents authentication bypass attacks.
|
|
174
|
-
|
|
175
|
-
```javascript
|
|
176
|
-
// ❌ Vulnerable - Attacker sends { password: { $ne: null } }
|
|
177
|
-
User.findOne({ email: req.body.email, password: req.body.password });
|
|
178
|
-
|
|
179
|
-
// ✅ Safe - Explicit equality operator
|
|
180
|
-
User.findOne({ email: { $eq: email }, password: { $eq: password } });
|
|
181
|
-
```
|
|
182
|
-
|
|
183
60
|
---
|
|
184
61
|
|
|
185
62
|
## ⚙️ Configuration Presets
|
|
186
63
|
|
|
187
|
-
| Preset | Description
|
|
188
|
-
|
|
|
189
|
-
| `recommended` |
|
|
190
|
-
| `strict` |
|
|
191
|
-
| `mongoose` |
|
|
192
|
-
|
|
193
|
-
---
|
|
64
|
+
| Preset | Description |
|
|
65
|
+
| :------------ | :------------------------------------------------ |
|
|
66
|
+
| `recommended` | Critical rules as errors, high as warnings |
|
|
67
|
+
| `strict` | All rules as errors |
|
|
68
|
+
| `mongoose` | Specialized rules for Mongoose ODM usage patterns |
|
|
194
69
|
|
|
195
|
-
##
|
|
70
|
+
## 📚 Supported Libraries
|
|
196
71
|
|
|
197
|
-
|
|
72
|
+
| Library | npm | Downloads | Detection |
|
|
73
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
|
|
74
|
+
| `mongodb` | [](https://www.npmjs.com/package/mongodb) | [](https://www.npmjs.com/package/mongodb) | Injection, Unbounded Queries |
|
|
75
|
+
| `mongoose` | [](https://www.npmjs.com/package/mongoose) | [](https://www.npmjs.com/package/mongoose) | Schema Safety, Leans |
|
|
198
76
|
|
|
199
|
-
|
|
200
|
-
🔒 CWE-943 OWASP:A03-Injection CVSS:9.0 | NoSQL injection via $where operator | CRITICAL
|
|
201
|
-
Fix: Remove $where and use standard query operators like $eq, $in, $regex
|
|
202
|
-
https://nvd.nist.gov/vuln/detail/CVE-2025-23061
|
|
203
|
-
```
|
|
77
|
+
---
|
|
204
78
|
|
|
205
79
|
---
|
|
206
80
|
|
|
207
|
-
##
|
|
81
|
+
## AI-Optimized Messages
|
|
208
82
|
|
|
209
|
-
|
|
210
|
-
- [CVE-2025-23061 - Mongoose populate() bypass](https://nvd.nist.gov/vuln/detail/CVE-2025-23061)
|
|
211
|
-
- [CVE-2024-53900 - Mongoose $where RCE](https://nvd.nist.gov/vuln/detail/CVE-2024-53900)
|
|
212
|
-
- [MongoDB Security Checklist](https://www.mongodb.com/docs/manual/administration/security-checklist/)
|
|
213
|
-
- [CWE-943: NoSQL Injection](https://cwe.mitre.org/data/definitions/943.html)
|
|
83
|
+
This plugin is optimized for ESLint's [Model Context Protocol (MCP)](https://eslint.org/docs/latest/use/mcp), enabling AI assistants like **Cursor**, **GitHub Copilot**, and **Claude** to:
|
|
214
84
|
|
|
215
|
-
|
|
85
|
+
- Understand the exact vulnerability type via CWE references
|
|
86
|
+
- Apply the correct fix using structured guidance
|
|
87
|
+
- Provide educational context to developers
|
|
216
88
|
|
|
217
|
-
|
|
89
|
+
```json
|
|
90
|
+
// .cursor/mcp.json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"eslint": {
|
|
94
|
+
"command": "npx",
|
|
95
|
+
"args": ["@eslint/mcp@latest"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
218
100
|
|
|
219
|
-
|
|
101
|
+
By providing this structured context (CWE, OWASP, Fix), we enable AI tools to **reason** about the security flaw rather than hallucinating. This allows Copilot/Cursor to suggest the _exact_ correct fix immediately.
|
|
102
|
+
|
|
103
|
+
## Rules
|
|
104
|
+
|
|
105
|
+
**Legend**
|
|
106
|
+
|
|
107
|
+
| Icon | Description |
|
|
108
|
+
| :--: | :----------------------------------------------------------------- |
|
|
109
|
+
| 💼 | **Recommended**: Included in the recommended preset. |
|
|
110
|
+
| ⚠️ | **Warns**: Set to warn in recommended preset. |
|
|
111
|
+
| 🔧 | **Auto-fixable**: Automatically fixable by the `--fix` CLI option. |
|
|
112
|
+
| 💡 | **Suggestions**: Providing code suggestions in IDE. |
|
|
113
|
+
| 🚫 | **Deprecated**: This rule is deprecated. |
|
|
114
|
+
|
|
115
|
+
| Rule | CWE | OWASP | CVSS | Description | 💼 | ⚠️ | 🔧 | 💡 | 🚫 |
|
|
116
|
+
| :---------------------------------------------------------------------------------------------------------------------------- | :------: | :------: | :--: | :----------------------------------------------------------------------------- | :-: | :-: | :-: | :-: | :-: |
|
|
117
|
+
| [`no-bypass-middleware`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-bypass-middleware) | CWE-284 | A01:2025 | 7.5 | [no-bypass-middleware](docs/rules/no-bypass-middleware.md) | 💼 | ⚠️ | | | |
|
|
118
|
+
| [`no-debug-mode-production`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-debug-mode-production) | CWE-489 | A05:2025 | 7.5 | [no-debug-mode-production](docs/rules/no-debug-mode-production.md) | 💼 | | | | |
|
|
119
|
+
| [`no-hardcoded-connection-string`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-hardcoded-connection-string) | CWE-798 | A07:2025 | 9.8 | [no-hardcoded-connection-string](docs/rules/no-hardcoded-connection-string.md) | 💼 | | 🔧 | | |
|
|
120
|
+
| [`no-hardcoded-credentials`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-hardcoded-credentials) | CWE-798 | A07:2025 | 9.8 | [no-hardcoded-credentials](docs/rules/no-hardcoded-credentials.md) | 💼 | | 🔧 | | |
|
|
121
|
+
| [`no-operator-injection`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-operator-injection) | CWE-943 | A03:2025 | 9.8 | [no-operator-injection](docs/rules/no-operator-injection.md) | 💼 | | | | |
|
|
122
|
+
| [`no-select-sensitive-fields`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-select-sensitive-fields) | CWE-200 | A01:2025 | 5.3 | [no-select-sensitive-fields](docs/rules/no-select-sensitive-fields.md) | 💼 | ⚠️ | | | |
|
|
123
|
+
| [`no-unbounded-find`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-unbounded-find) | CWE-770 | A04:2025 | 5.3 | [no-unbounded-find](docs/rules/no-unbounded-find.md) | 💼 | ⚠️ | | | |
|
|
124
|
+
| [`no-unsafe-populate`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-unsafe-populate) | CWE-284 | A01:2025 | 5.3 | [no-unsafe-populate](docs/rules/no-unsafe-populate.md) | 💼 | | | | |
|
|
125
|
+
| [`no-unsafe-query`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-unsafe-query) | CWE-943 | A03:2025 | 9.8 | [no-unsafe-query](docs/rules/no-unsafe-query.md) | 💼 | | | | |
|
|
126
|
+
| [`no-unsafe-regex-query`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-unsafe-regex-query) | CWE-1333 | A03:2025 | 7.5 | [no-unsafe-regex-query](docs/rules/no-unsafe-regex-query.md) | 💼 | | | | |
|
|
127
|
+
| [`no-unsafe-where`](https://eslint.interlace.tools/docs/mongodb-security/rules/no-unsafe-where) | CWE-943 | A03:2025 | 9.8 | [no-unsafe-where](docs/rules/no-unsafe-where.md) | 💼 | | | | |
|
|
128
|
+
| [`require-auth-mechanism`](https://eslint.interlace.tools/docs/mongodb-security/rules/require-auth-mechanism) | CWE-306 | A07:2025 | 7.5 | [require-auth-mechanism](docs/rules/require-auth-mechanism.md) | 💼 | ⚠️ | | | |
|
|
129
|
+
| [`require-lean-queries`](https://eslint.interlace.tools/docs/mongodb-security/rules/require-lean-queries) | CWE-400 | A04:2025 | 5.3 | [require-lean-queries](docs/rules/require-lean-queries.md) | | | 🔧 | | |
|
|
130
|
+
| [`require-projection`](https://eslint.interlace.tools/docs/mongodb-security/rules/require-projection) | CWE-200 | A01:2025 | 5.3 | [require-projection](docs/rules/require-projection.md) | | | | | |
|
|
131
|
+
| [`require-schema-validation`](https://eslint.interlace.tools/docs/mongodb-security/rules/require-schema-validation) | CWE-20 | A04:2025 | 7.5 | [require-schema-validation](docs/rules/require-schema-validation.md) | 💼 | ⚠️ | | | |
|
|
132
|
+
| [`require-tls-connection`](https://eslint.interlace.tools/docs/mongodb-security/rules/require-tls-connection) | CWE-319 | A02:2025 | 7.5 | [require-tls-connection](docs/rules/require-tls-connection.md) | 💼 | ⚠️ | | | |
|
|
220
133
|
|
|
221
|
-
|
|
222
|
-
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----- |
|
|
223
|
-
| [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) | [](https://npmjs.com/package/eslint-plugin-secure-coding) | Universal security (OWASP Top 10 Web + Mobile) | 75 |
|
|
224
|
-
| [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) | [](https://npmjs.com/package/eslint-plugin-pg) | PostgreSQL/node-postgres security | 13 |
|
|
225
|
-
| [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) | [](https://npmjs.com/package/eslint-plugin-crypto) | Cryptographic best practices | 24 |
|
|
226
|
-
| [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) | [](https://npmjs.com/package/eslint-plugin-jwt) | JWT security (algorithm confusion, weak secrets) | 13 |
|
|
227
|
-
| [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) | [](https://npmjs.com/package/eslint-plugin-browser-security) | Browser/DOM security (XSS, postMessage, CSP) | 21 |
|
|
228
|
-
| [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | [](https://npmjs.com/package/eslint-plugin-vercel-ai-security) | Vercel AI SDK security (OWASP LLM Top 10) | 19 |
|
|
229
|
-
| [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) | [](https://npmjs.com/package/eslint-plugin-express-security) | Express.js security | 9 |
|
|
230
|
-
| [`eslint-plugin-lambda-security`](https://www.npmjs.com/package/eslint-plugin-lambda-security) | [](https://npmjs.com/package/eslint-plugin-lambda-security) | AWS Lambda/Middy security | 13 |
|
|
231
|
-
| [`eslint-plugin-nestjs-security`](https://www.npmjs.com/package/eslint-plugin-nestjs-security) | [](https://npmjs.com/package/eslint-plugin-nestjs-security) | NestJS security (guards, throttling) | 5 |
|
|
232
|
-
| [`eslint-plugin-import-next`](https://www.npmjs.com/package/eslint-plugin-import-next) | [](https://npmjs.com/package/eslint-plugin-import-next) | High-performance import linting | 55 |
|
|
134
|
+
Part of the **Interlace ESLint Ecosystem** — AI-native security plugins with LLM-optimized error messages:
|
|
233
135
|
|
|
234
|
-
|
|
136
|
+
| Plugin | Downloads | Description |
|
|
137
|
+
| :--------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------ |
|
|
138
|
+
| [`eslint-plugin-secure-coding`](https://www.npmjs.com/package/eslint-plugin-secure-coding) | [](https://www.npmjs.com/package/eslint-plugin-secure-coding) | General security rules & OWASP guidelines. |
|
|
139
|
+
| [`eslint-plugin-pg`](https://www.npmjs.com/package/eslint-plugin-pg) | [](https://www.npmjs.com/package/eslint-plugin-pg) | PostgreSQL security & best practices. |
|
|
140
|
+
| [`eslint-plugin-crypto`](https://www.npmjs.com/package/eslint-plugin-crypto) | [](https://www.npmjs.com/package/eslint-plugin-crypto) | NodeJS Cryptography security rules. |
|
|
141
|
+
| [`eslint-plugin-jwt`](https://www.npmjs.com/package/eslint-plugin-jwt) | [](https://www.npmjs.com/package/eslint-plugin-jwt) | JWT security & best practices. |
|
|
142
|
+
| [`eslint-plugin-browser-security`](https://www.npmjs.com/package/eslint-plugin-browser-security) | [](https://www.npmjs.com/package/eslint-plugin-browser-security) | Browser-specific security & XSS prevention. |
|
|
143
|
+
| [`eslint-plugin-vercel-ai-security`](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | [](https://www.npmjs.com/package/eslint-plugin-vercel-ai-security) | Vercel AI SDK security rules. |
|
|
144
|
+
| [`eslint-plugin-express-security`](https://www.npmjs.com/package/eslint-plugin-express-security) | [](https://www.npmjs.com/package/eslint-plugin-express-security) | Express.js security hardening rules. |
|
|
145
|
+
| [`eslint-plugin-lambda-security`](https://www.npmjs.com/package/eslint-plugin-lambda-security) | [](https://www.npmjs.com/package/eslint-plugin-lambda-security) | AWS Lambda security best practices. |
|
|
146
|
+
| [`eslint-plugin-nestjs-security`](https://www.npmjs.com/package/eslint-plugin-nestjs-security) | [](https://www.npmjs.com/package/eslint-plugin-nestjs-security) | NestJS security rules & patterns. |
|
|
147
|
+
| [`eslint-plugin-import-next`](https://www.npmjs.com/package/eslint-plugin-import-next) | [](https://www.npmjs.com/package/eslint-plugin-import-next) | Next-gen import sorting & architecture. |
|
|
235
148
|
|
|
236
149
|
## 📄 License
|
|
237
150
|
|
|
238
151
|
MIT © [Ofri Peretz](https://github.com/ofri-peretz)
|
|
152
|
+
|
|
153
|
+
<p align="center">
|
|
154
|
+
<a href="https://eslint.interlace.tools/docs/mongodb-security"><img src="https://eslint.interlace.tools/images/og-mongodb-security.png" alt="ESLint Interlace Plugin" width="300" /></a>
|
|
155
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-mongodb-security",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.1.1",
|
|
4
4
|
"description": "Security-focused ESLint plugin for MongoDB & Mongoose. Detects NoSQL injection, operator attacks, credential exposure, and ODM-specific vulnerabilities with AI-optimized fix guidance.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Detects NoSQL injection, operator attacks, credential exposure,
|
|
7
|
-
* and ODM-specific vulnerabilities with AI-optimized fix guidance.
|
|
8
|
-
*
|
|
9
|
-
* Features:
|
|
10
|
-
* - LLM-optimized error messages with CWE references
|
|
11
|
-
* - OWASP Top 10 coverage (A01-A07)
|
|
12
|
-
* - CVE detection (CVE-2025-23061, CVE-2024-53900)
|
|
13
|
-
* - Full support for mongodb, mongoose, mongodb-client-encryption
|
|
14
|
-
*
|
|
15
|
-
* @see https://github.com/ofri-peretz/eslint/tree/main/packages/eslint-plugin-mongodb-security
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
16
6
|
*/
|
|
17
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
8
|
exports.configs = exports.plugin = exports.rules = void 0;
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/eslint-plugin-mongodb-security/src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/eslint-plugin-mongodb-security/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noBypassMiddleware: import("@typescript-eslint/utils/ts-eslint").RuleModule<"bypassMiddleware", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noBypassMiddleware;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noBypassMiddleware = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-bypass-middleware/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-bypass-middleware/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,kBAAkB,GAAG,IAAA,0BAAU,EAA0B;IACpE,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,sDAAsD,EAAE;QAC7E,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,gBAAgB,EAAE,IAAA,gCAAgB,EAAC;gBACjC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,mBAAmB;gBAC9B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,gDAAgD;gBAC7D,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,wDAAwD;gBAC7D,iBAAiB,EAAE,6CAA6C;aACjE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,0BAAkB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noDebugModeProduction: import("@typescript-eslint/utils/ts-eslint").RuleModule<"debugModeProduction", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noDebugModeProduction;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noDebugModeProduction = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-debug-mode-production/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-debug-mode-production/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,qBAAqB,GAAG,IAAA,0BAAU,EAA0B;IACvE,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE;QAClE,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,mBAAmB,EAAE,IAAA,gCAAgB,EAAC;gBACpC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,0BAA0B;gBACrC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,iEAAiE;gBAC9E,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,kEAAkE;gBACvE,iBAAiB,EAAE,wEAAwE;aAC5F,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,6BAAqB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noHardcodedConnectionString: import("@typescript-eslint/utils/ts-eslint").RuleModule<"hardcodedConnectionString", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noHardcodedConnectionString;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noHardcodedConnectionString = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-hardcoded-connection-string/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-hardcoded-connection-string/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,2BAA2B,GAAG,IAAA,0BAAU,EAA0B;IAC7E,IAAI,EAAE,gCAAgC;IACtC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,+DAA+D,EAAE;QACtF,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,yBAAyB,EAAE,IAAA,gCAAgB,EAAC;gBAC1C,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,6BAA6B;gBACxC,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,0DAA0D;gBACvE,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,qEAAqE;gBAC1E,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,mCAA2B,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noHardcodedCredentials: import("@typescript-eslint/utils/ts-eslint").RuleModule<"hardcodedCredentials", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noHardcodedCredentials;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noHardcodedCredentials = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-hardcoded-credentials/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-hardcoded-credentials/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,sBAAsB,GAAG,IAAA,0BAAU,EAA0B;IACxE,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,sDAAsD,EAAE;QAC7E,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,oBAAoB,EAAE,IAAA,gCAAgB,EAAC;gBACrC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,uBAAuB;gBAClC,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,kDAAkD;gBAC/D,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,qDAAqD;gBAC1D,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,8BAAsB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noOperatorInjection: import("@typescript-eslint/utils/ts-eslint").RuleModule<"operatorInjection", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noOperatorInjection;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noOperatorInjection = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-operator-injection/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-operator-injection/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;;;GAMG;AACH,4DAIkC;AAUrB,QAAA,mBAAmB,GAAG,IAAA,0BAAU,EAA0B;IACrE,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,2DAA2D;SACzE;QACD,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,4BAA4B;gBACvC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,+EAA+E;gBAC5F,QAAQ,EAAE,UAAU;gBACpB,GAAG,EAAE,qEAAqE;gBAC1E,iBAAiB,EAAE,iKAAiK;aACrL,CAAC;SACH;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;iBACjD;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM;QACJ,6BAA6B;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC,CAAC;AAEH,kBAAe,2BAAmB,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
sensitiveFields?: string[];
|
|
4
9
|
}
|
|
5
|
-
|
|
10
|
+
type RuleOptions = [Options?];
|
|
11
|
+
export declare const noSelectSensitiveFields: import("@typescript-eslint/utils/ts-eslint").RuleModule<"selectSensitiveFields", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
6
12
|
export default noSelectSensitiveFields;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noSelectSensitiveFields = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-select-sensitive-fields/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-select-sensitive-fields/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,6DAA6D,EAAE;QACpF,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,qBAAqB,EAAE,IAAA,gCAAgB,EAAC;gBACtC,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,0BAA0B;gBACrC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,0DAA0D;gBACvE,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,oEAAoE;gBACzE,iBAAiB,EAAE,qEAAqE;aACzF,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC3L;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC3G,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,+BAAuB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noUnboundedFind: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unboundedFind", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noUnboundedFind;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noUnboundedFind = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unbounded-find/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unbounded-find/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,eAAe,GAAG,IAAA,0BAAU,EAA0B;IACjE,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,gEAAgE,EAAE;QACvF,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,aAAa,EAAE,IAAA,gCAAgB,EAAC;gBAC9B,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,iBAAiB;gBAC5B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,kDAAkD;gBAC/D,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,mDAAmD;gBACxD,iBAAiB,EAAE,oEAAoE;aACxF,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,uBAAe,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noUnsafePopulate: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unsafePopulate", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noUnsafePopulate;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noUnsafePopulate = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-populate/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-populate/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,gBAAgB,GAAG,IAAA,0BAAU,EAA0B;IAClE,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,2DAA2D,EAAE;QAClF,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,cAAc,EAAE,IAAA,gCAAgB,EAAC;gBAC/B,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,mBAAmB;gBAC9B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,mEAAmE;gBAChF,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,oDAAoD;gBACzD,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,wBAAgB,CAAC"}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* ESLint Rule: no-unsafe-query
|
|
8
|
+
* Detects potential NoSQL injection via string concatenation in MongoDB queries.
|
|
9
|
+
* CWE-943: Improper Neutralization of Special Elements in Data Query Logic
|
|
10
|
+
*
|
|
11
|
+
* @see https://cwe.mitre.org/data/definitions/943.html
|
|
12
|
+
* @see https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/05.6-Testing_for_NoSQL_Injection
|
|
13
|
+
*/
|
|
14
|
+
import type { TSESLint } from '@interlace/eslint-devkit';
|
|
15
|
+
type MessageIds = 'unsafeQuery' | 'suggestionUseEq';
|
|
1
16
|
export interface Options {
|
|
2
17
|
/** Allow in test files. Default: true */
|
|
3
18
|
allowInTests?: boolean;
|
|
4
19
|
/** Additional method names to check. Default: [] */
|
|
5
20
|
additionalMethods?: string[];
|
|
6
21
|
}
|
|
7
|
-
|
|
22
|
+
type RuleOptions = [Options?];
|
|
23
|
+
export declare const noUnsafeQuery: TSESLint.RuleModule<MessageIds, RuleOptions, unknown, TSESLint.RuleListener>;
|
|
8
24
|
export default noUnsafeQuery;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noUnsafeQuery = void 0;
|
|
4
9
|
const eslint_devkit_1 = require("@interlace/eslint-devkit");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-query/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-query/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noUnsafeRegexQuery: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unsafeRegex", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noUnsafeRegexQuery;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noUnsafeRegexQuery = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-regex-query/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-regex-query/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,kBAAkB,GAAG,IAAA,0BAAU,EAA0B;IACpE,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,kDAAkD,EAAE;QACzE,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,WAAW,EAAE,IAAA,gCAAgB,EAAC;gBAC5B,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,kBAAkB;gBAC7B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,gEAAgE;gBAC7E,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,qDAAqD;gBAC1D,iBAAiB,EAAE,sFAAsF;aAC1G,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,0BAAkB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const noUnsafeWhere: import("@typescript-eslint/utils/ts-eslint").RuleModule<"unsafeWhere", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default noUnsafeWhere;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.noUnsafeWhere = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-where/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/no-unsafe-where/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;;;GAMG;AACH,4DAIkC;AAUrB,QAAA,aAAa,GAAG,IAAA,0BAAU,EAA0B;IAC/D,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,sDAAsD;SACpE;QACD,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,WAAW,EAAE,IAAA,gCAAgB,EAAC;gBAC5B,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,qBAAqB;gBAChC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,2EAA2E;gBACxF,QAAQ,EAAE,UAAU;gBACpB,GAAG,EAAE,sEAAsE;gBAC3E,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;iBACjD;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM;QACJ,6BAA6B;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC,CAAC;AAEH,kBAAe,qBAAa,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const requireAuthMechanism: import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireAuthMechanism", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default requireAuthMechanism;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.requireAuthMechanism = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-auth-mechanism/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-auth-mechanism/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,oBAAoB,GAAG,IAAA,0BAAU,EAA0B;IACtE,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,2DAA2D,EAAE;QAClF,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,oBAAoB,EAAE,IAAA,gCAAgB,EAAC;gBACrC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,yBAAyB;gBACpC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,0DAA0D;gBACvE,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,8DAA8D;gBACnE,iBAAiB,EAAE,0DAA0D;aAC9E,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,4BAAoB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const requireLeanQueries: import("@typescript-eslint/utils/ts-eslint").RuleModule<"useLean", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default requireLeanQueries;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.requireLeanQueries = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-lean-queries/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-lean-queries/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,kBAAkB,GAAG,IAAA,0BAAU,EAA0B;IACpE,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,gDAAgD,EAAE;QACvE,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAA,gCAAgB,EAAC;gBACxB,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,wBAAwB;gBACnC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,4DAA4D;gBACzE,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,0DAA0D;gBAC/D,iBAAiB,EAAE,iDAAiD;aACrE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,0BAAkB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const requireProjection: import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireProjection", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default requireProjection;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.requireProjection = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-projection/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-projection/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,iBAAiB,GAAG,IAAA,0BAAU,EAA0B;IACnE,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,6CAA6C,EAAE;QACpE,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,iBAAiB,EAAE,IAAA,gCAAgB,EAAC;gBAClC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,oBAAoB;gBAC/B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,6CAA6C;gBAC1D,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,+CAA+C;gBACpD,iBAAiB,EAAE,iFAAiF;aACrG,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,yBAAiB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const requireSchemaValidation: import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireSchemaValidation", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default requireSchemaValidation;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.requireSchemaValidation = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-schema-validation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-schema-validation/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,uBAAuB,GAAG,IAAA,0BAAU,EAA0B;IACzE,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE;QACrE,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,uBAAuB,EAAE,IAAA,gCAAgB,EAAC;gBACxC,IAAI,EAAE,4BAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,2BAA2B;gBACtC,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,wCAAwC;gBACrD,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,yDAAyD;gBAC9D,iBAAiB,EAAE,6CAA6C;aACjE,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,+BAAuB,CAAC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
3
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
4
|
+
* MIT license that can be found in the LICENSE file.
|
|
5
|
+
*/
|
|
1
6
|
export interface Options {
|
|
2
7
|
allowInTests?: boolean;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
type RuleOptions = [Options?];
|
|
10
|
+
export declare const requireTlsConnection: import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireTls", RuleOptions, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
11
|
export default requireTlsConnection;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.requireTlsConnection = void 0;
|
|
4
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-tls-connection/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-mongodb-security/src/rules/require-tls-connection/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH;;;;GAIG;AACH,4DAAsF;AAMzE,QAAA,oBAAoB,GAAG,IAAA,0BAAU,EAA0B;IACtE,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,mDAAmD,EAAE;QAC1E,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,UAAU,EAAE,IAAA,gCAAgB,EAAC;gBAC3B,IAAI,EAAE,4BAAY,CAAC,QAAQ;gBAC3B,SAAS,EAAE,wBAAwB;gBACnC,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,gDAAgD;gBAC7D,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,yCAAyC;gBAC9C,iBAAiB,EAAE,6DAA6D;aACjF,CAAC;SACH;QACD,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;KAC5H;IACD,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;CACxB,CAAC,CAAC;AAEH,kBAAe,4BAAoB,CAAC"}
|
package/src/types/index.d.ts
CHANGED
package/src/types/index.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import type { NoUnsafeQueryOptions } from 'eslint-plugin-mongodb-security/types';
|
|
10
|
-
* ```
|
|
3
|
+
* Copyright (c) 2025 Ofri Peretz
|
|
4
|
+
* Licensed under the MIT License. Use of this source code is governed by the
|
|
5
|
+
* MIT license that can be found in the LICENSE file.
|
|
11
6
|
*/
|
|
12
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
8
|
//# sourceMappingURL=index.js.map
|
package/src/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-mongodb-security/src/types/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-mongodb-security/src/types/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|