@blamejs/core 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/_test/crypto-fixtures.js +3 -3
  3. package/lib/a2a-tasks.js +18 -18
  4. package/lib/a2a.js +4 -4
  5. package/lib/acme.js +3 -3
  6. package/lib/agent-idempotency.js +1 -1
  7. package/lib/agent-orchestrator.js +8 -8
  8. package/lib/agent-posture-chain.js +2 -2
  9. package/lib/agent-saga.js +1 -1
  10. package/lib/agent-snapshot.js +1 -1
  11. package/lib/agent-stream.js +1 -1
  12. package/lib/agent-tenant.js +1 -1
  13. package/lib/agent-trace.js +3 -3
  14. package/lib/ai-capability.js +1 -1
  15. package/lib/ai-dp.js +4 -4
  16. package/lib/ai-input.js +3 -3
  17. package/lib/ai-model-manifest.js +7 -7
  18. package/lib/ai-pref.js +3 -3
  19. package/lib/archive-gz.js +2 -2
  20. package/lib/archive-read.js +25 -25
  21. package/lib/archive-tar-read.js +2 -2
  22. package/lib/archive-tar.js +20 -20
  23. package/lib/archive-wrap.js +10 -10
  24. package/lib/argon2-builtin.js +1 -1
  25. package/lib/asn1-der.js +45 -34
  26. package/lib/atomic-file.js +2 -2
  27. package/lib/audit-daily-review.js +3 -3
  28. package/lib/audit-sign.js +5 -5
  29. package/lib/audit-tools.js +1 -1
  30. package/lib/audit.js +2 -2
  31. package/lib/auth/acr-vocabulary.js +2 -2
  32. package/lib/auth/bot-challenge.js +3 -3
  33. package/lib/auth/ciba.js +7 -7
  34. package/lib/auth/dpop.js +3 -3
  35. package/lib/auth/fido-mds3.js +8 -8
  36. package/lib/auth/jar.js +11 -0
  37. package/lib/auth/jwt-external.js +5 -5
  38. package/lib/auth/oauth.js +7 -9
  39. package/lib/auth/oid4vci.js +10 -10
  40. package/lib/auth/oid4vp.js +2 -2
  41. package/lib/auth/openid-federation.js +2 -2
  42. package/lib/auth/passkey.js +3 -3
  43. package/lib/auth/saml.js +29 -25
  44. package/lib/auth/sd-jwt-vc-disclosure.js +1 -1
  45. package/lib/auth/sd-jwt-vc.js +4 -4
  46. package/lib/auth/status-list.js +10 -10
  47. package/lib/auth/step-up.js +1 -1
  48. package/lib/auth-bot-challenge.js +1 -1
  49. package/lib/backup/index.js +7 -7
  50. package/lib/base32.js +8 -8
  51. package/lib/budr.js +2 -2
  52. package/lib/cache-status.js +2 -2
  53. package/lib/calendar.js +23 -23
  54. package/lib/cbor.js +12 -12
  55. package/lib/cdn-cache-control.js +1 -1
  56. package/lib/cert.js +5 -5
  57. package/lib/cloud-events.js +5 -5
  58. package/lib/cms-codec.js +21 -21
  59. package/lib/codepoint-class.js +12 -12
  60. package/lib/compliance-sanctions-fuzzy.js +4 -4
  61. package/lib/compliance-sanctions.js +4 -4
  62. package/lib/compliance.js +29 -29
  63. package/lib/content-credentials.js +36 -36
  64. package/lib/cookies.js +1 -1
  65. package/lib/cose.js +13 -13
  66. package/lib/cra-report.js +1 -1
  67. package/lib/crdt.js +1 -1
  68. package/lib/crypto-field.js +2 -2
  69. package/lib/crypto-xwing.js +7 -7
  70. package/lib/crypto.js +6 -6
  71. package/lib/csp.js +2 -2
  72. package/lib/cwt.js +4 -4
  73. package/lib/dark-patterns.js +2 -2
  74. package/lib/data-act.js +2 -2
  75. package/lib/db-file-lifecycle.js +4 -4
  76. package/lib/db-query.js +1 -1
  77. package/lib/db.js +6 -6
  78. package/lib/dbsc.js +13 -13
  79. package/lib/did.js +17 -17
  80. package/lib/dora.js +4 -4
  81. package/lib/dsr.js +1 -1
  82. package/lib/early-hints.js +2 -2
  83. package/lib/eat.js +4 -4
  84. package/lib/external-db-migrate.js +1 -1
  85. package/lib/external-db.js +1 -1
  86. package/lib/flag-cache.js +1 -1
  87. package/lib/flag-evaluation-context.js +2 -2
  88. package/lib/graphql-federation.js +4 -4
  89. package/lib/guard-agent-registry.js +5 -5
  90. package/lib/guard-archive.js +24 -24
  91. package/lib/guard-cidr.js +33 -33
  92. package/lib/guard-csv.js +1 -1
  93. package/lib/guard-domain.js +10 -10
  94. package/lib/guard-dsn.js +4 -4
  95. package/lib/guard-email.js +19 -19
  96. package/lib/guard-event-bus-payload.js +4 -4
  97. package/lib/guard-event-bus-topic.js +6 -6
  98. package/lib/guard-filename.js +7 -7
  99. package/lib/guard-graphql.js +9 -9
  100. package/lib/guard-html-wcag-tagwalk.js +1 -1
  101. package/lib/guard-html-wcag.js +4 -4
  102. package/lib/guard-html.js +7 -7
  103. package/lib/guard-idempotency-key.js +6 -6
  104. package/lib/guard-image.js +4 -4
  105. package/lib/guard-imap-command.js +17 -17
  106. package/lib/guard-jmap.js +20 -20
  107. package/lib/guard-json.js +12 -12
  108. package/lib/guard-jsonpath.js +3 -3
  109. package/lib/guard-jwt.js +4 -4
  110. package/lib/guard-list-id.js +7 -7
  111. package/lib/guard-list-unsubscribe.js +8 -8
  112. package/lib/guard-mail-compose.js +4 -4
  113. package/lib/guard-mail-move.js +5 -5
  114. package/lib/guard-mail-query.js +3 -3
  115. package/lib/guard-mail-reply.js +3 -3
  116. package/lib/guard-mail-sieve.js +6 -6
  117. package/lib/guard-managesieve-command.js +25 -25
  118. package/lib/guard-markdown.js +31 -31
  119. package/lib/guard-message-id.js +5 -5
  120. package/lib/guard-mime.js +1 -1
  121. package/lib/guard-oauth.js +3 -3
  122. package/lib/guard-pdf.js +6 -6
  123. package/lib/guard-pop3-command.js +11 -11
  124. package/lib/guard-posture-chain.js +5 -5
  125. package/lib/guard-regex.js +10 -10
  126. package/lib/guard-saga-config.js +5 -5
  127. package/lib/guard-smtp-command.js +6 -6
  128. package/lib/guard-snapshot-envelope.js +3 -3
  129. package/lib/guard-stream-args.js +4 -4
  130. package/lib/guard-svg.js +11 -11
  131. package/lib/guard-tenant-id.js +5 -5
  132. package/lib/guard-time.js +15 -15
  133. package/lib/guard-trace-context.js +4 -4
  134. package/lib/guard-uuid.js +11 -11
  135. package/lib/guard-xml.js +12 -12
  136. package/lib/guard-yaml.js +16 -16
  137. package/lib/honeytoken.js +5 -5
  138. package/lib/http-client.js +1 -1
  139. package/lib/http-message-signature.js +2 -2
  140. package/lib/iab-mspa.js +3 -3
  141. package/lib/iab-tcf.js +70 -70
  142. package/lib/inbox.js +4 -4
  143. package/lib/ip-utils.js +15 -15
  144. package/lib/jose-jwe-experimental.js +2 -2
  145. package/lib/json-path.js +3 -3
  146. package/lib/json-schema.js +1 -1
  147. package/lib/jsonapi.js +3 -3
  148. package/lib/jtd.js +2 -2
  149. package/lib/link-header.js +1 -1
  150. package/lib/local-db-thin.js +1 -1
  151. package/lib/log.js +1 -1
  152. package/lib/lro.js +4 -4
  153. package/lib/mail-agent.js +1 -1
  154. package/lib/mail-arc-sign.js +6 -6
  155. package/lib/mail-auth.js +43 -43
  156. package/lib/mail-bimi.js +3 -3
  157. package/lib/mail-crypto-pgp.js +53 -45
  158. package/lib/mail-crypto-smime.js +5 -5
  159. package/lib/mail-dav.js +1 -1
  160. package/lib/mail-deploy.js +39 -39
  161. package/lib/mail-dkim.js +11 -11
  162. package/lib/mail-greylist.js +12 -12
  163. package/lib/mail-helo.js +1 -1
  164. package/lib/mail-journal.js +8 -8
  165. package/lib/mail-rbl.js +7 -7
  166. package/lib/mail-scan.js +7 -7
  167. package/lib/mail-send-deliver.js +2 -2
  168. package/lib/mail-server-imap.js +12 -12
  169. package/lib/mail-server-jmap.js +16 -16
  170. package/lib/mail-server-managesieve.js +4 -4
  171. package/lib/mail-server-mx.js +17 -17
  172. package/lib/mail-server-pop3.js +4 -4
  173. package/lib/mail-server-rate-limit.js +2 -2
  174. package/lib/mail-server-submission.js +21 -21
  175. package/lib/mail-sieve.js +2 -2
  176. package/lib/mail-spam-score.js +5 -5
  177. package/lib/mail-srs.js +12 -12
  178. package/lib/mail-store-fts.js +2 -2
  179. package/lib/mail-store.js +8 -8
  180. package/lib/mail-unsubscribe.js +4 -4
  181. package/lib/mail.js +4 -4
  182. package/lib/mcp-tool-registry.js +4 -4
  183. package/lib/mcp.js +8 -8
  184. package/lib/mdoc.js +2 -2
  185. package/lib/metrics.js +8 -8
  186. package/lib/middleware/age-gate.js +1 -1
  187. package/lib/middleware/api-encrypt.js +7 -7
  188. package/lib/middleware/assetlinks.js +2 -2
  189. package/lib/middleware/asyncapi-serve.js +2 -2
  190. package/lib/middleware/bearer-auth.js +5 -5
  191. package/lib/middleware/body-parser.js +5 -5
  192. package/lib/middleware/compose-pipeline.js +15 -15
  193. package/lib/middleware/csp-report.js +4 -4
  194. package/lib/middleware/daily-byte-quota.js +1 -1
  195. package/lib/middleware/dpop.js +1 -1
  196. package/lib/middleware/headers.js +2 -2
  197. package/lib/middleware/host-allowlist.js +1 -1
  198. package/lib/middleware/idempotency-key.js +12 -12
  199. package/lib/middleware/nel.js +1 -1
  200. package/lib/middleware/openapi-serve.js +2 -2
  201. package/lib/middleware/protected-resource-metadata.js +2 -2
  202. package/lib/middleware/require-aal.js +1 -1
  203. package/lib/middleware/require-bound-key.js +2 -2
  204. package/lib/middleware/require-content-type.js +1 -1
  205. package/lib/middleware/require-methods.js +1 -1
  206. package/lib/middleware/require-step-up.js +2 -2
  207. package/lib/middleware/scim-server.js +1 -1
  208. package/lib/middleware/security-txt.js +3 -3
  209. package/lib/middleware/tus-upload.js +12 -12
  210. package/lib/middleware/web-app-manifest.js +2 -2
  211. package/lib/network-byte-quota.js +1 -1
  212. package/lib/network-dns-resolver.js +23 -23
  213. package/lib/network-dns.js +29 -29
  214. package/lib/network-dnssec.js +33 -33
  215. package/lib/network-smtp-policy.js +10 -10
  216. package/lib/network-tls.js +99 -94
  217. package/lib/network-tsig.js +33 -33
  218. package/lib/nis2-report.js +1 -1
  219. package/lib/ntp-check.js +3 -3
  220. package/lib/observability-otlp-exporter.js +17 -17
  221. package/lib/observability-tracer.js +6 -6
  222. package/lib/observability.js +8 -8
  223. package/lib/openapi-yaml.js +1 -1
  224. package/lib/openapi.js +1 -1
  225. package/lib/outbox.js +6 -6
  226. package/lib/pqc-agent.js +4 -4
  227. package/lib/pqc-software.js +1 -1
  228. package/lib/privacy-pass.js +5 -5
  229. package/lib/problem-details.js +5 -5
  230. package/lib/promise-pool.js +1 -1
  231. package/lib/protobuf-encoder.js +9 -1
  232. package/lib/queue.js +4 -2
  233. package/lib/redact.js +2 -2
  234. package/lib/request-helpers.js +1 -1
  235. package/lib/router.js +10 -10
  236. package/lib/safe-async.js +2 -2
  237. package/lib/safe-dns.js +71 -71
  238. package/lib/safe-ical.js +19 -19
  239. package/lib/safe-icap.js +24 -24
  240. package/lib/safe-jsonpath.js +2 -2
  241. package/lib/safe-mime.js +10 -10
  242. package/lib/safe-mount-info.js +3 -3
  243. package/lib/safe-redirect.js +1 -1
  244. package/lib/safe-sieve.js +23 -23
  245. package/lib/safe-smtp.js +1 -1
  246. package/lib/safe-vcard.js +14 -14
  247. package/lib/sandbox.js +5 -5
  248. package/lib/sec-cyber.js +1 -1
  249. package/lib/self-update-standalone-verifier.js +3 -3
  250. package/lib/self-update.js +3 -3
  251. package/lib/server-timing.js +3 -3
  252. package/lib/session-device-binding.js +7 -7
  253. package/lib/session.js +8 -8
  254. package/lib/standard-webhooks.js +4 -4
  255. package/lib/storage.js +2 -2
  256. package/lib/stream-throttle.js +1 -1
  257. package/lib/structured-fields.js +15 -15
  258. package/lib/subject.js +1 -1
  259. package/lib/tcpa-10dlc.js +1 -1
  260. package/lib/tenant-quota.js +3 -3
  261. package/lib/test-harness.js +1 -1
  262. package/lib/tracing.js +1 -1
  263. package/lib/tsa.js +5 -5
  264. package/lib/uri-template.js +5 -5
  265. package/lib/vault/index.js +2 -2
  266. package/lib/vault/seal-pem-file.js +4 -4
  267. package/lib/vc.js +2 -2
  268. package/lib/vendor-data.js +1 -1
  269. package/lib/watcher.js +4 -4
  270. package/lib/web-push-vapid.js +21 -21
  271. package/lib/webhook.js +2 -2
  272. package/lib/websocket.js +3 -3
  273. package/lib/worker-pool.js +3 -3
  274. package/lib/ws-client.js +24 -24
  275. package/lib/xml-c14n.js +2 -2
  276. package/package.json +1 -1
  277. package/sbom.cdx.json +6 -6
