af360 0.1.15 → 0.1.16

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 (275) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +141 -130
  3. package/dist/.next/app-path-routes-manifest.json +18 -18
  4. package/dist/.next/build-manifest.json +5 -5
  5. package/dist/.next/prerender-manifest.json +49 -49
  6. package/dist/.next/server/app/_not-found/page.js +2 -2
  7. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/_not-found.html +1 -1
  10. package/dist/.next/server/app/_not-found.meta +8 -0
  11. package/dist/.next/server/app/_not-found.rsc +3 -3
  12. package/dist/.next/server/app/ahead/page.js +2 -2
  13. package/dist/.next/server/app/ahead/page.js.nft.json +1 -1
  14. package/dist/.next/server/app/ahead/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/ahead.html +1 -1
  16. package/dist/.next/server/app/ahead.meta +8 -0
  17. package/dist/.next/server/app/ahead.rsc +4 -4
  18. package/dist/.next/server/app/api/browse/route.js +1 -1
  19. package/dist/.next/server/app/api/browse/route.js.nft.json +1 -1
  20. package/dist/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/api/card/route.js +1 -1
  22. package/dist/.next/server/app/api/card/route.js.nft.json +1 -1
  23. package/dist/.next/server/app/api/card/route_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/api/check/route.js +1 -1
  25. package/dist/.next/server/app/api/check/route.js.nft.json +1 -1
  26. package/dist/.next/server/app/api/check/route_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/api/config/route.js +1 -1
  28. package/dist/.next/server/app/api/config/route.js.nft.json +1 -1
  29. package/dist/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/api/connections/route.js +3 -3
  31. package/dist/.next/server/app/api/connections/route.js.nft.json +1 -1
  32. package/dist/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/api/connectors/github/route.js +1 -1
  34. package/dist/.next/server/app/api/connectors/github/route.js.nft.json +1 -1
  35. package/dist/.next/server/app/api/connectors/github/route_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/api/consent/route.js +1 -1
  37. package/dist/.next/server/app/api/consent/route.js.nft.json +1 -1
  38. package/dist/.next/server/app/api/consent/route_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/api/context/route.js +3 -3
  40. package/dist/.next/server/app/api/context/route.js.nft.json +1 -1
  41. package/dist/.next/server/app/api/context/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/api/discover/route.js +1 -1
  43. package/dist/.next/server/app/api/discover/route.js.nft.json +1 -1
  44. package/dist/.next/server/app/api/discover/route_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/api/expiry/route.js +1 -1
  46. package/dist/.next/server/app/api/expiry/route.js.nft.json +1 -1
  47. package/dist/.next/server/app/api/expiry/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/api/first-light/route.js +1 -1
  49. package/dist/.next/server/app/api/first-light/route.js.nft.json +1 -1
  50. package/dist/.next/server/app/api/first-light/route_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/api/handoff/route.js +1 -1
  52. package/dist/.next/server/app/api/handoff/route.js.nft.json +1 -1
  53. package/dist/.next/server/app/api/handoff/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/api/health/route.js +1 -1
  55. package/dist/.next/server/app/api/health/route.js.nft.json +1 -1
  56. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/api/incidents/route.js +1 -1
  58. package/dist/.next/server/app/api/incidents/route.js.nft.json +1 -1
  59. package/dist/.next/server/app/api/incidents/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/api/insights/route.js +1 -1
  61. package/dist/.next/server/app/api/insights/route.js.nft.json +1 -1
  62. package/dist/.next/server/app/api/insights/route_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/api/log/route.js +1 -1
  64. package/dist/.next/server/app/api/log/route.js.nft.json +1 -1
  65. package/dist/.next/server/app/api/log/route_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/api/pulse/route.js +1 -1
  67. package/dist/.next/server/app/api/pulse/route.js.nft.json +1 -1
  68. package/dist/.next/server/app/api/pulse/route_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/api/radar/route.js +1 -1
  70. package/dist/.next/server/app/api/radar/route.js.nft.json +1 -1
  71. package/dist/.next/server/app/api/radar/route_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/api/report/route.js +1 -1
  73. package/dist/.next/server/app/api/report/route.js.nft.json +1 -1
  74. package/dist/.next/server/app/api/report/route_client-reference-manifest.js +1 -1
  75. package/dist/.next/server/app/api/services/route.js +1 -1
  76. package/dist/.next/server/app/api/services/route.js.nft.json +1 -1
  77. package/dist/.next/server/app/api/services/route_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/api/status/route.js +1 -1
  79. package/dist/.next/server/app/api/status/route.js.nft.json +1 -1
  80. package/dist/.next/server/app/api/status/route_client-reference-manifest.js +1 -1
  81. package/dist/.next/server/app/connections/page.js +2 -2
  82. package/dist/.next/server/app/connections/page.js.nft.json +1 -1
  83. package/dist/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/connections.html +1 -1
  85. package/dist/.next/server/app/connections.meta +8 -0
  86. package/dist/.next/server/app/connections.rsc +4 -4
  87. package/dist/.next/server/app/dashboard/page.js +2 -2
  88. package/dist/.next/server/app/dashboard/page.js.nft.json +1 -1
  89. package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/dashboard.html +1 -1
  91. package/dist/.next/server/app/dashboard.meta +8 -0
  92. package/dist/.next/server/app/dashboard.rsc +3 -3
  93. package/dist/.next/server/app/discoveries/page.js +2 -2
  94. package/dist/.next/server/app/discoveries/page.js.nft.json +1 -1
  95. package/dist/.next/server/app/discoveries/page_client-reference-manifest.js +1 -1
  96. package/dist/.next/server/app/discoveries.html +1 -1
  97. package/dist/.next/server/app/discoveries.meta +8 -0
  98. package/dist/.next/server/app/discoveries.rsc +4 -4
  99. package/dist/.next/server/app/expiry/page.js +2 -2
  100. package/dist/.next/server/app/expiry/page.js.nft.json +1 -1
  101. package/dist/.next/server/app/expiry/page_client-reference-manifest.js +1 -1
  102. package/dist/.next/server/app/expiry.html +1 -1
  103. package/dist/.next/server/app/expiry.meta +8 -0
  104. package/dist/.next/server/app/expiry.rsc +3 -3
  105. package/dist/.next/server/app/fleet/page.js +2 -2
  106. package/dist/.next/server/app/fleet/page.js.nft.json +1 -1
  107. package/dist/.next/server/app/fleet/page_client-reference-manifest.js +1 -1
  108. package/dist/.next/server/app/fleet.html +1 -1
  109. package/dist/.next/server/app/fleet.meta +8 -0
  110. package/dist/.next/server/app/fleet.rsc +3 -3
  111. package/dist/.next/server/app/home/page.js +2 -2
  112. package/dist/.next/server/app/home/page.js.nft.json +1 -1
  113. package/dist/.next/server/app/home/page_client-reference-manifest.js +1 -1
  114. package/dist/.next/server/app/home.html +1 -1
  115. package/dist/.next/server/app/home.meta +8 -0
  116. package/dist/.next/server/app/home.rsc +3 -3
  117. package/dist/.next/server/app/legal/privacy/page.js +2 -2
  118. package/dist/.next/server/app/legal/privacy/page.js.nft.json +1 -1
  119. package/dist/.next/server/app/legal/privacy/page_client-reference-manifest.js +1 -1
  120. package/dist/.next/server/app/legal/terms/page.js +2 -2
  121. package/dist/.next/server/app/legal/terms/page.js.nft.json +1 -1
  122. package/dist/.next/server/app/legal/terms/page_client-reference-manifest.js +1 -1
  123. package/dist/.next/server/app/log/page.js +2 -2
  124. package/dist/.next/server/app/log/page.js.nft.json +1 -1
  125. package/dist/.next/server/app/log/page_client-reference-manifest.js +1 -1
  126. package/dist/.next/server/app/log.html +1 -1
  127. package/dist/.next/server/app/log.meta +8 -0
  128. package/dist/.next/server/app/log.rsc +4 -4
  129. package/dist/.next/server/app/page.js +2 -2
  130. package/dist/.next/server/app/page.js.nft.json +1 -1
  131. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/projects/page.js +2 -2
  133. package/dist/.next/server/app/projects/page.js.nft.json +1 -1
  134. package/dist/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/projects.html +1 -1
  136. package/dist/.next/server/app/projects.meta +8 -0
  137. package/dist/.next/server/app/projects.rsc +4 -4
  138. package/dist/.next/server/app/radar/page.js +2 -2
  139. package/dist/.next/server/app/radar/page.js.nft.json +1 -1
  140. package/dist/.next/server/app/radar/page_client-reference-manifest.js +1 -1
  141. package/dist/.next/server/app/radar.html +1 -1
  142. package/dist/.next/server/app/radar.meta +8 -0
  143. package/dist/.next/server/app/radar.rsc +4 -4
  144. package/dist/.next/server/app/report/page.js +2 -2
  145. package/dist/.next/server/app/report/page.js.nft.json +1 -1
  146. package/dist/.next/server/app/report/page_client-reference-manifest.js +1 -1
  147. package/dist/.next/server/app/report.html +1 -1
  148. package/dist/.next/server/app/report.meta +8 -0
  149. package/dist/.next/server/app/report.rsc +4 -4
  150. package/dist/.next/server/app/settings/page.js +2 -2
  151. package/dist/.next/server/app/settings/page.js.nft.json +1 -1
  152. package/dist/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  153. package/dist/.next/server/app/settings.html +1 -1
  154. package/dist/.next/server/app/settings.meta +8 -0
  155. package/dist/.next/server/app/settings.rsc +4 -4
  156. package/dist/.next/server/app/sites/page.js +2 -2
  157. package/dist/.next/server/app/sites/page.js.nft.json +1 -1
  158. package/dist/.next/server/app/sites/page_client-reference-manifest.js +1 -1
  159. package/dist/.next/server/app/sites.html +1 -1
  160. package/dist/.next/server/app/sites.meta +8 -0
  161. package/dist/.next/server/app/sites.rsc +4 -4
  162. package/dist/.next/server/app/welcome/page.js +2 -2
  163. package/dist/.next/server/app/welcome/page.js.nft.json +1 -1
  164. package/dist/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  165. package/dist/.next/server/app/welcome.html +1 -1
  166. package/dist/.next/server/app/welcome.meta +8 -0
  167. package/dist/.next/server/app/welcome.rsc +4 -4
  168. package/dist/.next/server/app-paths-manifest.json +18 -18
  169. package/dist/.next/server/chunks/1155.js +1 -0
  170. package/dist/.next/server/chunks/1232.js +1 -0
  171. package/dist/.next/server/chunks/2346.js +1 -1
  172. package/dist/.next/server/chunks/2465.js +20 -20
  173. package/dist/.next/server/chunks/2817.js +1 -1
  174. package/dist/.next/server/chunks/3897.js +22 -0
  175. package/dist/.next/server/chunks/4134.js +1 -1
  176. package/dist/.next/server/chunks/5277.js +1 -0
  177. package/dist/.next/server/chunks/5611.js +1 -1
  178. package/dist/.next/server/chunks/572.js +1 -1
  179. package/dist/.next/server/chunks/6992.js +1 -1
  180. package/dist/.next/server/chunks/7511.js +1 -1
  181. package/dist/.next/server/chunks/7719.js +1 -1
  182. package/dist/.next/server/chunks/8150.js +1 -1
  183. package/dist/.next/server/chunks/8549.js +1 -1
  184. package/dist/.next/server/chunks/9655.js +11 -0
  185. package/dist/.next/server/middleware-build-manifest.js +1 -1
  186. package/dist/.next/server/middleware-manifest.json +5 -5
  187. package/dist/.next/server/pages/404.html +1 -1
  188. package/dist/.next/server/pages/500.html +1 -1
  189. package/dist/.next/server/pages/_document.js.nft.json +1 -1
  190. package/dist/.next/server/pages/_error.js +3 -3
  191. package/dist/.next/server/pages/_error.js.nft.json +1 -1
  192. package/dist/.next/server/pages-manifest.json +1 -1
  193. package/dist/.next/server/server-reference-manifest.json +1 -1
  194. package/dist/.next/static/chunks/1255-5cd2fe06309409a0.js +1 -0
  195. package/dist/.next/static/chunks/2619-3c9e02e22d10480a.js +1 -0
  196. package/dist/.next/static/chunks/3192-7e153722ff079fc6.js +1 -0
  197. package/dist/.next/static/chunks/{7897-b9c15e8805df61ef.js → 7897-52f8a153c1970ef0.js} +1 -1
  198. package/dist/.next/static/chunks/8050-6c17ccfd85ac3208.js +1 -0
  199. package/dist/.next/static/chunks/app/ahead/{page-75602559f92be6c4.js → page-f5789a03967af6e1.js} +1 -1
  200. package/dist/.next/static/chunks/app/connections/{page-ff9d0b4e4fcf5ebe.js → page-5b833f9485623b92.js} +1 -1
  201. package/dist/.next/static/chunks/app/discoveries/{page-6b06c0c2a94f3b94.js → page-337bb60e4cbdcebb.js} +1 -1
  202. package/dist/.next/static/chunks/app/{error-c67c297ef2dd70de.js → error-b32d8c6d4bfa070e.js} +1 -1
  203. package/dist/.next/static/chunks/app/{layout-d14e087b541b48b1.js → layout-0f3f0098b5d1e6be.js} +1 -1
  204. package/dist/.next/static/chunks/app/log/{page-842048c36f071dd6.js → page-1711fe02581c58e8.js} +1 -1
  205. package/dist/.next/static/chunks/app/projects/page-b05c7b0c3284db79.js +1 -0
  206. package/dist/.next/static/chunks/app/radar/page-2c972e78ae153706.js +1 -0
  207. package/dist/.next/static/chunks/app/report/page-6bd98ca320f3730c.js +1 -0
  208. package/dist/.next/static/chunks/app/settings/{page-582279bf3fe509d4.js → page-d50e8193d000c9be.js} +1 -1
  209. package/dist/.next/static/chunks/app/sites/page-80cc0a08ae2339a8.js +1 -0
  210. package/dist/.next/static/chunks/app/welcome/{page-d26225bed7e1ad39.js → page-f2cd15c4b50942bc.js} +1 -1
  211. package/dist/.next/static/chunks/main-8e42304858de4a63.js +1 -0
  212. package/dist/.next/static/css/5ddef273a3ac3217.css +1 -0
  213. package/dist/build-id.json +225 -223
  214. package/dist/node_modules/@next/env/package.json +1 -1
  215. package/dist/node_modules/next/dist/build/swc/index.js +1 -1
  216. package/dist/node_modules/next/dist/build/webpack-config.js +2 -2
  217. package/dist/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
  218. package/dist/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
  219. package/dist/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +13 -13
  220. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +13 -13
  221. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +10 -10
  222. package/dist/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +11 -11
  223. package/dist/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
  224. package/dist/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +9 -9
  225. package/dist/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +8 -8
  226. package/dist/node_modules/next/dist/server/base-server.js +2 -5
  227. package/dist/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
  228. package/dist/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  229. package/dist/node_modules/next/dist/server/image-optimizer.js +46 -3
  230. package/dist/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  231. package/dist/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +180 -19
  232. package/dist/node_modules/next/dist/server/lib/incremental-cache/index.js +36 -17
  233. package/dist/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +3 -3
  234. package/dist/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +14 -6
  235. package/dist/node_modules/next/dist/server/lib/match-next-data-pathname.js +3 -1
  236. package/dist/node_modules/next/dist/server/lib/node-fs-methods.js +14 -0
  237. package/dist/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
  238. package/dist/node_modules/next/dist/server/lib/start-server.js +1 -1
  239. package/dist/node_modules/next/dist/server/next-server.js +8 -6
  240. package/dist/node_modules/next/dist/server/response-cache/index.js +31 -15
  241. package/dist/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +2 -2
  242. package/dist/node_modules/next/dist/server/route-modules/pages/pages-handler.js +6 -1
  243. package/dist/node_modules/next/dist/server/route-modules/route-module.js +9 -2
  244. package/dist/node_modules/next/dist/shared/lib/canary-only.js +1 -1
  245. package/dist/node_modules/next/dist/shared/lib/router/utils/app-paths.js +17 -1
  246. package/dist/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  247. package/dist/node_modules/next/dist/telemetry/events/version.js +2 -2
  248. package/dist/node_modules/next/package.json +11 -11
  249. package/dist/node_modules/source-map-js/lib/quick-sort.js +10 -1
  250. package/dist/node_modules/source-map-js/lib/source-map-consumer.js +51 -3
  251. package/dist/node_modules/source-map-js/lib/source-map-generator.js +6 -4
  252. package/dist/node_modules/source-map-js/lib/source-node.js +7 -0
  253. package/dist/node_modules/source-map-js/package.json +1 -1
  254. package/dist/package.json +3 -3
  255. package/dist/shell/bin/af360-bridge.exe +0 -0
  256. package/docs/legal/PRIVACY.md +1 -1
  257. package/lib/mask.mjs +21 -1
  258. package/package.json +3 -3
  259. package/scripts/mcp-server.mjs +19 -9
  260. package/shell/bin/af360-bridge.exe +0 -0
  261. package/dist/.next/server/chunks/1331.js +0 -22
  262. package/dist/.next/server/chunks/4825.js +0 -1
  263. package/dist/.next/server/chunks/8134.js +0 -11
  264. package/dist/.next/server/chunks/9946.js +0 -1
  265. package/dist/.next/static/chunks/1255-fc6c00ab2f765339.js +0 -1
  266. package/dist/.next/static/chunks/3192-40ade9877c89ec45.js +0 -1
  267. package/dist/.next/static/chunks/8050-a75457e83cd8be0f.js +0 -1
  268. package/dist/.next/static/chunks/app/projects/page-1d6b330842a2ff80.js +0 -1
  269. package/dist/.next/static/chunks/app/radar/page-584b42327baac21b.js +0 -1
  270. package/dist/.next/static/chunks/app/report/page-9dc52d7f76569e42.js +0 -1
  271. package/dist/.next/static/chunks/app/sites/page-3dcc5a0990fae677.js +0 -1
  272. package/dist/.next/static/chunks/main-574ae5bf2f2165c4.js +0 -1
  273. package/dist/.next/static/css/9b639a814d15c5ff.css +0 -1
  274. /package/dist/.next/static/{4602553707d90d0fadeba → be31a391928486d5659f1}/_buildManifest.js +0 -0
  275. /package/dist/.next/static/{4602553707d90d0fadeba → be31a391928486d5659f1}/_ssgManifest.js +0 -0
