eslint-plugin-sdl-2 1.0.4

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 (418) hide show
  1. package/CHANGELOG.md +5316 -0
  2. package/LICENSE +21 -0
  3. package/README.md +133 -0
  4. package/dist/_internal/ast-utils.d.ts +17 -0
  5. package/dist/_internal/ast-utils.d.ts.map +1 -0
  6. package/dist/_internal/ast-utils.js +93 -0
  7. package/dist/_internal/ast-utils.js.map +1 -0
  8. package/dist/_internal/config-references.d.ts +5 -0
  9. package/dist/_internal/config-references.d.ts.map +1 -0
  10. package/dist/_internal/config-references.js +13 -0
  11. package/dist/_internal/config-references.js.map +1 -0
  12. package/dist/_internal/create-rule.d.ts +9 -0
  13. package/dist/_internal/create-rule.d.ts.map +1 -0
  14. package/dist/_internal/create-rule.js +6 -0
  15. package/dist/_internal/create-rule.js.map +1 -0
  16. package/dist/_internal/domparser.d.ts +19 -0
  17. package/dist/_internal/domparser.d.ts.map +1 -0
  18. package/dist/_internal/domparser.js +45 -0
  19. package/dist/_internal/domparser.js.map +1 -0
  20. package/dist/_internal/electron-web-preferences.d.ts +14 -0
  21. package/dist/_internal/electron-web-preferences.d.ts.map +1 -0
  22. package/dist/_internal/electron-web-preferences.js +63 -0
  23. package/dist/_internal/electron-web-preferences.js.map +1 -0
  24. package/dist/_internal/estree-utils.d.ts +51 -0
  25. package/dist/_internal/estree-utils.d.ts.map +1 -0
  26. package/dist/_internal/estree-utils.js +112 -0
  27. package/dist/_internal/estree-utils.js.map +1 -0
  28. package/dist/_internal/node-tls-config.d.ts +44 -0
  29. package/dist/_internal/node-tls-config.d.ts.map +1 -0
  30. package/dist/_internal/node-tls-config.js +101 -0
  31. package/dist/_internal/node-tls-config.js.map +1 -0
  32. package/dist/_internal/rules-registry.d.ts +10 -0
  33. package/dist/_internal/rules-registry.d.ts.map +1 -0
  34. package/dist/_internal/rules-registry.js +148 -0
  35. package/dist/_internal/rules-registry.js.map +1 -0
  36. package/dist/_internal/script-element.d.ts +7 -0
  37. package/dist/_internal/script-element.d.ts.map +1 -0
  38. package/dist/_internal/script-element.js +46 -0
  39. package/dist/_internal/script-element.js.map +1 -0
  40. package/dist/_internal/worker-code-loading.d.ts +69 -0
  41. package/dist/_internal/worker-code-loading.d.ts.map +1 -0
  42. package/dist/_internal/worker-code-loading.js +134 -0
  43. package/dist/_internal/worker-code-loading.js.map +1 -0
  44. package/dist/plugin.cjs +6036 -0
  45. package/dist/plugin.cjs.map +7 -0
  46. package/dist/plugin.d.cts +11 -0
  47. package/dist/plugin.d.ts +11 -0
  48. package/dist/plugin.d.ts.map +1 -0
  49. package/dist/plugin.js +235 -0
  50. package/dist/plugin.js.map +1 -0
  51. package/dist/rules/no-angular-bypass-sanitizer.d.ts +5 -0
  52. package/dist/rules/no-angular-bypass-sanitizer.d.ts.map +1 -0
  53. package/dist/rules/no-angular-bypass-sanitizer.js +32 -0
  54. package/dist/rules/no-angular-bypass-sanitizer.js.map +1 -0
  55. package/dist/rules/no-angular-bypass-security-trust-html.d.ts +5 -0
  56. package/dist/rules/no-angular-bypass-security-trust-html.d.ts.map +1 -0
  57. package/dist/rules/no-angular-bypass-security-trust-html.js +51 -0
  58. package/dist/rules/no-angular-bypass-security-trust-html.js.map +1 -0
  59. package/dist/rules/no-angular-innerhtml-binding.d.ts +5 -0
  60. package/dist/rules/no-angular-innerhtml-binding.d.ts.map +1 -0
  61. package/dist/rules/no-angular-innerhtml-binding.js +57 -0
  62. package/dist/rules/no-angular-innerhtml-binding.js.map +1 -0
  63. package/dist/rules/no-angular-sanitization-trusted-urls.d.ts +5 -0
  64. package/dist/rules/no-angular-sanitization-trusted-urls.d.ts.map +1 -0
  65. package/dist/rules/no-angular-sanitization-trusted-urls.js +32 -0
  66. package/dist/rules/no-angular-sanitization-trusted-urls.js.map +1 -0
  67. package/dist/rules/no-angularjs-bypass-sce.d.ts +5 -0
  68. package/dist/rules/no-angularjs-bypass-sce.d.ts.map +1 -0
  69. package/dist/rules/no-angularjs-bypass-sce.js +80 -0
  70. package/dist/rules/no-angularjs-bypass-sce.js.map +1 -0
  71. package/dist/rules/no-angularjs-enable-svg.d.ts +5 -0
  72. package/dist/rules/no-angularjs-enable-svg.d.ts.map +1 -0
  73. package/dist/rules/no-angularjs-enable-svg.js +48 -0
  74. package/dist/rules/no-angularjs-enable-svg.js.map +1 -0
  75. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.d.ts +5 -0
  76. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.d.ts.map +1 -0
  77. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.js +64 -0
  78. package/dist/rules/no-angularjs-ng-bind-html-without-sanitize.js.map +1 -0
  79. package/dist/rules/no-angularjs-sanitization-whitelist.d.ts +5 -0
  80. package/dist/rules/no-angularjs-sanitization-whitelist.d.ts.map +1 -0
  81. package/dist/rules/no-angularjs-sanitization-whitelist.js +32 -0
  82. package/dist/rules/no-angularjs-sanitization-whitelist.js.map +1 -0
  83. package/dist/rules/no-angularjs-sce-resource-url-wildcard.d.ts +5 -0
  84. package/dist/rules/no-angularjs-sce-resource-url-wildcard.d.ts.map +1 -0
  85. package/dist/rules/no-angularjs-sce-resource-url-wildcard.js +69 -0
  86. package/dist/rules/no-angularjs-sce-resource-url-wildcard.js.map +1 -0
  87. package/dist/rules/no-child-process-exec.d.ts +5 -0
  88. package/dist/rules/no-child-process-exec.d.ts.map +1 -0
  89. package/dist/rules/no-child-process-exec.js +141 -0
  90. package/dist/rules/no-child-process-exec.js.map +1 -0
  91. package/dist/rules/no-child-process-shell-true.d.ts +5 -0
  92. package/dist/rules/no-child-process-shell-true.d.ts.map +1 -0
  93. package/dist/rules/no-child-process-shell-true.js +89 -0
  94. package/dist/rules/no-child-process-shell-true.js.map +1 -0
  95. package/dist/rules/no-cookies.d.ts +5 -0
  96. package/dist/rules/no-cookies.d.ts.map +1 -0
  97. package/dist/rules/no-cookies.js +38 -0
  98. package/dist/rules/no-cookies.js.map +1 -0
  99. package/dist/rules/no-document-domain.d.ts +5 -0
  100. package/dist/rules/no-document-domain.d.ts.map +1 -0
  101. package/dist/rules/no-document-domain.js +41 -0
  102. package/dist/rules/no-document-domain.js.map +1 -0
  103. package/dist/rules/no-document-execcommand-insert-html.d.ts +5 -0
  104. package/dist/rules/no-document-execcommand-insert-html.d.ts.map +1 -0
  105. package/dist/rules/no-document-execcommand-insert-html.js +57 -0
  106. package/dist/rules/no-document-execcommand-insert-html.js.map +1 -0
  107. package/dist/rules/no-document-parse-html-unsafe.d.ts +5 -0
  108. package/dist/rules/no-document-parse-html-unsafe.d.ts.map +1 -0
  109. package/dist/rules/no-document-parse-html-unsafe.js +67 -0
  110. package/dist/rules/no-document-parse-html-unsafe.js.map +1 -0
  111. package/dist/rules/no-document-write.d.ts +5 -0
  112. package/dist/rules/no-document-write.d.ts.map +1 -0
  113. package/dist/rules/no-document-write.js +40 -0
  114. package/dist/rules/no-document-write.js.map +1 -0
  115. package/dist/rules/no-domparser-html-without-sanitization.d.ts +5 -0
  116. package/dist/rules/no-domparser-html-without-sanitization.d.ts.map +1 -0
  117. package/dist/rules/no-domparser-html-without-sanitization.js +56 -0
  118. package/dist/rules/no-domparser-html-without-sanitization.js.map +1 -0
  119. package/dist/rules/no-domparser-svg-without-sanitization.d.ts +5 -0
  120. package/dist/rules/no-domparser-svg-without-sanitization.d.ts.map +1 -0
  121. package/dist/rules/no-domparser-svg-without-sanitization.js +56 -0
  122. package/dist/rules/no-domparser-svg-without-sanitization.js.map +1 -0
  123. package/dist/rules/no-dynamic-import-unsafe-url.d.ts +5 -0
  124. package/dist/rules/no-dynamic-import-unsafe-url.d.ts.map +1 -0
  125. package/dist/rules/no-dynamic-import-unsafe-url.js +47 -0
  126. package/dist/rules/no-dynamic-import-unsafe-url.js.map +1 -0
  127. package/dist/rules/no-electron-allow-running-insecure-content.d.ts +5 -0
  128. package/dist/rules/no-electron-allow-running-insecure-content.d.ts.map +1 -0
  129. package/dist/rules/no-electron-allow-running-insecure-content.js +30 -0
  130. package/dist/rules/no-electron-allow-running-insecure-content.js.map +1 -0
  131. package/dist/rules/no-electron-dangerous-blink-features.d.ts +5 -0
  132. package/dist/rules/no-electron-dangerous-blink-features.d.ts.map +1 -0
  133. package/dist/rules/no-electron-dangerous-blink-features.js +89 -0
  134. package/dist/rules/no-electron-dangerous-blink-features.js.map +1 -0
  135. package/dist/rules/no-electron-disable-context-isolation.d.ts +5 -0
  136. package/dist/rules/no-electron-disable-context-isolation.d.ts.map +1 -0
  137. package/dist/rules/no-electron-disable-context-isolation.js +30 -0
  138. package/dist/rules/no-electron-disable-context-isolation.js.map +1 -0
  139. package/dist/rules/no-electron-disable-sandbox.d.ts +5 -0
  140. package/dist/rules/no-electron-disable-sandbox.d.ts.map +1 -0
  141. package/dist/rules/no-electron-disable-sandbox.js +30 -0
  142. package/dist/rules/no-electron-disable-sandbox.js.map +1 -0
  143. package/dist/rules/no-electron-disable-web-security.d.ts +5 -0
  144. package/dist/rules/no-electron-disable-web-security.d.ts.map +1 -0
  145. package/dist/rules/no-electron-disable-web-security.js +30 -0
  146. package/dist/rules/no-electron-disable-web-security.js.map +1 -0
  147. package/dist/rules/no-electron-enable-remote-module.d.ts +5 -0
  148. package/dist/rules/no-electron-enable-remote-module.d.ts.map +1 -0
  149. package/dist/rules/no-electron-enable-remote-module.js +30 -0
  150. package/dist/rules/no-electron-enable-remote-module.js.map +1 -0
  151. package/dist/rules/no-electron-enable-webview-tag.d.ts +5 -0
  152. package/dist/rules/no-electron-enable-webview-tag.d.ts.map +1 -0
  153. package/dist/rules/no-electron-enable-webview-tag.js +30 -0
  154. package/dist/rules/no-electron-enable-webview-tag.js.map +1 -0
  155. package/dist/rules/no-electron-experimental-features.d.ts +5 -0
  156. package/dist/rules/no-electron-experimental-features.d.ts.map +1 -0
  157. package/dist/rules/no-electron-experimental-features.js +30 -0
  158. package/dist/rules/no-electron-experimental-features.js.map +1 -0
  159. package/dist/rules/no-electron-expose-raw-ipc-renderer.d.ts +5 -0
  160. package/dist/rules/no-electron-expose-raw-ipc-renderer.d.ts.map +1 -0
  161. package/dist/rules/no-electron-expose-raw-ipc-renderer.js +108 -0
  162. package/dist/rules/no-electron-expose-raw-ipc-renderer.js.map +1 -0
  163. package/dist/rules/no-electron-insecure-certificate-error-handler.d.ts +5 -0
  164. package/dist/rules/no-electron-insecure-certificate-error-handler.d.ts.map +1 -0
  165. package/dist/rules/no-electron-insecure-certificate-error-handler.js +91 -0
  166. package/dist/rules/no-electron-insecure-certificate-error-handler.js.map +1 -0
  167. package/dist/rules/no-electron-insecure-certificate-verify-proc.d.ts +5 -0
  168. package/dist/rules/no-electron-insecure-certificate-verify-proc.d.ts.map +1 -0
  169. package/dist/rules/no-electron-insecure-certificate-verify-proc.js +75 -0
  170. package/dist/rules/no-electron-insecure-certificate-verify-proc.js.map +1 -0
  171. package/dist/rules/no-electron-insecure-permission-request-handler.d.ts +5 -0
  172. package/dist/rules/no-electron-insecure-permission-request-handler.d.ts.map +1 -0
  173. package/dist/rules/no-electron-insecure-permission-request-handler.js +75 -0
  174. package/dist/rules/no-electron-insecure-permission-request-handler.js.map +1 -0
  175. package/dist/rules/no-electron-node-integration.d.ts +5 -0
  176. package/dist/rules/no-electron-node-integration.d.ts.map +1 -0
  177. package/dist/rules/no-electron-node-integration.js +52 -0
  178. package/dist/rules/no-electron-node-integration.js.map +1 -0
  179. package/dist/rules/no-electron-permission-check-handler-allow-all.d.ts +5 -0
  180. package/dist/rules/no-electron-permission-check-handler-allow-all.d.ts.map +1 -0
  181. package/dist/rules/no-electron-permission-check-handler-allow-all.js +63 -0
  182. package/dist/rules/no-electron-permission-check-handler-allow-all.js.map +1 -0
  183. package/dist/rules/no-electron-unchecked-ipc-sender.d.ts +5 -0
  184. package/dist/rules/no-electron-unchecked-ipc-sender.d.ts.map +1 -0
  185. package/dist/rules/no-electron-unchecked-ipc-sender.js +90 -0
  186. package/dist/rules/no-electron-unchecked-ipc-sender.js.map +1 -0
  187. package/dist/rules/no-electron-unrestricted-navigation.d.ts +5 -0
  188. package/dist/rules/no-electron-unrestricted-navigation.d.ts.map +1 -0
  189. package/dist/rules/no-electron-unrestricted-navigation.js +100 -0
  190. package/dist/rules/no-electron-unrestricted-navigation.js.map +1 -0
  191. package/dist/rules/no-electron-untrusted-open-external.d.ts +5 -0
  192. package/dist/rules/no-electron-untrusted-open-external.d.ts.map +1 -0
  193. package/dist/rules/no-electron-untrusted-open-external.js +92 -0
  194. package/dist/rules/no-electron-untrusted-open-external.js.map +1 -0
  195. package/dist/rules/no-electron-webview-allowpopups.d.ts +5 -0
  196. package/dist/rules/no-electron-webview-allowpopups.d.ts.map +1 -0
  197. package/dist/rules/no-electron-webview-allowpopups.js +85 -0
  198. package/dist/rules/no-electron-webview-allowpopups.js.map +1 -0
  199. package/dist/rules/no-electron-webview-insecure-webpreferences.d.ts +5 -0
  200. package/dist/rules/no-electron-webview-insecure-webpreferences.d.ts.map +1 -0
  201. package/dist/rules/no-electron-webview-insecure-webpreferences.js +88 -0
  202. package/dist/rules/no-electron-webview-insecure-webpreferences.js.map +1 -0
  203. package/dist/rules/no-electron-webview-node-integration.d.ts +5 -0
  204. package/dist/rules/no-electron-webview-node-integration.d.ts.map +1 -0
  205. package/dist/rules/no-electron-webview-node-integration.js +107 -0
  206. package/dist/rules/no-electron-webview-node-integration.js.map +1 -0
  207. package/dist/rules/no-html-method.d.ts +5 -0
  208. package/dist/rules/no-html-method.d.ts.map +1 -0
  209. package/dist/rules/no-html-method.js +42 -0
  210. package/dist/rules/no-html-method.js.map +1 -0
  211. package/dist/rules/no-http-request-to-insecure-protocol.d.ts +5 -0
  212. package/dist/rules/no-http-request-to-insecure-protocol.d.ts.map +1 -0
  213. package/dist/rules/no-http-request-to-insecure-protocol.js +94 -0
  214. package/dist/rules/no-http-request-to-insecure-protocol.js.map +1 -0
  215. package/dist/rules/no-iframe-srcdoc.d.ts +5 -0
  216. package/dist/rules/no-iframe-srcdoc.d.ts.map +1 -0
  217. package/dist/rules/no-iframe-srcdoc.js +144 -0
  218. package/dist/rules/no-iframe-srcdoc.js.map +1 -0
  219. package/dist/rules/no-inner-html.d.ts +5 -0
  220. package/dist/rules/no-inner-html.d.ts.map +1 -0
  221. package/dist/rules/no-inner-html.js +67 -0
  222. package/dist/rules/no-inner-html.js.map +1 -0
  223. package/dist/rules/no-insecure-random.d.ts +5 -0
  224. package/dist/rules/no-insecure-random.d.ts.map +1 -0
  225. package/dist/rules/no-insecure-random.js +95 -0
  226. package/dist/rules/no-insecure-random.js.map +1 -0
  227. package/dist/rules/no-insecure-tls-agent-options.d.ts +5 -0
  228. package/dist/rules/no-insecure-tls-agent-options.d.ts.map +1 -0
  229. package/dist/rules/no-insecure-tls-agent-options.js +73 -0
  230. package/dist/rules/no-insecure-tls-agent-options.js.map +1 -0
  231. package/dist/rules/no-insecure-url.d.ts +12 -0
  232. package/dist/rules/no-insecure-url.d.ts.map +1 -0
  233. package/dist/rules/no-insecure-url.js +142 -0
  234. package/dist/rules/no-insecure-url.js.map +1 -0
  235. package/dist/rules/no-location-javascript-url.d.ts +5 -0
  236. package/dist/rules/no-location-javascript-url.d.ts.map +1 -0
  237. package/dist/rules/no-location-javascript-url.js +98 -0
  238. package/dist/rules/no-location-javascript-url.js.map +1 -0
  239. package/dist/rules/no-message-event-without-origin-check.d.ts +5 -0
  240. package/dist/rules/no-message-event-without-origin-check.d.ts.map +1 -0
  241. package/dist/rules/no-message-event-without-origin-check.js +183 -0
  242. package/dist/rules/no-message-event-without-origin-check.js.map +1 -0
  243. package/dist/rules/no-msapp-exec-unsafe.d.ts +5 -0
  244. package/dist/rules/no-msapp-exec-unsafe.d.ts.map +1 -0
  245. package/dist/rules/no-msapp-exec-unsafe.js +32 -0
  246. package/dist/rules/no-msapp-exec-unsafe.js.map +1 -0
  247. package/dist/rules/no-node-tls-check-server-identity-bypass.d.ts +5 -0
  248. package/dist/rules/no-node-tls-check-server-identity-bypass.d.ts.map +1 -0
  249. package/dist/rules/no-node-tls-check-server-identity-bypass.js +95 -0
  250. package/dist/rules/no-node-tls-check-server-identity-bypass.js.map +1 -0
  251. package/dist/rules/no-node-tls-legacy-protocol.d.ts +5 -0
  252. package/dist/rules/no-node-tls-legacy-protocol.d.ts.map +1 -0
  253. package/dist/rules/no-node-tls-legacy-protocol.js +106 -0
  254. package/dist/rules/no-node-tls-legacy-protocol.js.map +1 -0
  255. package/dist/rules/no-node-tls-reject-unauthorized-zero.d.ts +5 -0
  256. package/dist/rules/no-node-tls-reject-unauthorized-zero.d.ts.map +1 -0
  257. package/dist/rules/no-node-tls-reject-unauthorized-zero.js +93 -0
  258. package/dist/rules/no-node-tls-reject-unauthorized-zero.js.map +1 -0
  259. package/dist/rules/no-node-tls-security-level-zero.d.ts +5 -0
  260. package/dist/rules/no-node-tls-security-level-zero.d.ts.map +1 -0
  261. package/dist/rules/no-node-tls-security-level-zero.js +80 -0
  262. package/dist/rules/no-node-tls-security-level-zero.js.map +1 -0
  263. package/dist/rules/no-node-vm-run-in-context.d.ts +5 -0
  264. package/dist/rules/no-node-vm-run-in-context.d.ts.map +1 -0
  265. package/dist/rules/no-node-vm-run-in-context.js +186 -0
  266. package/dist/rules/no-node-vm-run-in-context.js.map +1 -0
  267. package/dist/rules/no-node-vm-source-text-module.d.ts +5 -0
  268. package/dist/rules/no-node-vm-source-text-module.d.ts.map +1 -0
  269. package/dist/rules/no-node-vm-source-text-module.js +126 -0
  270. package/dist/rules/no-node-vm-source-text-module.js.map +1 -0
  271. package/dist/rules/no-node-worker-threads-eval.d.ts +5 -0
  272. package/dist/rules/no-node-worker-threads-eval.d.ts.map +1 -0
  273. package/dist/rules/no-node-worker-threads-eval.js +151 -0
  274. package/dist/rules/no-node-worker-threads-eval.js.map +1 -0
  275. package/dist/rules/no-nonnull-assertion-on-security-input.d.ts +5 -0
  276. package/dist/rules/no-nonnull-assertion-on-security-input.d.ts.map +1 -0
  277. package/dist/rules/no-nonnull-assertion-on-security-input.js +48 -0
  278. package/dist/rules/no-nonnull-assertion-on-security-input.js.map +1 -0
  279. package/dist/rules/no-postmessage-star-origin.d.ts +5 -0
  280. package/dist/rules/no-postmessage-star-origin.d.ts.map +1 -0
  281. package/dist/rules/no-postmessage-star-origin.js +58 -0
  282. package/dist/rules/no-postmessage-star-origin.js.map +1 -0
  283. package/dist/rules/no-postmessage-without-origin-allowlist.d.ts +5 -0
  284. package/dist/rules/no-postmessage-without-origin-allowlist.d.ts.map +1 -0
  285. package/dist/rules/no-postmessage-without-origin-allowlist.js +80 -0
  286. package/dist/rules/no-postmessage-without-origin-allowlist.js.map +1 -0
  287. package/dist/rules/no-range-create-contextual-fragment.d.ts +5 -0
  288. package/dist/rules/no-range-create-contextual-fragment.d.ts.map +1 -0
  289. package/dist/rules/no-range-create-contextual-fragment.js +64 -0
  290. package/dist/rules/no-range-create-contextual-fragment.js.map +1 -0
  291. package/dist/rules/no-script-src-data-url.d.ts +5 -0
  292. package/dist/rules/no-script-src-data-url.d.ts.map +1 -0
  293. package/dist/rules/no-script-src-data-url.js +108 -0
  294. package/dist/rules/no-script-src-data-url.js.map +1 -0
  295. package/dist/rules/no-script-text.d.ts +5 -0
  296. package/dist/rules/no-script-text.d.ts.map +1 -0
  297. package/dist/rules/no-script-text.js +52 -0
  298. package/dist/rules/no-script-text.js.map +1 -0
  299. package/dist/rules/no-service-worker-unsafe-script-url.d.ts +5 -0
  300. package/dist/rules/no-service-worker-unsafe-script-url.d.ts.map +1 -0
  301. package/dist/rules/no-service-worker-unsafe-script-url.js +52 -0
  302. package/dist/rules/no-service-worker-unsafe-script-url.js.map +1 -0
  303. package/dist/rules/no-set-html-unsafe.d.ts +5 -0
  304. package/dist/rules/no-set-html-unsafe.d.ts.map +1 -0
  305. package/dist/rules/no-set-html-unsafe.js +48 -0
  306. package/dist/rules/no-set-html-unsafe.js.map +1 -0
  307. package/dist/rules/no-trusted-types-policy-pass-through.d.ts +5 -0
  308. package/dist/rules/no-trusted-types-policy-pass-through.d.ts.map +1 -0
  309. package/dist/rules/no-trusted-types-policy-pass-through.js +115 -0
  310. package/dist/rules/no-trusted-types-policy-pass-through.js.map +1 -0
  311. package/dist/rules/no-unsafe-alloc.d.ts +5 -0
  312. package/dist/rules/no-unsafe-alloc.d.ts.map +1 -0
  313. package/dist/rules/no-unsafe-alloc.js +51 -0
  314. package/dist/rules/no-unsafe-alloc.js.map +1 -0
  315. package/dist/rules/no-unsafe-cast-to-trusted-types.d.ts +5 -0
  316. package/dist/rules/no-unsafe-cast-to-trusted-types.d.ts.map +1 -0
  317. package/dist/rules/no-unsafe-cast-to-trusted-types.js +89 -0
  318. package/dist/rules/no-unsafe-cast-to-trusted-types.js.map +1 -0
  319. package/dist/rules/no-window-open-without-noopener.d.ts +5 -0
  320. package/dist/rules/no-window-open-without-noopener.d.ts.map +1 -0
  321. package/dist/rules/no-window-open-without-noopener.js +84 -0
  322. package/dist/rules/no-window-open-without-noopener.js.map +1 -0
  323. package/dist/rules/no-winjs-html-unsafe.d.ts +5 -0
  324. package/dist/rules/no-winjs-html-unsafe.d.ts.map +1 -0
  325. package/dist/rules/no-winjs-html-unsafe.js +32 -0
  326. package/dist/rules/no-winjs-html-unsafe.js.map +1 -0
  327. package/dist/rules/no-worker-blob-url.d.ts +5 -0
  328. package/dist/rules/no-worker-blob-url.d.ts.map +1 -0
  329. package/dist/rules/no-worker-blob-url.js +64 -0
  330. package/dist/rules/no-worker-blob-url.js.map +1 -0
  331. package/dist/rules/no-worker-data-url.d.ts +5 -0
  332. package/dist/rules/no-worker-data-url.d.ts.map +1 -0
  333. package/dist/rules/no-worker-data-url.js +67 -0
  334. package/dist/rules/no-worker-data-url.js.map +1 -0
  335. package/docs/rules/getting-started.md +70 -0
  336. package/docs/rules/no-angular-bypass-sanitizer.md +69 -0
  337. package/docs/rules/no-angular-bypass-security-trust-html.md +59 -0
  338. package/docs/rules/no-angular-innerhtml-binding.md +59 -0
  339. package/docs/rules/no-angular-sanitization-trusted-urls.md +64 -0
  340. package/docs/rules/no-angularjs-bypass-sce.md +64 -0
  341. package/docs/rules/no-angularjs-enable-svg.md +59 -0
  342. package/docs/rules/no-angularjs-ng-bind-html-without-sanitize.md +59 -0
  343. package/docs/rules/no-angularjs-sanitization-whitelist.md +63 -0
  344. package/docs/rules/no-angularjs-sce-resource-url-wildcard.md +62 -0
  345. package/docs/rules/no-child-process-exec.md +101 -0
  346. package/docs/rules/no-child-process-shell-true.md +59 -0
  347. package/docs/rules/no-cookies.md +61 -0
  348. package/docs/rules/no-document-domain.md +59 -0
  349. package/docs/rules/no-document-execcommand-insert-html.md +69 -0
  350. package/docs/rules/no-document-parse-html-unsafe.md +72 -0
  351. package/docs/rules/no-document-write.md +64 -0
  352. package/docs/rules/no-domparser-html-without-sanitization.md +59 -0
  353. package/docs/rules/no-domparser-svg-without-sanitization.md +71 -0
  354. package/docs/rules/no-dynamic-import-unsafe-url.md +81 -0
  355. package/docs/rules/no-electron-allow-running-insecure-content.md +69 -0
  356. package/docs/rules/no-electron-dangerous-blink-features.md +77 -0
  357. package/docs/rules/no-electron-disable-context-isolation.md +69 -0
  358. package/docs/rules/no-electron-disable-sandbox.md +69 -0
  359. package/docs/rules/no-electron-disable-web-security.md +69 -0
  360. package/docs/rules/no-electron-enable-remote-module.md +69 -0
  361. package/docs/rules/no-electron-enable-webview-tag.md +77 -0
  362. package/docs/rules/no-electron-experimental-features.md +77 -0
  363. package/docs/rules/no-electron-expose-raw-ipc-renderer.md +79 -0
  364. package/docs/rules/no-electron-insecure-certificate-error-handler.md +72 -0
  365. package/docs/rules/no-electron-insecure-certificate-verify-proc.md +63 -0
  366. package/docs/rules/no-electron-insecure-permission-request-handler.md +67 -0
  367. package/docs/rules/no-electron-node-integration.md +70 -0
  368. package/docs/rules/no-electron-permission-check-handler-allow-all.md +66 -0
  369. package/docs/rules/no-electron-unchecked-ipc-sender.md +62 -0
  370. package/docs/rules/no-electron-unrestricted-navigation.md +64 -0
  371. package/docs/rules/no-electron-untrusted-open-external.md +65 -0
  372. package/docs/rules/no-electron-webview-allowpopups.md +59 -0
  373. package/docs/rules/no-electron-webview-insecure-webpreferences.md +84 -0
  374. package/docs/rules/no-electron-webview-node-integration.md +59 -0
  375. package/docs/rules/no-html-method.md +58 -0
  376. package/docs/rules/no-http-request-to-insecure-protocol.md +59 -0
  377. package/docs/rules/no-iframe-srcdoc.md +76 -0
  378. package/docs/rules/no-inner-html.md +65 -0
  379. package/docs/rules/no-insecure-random.md +66 -0
  380. package/docs/rules/no-insecure-tls-agent-options.md +59 -0
  381. package/docs/rules/no-insecure-url.md +72 -0
  382. package/docs/rules/no-location-javascript-url.md +59 -0
  383. package/docs/rules/no-message-event-without-origin-check.md +82 -0
  384. package/docs/rules/no-msapp-exec-unsafe.md +59 -0
  385. package/docs/rules/no-node-tls-check-server-identity-bypass.md +88 -0
  386. package/docs/rules/no-node-tls-legacy-protocol.md +80 -0
  387. package/docs/rules/no-node-tls-reject-unauthorized-zero.md +61 -0
  388. package/docs/rules/no-node-tls-security-level-zero.md +77 -0
  389. package/docs/rules/no-node-vm-run-in-context.md +89 -0
  390. package/docs/rules/no-node-vm-source-text-module.md +79 -0
  391. package/docs/rules/no-node-worker-threads-eval.md +82 -0
  392. package/docs/rules/no-nonnull-assertion-on-security-input.md +59 -0
  393. package/docs/rules/no-postmessage-star-origin.md +59 -0
  394. package/docs/rules/no-postmessage-without-origin-allowlist.md +59 -0
  395. package/docs/rules/no-range-create-contextual-fragment.md +64 -0
  396. package/docs/rules/no-script-src-data-url.md +83 -0
  397. package/docs/rules/no-script-text.md +80 -0
  398. package/docs/rules/no-service-worker-unsafe-script-url.md +85 -0
  399. package/docs/rules/no-set-html-unsafe.md +64 -0
  400. package/docs/rules/no-trusted-types-policy-pass-through.md +68 -0
  401. package/docs/rules/no-unsafe-alloc.md +62 -0
  402. package/docs/rules/no-unsafe-cast-to-trusted-types.md +59 -0
  403. package/docs/rules/no-window-open-without-noopener.md +63 -0
  404. package/docs/rules/no-winjs-html-unsafe.md +60 -0
  405. package/docs/rules/no-worker-blob-url.md +86 -0
  406. package/docs/rules/no-worker-data-url.md +85 -0
  407. package/docs/rules/overview.md +111 -0
  408. package/docs/rules/presets/angular.md +35 -0
  409. package/docs/rules/presets/angularjs.md +36 -0
  410. package/docs/rules/presets/common.md +59 -0
  411. package/docs/rules/presets/electron.md +51 -0
  412. package/docs/rules/presets/index.md +26 -0
  413. package/docs/rules/presets/node.md +43 -0
  414. package/docs/rules/presets/react.md +33 -0
  415. package/docs/rules/presets/recommended.md +104 -0
  416. package/docs/rules/presets/required.md +99 -0
  417. package/docs/rules/presets/typescript.md +34 -0
  418. package/package.json +583 -0
