@7n/rules 1.36.0 → 1.36.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 +6 -0
- package/package.json +1 -1
- package/rules/text/run-v8r/main.mjs +18 -8
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -131,20 +131,30 @@ const NOISE_LINE_RE = /^(?:ℹ .*|Resolving dependencies|Resolved, downloaded an
|
|
|
131
131
|
*/
|
|
132
132
|
const AJV_SCHEMA_COMPILE_ERROR_RE = /^(?:✖ )?Invalid regular expression:.*$/mu
|
|
133
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Рядок успіху v8r — `✔ <file> is valid` (v8r/src/logger.js#success додає префікс `✔ `).
|
|
136
|
+
* `extractFailureLines` не чіпає ці рядки (не `ℹ`-шум), тож у batch-виклику по glob-у, де v8r
|
|
137
|
+
* валідує кілька файлів за раз, `detail` при крайньому провалі містить і `✔`-успіхи попередніх
|
|
138
|
+
* файлів, і сам провал — інакше `isOnlyAjvSchemaCompileErrors` хибно трактує таку суміш як
|
|
139
|
+
* "мішаний випадок" і не спрацьовує.
|
|
140
|
+
*/
|
|
141
|
+
const AJV_SUCCESS_LINE_RE = /^✔ .+ is valid$/u
|
|
142
|
+
|
|
134
143
|
/**
|
|
135
144
|
* Чи складається `detail` ВИКЛЮЧНО з рядків ajv-помилки компіляції схеми (без жодної genuine
|
|
136
|
-
* validation-помилки)
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* оригінальний `code`/`detail` без змін, щоб не
|
|
140
|
-
*
|
|
141
|
-
* @
|
|
145
|
+
* validation-помилки), ігноруючи `✔`-рядки успіху інших файлів того ж batch-виклику. Навмисно
|
|
146
|
+
* консервативно: якщо серед НЕ-`✔` рядків `detail` є хоч один, що НЕ збігається з
|
|
147
|
+
* `AJV_SCHEMA_COMPILE_ERROR_RE` (напр. "file.yml is invalid" чи ajv `errors[]`-деталь genuine
|
|
148
|
+
* порушення) — не втручаємось, викликач лишає оригінальний `code`/`detail` без змін, щоб не
|
|
149
|
+
* замаскувати реальну проблему.
|
|
150
|
+
* @param {string} detail рядки `✖ …` / `✔ …` з `extractFailureLines`
|
|
151
|
+
* @returns {boolean} true — усі непорожні не-`✔` рядки `detail` є ajv schema-compile-помилками
|
|
142
152
|
*/
|
|
143
153
|
function isOnlyAjvSchemaCompileErrors(detail) {
|
|
144
154
|
const lines = detail
|
|
145
155
|
.split('\n')
|
|
146
156
|
.map(line => line.trim())
|
|
147
|
-
.filter(line => line.length > 0)
|
|
157
|
+
.filter(line => line.length > 0 && !AJV_SUCCESS_LINE_RE.test(line))
|
|
148
158
|
if (lines.length === 0) return false
|
|
149
159
|
return lines.every(line => AJV_SCHEMA_COMPILE_ERROR_RE.test(line))
|
|
150
160
|
}
|
|
@@ -158,7 +168,7 @@ function isOnlyAjvSchemaCompileErrors(detail) {
|
|
|
158
168
|
function reportAjvSchemaCompileFailures(detail) {
|
|
159
169
|
for (const line of detail.split('\n')) {
|
|
160
170
|
const trimmed = line.trim()
|
|
161
|
-
if (trimmed.length === 0) continue
|
|
171
|
+
if (trimmed.length === 0 || AJV_SUCCESS_LINE_RE.test(trimmed)) continue
|
|
162
172
|
process.stdout.write(
|
|
163
173
|
`⚠ run-v8r: зовнішня схема не компілюється в ajv (не файл) — ${trimmed} Ймовірно, ajv unicodeRegExp-несумісність зі старим стилем escape у чужій схемі; помилка не рахується як порушення.\n`
|
|
164
174
|
)
|