@nifrajs/web 3.3.0 → 4.0.0

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 (407) hide show
  1. package/dist/backend-only.d.ts +15 -0
  2. package/dist/backend-only.d.ts.map +1 -0
  3. package/dist/backend-only.js +16 -0
  4. package/dist/backend-only.js.map +1 -0
  5. package/dist/boundary.d.ts +5 -0
  6. package/dist/boundary.d.ts.map +1 -1
  7. package/dist/boundary.js +11 -2
  8. package/dist/boundary.js.map +1 -1
  9. package/dist/build-plan.d.ts +35 -6
  10. package/dist/build-plan.d.ts.map +1 -1
  11. package/dist/build-plan.js +89 -35
  12. package/dist/build-plan.js.map +1 -1
  13. package/dist/build-vite.d.ts +18 -0
  14. package/dist/build-vite.d.ts.map +1 -1
  15. package/dist/build-vite.js +97 -17
  16. package/dist/build-vite.js.map +1 -1
  17. package/dist/build.d.ts +72 -23
  18. package/dist/build.d.ts.map +1 -1
  19. package/dist/build.js +411 -98
  20. package/dist/build.js.map +1 -1
  21. package/dist/bun-dev-entry.d.ts +1 -1
  22. package/dist/bun-dev-entry.js +1 -1
  23. package/dist/cdn.d.ts +74 -0
  24. package/dist/cdn.d.ts.map +1 -0
  25. package/dist/cdn.js +132 -0
  26. package/dist/cdn.js.map +1 -0
  27. package/dist/client.d.ts +21 -1
  28. package/dist/client.d.ts.map +1 -1
  29. package/dist/client.js +226 -15
  30. package/dist/client.js.map +1 -1
  31. package/dist/conformance.d.ts +4 -3
  32. package/dist/conformance.d.ts.map +1 -1
  33. package/dist/conformance.js +12 -3
  34. package/dist/conformance.js.map +1 -1
  35. package/dist/csp.d.ts +93 -0
  36. package/dist/csp.d.ts.map +1 -0
  37. package/dist/csp.js +122 -0
  38. package/dist/csp.js.map +1 -0
  39. package/dist/css-contract.d.ts +21 -0
  40. package/dist/css-contract.d.ts.map +1 -0
  41. package/dist/css-contract.js +28 -0
  42. package/dist/css-contract.js.map +1 -0
  43. package/dist/dev-client.d.ts +76 -0
  44. package/dist/dev-client.d.ts.map +1 -0
  45. package/dist/dev-client.js +280 -0
  46. package/dist/dev-client.js.map +1 -0
  47. package/dist/dev-diagnostics.d.ts +26 -2
  48. package/dist/dev-diagnostics.d.ts.map +1 -1
  49. package/dist/dev-diagnostics.js +38 -7
  50. package/dist/dev-diagnostics.js.map +1 -1
  51. package/dist/dev-error.d.ts +4 -13
  52. package/dist/dev-error.d.ts.map +1 -1
  53. package/dist/dev-error.js +46 -4
  54. package/dist/dev-error.js.map +1 -1
  55. package/dist/dev-feed.d.ts +298 -0
  56. package/dist/dev-feed.d.ts.map +1 -0
  57. package/dist/dev-feed.js +797 -0
  58. package/dist/dev-feed.js.map +1 -0
  59. package/dist/dev-indicator.d.ts +38 -0
  60. package/dist/dev-indicator.d.ts.map +1 -0
  61. package/dist/dev-indicator.js +93 -0
  62. package/dist/dev-indicator.js.map +1 -0
  63. package/dist/dev-session.d.ts +77 -0
  64. package/dist/dev-session.d.ts.map +1 -0
  65. package/dist/dev-session.js +580 -0
  66. package/dist/dev-session.js.map +1 -0
  67. package/dist/dev-sourcemap.d.ts +27 -0
  68. package/dist/dev-sourcemap.d.ts.map +1 -0
  69. package/dist/dev-sourcemap.js +235 -0
  70. package/dist/dev-sourcemap.js.map +1 -0
  71. package/dist/dev-ssr-graph.d.ts.map +1 -1
  72. package/dist/dev-ssr-graph.js +13 -5
  73. package/dist/dev-ssr-graph.js.map +1 -1
  74. package/dist/dev.d.ts +15 -2
  75. package/dist/dev.d.ts.map +1 -1
  76. package/dist/dev.js +69 -44
  77. package/dist/dev.js.map +1 -1
  78. package/dist/diagnostic-catalog.d.ts +35 -0
  79. package/dist/diagnostic-catalog.d.ts.map +1 -0
  80. package/dist/diagnostic-catalog.js +203 -0
  81. package/dist/diagnostic-catalog.js.map +1 -0
  82. package/dist/diagnostic-prompt.d.ts +49 -0
  83. package/dist/diagnostic-prompt.d.ts.map +1 -0
  84. package/dist/diagnostic-prompt.js +303 -0
  85. package/dist/diagnostic-prompt.js.map +1 -0
  86. package/dist/diagnostic.d.ts +17 -23
  87. package/dist/diagnostic.d.ts.map +1 -1
  88. package/dist/diagnostic.js +31 -39
  89. package/dist/diagnostic.js.map +1 -1
  90. package/dist/draft.d.ts.map +1 -1
  91. package/dist/draft.js +4 -1
  92. package/dist/draft.js.map +1 -1
  93. package/dist/fn.d.ts +5 -0
  94. package/dist/fn.d.ts.map +1 -1
  95. package/dist/fn.js +13 -3
  96. package/dist/fn.js.map +1 -1
  97. package/dist/fs.d.ts.map +1 -1
  98. package/dist/fs.js +4 -2
  99. package/dist/fs.js.map +1 -1
  100. package/dist/index.d.ts +15 -15
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +13 -12
  103. package/dist/index.js.map +1 -1
  104. package/dist/internal/cdn/cloudflare.d.ts +48 -0
  105. package/dist/internal/cdn/cloudflare.d.ts.map +1 -0
  106. package/dist/internal/cdn/cloudflare.js +94 -0
  107. package/dist/internal/cdn/cloudflare.js.map +1 -0
  108. package/dist/internal/cdn/core.d.ts +91 -0
  109. package/dist/internal/cdn/core.d.ts.map +1 -0
  110. package/dist/internal/cdn/core.js +220 -0
  111. package/dist/internal/cdn/core.js.map +1 -0
  112. package/dist/internal/cdn/fastly.d.ts +17 -0
  113. package/dist/internal/cdn/fastly.d.ts.map +1 -0
  114. package/dist/internal/cdn/fastly.js +43 -0
  115. package/dist/internal/cdn/fastly.js.map +1 -0
  116. package/dist/internal/cdn/vercel.d.ts +31 -0
  117. package/dist/internal/cdn/vercel.d.ts.map +1 -0
  118. package/dist/internal/cdn/vercel.js +56 -0
  119. package/dist/internal/cdn/vercel.js.map +1 -0
  120. package/dist/internal/code-unit-order.d.ts +4 -0
  121. package/dist/internal/code-unit-order.d.ts.map +1 -0
  122. package/dist/internal/code-unit-order.js +6 -0
  123. package/dist/internal/code-unit-order.js.map +1 -0
  124. package/dist/internal/codegen.d.ts +3 -0
  125. package/dist/internal/codegen.d.ts.map +1 -1
  126. package/dist/internal/codegen.js +151 -30
  127. package/dist/internal/codegen.js.map +1 -1
  128. package/dist/internal/dev-csp.d.ts +24 -0
  129. package/dist/internal/dev-csp.d.ts.map +1 -0
  130. package/dist/internal/dev-csp.js +160 -0
  131. package/dist/internal/dev-csp.js.map +1 -0
  132. package/dist/internal/dev-reserved.d.ts +25 -0
  133. package/dist/internal/dev-reserved.d.ts.map +1 -0
  134. package/dist/internal/dev-reserved.js +39 -0
  135. package/dist/internal/dev-reserved.js.map +1 -0
  136. package/dist/internal/html-spans.d.ts +10 -0
  137. package/dist/internal/html-spans.d.ts.map +1 -0
  138. package/dist/internal/html-spans.js +46 -0
  139. package/dist/internal/html-spans.js.map +1 -0
  140. package/dist/internal/loading-runtime.d.ts +44 -0
  141. package/dist/internal/loading-runtime.d.ts.map +1 -0
  142. package/dist/internal/loading-runtime.js +206 -0
  143. package/dist/internal/loading-runtime.js.map +1 -0
  144. package/dist/internal/matches-runtime.d.ts +8 -0
  145. package/dist/internal/matches-runtime.d.ts.map +1 -0
  146. package/dist/internal/matches-runtime.js +61 -0
  147. package/dist/internal/matches-runtime.js.map +1 -0
  148. package/dist/internal/mount-shadow.d.ts +36 -0
  149. package/dist/internal/mount-shadow.d.ts.map +1 -0
  150. package/dist/internal/mount-shadow.js +65 -0
  151. package/dist/internal/mount-shadow.js.map +1 -0
  152. package/dist/internal/node-builtins.d.ts +3 -0
  153. package/dist/internal/node-builtins.d.ts.map +1 -0
  154. package/dist/internal/node-builtins.js +79 -0
  155. package/dist/internal/node-builtins.js.map +1 -0
  156. package/dist/internal/output-guard.d.ts +65 -0
  157. package/dist/internal/output-guard.d.ts.map +1 -0
  158. package/dist/internal/output-guard.js +630 -0
  159. package/dist/internal/output-guard.js.map +1 -0
  160. package/dist/internal/page-execution.d.ts +69 -0
  161. package/dist/internal/page-execution.d.ts.map +1 -0
  162. package/dist/internal/page-execution.js +1021 -0
  163. package/dist/internal/page-execution.js.map +1 -0
  164. package/dist/internal/parity.d.ts +21 -0
  165. package/dist/internal/parity.d.ts.map +1 -1
  166. package/dist/internal/parity.js +104 -22
  167. package/dist/internal/parity.js.map +1 -1
  168. package/dist/internal/private-env.d.ts +12 -0
  169. package/dist/internal/private-env.d.ts.map +1 -0
  170. package/dist/internal/private-env.js +335 -0
  171. package/dist/internal/private-env.js.map +1 -0
  172. package/dist/internal/public-url.d.ts +3 -0
  173. package/dist/internal/public-url.d.ts.map +1 -0
  174. package/dist/internal/public-url.js +18 -0
  175. package/dist/internal/public-url.js.map +1 -0
  176. package/dist/internal/render-document.d.ts +37 -21
  177. package/dist/internal/render-document.d.ts.map +1 -1
  178. package/dist/internal/render-document.js +104 -65
  179. package/dist/internal/render-document.js.map +1 -1
  180. package/dist/internal/request-url.d.ts +3 -0
  181. package/dist/internal/request-url.d.ts.map +1 -0
  182. package/dist/internal/request-url.js +14 -0
  183. package/dist/internal/request-url.js.map +1 -0
  184. package/dist/internal/response-controls.d.ts +75 -0
  185. package/dist/internal/response-controls.d.ts.map +1 -0
  186. package/dist/internal/response-controls.js +256 -0
  187. package/dist/internal/response-controls.js.map +1 -0
  188. package/dist/internal/runtime-contract.d.ts +11 -16
  189. package/dist/internal/runtime-contract.d.ts.map +1 -1
  190. package/dist/internal/runtime-contract.js.map +1 -1
  191. package/dist/internal/secret-scan.d.ts +104 -0
  192. package/dist/internal/secret-scan.d.ts.map +1 -0
  193. package/dist/internal/secret-scan.js +485 -0
  194. package/dist/internal/secret-scan.js.map +1 -0
  195. package/dist/internal/server-boundary.d.ts +6 -29
  196. package/dist/internal/server-boundary.d.ts.map +1 -1
  197. package/dist/internal/server-boundary.js +6 -66
  198. package/dist/internal/server-boundary.js.map +1 -1
  199. package/dist/internal/source-map.d.ts +47 -0
  200. package/dist/internal/source-map.d.ts.map +1 -0
  201. package/dist/internal/source-map.js +225 -0
  202. package/dist/internal/source-map.js.map +1 -0
  203. package/dist/internal/target-compat.d.ts +27 -0
  204. package/dist/internal/target-compat.d.ts.map +1 -0
  205. package/dist/internal/target-compat.js +77 -0
  206. package/dist/internal/target-compat.js.map +1 -0
  207. package/dist/internal/timing-safe-equal.d.ts +6 -0
  208. package/dist/internal/timing-safe-equal.d.ts.map +1 -1
  209. package/dist/internal/timing-safe-equal.js +10 -0
  210. package/dist/internal/timing-safe-equal.js.map +1 -1
  211. package/dist/internal/vitals-runtime.d.ts +18 -0
  212. package/dist/internal/vitals-runtime.d.ts.map +1 -0
  213. package/dist/internal/vitals-runtime.js +38 -0
  214. package/dist/internal/vitals-runtime.js.map +1 -0
  215. package/dist/internal/web-app.d.ts +56 -8
  216. package/dist/internal/web-app.d.ts.map +1 -1
  217. package/dist/internal/web-app.js +215 -772
  218. package/dist/internal/web-app.js.map +1 -1
  219. package/dist/internal/zone-graph.d.ts +89 -0
  220. package/dist/internal/zone-graph.d.ts.map +1 -0
  221. package/dist/internal/zone-graph.js +492 -0
  222. package/dist/internal/zone-graph.js.map +1 -0
  223. package/dist/isr.d.ts +83 -6
  224. package/dist/isr.d.ts.map +1 -1
  225. package/dist/isr.js +301 -39
  226. package/dist/isr.js.map +1 -1
  227. package/dist/llms-txt.d.ts +3 -0
  228. package/dist/llms-txt.d.ts.map +1 -1
  229. package/dist/llms-txt.js +37 -9
  230. package/dist/llms-txt.js.map +1 -1
  231. package/dist/manifest.d.ts +221 -14
  232. package/dist/manifest.d.ts.map +1 -1
  233. package/dist/manifest.js +386 -9
  234. package/dist/manifest.js.map +1 -1
  235. package/dist/module-graph.d.ts +26 -5
  236. package/dist/module-graph.d.ts.map +1 -1
  237. package/dist/module-graph.js +17 -7
  238. package/dist/module-graph.js.map +1 -1
  239. package/dist/navigation.d.ts +17 -3
  240. package/dist/navigation.d.ts.map +1 -1
  241. package/dist/navigation.js +11 -5
  242. package/dist/navigation.js.map +1 -1
  243. package/dist/nonce.d.ts +47 -0
  244. package/dist/nonce.d.ts.map +1 -0
  245. package/dist/nonce.js +63 -0
  246. package/dist/nonce.js.map +1 -0
  247. package/dist/plugins/css-modules.d.ts.map +1 -1
  248. package/dist/plugins/css-modules.js +4 -3
  249. package/dist/plugins/css-modules.js.map +1 -1
  250. package/dist/plugins/kit.d.ts +9 -0
  251. package/dist/plugins/kit.d.ts.map +1 -1
  252. package/dist/plugins/kit.js +18 -0
  253. package/dist/plugins/kit.js.map +1 -1
  254. package/dist/plugins/svg.d.ts +22 -3
  255. package/dist/plugins/svg.d.ts.map +1 -1
  256. package/dist/plugins/svg.js +112 -1
  257. package/dist/plugins/svg.js.map +1 -1
  258. package/dist/plugins/vite-leak-guard.d.ts +107 -3
  259. package/dist/plugins/vite-leak-guard.d.ts.map +1 -1
  260. package/dist/plugins/vite-leak-guard.js +378 -17
  261. package/dist/plugins/vite-leak-guard.js.map +1 -1
  262. package/dist/plugins/vite-zone-guard.d.ts +61 -0
  263. package/dist/plugins/vite-zone-guard.d.ts.map +1 -0
  264. package/dist/plugins/vite-zone-guard.js +208 -0
  265. package/dist/plugins/vite-zone-guard.js.map +1 -0
  266. package/dist/plugins/zone-guard.d.ts +27 -0
  267. package/dist/plugins/zone-guard.d.ts.map +1 -0
  268. package/dist/plugins/zone-guard.js +72 -0
  269. package/dist/plugins/zone-guard.js.map +1 -0
  270. package/dist/prerender.d.ts +10 -0
  271. package/dist/prerender.d.ts.map +1 -1
  272. package/dist/prerender.js +35 -3
  273. package/dist/prerender.js.map +1 -1
  274. package/dist/public-dir.d.ts +9 -0
  275. package/dist/public-dir.d.ts.map +1 -1
  276. package/dist/public-dir.js +131 -48
  277. package/dist/public-dir.js.map +1 -1
  278. package/dist/pwa-manifest.d.ts +68 -0
  279. package/dist/pwa-manifest.d.ts.map +1 -0
  280. package/dist/pwa-manifest.js +178 -0
  281. package/dist/pwa-manifest.js.map +1 -0
  282. package/dist/query.js +4 -4
  283. package/dist/query.js.map +1 -1
  284. package/dist/render-seam.d.ts +42 -2
  285. package/dist/render-seam.d.ts.map +1 -1
  286. package/dist/render-seam.js +6 -0
  287. package/dist/render-seam.js.map +1 -1
  288. package/dist/route-manifest.d.ts +3 -0
  289. package/dist/route-manifest.d.ts.map +1 -1
  290. package/dist/route-manifest.js +26 -3
  291. package/dist/route-manifest.js.map +1 -1
  292. package/dist/route-types.d.ts +24 -0
  293. package/dist/route-types.d.ts.map +1 -0
  294. package/dist/route-types.js +195 -0
  295. package/dist/route-types.js.map +1 -0
  296. package/dist/router.d.ts +28 -6
  297. package/dist/router.d.ts.map +1 -1
  298. package/dist/router.js +129 -40
  299. package/dist/router.js.map +1 -1
  300. package/dist/trusted-html.d.ts +34 -0
  301. package/dist/trusted-html.d.ts.map +1 -0
  302. package/dist/trusted-html.js +35 -0
  303. package/dist/trusted-html.js.map +1 -0
  304. package/dist/vitals.d.ts +33 -0
  305. package/dist/vitals.d.ts.map +1 -0
  306. package/dist/vitals.js +16 -0
  307. package/dist/vitals.js.map +1 -0
  308. package/dist/vite.d.ts +16 -1
  309. package/dist/vite.d.ts.map +1 -1
  310. package/dist/vite.js +187 -36
  311. package/dist/vite.js.map +1 -1
  312. package/dist/zones.d.ts +70 -0
  313. package/dist/zones.d.ts.map +1 -0
  314. package/dist/zones.js +365 -0
  315. package/dist/zones.js.map +1 -0
  316. package/package.json +67 -14
  317. package/src/backend-only.ts +16 -0
  318. package/src/boundary.ts +18 -5
  319. package/src/build-plan.ts +113 -36
  320. package/src/build-vite.ts +124 -15
  321. package/src/build.ts +535 -102
  322. package/src/bun-dev-entry.ts +1 -1
  323. package/src/cdn.ts +216 -0
  324. package/src/client.ts +251 -18
  325. package/src/conformance.ts +16 -3
  326. package/src/csp.ts +194 -0
  327. package/src/css-contract.ts +44 -0
  328. package/src/dev-client.ts +349 -0
  329. package/src/dev-diagnostics.ts +60 -7
  330. package/src/dev-error.ts +49 -5
  331. package/src/dev-feed.ts +1140 -0
  332. package/src/dev-indicator.ts +113 -0
  333. package/src/dev-session.ts +729 -0
  334. package/src/dev-sourcemap.ts +281 -0
  335. package/src/dev-ssr-graph.ts +16 -5
  336. package/src/dev.ts +86 -43
  337. package/src/diagnostic-catalog.ts +243 -0
  338. package/src/diagnostic-prompt.ts +355 -0
  339. package/src/diagnostic.ts +63 -66
  340. package/src/draft.ts +4 -1
  341. package/src/fn.ts +19 -3
  342. package/src/fs.ts +13 -2
  343. package/src/index.ts +57 -10
  344. package/src/internal/cdn/cloudflare.ts +146 -0
  345. package/src/internal/cdn/core.ts +316 -0
  346. package/src/internal/cdn/fastly.ts +62 -0
  347. package/src/internal/cdn/vercel.ts +95 -0
  348. package/src/internal/code-unit-order.ts +5 -0
  349. package/src/internal/codegen.ts +180 -29
  350. package/src/internal/dev-csp.ts +176 -0
  351. package/src/internal/dev-reserved.ts +52 -0
  352. package/src/internal/html-spans.ts +50 -0
  353. package/src/internal/loading-runtime.ts +244 -0
  354. package/src/internal/matches-runtime.ts +62 -0
  355. package/src/internal/mount-shadow.ts +88 -0
  356. package/src/internal/node-builtins.ts +79 -0
  357. package/src/internal/output-guard.ts +701 -0
  358. package/src/internal/page-execution.ts +1371 -0
  359. package/src/internal/parity.ts +150 -36
  360. package/src/internal/private-env.ts +334 -0
  361. package/src/internal/public-url.ts +22 -0
  362. package/src/internal/render-document.ts +153 -73
  363. package/src/internal/request-url.ts +14 -0
  364. package/src/internal/response-controls.ts +284 -0
  365. package/src/internal/runtime-contract.ts +10 -15
  366. package/src/internal/secret-scan.ts +623 -0
  367. package/src/internal/server-boundary.ts +6 -69
  368. package/src/internal/source-map.ts +256 -0
  369. package/src/internal/target-compat.ts +92 -0
  370. package/src/internal/timing-safe-equal.ts +13 -0
  371. package/src/internal/vitals-runtime.ts +53 -0
  372. package/src/internal/web-app.ts +290 -879
  373. package/src/internal/zone-graph.ts +593 -0
  374. package/src/isr.ts +366 -39
  375. package/src/llms-txt.ts +44 -8
  376. package/src/manifest.ts +671 -17
  377. package/src/module-graph.ts +53 -9
  378. package/src/navigation.ts +29 -6
  379. package/src/nonce.ts +104 -0
  380. package/src/plugins/css-modules.ts +5 -3
  381. package/src/plugins/kit.ts +24 -0
  382. package/src/plugins/svg.ts +135 -4
  383. package/src/plugins/vite-leak-guard.ts +529 -16
  384. package/src/plugins/vite-zone-guard.ts +263 -0
  385. package/src/plugins/zone-guard.ts +110 -0
  386. package/src/prerender.ts +49 -3
  387. package/src/public-dir.ts +135 -49
  388. package/src/pwa-manifest.ts +226 -0
  389. package/src/query.ts +4 -4
  390. package/src/render-seam.ts +46 -1
  391. package/src/route-manifest.ts +15 -3
  392. package/src/route-types.ts +264 -0
  393. package/src/router.ts +163 -63
  394. package/src/trusted-html.ts +44 -0
  395. package/src/vitals.ts +44 -0
  396. package/src/vite.ts +207 -36
  397. package/src/zones.ts +430 -0
  398. package/dist/plugins/vite-server-only.d.ts +0 -49
  399. package/dist/plugins/vite-server-only.d.ts.map +0 -1
  400. package/dist/plugins/vite-server-only.js +0 -57
  401. package/dist/plugins/vite-server-only.js.map +0 -1
  402. package/dist/server-only.d.ts +0 -21
  403. package/dist/server-only.d.ts.map +0 -1
  404. package/dist/server-only.js +0 -25
  405. package/dist/server-only.js.map +0 -1
  406. package/src/plugins/vite-server-only.ts +0 -75
  407. package/src/server-only.ts +0 -25