@@ -39,9 +39,9 @@ var GuardMailSieveError = defineClass("GuardMailSieveError", { alwaysPermanent:
39
39
  var DEFAULT_PROFILE = "strict";
40
40
 
41
41
  var PROFILES = Object.freeze({
42
- strict: { maxScriptBytes: 65536, maxNameBytes: 256, maxLines: 2000 }, // allow:raw-byte-literal
43
- balanced: { maxScriptBytes: 262144, maxNameBytes: 256, maxLines: 10000 }, // allow:raw-byte-literal
44
- permissive: { maxScriptBytes: 1048576, maxNameBytes: 1024, maxLines: 50000 }, // allow:raw-byte-literal
42
+ strict: { maxScriptBytes: 65536, maxNameBytes: 256, maxLines: 2000 },
43
+ balanced: { maxScriptBytes: 262144, maxNameBytes: 256, maxLines: 10000 },
44
+ permissive: { maxScriptBytes: 1048576, maxNameBytes: 1024, maxLines: 50000 },
45
45
  });
46
46
 
47
47
  var COMPLIANCE_POSTURES = Object.freeze({
@@ -112,7 +112,7 @@ function validate(op, opts) {
112
112
  // but blows up later parser stages; refuse here).
113
113
  var lineCount = 1;
114
114
  for (var i = 0; i < op.script.length; i += 1) {
115
- if (op.script.charCodeAt(i) === 0x0A) lineCount += 1; // allow:raw-byte-literal — LF
115
+ if (op.script.charCodeAt(i) === 0x0A) lineCount += 1; // LF
116
116
  }
117
117
  if (lineCount > profile.maxLines) {
118
118
  throw new GuardMailSieveError("mail-sieve/too-many-lines",
@@ -123,7 +123,7 @@ function validate(op, opts) {
123
123
  // text-only per RFC 5228 §1.4).
124
124
  for (var j = 0; j < op.script.length; j += 1) {
125
125
  var c = op.script.charCodeAt(j);
126
- if (c === 0x00 || (c < 0x20 && c !== 0x09 && c !== 0x0A && c !== 0x0D) || c === 0x7F) { // allow:raw-byte-literal — NUL / C0 except TAB/LF/CR / DEL refusal
126
+ if (c === 0x00 || (c < 0x20 && c !== 0x09 && c !== 0x0A && c !== 0x0D) || c === 0x7F) { // NUL / C0 except TAB/LF/CR / DEL refusal
127
127
  throw new GuardMailSieveError("mail-sieve/control-char-in-script",
128
128
  "guardMailSieve.validate: control char 0x" + c.toString(16) + " at offset " + j);
129
129
  }
@@ -177,7 +177,7 @@ function _checkName(name, profile) {
177
177
  }
178
178
  for (var i = 0; i < name.length; i += 1) {
179
179
  var c = name.charCodeAt(i);
180
- if (c < 0x20 || c === 0x7F || c === 0x2F || c === 0x5C) { // allow:raw-byte-literal — C0 / DEL / slash / backslash refusal
180
+ if (c < 0x20 || c === 0x7F || c === 0x2F || c === 0x5C) { // C0 / DEL / slash / backslash refusal
181
181
  throw new GuardMailSieveError("mail-sieve/bad-name-char",
182
182
  "guardMailSieve.validate: op.name contains forbidden char 0x" + c.toString(16));
183
183
  }
@@ -109,25 +109,25 @@ var DEFAULT_PROFILE = "strict";
109
109
 
110
110
  var PROFILES = Object.freeze({
111
111
  strict: {
112
- maxLineBytes: 8192, // allow:raw-byte-literal — 8 KiB per-line cap (strict)
113
- maxScriptBytes: 65536, // allow:raw-byte-literal — 64 KiB script cap (matches safeSieve strict)
114
- maxScriptNameBytes: 512, // allow:raw-byte-literal — RFC 5804 §2.1 script-name cap
112
+ maxLineBytes: 8192, // 8 KiB per-line cap (strict)
113
+ maxScriptBytes: 65536, // 64 KiB script cap (matches safeSieve strict)
114
+ maxScriptNameBytes: 512, // RFC 5804 §2.1 script-name cap
115
115
  allowBareLf: false,
116
116
  allowCleartextAuth: false,
117
- allowLiteralPlus: true, // RFC 7888 LITERAL+ accepted under strict (operator MAY refuse via opts.allowLiteralPlus=false) // allow:raw-byte-literal — RFC number
117
+ allowLiteralPlus: true, // RFC 7888 LITERAL+ accepted under strict (operator MAY refuse via opts.allowLiteralPlus=false) // RFC number
118
118
  },
119
119
  balanced: {
120
- maxLineBytes: 16384, // allow:raw-byte-literal — 16 KiB per-line cap (balanced)
121
- maxScriptBytes: 262144, // allow:raw-byte-literal — 256 KiB script cap (matches safeSieve balanced)
122
- maxScriptNameBytes: 512, // allow:raw-byte-literal — RFC 5804 §2.1 script-name cap
120
+ maxLineBytes: 16384, // 16 KiB per-line cap (balanced)
121
+ maxScriptBytes: 262144, // 256 KiB script cap (matches safeSieve balanced)
122
+ maxScriptNameBytes: 512, // RFC 5804 §2.1 script-name cap
123
123
  allowBareLf: false,
124
124
  allowCleartextAuth: false,
125
125
  allowLiteralPlus: true,
126
126
  },
127
127
  permissive: {
128
- maxLineBytes: 65536, // allow:raw-byte-literal — 64 KiB per-line cap (permissive)
129
- maxScriptBytes: 1048576, // allow:raw-byte-literal — 1 MiB script cap (matches safeSieve permissive)
130
- maxScriptNameBytes: 512, // allow:raw-byte-literal — RFC 5804 §2.1 script-name cap
128
+ maxLineBytes: 65536, // 64 KiB per-line cap (permissive)
129
+ maxScriptBytes: 1048576, // 1 MiB script cap (matches safeSieve permissive)
130
+ maxScriptNameBytes: 512, // RFC 5804 §2.1 script-name cap
131
131
  allowBareLf: true,
132
132
  allowCleartextAuth: true,
133
133
  allowLiteralPlus: true,
@@ -231,16 +231,16 @@ function validate(line, opts) {
231
231
  var inQuote = false;
232
232
  for (var i = 0; i < line.length; i += 1) {
233
233
  var c = line.charCodeAt(i);
234
- if (c === 0x22 && !_isEscaped(line, i)) { // allow:raw-byte-literal — DQUOTE
234
+ if (c === 0x22 && !_isEscaped(line, i)) { // DQUOTE
235
235
  inQuote = !inQuote;
236
236
  continue;
237
237
  }
238
238
  if (inQuote) continue;
239
- if (c === 0x00 || c === 0x7F || (c < 0x20 && c !== 0x09)) { // allow:raw-byte-literal — control-byte refusal
239
+ if (c === 0x00 || c === 0x7F || (c < 0x20 && c !== 0x09)) { // control-byte refusal
240
240
  if (c === 0x0A && caps.allowBareLf) continue;
241
241
  throw new GuardManageSieveCommandError("guard-managesieve-command/bad-byte",
242
242
  "guardManageSieveCommand.validate: control byte 0x" +
243
- c.toString(16) + " at offset " + i); // allow:raw-byte-literal — base-16 toString radix
243
+ c.toString(16) + " at offset " + i); // base-16 toString radix
244
244
  }
245
245
  }
246
246
  if (inQuote) {
@@ -322,7 +322,7 @@ function _validateAuthenticate(rest, caps, profileName, opts) {
322
322
  // Base64-initial-response cap: bound by the script-name cap
323
323
  // (initial-response is a SASL token, not a script body; 4 KiB
324
324
  // is generous).
325
- if (n > 4096) { // allow:raw-byte-literal — 4 KiB SASL initial-response cap
325
+ if (n > 4096) { // 4 KiB SASL initial-response cap
326
326
  throw new GuardManageSieveCommandError("guard-managesieve-command/literal-too-large",
327
327
  "guardManageSieveCommand.validate: AUTHENTICATE initial-response " +
328
328
  n + " bytes exceeds 4096-byte cap");
@@ -463,26 +463,26 @@ function _validateRenamescript(rest, caps) {
463
463
  // Returns null if `s` does not begin with a DQUOTE. RFC 5804 §1.2
464
464
  // quoted strings allow UTF-8 content and `\"` / `\\` escape sequences.
465
465
  function _parseQuotedString(s) {
466
- if (s.length === 0 || s.charCodeAt(0) !== 0x22) return null; // allow:raw-byte-literal — DQUOTE
466
+ if (s.length === 0 || s.charCodeAt(0) !== 0x22) return null; // DQUOTE
467
467
  var out = "";
468
468
  var i = 1;
469
469
  while (i < s.length) {
470
470
  var c = s.charCodeAt(i);
471
- if (c === 0x5C) { // allow:raw-byte-literal — backslash escape
471
+ if (c === 0x5C) { // backslash escape
472
472
  if (i + 1 >= s.length) return null;
473
473
  var esc = s.charCodeAt(i + 1);
474
- if (esc === 0x22) { out += '"'; i += 2; continue; } // allow:raw-byte-literal — DQUOTE
475
- if (esc === 0x5C) { out += "\\"; i += 2; continue; } // allow:raw-byte-literal — backslash
474
+ if (esc === 0x22) { out += '"'; i += 2; continue; } // DQUOTE
475
+ if (esc === 0x5C) { out += "\\"; i += 2; continue; } // backslash
476
476
  return null;
477
477
  }
478
- if (c === 0x22) { // allow:raw-byte-literal — closing DQUOTE
478
+ if (c === 0x22) { // closing DQUOTE
479
479
  var rest = s.slice(i + 1);
480
480
  // Trim leading whitespace from rest.
481
481
  var k = 0;
482
- while (k < rest.length && (rest.charCodeAt(k) === 0x20 || rest.charCodeAt(k) === 0x09)) k += 1; // allow:raw-byte-literal — SP / HTAB
482
+ while (k < rest.length && (rest.charCodeAt(k) === 0x20 || rest.charCodeAt(k) === 0x09)) k += 1; // SP / HTAB
483
483
  return { value: out, rest: rest.slice(k) };
484
484
  }
485
- if (c === 0x00 || c === 0x0D || c === 0x0A) return null; // allow:raw-byte-literal — NUL/CR/LF refused in quoted strings
485
+ if (c === 0x00 || c === 0x0D || c === 0x0A) return null; // NUL/CR/LF refused in quoted strings
486
486
  out += s[i];
487
487
  i += 1;
488
488
  }
@@ -495,7 +495,7 @@ function _parseQuotedString(s) {
495
495
  function _isEscaped(line, i) {
496
496
  var n = 0;
497
497
  var j = i - 1;
498
- while (j >= 0 && line.charCodeAt(j) === 0x5C) { n += 1; j -= 1; } // allow:raw-byte-literal — backslash count
498
+ while (j >= 0 && line.charCodeAt(j) === 0x5C) { n += 1; j -= 1; } // backslash count
499
499
  return (n & 1) === 1;
500
500
  }
501
501
 
@@ -513,12 +513,12 @@ function _checkScriptName(name, caps) {
513
513
  _checkScriptNameBytes(name, caps);
514
514
  for (var i = 0; i < name.length; i += 1) {
515
515
  var c = name.charCodeAt(i);
516
- if (c === 0x2F || c === 0x5C) { // allow:raw-byte-literal — forward-slash + backslash refused
516
+ if (c === 0x2F || c === 0x5C) { // forward-slash + backslash refused
517
517
  throw new GuardManageSieveCommandError("guard-managesieve-command/bad-name-byte",
518
518
  "guardManageSieveCommand.validate: script-name byte 0x" +
519
- c.toString(16) + " refused (RFC 5804 §2.1)"); // allow:raw-byte-literal — base-16 toString radix
519
+ c.toString(16) + " refused (RFC 5804 §2.1)"); // base-16 toString radix
520
520
  }
521
- if (c === 0x00) { // allow:raw-byte-literal — NUL refused
521
+ if (c === 0x00) { // NUL refused
522
522
  throw new GuardManageSieveCommandError("guard-managesieve-command/bad-name-byte",
523
523
  "guardManageSieveCommand.validate: NUL byte refused in script-name (RFC 5804 §2.1)");
524
524
  }
@@ -100,8 +100,8 @@ var EMPH_RUN_RE = /[*_]{20,}/;
100
100
 
101
101
  function _decodeHtmlEntities(s) {
102
102
  return s.replace(HTML_ENTITY_NUM_RE, function (match, hex, dec) {
103
- var code = hex !== undefined ? parseInt(hex, 16) : parseInt(dec, 10); // allow:raw-byte-literal — parseInt radix args (16 hex / 10 decimal)
104
- if (!isFinite(code) || code < 0 || code > 0x10ffff) return match; // allow:raw-byte-literal — Unicode codepoint range
103
+ var code = hex !== undefined ? parseInt(hex, 16) : parseInt(dec, 10); // parseInt radix args (16 hex / 10 decimal)
104
+ if (!isFinite(code) || code < 0 || code > 0x10ffff) return match; // Unicode codepoint range
105
105
  try { return String.fromCodePoint(code); } catch (_e) { return match; }
106
106
  });
107
107
  }
@@ -118,7 +118,7 @@ function _isDangerousUrl(url, opts) {
118
118
  var stripped = "";
119
119
  for (var ci = 0; ci < s.length; ci += 1) {
120
120
  var cc = s.charCodeAt(ci);
121
- if (cc > 0x1f && cc !== 0x7f) stripped += s.charAt(ci); // allow:raw-byte-literal — ASCII control range thresholds
121
+ if (cc > 0x1f && cc !== 0x7f) stripped += s.charAt(ci); // ASCII control range thresholds
122
122
  }
123
123
  s = stripped;
124
124
  if (DANGEROUS_SCHEME_RE.test(s)) return s.match(/^[a-z]+/i)[0].toLowerCase(); // allow:regex-no-length-cap — `s` is a markdown URL token already bounded by the inline-link / autolink / ref-def matchers (which themselves run on input bounded by maxBytes)
@@ -147,13 +147,13 @@ var PROFILES = Object.freeze({
147
147
  nullBytePolicy: "reject",
148
148
  zeroWidthPolicy: "reject",
149
149
  maxBytes: C.BYTES.mib(1),
150
- maxLines: 4096, // allow:raw-byte-literal — line count cap
151
- maxLinks: 256, // allow:raw-byte-literal — link count cap
152
- maxImages: 128, // allow:raw-byte-literal — image count cap
153
- maxAutolinks: 128, // allow:raw-byte-literal — autolink count cap
154
- maxRefDefs: 64, // allow:raw-byte-literal — ref-def count cap
155
- maxListDepth: 16, // allow:raw-byte-literal — nesting depth
156
- maxBlockquoteDepth: 16, // allow:raw-byte-literal — nesting depth
150
+ maxLines: 4096, // line count cap
151
+ maxLinks: 256, // link count cap
152
+ maxImages: 128, // image count cap
153
+ maxAutolinks: 128, // autolink count cap
154
+ maxRefDefs: 64, // ref-def count cap
155
+ maxListDepth: 16, // nesting depth
156
+ maxBlockquoteDepth: 16, // nesting depth
157
157
  },
158
158
  "balanced": {
159
159
  rawHtmlPolicy: "audit",
@@ -173,13 +173,13 @@ var PROFILES = Object.freeze({
173
173
  nullBytePolicy: "strip",
174
174
  zeroWidthPolicy: "strip",
175
175
  maxBytes: C.BYTES.mib(8),
176
- maxLines: 32768, // allow:raw-byte-literal — line count cap
177
- maxLinks: 2048, // allow:raw-byte-literal — link count cap
178
- maxImages: 1024, // allow:raw-byte-literal — image count cap
179
- maxAutolinks: 1024, // allow:raw-byte-literal — autolink count cap
180
- maxRefDefs: 512, // allow:raw-byte-literal — ref-def count cap
181
- maxListDepth: 64, // allow:raw-byte-literal — nesting depth
182
- maxBlockquoteDepth: 64, // allow:raw-byte-literal — nesting depth
176
+ maxLines: 32768, // line count cap
177
+ maxLinks: 2048, // link count cap
178
+ maxImages: 1024, // image count cap
179
+ maxAutolinks: 1024, // autolink count cap
180
+ maxRefDefs: 512, // ref-def count cap
181
+ maxListDepth: 64, // nesting depth
182
+ maxBlockquoteDepth: 64, // nesting depth
183
183
  },
184
184
  "permissive": {
185
185
  rawHtmlPolicy: "allow",
@@ -199,13 +199,13 @@ var PROFILES = Object.freeze({
199
199
  nullBytePolicy: "reject",
200
200
  zeroWidthPolicy: "audit",
201
201
  maxBytes: C.BYTES.mib(64),
202
- maxLines: 262144, // allow:raw-byte-literal — line count cap
203
- maxLinks: 16384, // allow:raw-byte-literal — link count cap
204
- maxImages: 8192, // allow:raw-byte-literal — image count cap
205
- maxAutolinks: 8192, // allow:raw-byte-literal — autolink count cap
206
- maxRefDefs: 4096, // allow:raw-byte-literal — ref-def count cap
207
- maxListDepth: 256, // allow:raw-byte-literal — nesting depth
208
- maxBlockquoteDepth: 256, // allow:raw-byte-literal — nesting depth
202
+ maxLines: 262144, // line count cap
203
+ maxLinks: 16384, // link count cap
204
+ maxImages: 8192, // image count cap
205
+ maxAutolinks: 8192, // autolink count cap
206
+ maxRefDefs: 4096, // ref-def count cap
207
+ maxListDepth: 256, // nesting depth
208
+ maxBlockquoteDepth: 256, // nesting depth
209
209
  },
210
210
  });
211
211
 
@@ -261,7 +261,7 @@ function _detectIssues(input, opts) {
261
261
  // Line count cap — line-based parsers scale O(lines).
262
262
  var lineCount = 0;
263
263
  for (var li = 0; li < input.length; li += 1) {
264
- if (input.charCodeAt(li) === 10) lineCount += 1; // allow:raw-byte-literal — newline char code
264
+ if (input.charCodeAt(li) === 10) lineCount += 1; // newline char code
265
265
  }
266
266
  if (lineCount > opts.maxLines) {
267
267
  issues.push({
@@ -342,7 +342,7 @@ function _detectIssues(input, opts) {
342
342
  snippet: (isImage ? "image" : "link") +
343
343
  " uses dangerous scheme '" + scheme + ":'",
344
344
  });
345
- if (issues.length > 256) break; // allow:raw-byte-literal — issue accumulator cap
345
+ if (issues.length > 256) break; // issue accumulator cap
346
346
  }
347
347
  if (linkCount > opts.maxLinks) {
348
348
  issues.push({
@@ -372,7 +372,7 @@ function _detectIssues(input, opts) {
372
372
  ruleId: "markdown.autolink-scheme",
373
373
  snippet: "autolink uses dangerous scheme '" + aScheme + ":'",
374
374
  });
375
- if (issues.length > 256) break; // allow:raw-byte-literal — issue accumulator cap
375
+ if (issues.length > 256) break; // issue accumulator cap
376
376
  }
377
377
  if (autolinkCount > opts.maxAutolinks) {
378
378
  issues.push({
@@ -398,7 +398,7 @@ function _detectIssues(input, opts) {
398
398
  snippet: "reference-link definition uses dangerous scheme '" +
399
399
  rScheme + ":' (smuggled through `[ref]` text)",
400
400
  });
401
- if (issues.length > 256) break; // allow:raw-byte-literal — issue accumulator cap
401
+ if (issues.length > 256) break; // issue accumulator cap
402
402
  }
403
403
  if (refDefCount > opts.maxRefDefs) {
404
404
  issues.push({
@@ -422,9 +422,9 @@ function _detectIssues(input, opts) {
422
422
  severity: opts.codeFenceLangPolicy === "reject" ? "critical" : "high",
423
423
  ruleId: "markdown.code-fence-lang",
424
424
  snippet: "code-fence language tag contains attribute-breaking " +
425
- "characters: " + JSON.stringify(lang.slice(0, 64)), // allow:raw-byte-literal — snippet truncation
425
+ "characters: " + JSON.stringify(lang.slice(0, 64)), // snippet truncation
426
426
  });
427
- if (issues.length > 256) break; // allow:raw-byte-literal — issue accumulator cap
427
+ if (issues.length > 256) break; // issue accumulator cap
428
428
  }
429
429
  }
430
430
  }
@@ -458,7 +458,7 @@ function _detectIssues(input, opts) {
458
458
  var marker = line.charAt(leading);
459
459
  if (marker === "-" || marker === "*" || marker === "+" ||
460
460
  (marker >= "0" && marker <= "9")) {
461
- var depth = Math.floor(leading / 2); // allow:raw-byte-literal — markdown convention: 2 spaces per nest level
461
+ var depth = Math.floor(leading / 2); // markdown convention: 2 spaces per nest level
462
462
  if (depth > maxListDepthSeen) maxListDepthSeen = depth;
463
463
  }
464
464
  }
@@ -56,9 +56,9 @@ var GuardMessageIdError = defineClass("GuardMessageIdError", { alwaysPermanent:
56
56
  var DEFAULT_PROFILE = "strict";
57
57
 
58
58
  var PROFILES = Object.freeze({
59
- strict: { requireBrackets: true, maxBytes: 998 }, // allow:raw-byte-literal
60
- balanced: { requireBrackets: false, maxBytes: 998 }, // allow:raw-byte-literal
61
- permissive: { requireBrackets: false, maxBytes: 4096 }, // allow:raw-byte-literal — permissive cap, not bytes-as-storage
59
+ strict: { requireBrackets: true, maxBytes: 998 },
60
+ balanced: { requireBrackets: false, maxBytes: 998 },
61
+ permissive: { requireBrackets: false, maxBytes: 4096 }, // permissive cap, not bytes-as-storage
62
62
  });
63
63
 
64
64
  var COMPLIANCE_POSTURES = Object.freeze({
@@ -130,7 +130,7 @@ function validate(value, opts) {
130
130
  // CR/LF into a Message-Id to fold an attacker-chosen From: line).
131
131
  for (var i = 0; i < value.length; i += 1) {
132
132
  var c = value.charCodeAt(i);
133
- if (c < 0x20 || c === 0x7F) { // allow:raw-byte-literal — C0 + DEL refusal
133
+ if (c < 0x20 || c === 0x7F) { // C0 + DEL refusal
134
134
  throw new GuardMessageIdError("message-id/control-char",
135
135
  "guardMessageId.validate: control char 0x" + c.toString(16) + " at offset " + i);
136
136
  }
@@ -209,7 +209,7 @@ function validate(value, opts) {
209
209
  */
210
210
  function validateList(value, opts) {
211
211
  opts = opts || {};
212
- var maxIds = typeof opts.maxIds === "number" ? opts.maxIds : 100; // allow:raw-byte-literal — References-chain cap, not bytes
212
+ var maxIds = typeof opts.maxIds === "number" ? opts.maxIds : 100; // References-chain cap, not bytes
213
213
  if (typeof value !== "string") {
214
214
  throw new GuardMessageIdError("message-id/bad-input",
215
215
  "guardMessageId.validateList: value must be a string");
package/lib/guard-mime.js CHANGED
@@ -58,7 +58,7 @@ var TOKEN_RE = /^[A-Za-z0-9][A-Za-z0-9!#$&\-^_.+]{0,126}$/;
58
58
  var PARAM_TOKEN_RE = safeBuffer.RFC7230_TCHAR_RE;
59
59
 
60
60
  // Quoted-string body (between double quotes) per RFC 7230 §3.2.6.
61
- var QUOTED_STRING_BODY_RE = /^[\t\x20-\x7e]*$/; // allow:raw-byte-literal — printable ASCII range
61
+ var QUOTED_STRING_BODY_RE = /^[\t\x20-\x7e]*$/; // printable ASCII range
62
62
 
63
63
  // Risky-type refuse list (operator-supplied scripts handed to a host).
64
64
  var RISKY_TYPES = Object.freeze([
@@ -91,7 +91,7 @@ void observability;
91
91
 
92
92
  var _err = GuardOauthError.factory;
93
93
 
94
- var SCOPE_TOKEN_RE = /^[\x21\x23-\x5b\x5d-\x7e]+$/; // allow:raw-byte-literal — RFC 6749 §3.3 scope-token charset
94
+ var SCOPE_TOKEN_RE = /^[\x21\x23-\x5b\x5d-\x7e]+$/; // RFC 6749 §3.3 scope-token charset
95
95
  var DEFAULT_RESPONSE_TYPES = Object.freeze(["code"]);
96
96
 
97
97
  // ---- Profile presets ----
@@ -612,7 +612,7 @@ module.exports = {
612
612
  redirect_uri: "https://app.example.com/callback",
613
613
  state: "csrf-rand-1",
614
614
  scope: "openid profile",
615
- code_challenge: "abc123def456ghi789jkl012mno345pqr678", // allow:raw-byte-literal — base64url-shaped fixture
615
+ code_challenge: "abc123def456ghi789jkl012mno345pqr678", // base64url-shaped fixture
616
616
  code_challenge_method: "S256",
617
617
  }), "utf8"),
618
618
  hostileBytes: Buffer.from(JSON.stringify({
@@ -626,7 +626,7 @@ module.exports = {
626
626
  redirect_uri: "https://app.example.com/callback",
627
627
  state: "csrf-rand-1",
628
628
  scope: "openid profile",
629
- code_challenge: "abc123def456ghi789jkl012mno345pqr678", // allow:raw-byte-literal — base64url-shaped fixture
629
+ code_challenge: "abc123def456ghi789jkl012mno345pqr678", // base64url-shaped fixture
630
630
  code_challenge_method: "S256",
631
631
  },
632
632
  hostileOauthFlow: {
package/lib/guard-pdf.js CHANGED
@@ -95,8 +95,8 @@ var PROFILES = Object.freeze({
95
95
  polyglotPolicy: "reject",
96
96
  pageCountPolicy: "reject",
97
97
  embeddedFileCountPolicy: "reject",
98
- maxPageCount: 500, // allow:raw-byte-literal — page-count ceiling
99
- maxEmbeddedFileCount: 0, // allow:raw-byte-literal — strict refuses any embedded file
98
+ maxPageCount: 500, // page-count ceiling
99
+ maxEmbeddedFileCount: 0, // strict refuses any embedded file
100
100
  maxBytes: C.BYTES.mib(64),
101
101
  maxRuntimeMs: C.TIME.seconds(5),
102
102
  },
@@ -110,8 +110,8 @@ var PROFILES = Object.freeze({
110
110
  polyglotPolicy: "reject", // polyglot refused at every profile
111
111
  pageCountPolicy: "audit",
112
112
  embeddedFileCountPolicy: "audit",
113
- maxPageCount: 5000, // allow:raw-byte-literal — page-count ceiling
114
- maxEmbeddedFileCount: 10, // allow:raw-byte-literal — embedded file ceiling
113
+ maxPageCount: 5000, // page-count ceiling
114
+ maxEmbeddedFileCount: 10, // embedded file ceiling
115
115
  maxBytes: C.BYTES.mib(128),
116
116
  maxRuntimeMs: C.TIME.seconds(5),
117
117
  },
@@ -125,8 +125,8 @@ var PROFILES = Object.freeze({
125
125
  polyglotPolicy: "reject", // polyglot refused at every profile
126
126
  pageCountPolicy: "audit",
127
127
  embeddedFileCountPolicy: "audit",
128
- maxPageCount: 50000, // allow:raw-byte-literal — page-count ceiling
129
- maxEmbeddedFileCount: 100, // allow:raw-byte-literal — embedded file ceiling
128
+ maxPageCount: 50000, // page-count ceiling
129
+ maxEmbeddedFileCount: 100, // embedded file ceiling
130
130
  maxBytes: C.BYTES.mib(512),
131
131
  maxRuntimeMs: C.TIME.seconds(5),
132
132
  },
@@ -81,23 +81,23 @@ var DEFAULT_PROFILE = "strict";
81
81
 
82
82
  var PROFILES = Object.freeze({
83
83
  strict: {
84
- maxLineBytes: 255, // allow:raw-byte-literal — RFC 2449 §4 cap
85
- maxUsernameBytes: 40, // allow:raw-byte-literal — RFC 1939 §3 cap
86
- maxPasswordBytes: 40, // allow:raw-byte-literal — RFC 1939 §3 cap
84
+ maxLineBytes: 255, // RFC 2449 §4 cap
85
+ maxUsernameBytes: 40, // RFC 1939 §3 cap
86
+ maxPasswordBytes: 40, // RFC 1939 §3 cap
87
87
  allowBareLf: false,
88
88
  allowApop: false, // RFC 1939 §7 — legacy challenge-response with MD5; refuse under strict (M³AAWG)
89
89
  },
90
90
  balanced: {
91
- maxLineBytes: 512, // allow:raw-byte-literal — RFC 2449 §4 response cap
92
- maxUsernameBytes: 128, // allow:raw-byte-literal — balanced username cap
93
- maxPasswordBytes: 128, // allow:raw-byte-literal — balanced password cap
91
+ maxLineBytes: 512, // RFC 2449 §4 response cap
92
+ maxUsernameBytes: 128, // balanced username cap
93
+ maxPasswordBytes: 128, // balanced password cap
94
94
  allowBareLf: false,
95
95
  allowApop: true,
96
96
  },
97
97
  permissive: {
98
- maxLineBytes: 1024, // allow:raw-byte-literal — permissive cap for legacy peers
99
- maxUsernameBytes: 256, // allow:raw-byte-literal — permissive username cap
100
- maxPasswordBytes: 256, // allow:raw-byte-literal — permissive password cap
98
+ maxLineBytes: 1024, // permissive cap for legacy peers
99
+ maxUsernameBytes: 256, // permissive username cap
100
+ maxPasswordBytes: 256, // permissive password cap
101
101
  allowBareLf: true,
102
102
  allowApop: true,
103
103
  },
@@ -173,10 +173,10 @@ function validate(line, opts) {
173
173
  }
174
174
  for (var i = 0; i < line.length; i += 1) {
175
175
  var c = line.charCodeAt(i);
176
- if (c === 0x00 || c === 0x7F || (c < 0x20 && c !== 0x09)) { // allow:raw-byte-literal — control-byte refusal
176
+ if (c === 0x00 || c === 0x7F || (c < 0x20 && c !== 0x09)) { // control-byte refusal
177
177
  if (c === 0x0A && caps.allowBareLf) continue;
178
178
  throw new GuardPop3CommandError("guard-pop3-command/bad-byte",
179
- "guardPop3Command.validate: control byte 0x" + c.toString(16) + " at offset " + i); // allow:raw-byte-literal — hex format literal in error message
179
+ "guardPop3Command.validate: control byte 0x" + c.toString(16) + " at offset " + i); // hex format literal in error message
180
180
  }
181
181
  }
182
182
 
@@ -32,9 +32,9 @@ var GuardPostureChainError = defineClass("GuardPostureChainError", { alwaysPerma
32
32
  var DEFAULT_PROFILE = "strict";
33
33
 
34
34
  var PROFILES = Object.freeze({
35
- strict: { maxHops: 16, maxHopBytes: 64, maxRegimes: 8 }, // allow:raw-byte-literal
36
- balanced: { maxHops: 32, maxHopBytes: 128, maxRegimes: 16 }, // allow:raw-byte-literal
37
- permissive: { maxHops: 128, maxHopBytes: 256, maxRegimes: 64 }, // allow:raw-byte-literal
35
+ strict: { maxHops: 16, maxHopBytes: 64, maxRegimes: 8 },
36
+ balanced: { maxHops: 32, maxHopBytes: 128, maxRegimes: 16 },
37
+ permissive: { maxHops: 128, maxHopBytes: 256, maxRegimes: 64 },
38
38
  });
39
39
 
40
40
  var COMPLIANCE_POSTURES = Object.freeze({
@@ -119,11 +119,11 @@ function validate(envelope, opts) {
119
119
  }
120
120
  for (var hi = 0; hi < hop.length; hi += 1) {
121
121
  var hc = hop.charCodeAt(hi);
122
- if (hc > 0x7F) { // allow:raw-byte-literal — ASCII-only
122
+ if (hc > 0x7F) { // ASCII-only
123
123
  throw new GuardPostureChainError("posture-chain/non-ascii-hop",
124
124
  "guardPostureChain.validate: chainTrail[" + h + "] has non-ASCII codepoint");
125
125
  }
126
- if (hc < 0x20 || hc === 0x7F) { // allow:raw-byte-literal — C0/DEL
126
+ if (hc < 0x20 || hc === 0x7F) { // C0/DEL
127
127
  throw new GuardPostureChainError("posture-chain/bad-hop-char",
128
128
  "guardPostureChain.validate: chainTrail[" + h + "] has forbidden char 0x" + hc.toString(16));
129
129
  }
@@ -93,8 +93,8 @@ var PROFILES = Object.freeze({
93
93
  consecutiveStarPolicy: "reject",
94
94
  nestedExtglobPolicy: "reject",
95
95
  inputKind: "regex", // CVE-2026-26996 + CVE-2026-33671 detectors apply only when inputKind=="glob"
96
- maxBoundedRepeat: 100, // allow:raw-byte-literal — bounded repeat ceiling
97
- maxConsecutiveStars: 2, // allow:raw-byte-literal — `**` recursive glob permitted; >=3 refused
96
+ maxBoundedRepeat: 100, // bounded repeat ceiling
97
+ maxConsecutiveStars: 2, // `**` recursive glob permitted; >=3 refused
98
98
  maxPatternBytes: C.BYTES.kib(1),
99
99
  maxBytes: C.BYTES.kib(1),
100
100
  maxRuntimeMs: C.TIME.seconds(2),
@@ -110,8 +110,8 @@ var PROFILES = Object.freeze({
110
110
  lookaroundQuantPolicy: "audit",
111
111
  consecutiveStarPolicy: "reject", // CVE-2026-26996 refused at every profile
112
112
  nestedExtglobPolicy: "reject", // CVE-2026-33671 refused at every profile
113
- maxBoundedRepeat: 1000, // allow:raw-byte-literal — bounded repeat ceiling
114
- maxConsecutiveStars: 2, // allow:raw-byte-literal — `**` recursive glob permitted; >=3 refused
113
+ maxBoundedRepeat: 1000, // bounded repeat ceiling
114
+ maxConsecutiveStars: 2, // `**` recursive glob permitted; >=3 refused
115
115
  maxPatternBytes: C.BYTES.kib(2),
116
116
  maxBytes: C.BYTES.kib(2),
117
117
  maxRuntimeMs: C.TIME.seconds(2),
@@ -127,8 +127,8 @@ var PROFILES = Object.freeze({
127
127
  lookaroundQuantPolicy: "audit",
128
128
  consecutiveStarPolicy: "reject", // CVE-2026-26996 refused at every profile
129
129
  nestedExtglobPolicy: "reject", // CVE-2026-33671 refused at every profile
130
- maxBoundedRepeat: 10000, // allow:raw-byte-literal — bounded repeat ceiling
131
- maxConsecutiveStars: 2, // allow:raw-byte-literal — `**` recursive glob permitted; >=3 refused
130
+ maxBoundedRepeat: 10000, // bounded repeat ceiling
131
+ maxConsecutiveStars: 2, // `**` recursive glob permitted; >=3 refused
132
132
  maxPatternBytes: C.BYTES.kib(8),
133
133
  maxBytes: C.BYTES.kib(8),
134
134
  maxRuntimeMs: C.TIME.seconds(2),
@@ -223,9 +223,9 @@ function _detectIssues(input, opts) {
223
223
  BOUNDED_REPEAT_RE.lastIndex = 0;
224
224
  var match;
225
225
  while ((match = BOUNDED_REPEAT_RE.exec(input)) !== null) { // allow:regex-no-length-cap — input bounded by maxPatternBytes
226
- var lower = parseInt(match[1], 10); // allow:raw-byte-literal — base-10 radix
226
+ var lower = parseInt(match[1], 10); // base-10 radix
227
227
  var upper = match[2] === undefined ? lower :
228
- match[2] === "" ? Infinity : parseInt(match[2], 10); // allow:raw-byte-literal — base-10 radix
228
+ match[2] === "" ? Infinity : parseInt(match[2], 10); // base-10 radix
229
229
  var ceiling = (upper === Infinity || upper > lower) ? upper : lower;
230
230
  if (ceiling > opts.maxBoundedRepeat) {
231
231
  issues.push({
@@ -273,7 +273,7 @@ function _detectConsecutiveStar(input, opts, issues) {
273
273
  }
274
274
  }
275
275
  var starCeiling = opts.maxConsecutiveStars === undefined ?
276
- 2 : opts.maxConsecutiveStars; // allow:raw-byte-literal — `**` glob ceiling
276
+ 2 : opts.maxConsecutiveStars; // `**` glob ceiling
277
277
  if (starRunMax > starCeiling) {
278
278
  issues.push({
279
279
  kind: "consecutive-star",
@@ -315,7 +315,7 @@ function _detectNestedExtglob(input, opts, issues) {
315
315
  }
316
316
  heads.push(idx);
317
317
  scanFrom = idx + 1;
318
- if (heads.length > 1024) break; // allow:raw-byte-literal — head-count safety cap
318
+ if (heads.length > 1024) break; // head-count safety cap
319
319
  }
320
320
  var nested = false;
321
321
  for (var hi = 0; hi < heads.length && !nested; hi += 1) {
@@ -22,9 +22,9 @@ var GuardSagaConfigError = defineClass("GuardSagaConfigError", { alwaysPermanent
22
22
  var DEFAULT_PROFILE = "strict";
23
23
 
24
24
  var PROFILES = Object.freeze({
25
- strict: { maxSteps: 32, maxNameBytes: 64 }, // allow:raw-byte-literal
26
- balanced: { maxSteps: 128, maxNameBytes: 128 }, // allow:raw-byte-literal
27
- permissive: { maxSteps: 512, maxNameBytes: 256 }, // allow:raw-byte-literal
25
+ strict: { maxSteps: 32, maxNameBytes: 64 },
26
+ balanced: { maxSteps: 128, maxNameBytes: 128 },
27
+ permissive: { maxSteps: 512, maxNameBytes: 256 },
28
28
  });
29
29
 
30
30
  var COMPLIANCE_POSTURES = Object.freeze({
@@ -72,11 +72,11 @@ function validate(config, opts) {
72
72
  }
73
73
  for (var i = 0; i < config.name.length; i += 1) {
74
74
  var c = config.name.charCodeAt(i);
75
- if (c > 0x7F) { // allow:raw-byte-literal — ASCII-only
75
+ if (c > 0x7F) { // ASCII-only
76
76
  throw new GuardSagaConfigError("saga-config/non-ascii-name",
77
77
  "guardSagaConfig.validate: name has non-ASCII codepoint at offset " + i);
78
78
  }
79
- if (c < 0x20 || c === 0x7F) { // allow:raw-byte-literal — C0/DEL
79
+ if (c < 0x20 || c === 0x7F) { // C0/DEL
80
80
  throw new GuardSagaConfigError("saga-config/bad-name-char",
81
81
  "guardSagaConfig.validate: name has forbidden char 0x" + c.toString(16));
82
82
  }
@@ -98,9 +98,9 @@ var DEFAULT_PROFILE = "strict";
98
98
  // CRLF). SMTPUTF8 / EAI extends this in practice; balanced/permissive
99
99
  // raise the cap accordingly.
100
100
  var PROFILES = Object.freeze({
101
- strict: { maxLineBytes: 512, maxMailbox: 256, maxLocalPart: 64, maxDomain: 255, allowBareLf: false, allowSmtpUtf8: false }, // allow:raw-byte-literal — RFC 5321 §4.5.3.1.1 caps
102
- balanced: { maxLineBytes: 1024, maxMailbox: 320, maxLocalPart: 64, maxDomain: 255, allowBareLf: false, allowSmtpUtf8: true }, // allow:raw-byte-literal — SMTPUTF8 (RFC 6531) line cap
103
- permissive: { maxLineBytes: 4096, maxMailbox: 512, maxLocalPart: 64, maxDomain: 255, allowBareLf: true, allowSmtpUtf8: true }, // allow:raw-byte-literal — permissive cap for legacy peers
101
+ strict: { maxLineBytes: 512, maxMailbox: 256, maxLocalPart: 64, maxDomain: 255, allowBareLf: false, allowSmtpUtf8: false }, // RFC 5321 §4.5.3.1.1 caps
102
+ balanced: { maxLineBytes: 1024, maxMailbox: 320, maxLocalPart: 64, maxDomain: 255, allowBareLf: false, allowSmtpUtf8: true }, // SMTPUTF8 (RFC 6531) line cap
103
+ permissive: { maxLineBytes: 4096, maxMailbox: 512, maxLocalPart: 64, maxDomain: 255, allowBareLf: true, allowSmtpUtf8: true }, // permissive cap for legacy peers
104
104
  });
105
105
 
106
106
  var COMPLIANCE_POSTURES = Object.freeze({
@@ -191,12 +191,12 @@ function validate(line, opts) {
191
191
  // bare-LF refusal earlier in this fn. Skip the control-char throw
192
192
  // so the documented allowBareLf path actually accepts LF (Codex
193
193
  // caught this: permissive profile was effectively broken).
194
- if (c === 0x0a && caps.allowBareLf) continue; // allow:raw-byte-literal — RFC 5321 §2.3.8 LF, permissive bypass
195
- if (c < 0x20 || c === 0x7f) { // allow:raw-byte-literal — RFC 5321 §2.3.8 forbids C0 / DEL
194
+ if (c === 0x0a && caps.allowBareLf) continue; // RFC 5321 §2.3.8 LF, permissive bypass
195
+ if (c < 0x20 || c === 0x7f) { // RFC 5321 §2.3.8 forbids C0 / DEL
196
196
  throw new GuardSmtpCommandError("guard-smtp-command/control-char",
197
197
  "guardSmtpCommand.validate: control char 0x" + c.toString(16) + " refused");
198
198
  }
199
- if (!caps.allowSmtpUtf8 && c > 0x7e) { // allow:raw-byte-literal — RFC 5321 §2.3.1 7-bit ASCII; SMTPUTF8 relaxes
199
+ if (!caps.allowSmtpUtf8 && c > 0x7e) { // RFC 5321 §2.3.1 7-bit ASCII; SMTPUTF8 relaxes
200
200
  throw new GuardSmtpCommandError("guard-smtp-command/non-ascii",
201
201
  "guardSmtpCommand.validate: non-ASCII byte refused (no SMTPUTF8 negotiated)");
202
202
  }