@@ -11,6 +11,14 @@ var ArraySet = require('./array-set').ArraySet;
11
11
  var base64VLQ = require('./base64-vlq');
12
12
  var quickSort = require('./quick-sort').quickSort;
13
13
 
14
+ // Upper bound for a section's `offset.line` in an indexed source map. A flat
15
+ // map spends one ';' per generated line, so a tiny indexed map with a huge
16
+ // offset.line turns into a huge amount of work and memory once its mappings
17
+ // are copied into a SourceMapGenerator (CVE-2026-93749). Ten million lines is
18
+ // far beyond any real generated file. Columns are VLQ-encoded as deltas and
19
+ // don't amplify, so they only need to be valid integers.
20
+ var MAX_SECTION_OFFSET_LINE = 1e7;
21
+
14
22
  function SourceMapConsumer(aSourceMap, aSourceMapURL) {
15
23
  var sourceMap = aSourceMap;
16
24
  if (typeof aSourceMap === 'string') {
@@ -935,6 +943,7 @@ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
935
943
  line: -1,
936
944
  column: 0
937
945
  };
946
+ var maxOffsetLine = 0;
938
947
  this._sections = sections.map(function (s) {
939
948
  if (s.url) {
940
949
  // The url field will require support for asynchronicity.
@@ -945,12 +954,32 @@ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
945
954
  var offsetLine = util.getArg(offset, 'line');
946
955
  var offsetColumn = util.getArg(offset, 'column');
947
956
 
957
+ if (!isValidOffset(offsetLine) || !isValidOffset(offsetColumn)) {
958
+ throw new Error('Section offset line and column must be non-negative integers.');
959
+ }
960
+ if (offsetLine > MAX_SECTION_OFFSET_LINE) {
961
+ throw new Error('Section offset line must not exceed ' + MAX_SECTION_OFFSET_LINE + '.');
962
+ }
963
+
948
964
  if (offsetLine < lastOffset.line ||
949
965
  (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
950
966
  throw new Error('Section offsets must be ordered and non-overlapping.');
951
967
  }
952
968
  lastOffset = offset;
953
969
 
970
+ var consumer = new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL);
971
+
972
+ // Offsets of a nested indexed map add up with this one, so apply the
973
+ // bound to the total.
974
+ var totalOffsetLine = offsetLine + (consumer._maxOffsetLine || 0);
975
+ if (totalOffsetLine > MAX_SECTION_OFFSET_LINE) {
976
+ throw new Error('Section offset line must not exceed ' + MAX_SECTION_OFFSET_LINE +
977
+ ', including offsets of nested sections.');
978
+ }
979
+ if (totalOffsetLine > maxOffsetLine) {
980
+ maxOffsetLine = totalOffsetLine;
981
+ }
982
+
954
983
  return {
955
984
  generatedOffset: {
956
985
  // The offset fields are 0-based, but we use 1-based indices when
@@ -958,9 +987,24 @@ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
958
987
  generatedLine: offsetLine + 1,
959
988
  generatedColumn: offsetColumn + 1
960
989
  },
961
- consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)
990
+ consumer: consumer
962
991
  }
963
992
  });
993
+
994
+ // The largest offset.line of any section, including nested sections.
995
+ this._maxOffsetLine = maxOffsetLine;
996
+ }
997
+
998
+ /**
999
+ * Section offsets come from untrusted input and are used as line/column
1000
+ * numbers, so only accept non-negative safe integers (rejects NaN, Infinity,
1001
+ * strings, fractions, etc).
1002
+ */
1003
+ function isValidOffset(aValue) {
1004
+ return typeof aValue === 'number' &&
1005
+ aValue >= 0 &&
1006
+ aValue <= 9007199254740991 && // Number.MAX_SAFE_INTEGER
1007
+ Math.floor(aValue) === aValue;
964
1008
  }