@@ -0,0 +1,112 @@
1
+ import { arrayFirst } from "ts-extras";
2
+ /**
3
+ * Get the static property name accessed by a member expression.
4
+ *
5
+ * Returns `undefined` for computed members whose property key cannot be
6
+ * resolved to a static string.
7
+ *
8
+ * @param memberExpression - Member expression to inspect.
9
+ *
10
+ * @returns Static property name when available.
11
+ */
12
+ export const getMemberPropertyName = (memberExpression) => {
13
+ if (!memberExpression.computed &&
14
+ memberExpression.property.type === "Identifier") {
15
+ return memberExpression.property.name;
16
+ }
17
+ if (memberExpression.property.type === "Literal" &&
18
+ typeof memberExpression.property.value === "string") {
19
+ return memberExpression.property.value;
20
+ }
21
+ return undefined;
22
+ };
23
+ /**
24
+ * Get the static key name for an object literal property.
25
+ *
26
+ * @param property - Object property node to inspect.
27
+ *
28
+ * @returns Static property key when available.
29
+ */
30
+ export const getPropertyName = (property) => {
31
+ if (property.computed) {
32
+ return undefined;
33
+ }
34
+ if (property.key.type === "Identifier") {
35
+ return property.key.name;
36
+ }
37
+ if (property.key.type === "Literal" &&
38
+ typeof property.key.value === "string") {
39
+ return property.key.value;
40
+ }
41
+ return undefined;
42
+ };
43
+ /**
44
+ * Find an initialized object literal property by its static key name.
45
+ *
46
+ * @param objectExpression - Object expression to search.
47
+ * @param propertyName - Property name to match.
48
+ *
49
+ * @returns Matching property node when present.
50
+ */
51
+ export const getPropertyByName = (objectExpression, propertyName) => {
52
+ for (const propertyNode of objectExpression.properties) {
53
+ if (propertyNode.type !== "Property" || propertyNode.kind !== "init") {
54
+ continue;
55
+ }
56
+ if (getPropertyName(propertyNode) === propertyName) {
57
+ return propertyNode;
58
+ }
59
+ }
60
+ return undefined;
61
+ };
62
+ /**
63
+ * Resolve a string value from a static expression.
64
+ *
65
+ * Supports plain string literals and template literals without expressions.
66
+ *
67
+ * @param node - Expression node to inspect.
68
+ *
69
+ * @returns Static string value when available.
70
+ */
71
+ export const getStaticStringValue = (node) => {
72
+ if (node.type === "Literal" && typeof node.value === "string") {
73
+ return node.value;
74
+ }
75
+ if (node.type === "TemplateLiteral" && node.expressions.length === 0) {
76
+ return arrayFirst(node.quasis)?.value.cooked ?? undefined;
77
+ }
78
+ return undefined;
79
+ };
80
+ /**
81
+ * Resolve a string value from a JSX attribute value.
82
+ *
83
+ * Supports plain string literals and JSX expression containers that wrap a
84
+ * static string literal or expression-free template literal.
85
+ *
86
+ * @param attributeValue - JSX attribute value node to inspect.
87
+ *
88
+ * @returns Static string value when available.
89
+ */
90
+ export const getStaticJsxAttributeStringValue = (attributeValue) => {
91
+ if (attributeValue === null) {
92
+ return undefined;
93
+ }
94
+ if (attributeValue.type === "Literal" &&
95
+ typeof attributeValue.value === "string") {
96
+ return attributeValue.value;
97
+ }
98
+ if (attributeValue.type !== "JSXExpressionContainer") {
99
+ return undefined;
100
+ }
101
+ if (attributeValue.expression.type === "Literal" &&
102
+ typeof attributeValue.expression.value === "string") {
103
+ return attributeValue.expression.value;
104
+ }
105
+ if (attributeValue.expression.type === "TemplateLiteral" &&
106
+ attributeValue.expression.expressions.length === 0) {
107
+ return (arrayFirst(attributeValue.expression.quasis)?.value.cooked ??
108
+ undefined);
109
+ }
110
+ return undefined;
111
+ };
112
+ //# sourceMappingURL=estree-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estree-utils.js","sourceRoot":"","sources":["../../src/_internal/estree-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { TSESTree } from "@typescript-eslint/utils";
2
+ /**
3
+ * Check whether an expression targets a Node TLS-capable module object.
4
+ *
5
+ * @param expression - Expression to inspect.
6
+ *
7
+ * @returns Whether the expression resolves to `tls`, `https`, or `http2`.
8
+ */
9
+ export declare const isNodeTlsObjectExpression: (expression: Readonly<TSESTree.Expression>) => boolean;
10
+ /**
11
+ * Check whether a call expression targets a relevant Node TLS API sink.
12
+ *
13
+ * @param callee - Call-expression callee to inspect.
14
+ *
15
+ * @returns Whether the callee matches a TLS-relevant call site.
16
+ */
17
+ export declare const isRelevantNodeTlsCall: (callee: Readonly<TSESTree.CallExpression["callee"]>) => boolean;
18
+ /**
19
+ * Check whether a constructor call targets a relevant Node TLS constructor.
20
+ *
21
+ * @param callee - New-expression callee to inspect.
22
+ *
23
+ * @returns Whether the callee matches a TLS-relevant constructor site.
24
+ */
25
+ export declare const isRelevantNodeTlsConstructor: (callee: Readonly<TSESTree.NewExpression["callee"]>) => boolean;
26
+ /**
27
+ * Check whether an object literal is being used as options for a relevant Node
28
+ * TLS API.
29
+ *
30
+ * @param node - Object expression to inspect.
31
+ *
32
+ * @returns Whether the object expression belongs to a TLS-relevant call site.
33
+ */
34
+ export declare const isRelevantNodeTlsOptionsObject: (node: Readonly<TSESTree.ObjectExpression>) => boolean;
35
+ /**
36
+ * Check whether an assignment left-hand side targets a static TLS member.
37
+ *
38
+ * @param node - Assignment left-hand side expression to inspect.
39
+ * @param propertyNames - Allowed member names for matching.
40
+ *
41
+ * @returns Whether the node matches one of the targeted TLS static members.
42
+ */
43
+ export declare const isNodeTlsStaticMember: (node: Readonly<TSESTree.AssignmentExpression["left"]>, propertyNames: ReadonlySet<string>) => node is TSESTree.MemberExpression;
44
+ //# sourceMappingURL=node-tls-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-tls-config.d.ts","sourceRoot":"","sources":["../../src/_internal/node-tls-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAoBzD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GAClC,YAAY,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAC1C,OAcF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAC9B,QAAQ,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,KACpD,OAgBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACrC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KACnD,OASF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GACvC,MAAM,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAC1C,OAYF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAC9B,MAAM,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EACrD,eAAe,WAAW,CAAC,MAAM,CAAC,KACnC,IAAI,IAAI,QAAQ,CAAC,gBAYnB,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { isDefined, setHas } from "ts-extras";
2
+ import { getMemberPropertyName } from "./estree-utils.js";
3
+ const NODE_TLS_OBJECT_NAMES = new Set([
4
+ "http2",
5
+ "https",
6
+ "tls",
7
+ ]);
8
+ const NODE_TLS_CALL_METHOD_NAMES = new Set([
9
+ "connect",
10
+ "createSecureContext",
11
+ "createSecureServer",
12
+ "createServer",
13
+ "get",
14
+ "request",
15
+ ]);
16
+ /**
17
+ * Check whether an expression targets a Node TLS-capable module object.
18
+ *
19
+ * @param expression - Expression to inspect.
20
+ *
21
+ * @returns Whether the expression resolves to `tls`, `https`, or `http2`.
22
+ */
23
+ export const isNodeTlsObjectExpression = (expression) => {
24
+ if (expression.type === "Identifier") {
25
+ return setHas(NODE_TLS_OBJECT_NAMES, expression.name);
26
+ }
27
+ if (expression.type !== "MemberExpression") {
28
+ return false;
29
+ }
30
+ const propertyName = getMemberPropertyName(expression);
31
+ return (isDefined(propertyName) && setHas(NODE_TLS_OBJECT_NAMES, propertyName));
32
+ };
33
+ /**
34
+ * Check whether a call expression targets a relevant Node TLS API sink.
35
+ *
36
+ * @param callee - Call-expression callee to inspect.
37
+ *
38
+ * @returns Whether the callee matches a TLS-relevant call site.
39
+ */
40
+ export const isRelevantNodeTlsCall = (callee) => {
41
+ if (callee.type === "Identifier") {
42
+ return callee.name === "createSecureContext";
43
+ }
44
+ if (callee.type !== "MemberExpression") {
45
+ return false;
46
+ }
47
+ const methodName = getMemberPropertyName(callee);
48
+ return (isDefined(methodName) &&
49
+ setHas(NODE_TLS_CALL_METHOD_NAMES, methodName) &&
50
+ isNodeTlsObjectExpression(callee.object));
51
+ };
52
+ /**
53
+ * Check whether a constructor call targets a relevant Node TLS constructor.
54
+ *
55
+ * @param callee - New-expression callee to inspect.
56
+ *
57
+ * @returns Whether the callee matches a TLS-relevant constructor site.
58
+ */
59
+ export const isRelevantNodeTlsConstructor = (callee) => {
60
+ if (callee.type !== "MemberExpression") {
61
+ return false;
62
+ }
63
+ return (getMemberPropertyName(callee) === "Agent" &&
64
+ isNodeTlsObjectExpression(callee.object));
65
+ };
66
+ /**
67
+ * Check whether an object literal is being used as options for a relevant Node
68
+ * TLS API.
69
+ *
70
+ * @param node - Object expression to inspect.
71
+ *
72
+ * @returns Whether the object expression belongs to a TLS-relevant call site.
73
+ */
74
+ export const isRelevantNodeTlsOptionsObject = (node) => {
75
+ const parentNode = node.parent;
76
+ if (parentNode?.type === "CallExpression") {
77
+ return isRelevantNodeTlsCall(parentNode.callee);
78
+ }
79
+ if (parentNode?.type === "NewExpression") {
80
+ return isRelevantNodeTlsConstructor(parentNode.callee);
81
+ }
82
+ return false;
83
+ };
84
+ /**
85
+ * Check whether an assignment left-hand side targets a static TLS member.
86
+ *
87
+ * @param node - Assignment left-hand side expression to inspect.
88
+ * @param propertyNames - Allowed member names for matching.
89
+ *
90
+ * @returns Whether the node matches one of the targeted TLS static members.
91
+ */
92
+ export const isNodeTlsStaticMember = (node, propertyNames) => {
93
+ if (node.type !== "MemberExpression") {
94
+ return false;
95
+ }
96
+ const propertyName = getMemberPropertyName(node);
97
+ return (isDefined(propertyName) &&
98
+ setHas(propertyNames, propertyName) &&
99
+ isNodeTlsObjectExpression(node.object));
100
+ };
101
+ //# sourceMappingURL=node-tls-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-tls-config.js","sourceRoot":"","sources":["../../src/_internal/node-tls-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { TSESLint } from "@typescript-eslint/utils";
2
+ import type { UnknownArray } from "type-fest";
3
+ /** Canonical SDL rule module type used in the exported registry map. */
4
+ export type SdlRuleModule = TSESLint.RuleModule<string, Readonly<UnknownArray>>;
5
+ /** Naming convention for SDL security rule identifiers. */
6
+ export type SdlRuleNamePattern = `no-${string}`;
7
+ /** SDL rule registry keyed by rule name for plugin export wiring. */
8
+ export declare const sdlRules: Readonly<Record<SdlRuleNamePattern, SdlRuleModule>>;
9
+ export default sdlRules;
10
+ //# sourceMappingURL=rules-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-registry.d.ts","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA0E9C,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhF,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,MAAM,MAAM,EAAE,CAAC;AAEhD,qEAAqE;AACrE,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,CA2FxE,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,148 @@
1
+ import noAngularBypassSanitizerRule from "../rules/no-angular-bypass-sanitizer.js";
2
+ import noAngularBypassSecurityTrustHtmlRule from "../rules/no-angular-bypass-security-trust-html.js";
3
+ import noAngularInnerhtmlBindingRule from "../rules/no-angular-innerhtml-binding.js";
4
+ import noAngularSanitizationTrustedUrlsRule from "../rules/no-angular-sanitization-trusted-urls.js";
5
+ import noAngularjsBypassSceRule from "../rules/no-angularjs-bypass-sce.js";
6
+ import noAngularjsEnableSvgRule from "../rules/no-angularjs-enable-svg.js";
7
+ import noAngularjsNgBindHtmlWithoutSanitizeRule from "../rules/no-angularjs-ng-bind-html-without-sanitize.js";
8
+ import noAngularjsSanitizationWhitelistRule from "../rules/no-angularjs-sanitization-whitelist.js";
9
+ import noAngularjsSceResourceUrlWildcardRule from "../rules/no-angularjs-sce-resource-url-wildcard.js";
10
+ import noChildProcessExecRule from "../rules/no-child-process-exec.js";
11
+ import noChildProcessShellTrueRule from "../rules/no-child-process-shell-true.js";
12
+ import noCookiesRule from "../rules/no-cookies.js";
13
+ import noDocumentDomainRule from "../rules/no-document-domain.js";
14
+ import noDocumentExeccommandInsertHtmlRule from "../rules/no-document-execcommand-insert-html.js";
15
+ import noDocumentParseHtmlUnsafeRule from "../rules/no-document-parse-html-unsafe.js";
16
+ import noDocumentWriteRule from "../rules/no-document-write.js";
17
+ import noDomparserHtmlWithoutSanitizationRule from "../rules/no-domparser-html-without-sanitization.js";
18
+ import noDomparserSvgWithoutSanitizationRule from "../rules/no-domparser-svg-without-sanitization.js";
19
+ import noDynamicImportUnsafeUrlRule from "../rules/no-dynamic-import-unsafe-url.js";
20
+ import noElectronAllowRunningInsecureContentRule from "../rules/no-electron-allow-running-insecure-content.js";
21
+ import noElectronDangerousBlinkFeaturesRule from "../rules/no-electron-dangerous-blink-features.js";
22
+ import noElectronDisableContextIsolationRule from "../rules/no-electron-disable-context-isolation.js";
23
+ import noElectronDisableSandboxRule from "../rules/no-electron-disable-sandbox.js";
24
+ import noElectronDisableWebSecurityRule from "../rules/no-electron-disable-web-security.js";
25
+ import noElectronEnableRemoteModuleRule from "../rules/no-electron-enable-remote-module.js";
26
+ import noElectronEnableWebviewTagRule from "../rules/no-electron-enable-webview-tag.js";
27
+ import noElectronExperimentalFeaturesRule from "../rules/no-electron-experimental-features.js";
28
+ import noElectronExposeRawIpcRendererRule from "../rules/no-electron-expose-raw-ipc-renderer.js";
29
+ import noElectronInsecureCertificateErrorHandlerRule from "../rules/no-electron-insecure-certificate-error-handler.js";
30
+ import noElectronInsecureCertificateVerifyProcRule from "../rules/no-electron-insecure-certificate-verify-proc.js";
31
+ import noElectronInsecurePermissionRequestHandlerRule from "../rules/no-electron-insecure-permission-request-handler.js";
32
+ import noElectronNodeIntegrationRule from "../rules/no-electron-node-integration.js";
33
+ import noElectronPermissionCheckHandlerAllowAllRule from "../rules/no-electron-permission-check-handler-allow-all.js";
34
+ import noElectronUncheckedIpcSenderRule from "../rules/no-electron-unchecked-ipc-sender.js";
35
+ import noElectronUnrestrictedNavigationRule from "../rules/no-electron-unrestricted-navigation.js";
36
+ import noElectronUntrustedOpenExternalRule from "../rules/no-electron-untrusted-open-external.js";
37
+ import noElectronWebviewAllowpopupsRule from "../rules/no-electron-webview-allowpopups.js";
38
+ import noElectronWebviewInsecureWebpreferencesRule from "../rules/no-electron-webview-insecure-webpreferences.js";
39
+ import noElectronWebviewNodeIntegrationRule from "../rules/no-electron-webview-node-integration.js";
40
+ import noHtmlMethodRule from "../rules/no-html-method.js";
41
+ import noHttpRequestToInsecureProtocolRule from "../rules/no-http-request-to-insecure-protocol.js";
42
+ import noIframeSrcdocRule from "../rules/no-iframe-srcdoc.js";
43
+ import noInnerHtmlRule from "../rules/no-inner-html.js";
44
+ import noInsecureRandomRule from "../rules/no-insecure-random.js";
45
+ import noInsecureTlsAgentOptionsRule from "../rules/no-insecure-tls-agent-options.js";
46
+ import noInsecureUrlRule from "../rules/no-insecure-url.js";
47
+ import noLocationJavascriptUrlRule from "../rules/no-location-javascript-url.js";
48
+ import noMessageEventWithoutOriginCheckRule from "../rules/no-message-event-without-origin-check.js";
49
+ import noMsappExecUnsafeRule from "../rules/no-msapp-exec-unsafe.js";
50
+ import noNodeTlsCheckServerIdentityBypassRule from "../rules/no-node-tls-check-server-identity-bypass.js";
51
+ import noNodeTlsLegacyProtocolRule from "../rules/no-node-tls-legacy-protocol.js";
52
+ import noNodeTlsRejectUnauthorizedZeroRule from "../rules/no-node-tls-reject-unauthorized-zero.js";
53
+ import noNodeTlsSecurityLevelZeroRule from "../rules/no-node-tls-security-level-zero.js";
54
+ import noNodeVmRunInContextRule from "../rules/no-node-vm-run-in-context.js";
55
+ import noNodeVmSourceTextModuleRule from "../rules/no-node-vm-source-text-module.js";
56
+ import noNodeWorkerThreadsEvalRule from "../rules/no-node-worker-threads-eval.js";
57
+ import noNonnullAssertionOnSecurityInputRule from "../rules/no-nonnull-assertion-on-security-input.js";
58
+ import noPostmessageStarOriginRule from "../rules/no-postmessage-star-origin.js";
59
+ import noPostmessageWithoutOriginAllowlistRule from "../rules/no-postmessage-without-origin-allowlist.js";
60
+ import noRangeCreateContextualFragmentRule from "../rules/no-range-create-contextual-fragment.js";
61
+ import noScriptSrcDataUrlRule from "../rules/no-script-src-data-url.js";
62
+ import noScriptTextRule from "../rules/no-script-text.js";
63
+ import noServiceWorkerUnsafeScriptUrlRule from "../rules/no-service-worker-unsafe-script-url.js";
64
+ import noSetHtmlUnsafeRule from "../rules/no-set-html-unsafe.js";
65
+ import noTrustedTypesPolicyPassThroughRule from "../rules/no-trusted-types-policy-pass-through.js";
66
+ import noUnsafeAllocRule from "../rules/no-unsafe-alloc.js";
67
+ import noUnsafeCastToTrustedTypesRule from "../rules/no-unsafe-cast-to-trusted-types.js";
68
+ import noWindowOpenWithoutNoopenerRule from "../rules/no-window-open-without-noopener.js";
69
+ import noWinjsHtmlUnsafeRule from "../rules/no-winjs-html-unsafe.js";
70
+ import noWorkerBlobUrlRule from "../rules/no-worker-blob-url.js";
71
+ import noWorkerDataUrlRule from "../rules/no-worker-data-url.js";
72
+ /** SDL rule registry keyed by rule name for plugin export wiring. */
73
+ export const sdlRules = {
74
+ "no-angular-bypass-sanitizer": noAngularBypassSanitizerRule,
75
+ "no-angular-bypass-security-trust-html": noAngularBypassSecurityTrustHtmlRule,
76
+ "no-angular-innerhtml-binding": noAngularInnerhtmlBindingRule,
77
+ "no-angular-sanitization-trusted-urls": noAngularSanitizationTrustedUrlsRule,
78
+ "no-angularjs-bypass-sce": noAngularjsBypassSceRule,
79
+ "no-angularjs-enable-svg": noAngularjsEnableSvgRule,
80
+ "no-angularjs-ng-bind-html-without-sanitize": noAngularjsNgBindHtmlWithoutSanitizeRule,
81
+ "no-angularjs-sanitization-whitelist": noAngularjsSanitizationWhitelistRule,
82
+ "no-angularjs-sce-resource-url-wildcard": noAngularjsSceResourceUrlWildcardRule,
83
+ "no-child-process-exec": noChildProcessExecRule,
84
+ "no-child-process-shell-true": noChildProcessShellTrueRule,
85
+ "no-cookies": noCookiesRule,
86
+ "no-document-domain": noDocumentDomainRule,
87
+ "no-document-execcommand-insert-html": noDocumentExeccommandInsertHtmlRule,
88
+ "no-document-parse-html-unsafe": noDocumentParseHtmlUnsafeRule,
89
+ "no-document-write": noDocumentWriteRule,
90
+ "no-domparser-html-without-sanitization": noDomparserHtmlWithoutSanitizationRule,
91
+ "no-domparser-svg-without-sanitization": noDomparserSvgWithoutSanitizationRule,
92
+ "no-dynamic-import-unsafe-url": noDynamicImportUnsafeUrlRule,
93
+ "no-electron-allow-running-insecure-content": noElectronAllowRunningInsecureContentRule,
94
+ "no-electron-dangerous-blink-features": noElectronDangerousBlinkFeaturesRule,
95
+ "no-electron-disable-context-isolation": noElectronDisableContextIsolationRule,
96
+ "no-electron-disable-sandbox": noElectronDisableSandboxRule,
97
+ "no-electron-disable-web-security": noElectronDisableWebSecurityRule,
98
+ "no-electron-enable-remote-module": noElectronEnableRemoteModuleRule,
99
+ "no-electron-enable-webview-tag": noElectronEnableWebviewTagRule,
100
+ "no-electron-experimental-features": noElectronExperimentalFeaturesRule,
101
+ "no-electron-expose-raw-ipc-renderer": noElectronExposeRawIpcRendererRule,
102
+ "no-electron-insecure-certificate-error-handler": noElectronInsecureCertificateErrorHandlerRule,
103
+ "no-electron-insecure-certificate-verify-proc": noElectronInsecureCertificateVerifyProcRule,
104
+ "no-electron-insecure-permission-request-handler": noElectronInsecurePermissionRequestHandlerRule,
105
+ "no-electron-node-integration": noElectronNodeIntegrationRule,
106
+ "no-electron-permission-check-handler-allow-all": noElectronPermissionCheckHandlerAllowAllRule,
107
+ "no-electron-unchecked-ipc-sender": noElectronUncheckedIpcSenderRule,
108
+ "no-electron-unrestricted-navigation": noElectronUnrestrictedNavigationRule,
109
+ "no-electron-untrusted-open-external": noElectronUntrustedOpenExternalRule,
110
+ "no-electron-webview-allowpopups": noElectronWebviewAllowpopupsRule,
111
+ "no-electron-webview-insecure-webpreferences": noElectronWebviewInsecureWebpreferencesRule,
112
+ "no-electron-webview-node-integration": noElectronWebviewNodeIntegrationRule,
113
+ "no-html-method": noHtmlMethodRule,
114
+ "no-http-request-to-insecure-protocol": noHttpRequestToInsecureProtocolRule,
115
+ "no-iframe-srcdoc": noIframeSrcdocRule,
116
+ "no-inner-html": noInnerHtmlRule,
117
+ "no-insecure-random": noInsecureRandomRule,
118
+ "no-insecure-tls-agent-options": noInsecureTlsAgentOptionsRule,
119
+ "no-insecure-url": noInsecureUrlRule,
120
+ "no-location-javascript-url": noLocationJavascriptUrlRule,
121
+ "no-message-event-without-origin-check": noMessageEventWithoutOriginCheckRule,
122
+ "no-msapp-exec-unsafe": noMsappExecUnsafeRule,
123
+ "no-node-tls-check-server-identity-bypass": noNodeTlsCheckServerIdentityBypassRule,
124
+ "no-node-tls-legacy-protocol": noNodeTlsLegacyProtocolRule,
125
+ "no-node-tls-reject-unauthorized-zero": noNodeTlsRejectUnauthorizedZeroRule,
126
+ "no-node-tls-security-level-zero": noNodeTlsSecurityLevelZeroRule,
127
+ "no-node-vm-run-in-context": noNodeVmRunInContextRule,
128
+ "no-node-vm-source-text-module": noNodeVmSourceTextModuleRule,
129
+ "no-node-worker-threads-eval": noNodeWorkerThreadsEvalRule,
130
+ "no-nonnull-assertion-on-security-input": noNonnullAssertionOnSecurityInputRule,
131
+ "no-postmessage-star-origin": noPostmessageStarOriginRule,
132
+ "no-postmessage-without-origin-allowlist": noPostmessageWithoutOriginAllowlistRule,
133
+ "no-range-create-contextual-fragment": noRangeCreateContextualFragmentRule,
134
+ "no-script-src-data-url": noScriptSrcDataUrlRule,
135
+ "no-script-text": noScriptTextRule,
136
+ "no-service-worker-unsafe-script-url": noServiceWorkerUnsafeScriptUrlRule,
137
+ "no-set-html-unsafe": noSetHtmlUnsafeRule,
138
+ "no-trusted-types-policy-pass-through": noTrustedTypesPolicyPassThroughRule,
139
+ "no-unsafe-alloc": noUnsafeAllocRule,
140
+ "no-unsafe-cast-to-trusted-types": noUnsafeCastToTrustedTypesRule,
141
+ "no-window-open-without-noopener": noWindowOpenWithoutNoopenerRule,
142
+ "no-winjs-html-unsafe": noWinjsHtmlUnsafeRule,
143
+ "no-worker-blob-url": noWorkerBlobUrlRule,
144
+ "no-worker-data-url": noWorkerDataUrlRule,
145
+ };
146
+ export default sdlRules;
147
+ /* eslint-enable canonical/no-re-export -- End of intentional registry aggregation. */
148
+ //# sourceMappingURL=rules-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-registry.js","sourceRoot":"","sources":["../../src/_internal/rules-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TSESTree } from "@typescript-eslint/utils";
2
+ import { type getFullTypeChecker } from "./ast-utils.js";
3
+ /** ESLint rule context shape accepted by AST/type helper utilities. */
4
+ export type AstUtilsRuleContext = Parameters<typeof getFullTypeChecker>[0];
5
+ /** Returns whether an AST node likely refers to an `HTMLScriptElement`. */
6
+ export declare const isLikelyScriptElement: (node: TSESTree.Node, context: AstUtilsRuleContext, fullTypeChecker: ReturnType<typeof getFullTypeChecker>) => boolean;
7
+ //# sourceMappingURL=script-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-element.d.ts","sourceRoot":"","sources":["../../src/_internal/script-element.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,KAAK,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AAG9E,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAgC3E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,GAC9B,MAAM,QAAQ,CAAC,IAAI,EACnB,SAAS,mBAAmB,EAC5B,iBAAiB,UAAU,CAAC,OAAO,kBAAkB,CAAC,KACvD,OA4BF,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { getNodeTypeAsString } from "./ast-utils.js";
2
+ import { getMemberPropertyName, getStaticStringValue } from "./estree-utils.js";
3
+ const isLikelyScriptIdentifierName = (identifierName) => identifierName === "currentScript" ||
4
+ identifierName === "script" ||
5
+ identifierName === "scriptElement" ||
6
+ identifierName.endsWith("Script") ||
7
+ identifierName.endsWith("ScriptElement") ||
8
+ identifierName.endsWith("_script") ||
9
+ identifierName.endsWith("_script_element");
10
+ const isCreateElementScriptCall = (node) => {
11
+ if (node.type !== "CallExpression" ||
12
+ node.callee.type !== "MemberExpression") {
13
+ return false;
14
+ }
15
+ if (getMemberPropertyName(node.callee) !== "createElement") {
16
+ return false;
17
+ }
18
+ const [firstArgument] = node.arguments;
19
+ return (firstArgument !== undefined &&
20
+ firstArgument.type !== "SpreadElement" &&
21
+ getStaticStringValue(firstArgument) === "script");
22
+ };
23
+ /** Returns whether an AST node likely refers to an `HTMLScriptElement`. */
24
+ export const isLikelyScriptElement = (node, context, fullTypeChecker) => {
25
+ if (fullTypeChecker !== undefined) {
26
+ const nodeType = getNodeTypeAsString(fullTypeChecker, node, context);
27
+ if (nodeType.includes("HTMLScriptElement")) {
28
+ return true;
29
+ }
30
+ }
31
+ if (isCreateElementScriptCall(node)) {
32
+ return true;
33
+ }
34
+ if (node.type === "Identifier") {
35
+ return isLikelyScriptIdentifierName(node.name);
36
+ }
37
+ if (node.type !== "MemberExpression") {
38
+ return false;
39
+ }
40
+ const propertyName = getMemberPropertyName(node);
41
+ return (typeof propertyName === "string" &&
42
+ (propertyName === "currentScript" ||
43
+ isLikelyScriptIdentifierName(propertyName)));
44
+ };
45
+ /* eslint-enable @typescript-eslint/prefer-readonly-parameter-types -- Restore linting after script element helper declarations. */
46
+ //# sourceMappingURL=script-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-element.js","sourceRoot":"","sources":["../../src/_internal/script-element.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKhF,MAAM,4BAA4B,GAAG,CAAC,cAAsB,EAAW,EAAE,CACrE,cAAc,KAAK,eAAe;IAClC,cAAc,KAAK,QAAQ;IAC3B,cAAc,KAAK,eAAe;IAClC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACjC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC;IACxC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;IAClC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,yBAAyB,GAAG,CAAC,IAAmB,EAAW,EAAE;IAC/D,IACI,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,EACzC,CAAC;QACC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,eAAe,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAEvC,OAAO,CACH,aAAa,KAAK,SAAS;QAC3B,aAAa,CAAC,IAAI,KAAK,eAAe;QACtC,oBAAoB,CAAC,aAAa,CAAC,KAAK,QAAQ,CACnD,CAAC;AACN,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,IAAmB,EACnB,OAA4B,EAC5B,eAAsD,EAC/C,EAAE;IACT,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAErE,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,CACH,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,YAAY,KAAK,eAAe;YAC7B,4BAA4B,CAAC,YAAY,CAAC,CAAC,CAClD,CAAC;AACN,CAAC,CAAC;AAEF,mIAAmI"}
@@ -0,0 +1,69 @@
1
+ import type { TSESTree } from "@typescript-eslint/utils";
2
+ /**
3
+ * Check whether a value is a static `blob:` URL.
4
+ *
5
+ * @param value - URL string to inspect.
6
+ *
7
+ * @returns Whether the string starts with `blob:`.
8
+ */
9
+ export declare const isBlobUrl: (value: string) => boolean;
10
+ /**
11
+ * Check whether a value is a static `data:` URL.
12
+ *
13
+ * @param value - URL string to inspect.
14
+ *
15
+ * @returns Whether the string starts with `data:`.
16
+ */
17
+ export declare const isDataUrl: (value: string) => boolean;
18
+ /**
19
+ * Check whether an expression is one of the common global objects used for
20
+ * worker-related APIs.
21
+ *
22
+ * @param value - Expression to inspect.
23
+ *
24
+ * @returns Whether the expression is `window`, `self`, or `globalThis`.
25
+ */
26
+ export declare const isWorkerGlobalObject: (value: Readonly<TSESTree.Expression>) => boolean;
27
+ /**
28
+ * Check whether a constructor callee targets `Worker` or `SharedWorker`.
29
+ *
30
+ * @param callee - Constructor callee to inspect.
31
+ *
32
+ * @returns Whether the callee is a worker constructor.
33
+ */
34
+ export declare const isWorkerConstructor: (callee: Readonly<TSESTree.NewExpression["callee"]>) => boolean;
35
+ /**
36
+ * Check whether a call targets `importScripts(...)`.
37
+ *
38
+ * @param callee - Call callee to inspect.
39
+ *
40
+ * @returns Whether the callee is an importScripts sink.
41
+ */
42
+ export declare const isImportScriptsCall: (callee: Readonly<TSESTree.CallExpression["callee"]>) => boolean;
43
+ /**
44
+ * Check whether an expression resolves the service worker container from
45
+ * `navigator.serviceWorker`.
46
+ *
47
+ * @param value - Expression to inspect.
48
+ *
49
+ * @returns Whether the expression is a service worker container access.
50
+ */
51
+ export declare const isServiceWorkerContainerAccess: (value: Readonly<TSESTree.Expression>) => value is TSESTree.MemberExpression;
52
+ /**
53
+ * Check whether a call targets `navigator.serviceWorker.register(...)`.
54
+ *
55
+ * @param callee - Call callee to inspect.
56
+ *
57
+ * @returns Whether the callee is a service worker registration sink.
58
+ */
59
+ export declare const isServiceWorkerRegisterCall: (callee: Readonly<TSESTree.CallExpression["callee"]>) => boolean;
60
+ /**
61
+ * Check whether an expression is a direct `URL.createObjectURL(...)` call.
62
+ *
63
+ * @param node - Expression to inspect.
64
+ *
65
+ * @returns Whether the expression creates an object URL from the global URL
66
+ * API.
67
+ */
68
+ export declare const isUrlCreateObjectUrlCall: (node: Readonly<TSESTree.Expression>) => node is TSESTree.CallExpression;
69
+ //# sourceMappingURL=worker-code-loading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-code-loading.d.ts","sourceRoot":"","sources":["../../src/_internal/worker-code-loading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AA+BzD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAAoC,CAAC;AAE/E;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAAoC,CAAC;AAU/E;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACrC,OAAwE,CAAC;AAE5E;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC5B,QAAQ,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KACnD,OAaF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC5B,QAAQ,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,KACpD,OAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACrC,KAAK,IAAI,QAAQ,CAAC,gBASpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,QAAQ,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,KACpD,OAG8C,CAAC;AAelD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GACjC,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KACpC,IAAI,IAAI,QAAQ,CAAC,cAkBnB,CAAC"}