@@ -0,0 +1,630 @@
1
+ // Registry symbols shared with core and `@nifrajs/schema`, so two copies of either still agree.
2
+ const RESPONSE_RESULT = Symbol.for("nifra.response.result");
3
+ const STATUS_SIGNAL = Symbol.for("nifra.web.status-signal");
4
+ /** Set by `t.deferred(inner)` on its schema node: `inner`'s own validate. */
5
+ const DEFERRED_VALIDATE = Symbol.for("nifra.schema.deferredValidate");
6
+ export const DECLASSIFIED_KEY = "x-nifra-declassified";
7
+ const DEFERRED_KEY = "x-nifra-deferred";
8
+ /** A field name that usually holds a credential or personal identifier. */
9
+ export function isSensitiveFieldName(name) {
10
+ const key = name.toLowerCase().replace(/[-_]/g, "");
11
+ return SENSITIVE_NAMES.has(key) || SENSITIVE_SUFFIXES.some((suffix) => key.endsWith(suffix));
12
+ }
13
+ const SENSITIVE_NAMES = new Set([
14
+ "passwd",
15
+ "token",
16
+ "sessionid",
17
+ "ssn",
18
+ "socialsecuritynumber",
19
+ "creditcard",
20
+ "creditcardnumber",
21
+ "cardnumber",
22
+ "cvv",
23
+ "cvc",
24
+ "otp",
25
+ ]);
26
+ const SENSITIVE_SUFFIXES = [
27
+ "password",
28
+ "passwordhash",
29
+ "secret",
30
+ "apikey",
31
+ "apitoken",
32
+ "privatekey",
33
+ "secretkey",
34
+ "accesstoken",
35
+ "refreshtoken",
36
+ "idtoken",
37
+ "authtoken",
38
+ "sessiontoken",
39
+ "bearertoken",
40
+ ];
41
+ /** A browser-bound value failed its output contract. The message carries paths, never values. */
42
+ export class OutputGuardError extends Error {
43
+ name = "OutputGuardError";
44
+ paths;
45
+ constructor(message, paths = []) {
46
+ super(`[nifra/web] ${message}`);
47
+ this.paths = paths;
48
+ }
49
+ }
50
+ const isDeferred = (value) => typeof value === "object" &&
51
+ value !== null &&
52
+ value.__nifra_deferred === true;
53
+ const isNode = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
54
+ const isPlain = (value) => {
55
+ const proto = Object.getPrototypeOf(value);
56
+ return proto === Object.prototype || proto === null;
57
+ };
58
+ /** Re-root the issues children pushed since `from` under `key`. Runs only on failure. */
59
+ function prefix(state, from, key) {
60
+ for (let i = from; i < state.issues.length; i++)
61
+ state.issues[i] = `/${key}${state.issues[i]}`;
62
+ }
63
+ function assign(out, key, value) {
64
+ if (key === "__proto__") {
65
+ Object.defineProperty(out, key, { value, enumerable: true, writable: true, configurable: true });
66
+ }
67
+ else
68
+ out[key] = value;
69
+ }
70
+ /** Every deferred marker inside a value no schema declares as deferred is an issue. */
71
+ const UNKNOWN = (value, state) => {
72
+ if (typeof value !== "object" || value === null)
73
+ return value;
74
+ if (isDeferred(value)) {
75
+ state.issues.push("");
76
+ return value;
77
+ }
78
+ if (Array.isArray(value)) {
79
+ for (let i = 0; i < value.length; i++) {
80
+ const from = state.issues.length;
81
+ UNKNOWN(value[i], state);
82
+ if (state.issues.length > from)
83
+ prefix(state, from, i);
84
+ }
85
+ }
86
+ else if (isPlain(value)) {
87
+ for (const key of Object.keys(value)) {
88
+ const from = state.issues.length;
89
+ UNKNOWN(value[key], state);
90
+ if (state.issues.length > from)
91
+ prefix(state, from, key);
92
+ }
93
+ }
94
+ return value;
95
+ };
96
+ /**
97
+ * A scalar schema: the validator decides, and a deferred marker cannot pass a scalar check. A `Date`
98
+ * becomes what JSON makes of it (its ISO string), so a `t.string()` field accepts a timestamp column
99
+ * and the page renders on the server with the value the browser receives.
100
+ */
101
+ const LEAF = (value) => (value instanceof Date ? value.toJSON() : value);
102
+ /** An array whose items are all scalars, passed through whole. */
103
+ const LEAF_ARRAY = (value) => value;
104
+ const typesOf = (node) => Array.isArray(node.type) ? node.type : node.type === undefined ? undefined : [node.type];
105
+ const COMBINATORS = ["anyOf", "oneOf", "allOf"];
106
+ /** What a schema node (with no `$ref` or combinator) projects as. */
107
+ function shapeOf(node) {
108
+ if (node[DEFERRED_KEY] === true)
109
+ return "deferred";
110
+ const types = typesOf(node);
111
+ const object = types?.includes("object") === true ||
112
+ (types === undefined &&
113
+ (node.properties !== undefined ||
114
+ node.patternProperties !== undefined ||
115
+ node.additionalProperties !== undefined));
116
+ const array = types?.includes("array") === true ||
117
+ (types === undefined && (node.items !== undefined || node.prefixItems !== undefined));
118
+ if (object && array)
119
+ return "both";
120
+ if (object)
121
+ return "object";
122
+ if (array)
123
+ return "array";
124
+ return types !== undefined ||
125
+ node.const !== undefined ||
126
+ node.enum !== undefined ||
127
+ node.not !== undefined
128
+ ? "leaf"
129
+ : "unknown";
130
+ }
131
+ class Compiler {
132
+ root;
133
+ memo = new Map();
134
+ ids = new Map();
135
+ sensitive = [];
136
+ constructor(root) {
137
+ this.root = root;
138
+ this.collectIds(root, new Set());
139
+ }
140
+ collectIds(value, seen) {
141
+ if (typeof value !== "object" || value === null || seen.has(value))
142
+ return;
143
+ seen.add(value);
144
+ if (Array.isArray(value)) {
145
+ for (const item of value)
146
+ this.collectIds(item, seen);
147
+ return;
148
+ }
149
+ const id = value.$id;
150
+ if (typeof id === "string" && !this.ids.has(id))
151
+ this.ids.set(id, value);
152
+ for (const key of Object.keys(value))
153
+ this.collectIds(value[key], seen);
154
+ }
155
+ resolve(ref, where) {
156
+ const byId = this.ids.get(ref);
157
+ if (byId !== undefined)
158
+ return byId;
159
+ if (ref === "#")
160
+ return this.root;
161
+ if (ref.startsWith("#/")) {
162
+ let node = this.root;
163
+ for (const raw of ref.slice(2).split("/")) {
164
+ const segment = raw.replaceAll("~1", "/").replaceAll("~0", "~");
165
+ node = isNode(node) ? node[segment] : undefined;
166
+ }
167
+ if (isNode(node))
168
+ return node;
169
+ }
170
+ throw new OutputGuardError(`the output schema references "${ref}" at ${where || "/"}, which it does not define`);
171
+ }
172
+ compile(node, where) {
173
+ const known = this.memo.get(node);
174
+ if (known !== undefined)
175
+ return known;
176
+ let impl = LEAF;
177
+ const late = (value, state) => impl(value, state);
178
+ this.memo.set(node, late);
179
+ impl = this.build(node, where);
180
+ this.memo.set(node, impl);
181
+ return impl;
182
+ }
183
+ build(node, where) {
184
+ if (typeof node.$ref === "string")
185
+ return this.compile(this.resolve(node.$ref, where), where);
186
+ if (COMBINATORS.some((key) => Array.isArray(node[key])))
187
+ return this.merged(node, where);
188
+ switch (shapeOf(node)) {
189
+ case "deferred":
190
+ return this.deferred(node, where);
191
+ case "both":
192
+ return this.dispatch(this.object(node, where), this.array(node, where), undefined);
193
+ case "object":
194
+ return this.object(node, where);
195
+ case "array":
196
+ return this.array(node, where);
197
+ case "leaf":
198
+ return LEAF;
199
+ default:
200
+ return UNKNOWN;
201
+ }
202
+ }
203
+ extra(schema, where) {
204
+ if (schema === true || (isNode(schema) && Object.keys(schema).length === 0))
205
+ return UNKNOWN;
206
+ return isNode(schema) ? this.compile(schema, `${where}/*`) : undefined;
207
+ }
208
+ object(node, where) {
209
+ const declared = new Map();
210
+ for (const [key, sub] of Object.entries(isNode(node.properties) ? node.properties : {})) {
211
+ if (!isNode(sub))
212
+ continue;
213
+ if (isSensitiveFieldName(key) && typeof sub[DECLASSIFIED_KEY] !== "string") {
214
+ this.sensitive.push(`${where}/${key}`);
215
+ }
216
+ declared.set(key, this.compile(sub, `${where}/${key}`));
217
+ }
218
+ const patterns = [];
219
+ for (const [pattern, sub] of Object.entries(isNode(node.patternProperties) ? node.patternProperties : {})) {
220
+ if (isNode(sub))
221
+ patterns.push([new RegExp(pattern, "u"), this.compile(sub, `${where}/*`)]);
222
+ }
223
+ // Undeclared means dropped. Only an explicit `true` or schema keeps extra keys open.
224
+ const extra = this.extra(node.additionalProperties, where) ??
225
+ (node.additionalProperties === undefined
226
+ ? this.extra(node.unevaluatedProperties, where)
227
+ : undefined);
228
+ const open = extra !== undefined || patterns.length > 0;
229
+ const undeclared = (key) => {
230
+ for (const [pattern, project] of patterns)
231
+ if (pattern.test(key))
232
+ return project;
233
+ return extra;
234
+ };
235
+ // A closed object drops a deferred marker's keys unless it declares them, so only an open one, or
236
+ // one declaring the marker key, could pass a marker on.
237
+ const checksMarker = open || declared.has("__nifra_deferred");
238
+ const project = (value, state) => {
239
+ if (typeof value !== "object" || value === null || Array.isArray(value))
240
+ return value;
241
+ if (checksMarker && isDeferred(value)) {
242
+ state.issues.push("");
243
+ return value;
244
+ }
245
+ const proto = Object.getPrototypeOf(value);
246
+ if (proto !== Object.prototype && proto !== null) {
247
+ if (value instanceof Date)
248
+ return value.toJSON();
249
+ // A class instance: its own fields as a plain object, so no prototype `toJSON` or getter
250
+ // decides what is serialized.
251
+ const snapshot = {};
252
+ for (const key of Object.keys(value))
253
+ assign(snapshot, key, value[key]);
254
+ return project(snapshot, state);
255
+ }
256
+ const input = value;
257
+ // Copy-on-write: a value that already holds only declared keys is returned as it is.
258
+ let out;
259
+ for (const key in input) {
260
+ // An inherited enumerable key (a polluted prototype) is never data.
261
+ if (!Object.hasOwn(input, key))
262
+ continue;
263
+ const projector = declared.get(key) ?? (open ? undeclared(key) : undefined);
264
+ if (projector === undefined) {
265
+ out ??= copyBefore(input, key);
266
+ continue;
267
+ }
268
+ const before = input[key];
269
+ if (projector === LEAF_ARRAY || (projector === LEAF && !(before instanceof Date))) {
270
+ if (out !== undefined)
271
+ assign(out, key, before);
272
+ continue;
273
+ }
274
+ const from = state.issues.length;
275
+ const after = projector(before, state);
276
+ if (state.issues.length > from)
277
+ prefix(state, from, key);
278
+ if (out !== undefined)
279
+ assign(out, key, after);
280
+ else if (after !== before) {
281
+ out = copyBefore(input, key);
282
+ assign(out, key, after);
283
+ }
284
+ }
285
+ return out ?? value;
286
+ };
287
+ return project;
288
+ }
289
+ array(node, where) {
290
+ const prefixNodes = Array.isArray(node.prefixItems)
291
+ ? node.prefixItems
292
+ : Array.isArray(node.items)
293
+ ? node.items
294
+ : [];
295
+ const head = prefixNodes.map((sub, i) => isNode(sub) ? this.compile(sub, `${where}/${i}`) : UNKNOWN);
296
+ const restSchema = Array.isArray(node.items) ? node.additionalItems : node.items;
297
+ const rest = this.extra(restSchema, where) ?? UNKNOWN;
298
+ // An array of scalars is the validator's alone: no key to drop, and walking it here would cost
299
+ // every `string[]` a loop. A `Date` inside one reaches the validator as it is.
300
+ if (rest === LEAF && head.every((projector) => projector === LEAF))
301
+ return LEAF_ARRAY;
302
+ return (value, state) => {
303
+ if (!Array.isArray(value))
304
+ return value;
305
+ let out;
306
+ for (let i = 0; i < value.length; i++) {
307
+ const before = value[i];
308
+ const projector = head[i] ?? rest;
309
+ if (projector === LEAF && !(before instanceof Date)) {
310
+ if (out !== undefined)
311
+ out[i] = before;
312
+ continue;
313
+ }
314
+ const from = state.issues.length;
315
+ const after = projector(before, state);
316
+ if (state.issues.length > from)
317
+ prefix(state, from, i);
318
+ if (out !== undefined)
319
+ out[i] = after;
320
+ else if (after !== before) {
321
+ out = value.slice(0, i);
322
+ out[i] = after;
323
+ }
324
+ }
325
+ return out ?? value;
326
+ };
327
+ }
328
+ /** The branches of a union or intersection, flattened, `$ref`s resolved. */
329
+ branches(node, where, into, seen) {
330
+ if (seen.has(node))
331
+ return;
332
+ seen.add(node);
333
+ if (typeof node.$ref === "string") {
334
+ this.branches(this.resolve(node.$ref, where), where, into, seen);
335
+ return;
336
+ }
337
+ let combined = false;
338
+ const own = {};
339
+ for (const [key, value] of Object.entries(node)) {
340
+ if (COMBINATORS.includes(key) && Array.isArray(value)) {
341
+ combined = true;
342
+ for (const branch of value)
343
+ if (isNode(branch))
344
+ this.branches(branch, where, into, seen);
345
+ }
346
+ else
347
+ own[key] = value;
348
+ }
349
+ if (!combined)
350
+ into.push(node);
351
+ else if (own.type !== undefined ||
352
+ own.properties !== undefined ||
353
+ own.patternProperties !== undefined ||
354
+ own.additionalProperties !== undefined ||
355
+ own.items !== undefined ||
356
+ own.prefixItems !== undefined) {
357
+ into.push(own);
358
+ }
359
+ }
360
+ /**
361
+ * A union or intersection keeps a key when any branch declares it. That can keep a key a
362
+ * different branch than the one the value matches declares - still a declared name, and a strict
363
+ * branch then fails validation - but never an undeclared one.
364
+ */
365
+ merged(node, where) {
366
+ const branches = [];
367
+ this.branches(node, where, branches, new Set());
368
+ const kinds = branches.map(shapeOf);
369
+ if (kinds.includes("unknown"))
370
+ return UNKNOWN;
371
+ const deferreds = branches.filter((_, i) => kinds[i] === "deferred");
372
+ if (deferreds.length > 1) {
373
+ throw new OutputGuardError(`the output schema at ${where || "/"} unions more than one deferred value`);
374
+ }
375
+ const objects = branches.filter((_, i) => kinds[i] === "object" || kinds[i] === "both");
376
+ const arrays = branches.filter((_, i) => kinds[i] === "array" || kinds[i] === "both");
377
+ const deferred = deferreds[0];
378
+ return this.dispatch(objects.length === 0 ? undefined : this.object(mergeObjects(objects), where), arrays.length === 0 ? undefined : this.array(mergeArrays(arrays), where), deferred === undefined ? undefined : this.compile(deferred, where));
379
+ }
380
+ dispatch(object, array, deferred) {
381
+ return (value, state) => {
382
+ if (typeof value !== "object" || value === null)
383
+ return value;
384
+ if (value instanceof Date)
385
+ return value.toJSON();
386
+ if (Array.isArray(value))
387
+ return array === undefined ? value : array(value, state);
388
+ if (isDeferred(value)) {
389
+ if (deferred !== undefined)
390
+ return deferred(value, state);
391
+ state.issues.push("");
392
+ return value;
393
+ }
394
+ return object === undefined ? value : object(value, state);
395
+ };
396
+ }
397
+ deferred(node, where) {
398
+ const validate = node[DEFERRED_VALIDATE];
399
+ if (!isNode(node.inner) || typeof validate !== "function") {
400
+ throw new OutputGuardError(`the deferred value at ${where || "/"} has no inner schema; declare it with t.deferred(schema)`);
401
+ }
402
+ const inner = {
403
+ project: this.compile(node.inner, where),
404
+ validate: validate,
405
+ };
406
+ return (value, state) => {
407
+ if (!isDeferred(value))
408
+ return value;
409
+ const label = `${state.label}, deferred value ${where || "/"},`;
410
+ const promise = value.promise.then((resolved) => runGuard(inner, resolved, label));
411
+ // Claimed like `defer()` claims its own: the stream consumer attaches later.
412
+ void promise.catch(() => { });
413
+ return { __nifra_deferred: true, id: value.id, promise };
414
+ };
415
+ }
416
+ }
417
+ /** The keys of a plain object before `stop`, every one of them kept as it is. */
418
+ function copyBefore(input, stop) {
419
+ const out = {};
420
+ for (const key in input) {
421
+ if (key === stop)
422
+ break;
423
+ if (Object.hasOwn(input, key))
424
+ assign(out, key, input[key]);
425
+ }
426
+ return out;
427
+ }
428
+ function mergeObjects(branches) {
429
+ const properties = new Map();
430
+ const patterns = new Map();
431
+ const extras = [];
432
+ let open = false;
433
+ for (const branch of branches) {
434
+ if (isNode(branch.properties)) {
435
+ for (const [key, sub] of Object.entries(branch.properties)) {
436
+ if (isNode(sub))
437
+ properties.set(key, [...(properties.get(key) ?? []), sub]);
438
+ }
439
+ }
440
+ if (isNode(branch.patternProperties)) {
441
+ for (const [pattern, sub] of Object.entries(branch.patternProperties)) {
442
+ if (isNode(sub))
443
+ patterns.set(pattern, [...(patterns.get(pattern) ?? []), sub]);
444
+ }
445
+ }
446
+ const extra = branch.additionalProperties ?? branch.unevaluatedProperties;
447
+ if (extra === true)
448
+ open = true;
449
+ else if (isNode(extra))
450
+ extras.push(extra);
451
+ }
452
+ const one = (subs) => {
453
+ if (subs.length === 1)
454
+ return subs[0];
455
+ // Declassified only when every branch declassifies the field.
456
+ const reason = subs.every((sub) => typeof sub[DECLASSIFIED_KEY] === "string")
457
+ ? subs[0]?.[DECLASSIFIED_KEY]
458
+ : undefined;
459
+ return reason === undefined ? { anyOf: subs } : { anyOf: subs, [DECLASSIFIED_KEY]: reason };
460
+ };
461
+ return {
462
+ type: "object",
463
+ properties: Object.fromEntries([...properties].map(([key, subs]) => [key, one(subs)])),
464
+ patternProperties: Object.fromEntries([...patterns].map(([key, subs]) => [key, one(subs)])),
465
+ ...(open
466
+ ? { additionalProperties: true }
467
+ : extras.length > 0
468
+ ? { additionalProperties: one(extras) }
469
+ : {}),
470
+ };
471
+ }
472
+ function mergeArrays(branches) {
473
+ const items = [];
474
+ let open = false;
475
+ for (const branch of branches) {
476
+ const item = Array.isArray(branch.items) ? undefined : branch.items;
477
+ if (item === undefined || item === true)
478
+ open = true;
479
+ else if (isNode(item))
480
+ items.push(item);
481
+ // A tuple branch: its positions merge into the shared item schema.
482
+ for (const sub of [
483
+ ...(Array.isArray(branch.prefixItems) ? branch.prefixItems : []),
484
+ ...(Array.isArray(branch.items) ? branch.items : []),
485
+ ]) {
486
+ if (isNode(sub))
487
+ items.push(sub);
488
+ }
489
+ }
490
+ return {
491
+ type: "array",
492
+ ...(open ? {} : { items: items.length === 1 ? items[0] : { anyOf: items } }),
493
+ };
494
+ }
495
+ /** The JSON Schema a schema exposes to project by, if any. */
496
+ function jsonSchemaOf(schema) {
497
+ const own = schema.jsonSchema;
498
+ if (isNode(own))
499
+ return own;
500
+ const standard = schema["~standard"];
501
+ if (typeof standard.jsonSchema?.output !== "function")
502
+ return undefined;
503
+ try {
504
+ const out = standard.jsonSchema.output({ target: "draft-2020-12" });
505
+ return isNode(out) ? out : undefined;
506
+ }
507
+ catch {
508
+ return undefined;
509
+ }
510
+ }
511
+ const compiled = new WeakMap();
512
+ /**
513
+ * Prepare `schema` as the output contract of `owner`. Throws when the schema declares a sensitive
514
+ * field it does not declassify, or references a definition it lacks - at route load, not per request.
515
+ */
516
+ export function outputGuard(schema, owner, exportName) {
517
+ if (typeof schema !== "object" ||
518
+ schema === null ||
519
+ typeof schema["~standard"]?.validate !== "function") {
520
+ throw new OutputGuardError(`${owner} exports ${exportName} that is not a Standard Schema`);
521
+ }
522
+ const cached = compiled.get(schema);
523
+ if (cached !== undefined)
524
+ return cached;
525
+ const standard = schema;
526
+ const json = jsonSchemaOf(standard);
527
+ let project;
528
+ if (json !== undefined) {
529
+ const compiler = new Compiler(json);
530
+ project = compiler.compile(json, "");
531
+ if (compiler.sensitive.length > 0) {
532
+ throw new OutputGuardError(`${owner} declares sensitive field(s) ${compiler.sensitive.join(", ")} in ${exportName}. Remove them, or mark a field that must reach the browser with t.declassified("why it may", schema)`, compiler.sensitive);
533
+ }
534
+ }
535
+ const guard = { project, validate: standard["~standard"].validate };
536
+ compiled.set(schema, guard);
537
+ return guard;
538
+ }
539
+ const pathOf = (issue) => (issue.path ?? [])
540
+ .map((segment) => `/${String(typeof segment === "object" && segment !== null ? segment.key : segment)}`)
541
+ .join("") || "/";
542
+ function settle(guard, result, label) {
543
+ if (result.issues !== undefined) {
544
+ const paths = [...new Set(result.issues.map(pathOf))];
545
+ throw new OutputGuardError(`${label} does not match its output schema at: ${paths.join(", ")}`, paths);
546
+ }
547
+ if (guard.project === undefined) {
548
+ const state = { label, issues: [] };
549
+ UNKNOWN(result.value, state);
550
+ if (state.issues.length > 0)
551
+ throw undeclaredDeferred(label, state.issues);
552
+ }
553
+ return result.value;
554
+ }
555
+ const undeclaredDeferred = (label, paths) => new OutputGuardError(`${label} returns a deferred value its output schema does not declare at: ${paths.map((p) => p || "/").join(", ")}. Declare it with t.deferred(schema)`, paths);
556
+ /** Project `value` through `guard`, then validate it. Throws (or rejects) an {@link OutputGuardError}. */
557
+ export function runGuard(guard, value, label) {
558
+ let projected = value;
559
+ if (guard.project !== undefined) {
560
+ const state = { label, issues: [] };
561
+ projected = guard.project(value, state);
562
+ if (state.issues.length > 0)
563
+ throw undeclaredDeferred(label, state.issues);
564
+ }
565
+ const result = guard.validate(projected);
566
+ return result instanceof Promise
567
+ ? result.then((settled) => settle(guard, settled, label))
568
+ : settle(guard, result, label);
569
+ }
570
+ const isResponseResult = (value) => value[RESPONSE_RESULT] === true &&
571
+ typeof value.toResponse === "function";
572
+ /**
573
+ * Guard one value a channel produced. Nothing, a redirect and an error status pass as they are; a 2xx
574
+ * `Response` is refused because its body would reach the browser without passing the schema.
575
+ */
576
+ export function guardValue(contract, value) {
577
+ if (value === undefined || value === null)
578
+ return value;
579
+ if (typeof value === "object") {
580
+ let status;
581
+ if (value instanceof Response)
582
+ status = STATUS_SIGNAL in value ? undefined : value.status;
583
+ else if (isResponseResult(value))
584
+ status = value.plain?.status ?? value.toResponse().status;
585
+ else if (contract.revalidate === true && "__nifraRevalidate" in value) {
586
+ const wrapper = value;
587
+ const data = guardValue(contract, wrapper.data);
588
+ return data instanceof Promise
589
+ ? data.then((settled) => ({ ...wrapper, data: settled }))
590
+ : { ...wrapper, data };
591
+ }
592
+ if (status !== undefined && status >= 200 && status < 300) {
593
+ throw new OutputGuardError(`${contract.label} returned a ${status} Response, whose body would reach the browser without passing its output schema. Return the data itself, or serve the endpoint from backend/app.ts`);
594
+ }
595
+ if (value instanceof Response || isResponseResult(value))
596
+ return value;
597
+ }
598
+ if (contract.guard === undefined) {
599
+ throw new OutputGuardError(`${contract.label} returned data, but declares no output schema. Every value sent to the browser needs one: ${contract.missing}`);
600
+ }
601
+ return runGuard(contract.guard, value, contract.label);
602
+ }
603
+ /**
604
+ * Wrap a channel function so everything it returns passes {@link guardValue}. A scalar result stays
605
+ * synchronous; an object result settles through a promise, as `await` would. A thrown `Response` is
606
+ * the same answer as a returned one, so a thrown 2xx is refused as well.
607
+ */
608
+ export function guardChannel(fn, contract) {
609
+ const check = (value) => guardValue(contract, value);
610
+ const checkThrown = (error) => {
611
+ if (typeof error === "object" &&
612
+ error !== null &&
613
+ (error instanceof Response || isResponseResult(error)))
614
+ guardValue(contract, error);
615
+ throw error;
616
+ };
617
+ return (...args) => {
618
+ let value;
619
+ try {
620
+ value = fn(...args);
621
+ }
622
+ catch (error) {
623
+ return checkThrown(error);
624
+ }
625
+ return value !== null && (typeof value === "object" || typeof value === "function")
626
+ ? Promise.resolve(value).then(check, checkThrown)
627
+ : check(value);
628
+ };
629
+ }
630
+ //# sourceMappingURL=output-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-guard.js","sourceRoot":"","sources":["../../src/internal/output-guard.ts"],"names":[],"mappings":"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"}