965
1009
 
966
1010
  IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
@@ -978,8 +1022,12 @@ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
978
1022
  get: function () {
979
1023
  var sources = [];
980
1024
  for (var i = 0; i < this._sections.length; i++) {
981
- for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
982
- sources.push(this._sections[i].consumer.sources[j]);
1025
+ // Read the getter once per section: for a nested indexed map it is
1026
+ // itself this getter, and re-reading it per item is exponential in the
1027
+ // nesting depth (CVE-2026-93749).
1028
+ var sectionSources = this._sections[i].consumer.sources;
1029
+ for (var j = 0; j < sectionSources.length; j++) {
1030
+ sources.push(sectionSources[j]);
983
1031
  }
984
1032
  }
985
1033
  return sources;
@@ -348,10 +348,12 @@ SourceMapGenerator.prototype._serializeMappings =
348
348
 
349
349
  if (mapping.generatedLine !== previousGeneratedLine) {
350
350
  previousGeneratedColumn = 0;
351
- while (mapping.generatedLine !== previousGeneratedLine) {
352
- next += ';';
353
- previousGeneratedLine++;
354
- }
351
+ // One ';' per skipped line. Build large gaps with a single flat
352
+ // string: appending ';' one by one creates a rope node per line, which
353
+ // can exhaust the heap for a big gap (CVE-2026-93749).
354
+ var lineDelta = mapping.generatedLine - previousGeneratedLine;
355
+ next += lineDelta === 1 ? ';' : ';'.repeat(lineDelta);
356
+ previousGeneratedLine = mapping.generatedLine;
355
357
  }
356
358
  else {
357
359
  if (i > 0) {
@@ -113,6 +113,13 @@ SourceNode.fromStringWithSourceMap =
113
113
  // to the SourceNode without any mapping.
114
114
  // Each line is added as separate string.
115
115
  while (lastGeneratedLine < mapping.generatedLine) {
116
+ if (remainingLinesIndex >= remainingLines.length) {
117
+ // The generated code is exhausted. Skip the rest instead of adding
118
+ // empty lines one by one: a mapping may point far past the end of
119
+ // the code (e.g. an indexed map section with a huge offset.line).
120
+ lastGeneratedLine = mapping.generatedLine;
121
+ break;
122
+ }
116
123
  node.add(shiftNextLine());
117
124
  lastGeneratedLine++;
118
125
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "source-map-js",
3
3
  "description": "Generates and consumes source maps",
4
- "version": "1.2.1",
4
+ "version": "1.2.2",
5
5
  "homepage": "https://github.com/7rulnik/source-map-js",
6
6
  "author": "Valentin 7rulnik Semirulnik <v7rulnik@gmail.com>",
7
7
  "contributors": [
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "af360",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "Watches the things you have built - folders, repos and sites - and tells you what needs you. Runs entirely on your own machine.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Afeleos LLC",
@@ -60,13 +60,13 @@
60
60
  },
61
61
  "overrides": {
62
62
  "postcss": "^8.5.23",
63
- "sharp": "^0.35.0"
63
+ "sharp": "^0.35.5"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/node": "^22.0.0",
67
67
  "@types/react": "^19.0.0",
68
68
  "@types/react-dom": "^19.2.4",
69
- "next": "^15.5.24",
69
+ "next": "^15.5.27",
70
70
  "react": "^19.0.0",
71
71
  "react-dom": "^19.0.0",
72
72
  "typescript": "^5.6.0"
Binary file
@@ -8,7 +8,7 @@
8
8
  af360 reads the folders you choose to watch and the websites you choose to watch. It reads them to tell you what is going on; it never changes anything inside them.
9
9
 
10
10
  ## What af360 keeps, and where
11
- Everything af360 remembers lives in one folder on your machine: `C:\Users\<your name>\.af360`. That is your settings, your list of watched folders and sites, and af360's own log of what it looked at and when. The log covers the last seven days. Older entries stop being shown at once, and are deleted from the file within a day. af360 itself copies nothing off the machine.
11
+ Everything af360 remembers lives in one folder on your machine: `C:\Users\<your name>\.af360`. That is your settings, your list of watched folders and sites, and af360's own log of what it looked at and when. The log covers the last seven days. Older entries stop being shown at once, and are deleted from the file within a day. The same folder holds `launch.log`, which records only the steps of each start of af360 - when it started and how far it got - holds nothing from your folders or sites, and stays on your machine. af360 itself copies nothing off the machine.
12
12
 
13
13
  ## What af360 sends, and to whom
14
14
  af360 makes no connection on its own. Each of these happens only because you turned it on, and each has its own switch in Settings:
package/lib/mask.mjs CHANGED
@@ -92,6 +92,14 @@ export function looksLikeSettingName(name) {
92
92
  * - then the shape-based rules (JWT, long hex, long base64), which are the
93
93
  * catch-all for a key nobody has a pattern for yet.
94
94
  */
95
+ /** A slash-separated run of lowercase segments - an estate path, not a key.
96
+ * See the base64 rule in `mask` for why each condition is there. */
97
+ export function looksLikePath(run) {
98
+ if (!run.includes("/") || run.includes("+") || /[A-Z=]/.test(run)) return false;
99
+ const segs = run.split("/").filter(Boolean);
100
+ return segs.length >= 2 && segs.every((s) => /^[a-z0-9]+$/.test(s) && /[a-z]/.test(s));
101
+ }
102
+
95
103
  export function mask(text) {
96
104
  let t = text;
97
105
 
@@ -163,7 +171,19 @@ export function mask(text) {
163
171
  t = t.replace(/(?<![A-Za-z0-9])[0-9a-f]{32,}(?![A-Za-z0-9])/gi, SECRET_MASK);
164
172
 
165
173
  // a long unbroken base64-ish run is not a word anybody typed on purpose
166
- t = t.replace(/(?<![A-Za-z0-9])[A-Za-z0-9+/]{40,}={0,2}(?![A-Za-z0-9+/=])/g, SECRET_MASK);
174
+ /* ~~...EXCEPT WHEN IT IS A PATH.~~ **A PATH IS NOT A KEY** (sitting 52, step
175
+ 3b, the owner's export: "[secret masked].csv/+server.ts"). Measured on his
176
+ own inventory: `src/routes/fabrication/consumables/export.csv/+server.ts`
177
+ - the run before `.csv` is 41 characters of letters and `/`, so this rule
178
+ ate a file-gone finding whose path IS the finding; its six siblings
179
+ survived only because a `[bracket]` broke their runs.
180
+ THE EXCEPTION IS NARROW ON PURPOSE: the run must contain `/`, no `+`, no
181
+ uppercase letter, and every `/` segment must be lowercase letters and
182
+ digits. Base64 key material is mixed-case by construction, so a run with
183
+ ONE uppercase letter or a `+` is still masked here, and every other rule
184
+ above and below is untouched - a secret in CONTENT stays masked. */
185
+ t = t.replace(/(?<![A-Za-z0-9])[A-Za-z0-9+/]{40,}={0,2}(?![A-Za-z0-9+/=])/g, (run) =>
186
+ looksLikePath(run) ? run : SECRET_MASK);
167
187
 
168
188
  return t;
169
189
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "af360",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "Watches the things you have built - folders, repos and sites - and tells you what needs you. Runs entirely on your own machine.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Afeleos LLC",
@@ -60,13 +60,13 @@
60
60
  },
61
61
  "overrides": {
62
62
  "postcss": "^8.5.23",
63
- "sharp": "^0.35.0"
63
+ "sharp": "^0.35.5"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/node": "^22.0.0",
67
67
  "@types/react": "^19.0.0",
68
68
  "@types/react-dom": "^19.2.4",
69
- "next": "^15.5.24",
69
+ "next": "^15.5.27",
70
70
  "react": "^19.0.0",
71
71
  "react-dom": "^19.0.0",
72
72
  "typescript": "^5.6.0"
@@ -524,7 +524,9 @@ const TOOLS = [
524
524
  ...envelope(look, now),
525
525
  empty: look.empty,
526
526
  state: look.estate.state,
527
- needsYou: look.estate.open,
527
+ /* sitting 50 A2: the needs-you number (rows + safety). An older record
528
+ carries no `needs` and answers with the row count it always did. */
529
+ needsYou: look.estate.needs ?? look.estate.open,
528
530
  headline: look.estate.line,
529
531
  under: look.estate.under,
530
532
  watching: look.estate.counts,
@@ -715,14 +717,22 @@ const TOOLS = [
715
717
  "The sites af360 watches and the last confirmed reading for each: answering or down, the status code, and " +
716
718
  "when that reading was taken. An unconfirmed miss is never reported as an outage. Read-only, from the last look.",
717
719
  inputSchema: { type: "object", properties: {}, additionalProperties: false },
718
- run: (look, now) => ({
719
- ...envelope(look, now),
720
- count: look.sites.length,
721
- sites: look.sites,
722
- honesty:
723
- "ok null means af360 has no confirmed reading for this site yet. One missed check is a hiccup, not an " +
724
- "outage, so a single failure never appears here as down.",
725
- }),
720
+ /* F1's amendment (owner ruling 2026-10-22): the room's own role travels in
721
+ each row, so an agent is never told a dependency is a site that is down. */
722
+ run: (look, now) => {
723
+ const role = (s) => (s && s.role === "dependency" ? "dependency" : "site");
724
+ return {
725
+ ...envelope(look, now),
726
+ count: look.sites.filter((s) => role(s) === "site").length,
727
+ dependencies: look.sites.filter((s) => role(s) === "dependency").length,
728
+ sites: look.sites.map((s) => ({ ...s, role: role(s) })),
729
+ honesty:
730
+ "ok null means af360 has no confirmed reading for this site yet. One missed check is a hiccup, not an " +
731
+ "outage, so a single failure never appears here as down. A row with role \"dependency\" is an address " +
732
+ "the user's project uses rather than runs: for it ok means only asked and answered, and af360 makes no " +
733
+ "up or down judgment about it.",
734
+ };
735
+ },
726
736
  },
727
737
  {
728
738
  name: "blast_radius",
Binary file