houdini 2.0.0-next.8 → 2.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 (450) hide show
  1. package/build/adapter/index.d.ts +2 -2
  2. package/build/adapter/index.js +6 -0
  3. package/build/cmd/generate.d.ts +5 -0
  4. package/build/cmd/generate.js +77 -0
  5. package/build/cmd/index.js +32 -0
  6. package/build/cmd/init.js +565 -0
  7. package/build/cmd/pullSchema.js +26 -0
  8. package/build/lib/ast.js +71 -0
  9. package/build/lib/codegen.d.ts +57 -0
  10. package/build/lib/codegen.js +617 -0
  11. package/build/lib/config.d.ts +240 -177
  12. package/build/lib/config.js +143 -0
  13. package/build/lib/constants.js +14 -0
  14. package/build/lib/database.d.ts +7 -0
  15. package/build/lib/database.js +624 -0
  16. package/build/lib/db.d.ts +13 -0
  17. package/build/lib/db.js +135 -0
  18. package/build/lib/deepMerge.js +23 -0
  19. package/build/lib/error.d.ts +16 -0
  20. package/build/lib/error.js +115 -0
  21. package/build/lib/fs.d.ts +9 -11
  22. package/build/lib/fs.js +245 -0
  23. package/build/lib/graphql.d.ts +5 -32
  24. package/build/lib/graphql.js +36 -0
  25. package/build/lib/imports.d.ts +29 -14
  26. package/build/lib/imports.js +66 -0
  27. package/build/lib/index.d.ts +17 -24
  28. package/build/lib/index.js +21 -0
  29. package/build/lib/logger.d.ts +12 -0
  30. package/build/lib/logger.js +45 -0
  31. package/build/lib/parse.d.ts +1 -2
  32. package/build/lib/parse.js +32 -0
  33. package/build/lib/path.d.ts +0 -1
  34. package/build/lib/path.js +44 -0
  35. package/build/lib/pipeline.d.ts +1 -1
  36. package/build/lib/pipeline.js +8 -0
  37. package/build/lib/plugins.d.ts +4 -0
  38. package/build/lib/plugins.js +88 -0
  39. package/build/lib/project.d.ts +19 -0
  40. package/build/lib/project.js +296 -0
  41. package/build/lib/schema.d.ts +1 -0
  42. package/build/lib/schema.js +61 -0
  43. package/build/lib/sleep.d.ts +1 -0
  44. package/build/lib/sleep.js +8 -0
  45. package/build/lib/types.d.ts +92 -303
  46. package/build/lib/types.js +37 -0
  47. package/build/lib/walk.d.ts +11 -6
  48. package/build/lib/walk.js +138 -0
  49. package/build/node/index.d.ts +44 -0
  50. package/build/node/index.js +402 -0
  51. package/build/oauth/index.d.ts +41 -0
  52. package/build/oauth/index.js +108 -0
  53. package/build/package.json +212 -0
  54. package/build/router/auth-token.d.ts +29 -0
  55. package/build/router/auth-token.js +168 -0
  56. package/build/{lib/router → router}/conventions.d.ts +10 -1
  57. package/build/router/conventions.js +165 -0
  58. package/build/{runtime-esm/router → router}/cookies.js +21 -21
  59. package/build/{runtime-esm/router → router}/jwt.js +8 -6
  60. package/build/{lib/router → router}/manifest.d.ts +2 -2
  61. package/build/router/manifest.js +279 -0
  62. package/build/{runtime/router → router}/match.d.ts +10 -10
  63. package/build/router/match.js +219 -0
  64. package/build/router/server.d.ts +57 -0
  65. package/build/router/server.js +500 -0
  66. package/build/{runtime/router → router}/session.d.ts +8 -3
  67. package/build/router/session.js +338 -0
  68. package/build/router/types.d.ts +44 -0
  69. package/build/runtime/cache/benchmarks/cache.bench.d.ts +1 -0
  70. package/build/runtime/cache/benchmarks/cache.bench.js +943 -0
  71. package/build/runtime/cache/gc.d.ts +2 -1
  72. package/build/{runtime-esm → runtime}/cache/gc.js +4 -1
  73. package/build/runtime/cache/index.d.ts +173 -3
  74. package/build/{runtime-esm/cache/cache.js → runtime/cache/index.js} +197 -70
  75. package/build/runtime/cache/lists.d.ts +9 -4
  76. package/build/{runtime-esm → runtime}/cache/lists.js +116 -27
  77. package/build/runtime/cache/staleManager.d.ts +2 -1
  78. package/build/{runtime-esm → runtime}/cache/staleManager.js +6 -2
  79. package/build/runtime/cache/storage.d.ts +5 -2
  80. package/build/{runtime-esm → runtime}/cache/storage.js +126 -54
  81. package/build/{runtime-esm → runtime}/cache/stuff.js +4 -3
  82. package/build/runtime/cache/subscription.d.ts +23 -9
  83. package/build/{runtime-esm → runtime}/cache/subscription.js +103 -65
  84. package/build/runtime/{client/index.d.ts → client.d.ts} +15 -22
  85. package/build/runtime/client.js +86 -0
  86. package/build/runtime/coerce.d.ts +4 -0
  87. package/build/runtime/coerce.js +31 -0
  88. package/build/runtime/config.d.ts +20 -0
  89. package/build/runtime/config.js +88 -0
  90. package/build/runtime/{lib/constants.d.ts → constants.d.ts} +1 -1
  91. package/build/runtime/{client/documentStore.d.ts → documentStore.d.ts} +18 -11
  92. package/build/{runtime-esm/client → runtime}/documentStore.js +53 -56
  93. package/build/runtime/endpoint.d.ts +14 -0
  94. package/build/runtime/endpoint.js +29 -0
  95. package/build/{runtime-cjs/lib → runtime}/flatten.d.ts +1 -1
  96. package/build/runtime/formData.d.ts +24 -0
  97. package/build/runtime/formData.js +93 -0
  98. package/build/runtime/index.d.ts +16 -8
  99. package/build/runtime/index.js +54 -0
  100. package/build/{runtime-cjs/lib → runtime}/key.d.ts +1 -1
  101. package/build/{runtime-esm/lib → runtime}/key.js +4 -4
  102. package/build/{runtime-esm/lib → runtime}/log.js +3 -3
  103. package/build/runtime/multipart.d.ts +8 -0
  104. package/build/runtime/multipart.js +49 -0
  105. package/build/{runtime-cjs/lib → runtime}/pageInfo.d.ts +3 -3
  106. package/build/{runtime-esm/lib → runtime}/pageInfo.js +2 -2
  107. package/build/{runtime-cjs/lib → runtime}/pagination.d.ts +12 -8
  108. package/build/{runtime-esm/lib → runtime}/pagination.js +157 -21
  109. package/build/{runtime-cjs/lib → runtime}/scalars.d.ts +6 -6
  110. package/build/{runtime-esm/lib → runtime}/scalars.js +10 -43
  111. package/build/{runtime-cjs/lib → runtime}/selection.d.ts +1 -1
  112. package/build/{runtime-esm/lib → runtime}/selection.js +17 -2
  113. package/build/runtime/{lib/store.d.ts → store.d.ts} +1 -1
  114. package/build/{runtime-esm/lib → runtime}/store.js +2 -3
  115. package/build/runtime/{lib/types.d.ts → types.d.ts} +102 -101
  116. package/build/{runtime-esm/lib → runtime}/types.js +9 -14
  117. package/build/test/index.d.ts +6 -25
  118. package/build/test/index.js +329 -0
  119. package/build/test/package.json +1 -0
  120. package/build/vite/hmr.d.ts +26 -3
  121. package/build/vite/hmr.js +431 -0
  122. package/build/vite/houdini.d.ts +4 -10
  123. package/build/vite/houdini.js +134 -0
  124. package/build/vite/index.d.ts +13 -7
  125. package/build/vite/index.js +104 -0
  126. package/build/vite/package.json +1 -0
  127. package/build/vite/schema.d.ts +5 -3
  128. package/build/vite/schema.js +193 -0
  129. package/package.json +148 -57
  130. package/build/adapter-cjs/index.js +0 -33
  131. package/build/adapter-cjs/package.json +0 -1
  132. package/build/adapter-esm/index.js +0 -9
  133. package/build/cmd-cjs/index.js +0 -89304
  134. package/build/cmd-cjs/package.json +0 -1
  135. package/build/cmd-esm/index.js +0 -89308
  136. package/build/codegen/generators/artifacts/fieldKey.d.ts +0 -3
  137. package/build/codegen/generators/artifacts/index.d.ts +0 -17
  138. package/build/codegen/generators/artifacts/indexFile.d.ts +0 -2
  139. package/build/codegen/generators/artifacts/inputs.d.ts +0 -4
  140. package/build/codegen/generators/artifacts/operations.d.ts +0 -11
  141. package/build/codegen/generators/artifacts/selection.d.ts +0 -20
  142. package/build/codegen/generators/artifacts/utils.d.ts +0 -8
  143. package/build/codegen/generators/comments/jsdoc.d.ts +0 -2
  144. package/build/codegen/generators/definitions/enums.d.ts +0 -2
  145. package/build/codegen/generators/definitions/index.d.ts +0 -2
  146. package/build/codegen/generators/index.d.ts +0 -6
  147. package/build/codegen/generators/indexFile/index.d.ts +0 -2
  148. package/build/codegen/generators/persistedQueries/index.d.ts +0 -2
  149. package/build/codegen/generators/runtime/graphqlFunction.d.ts +0 -2
  150. package/build/codegen/generators/runtime/index.d.ts +0 -3
  151. package/build/codegen/generators/runtime/injectPlugins.d.ts +0 -7
  152. package/build/codegen/generators/runtime/pluginIndex.d.ts +0 -5
  153. package/build/codegen/generators/runtime/pluginRuntime.d.ts +0 -15
  154. package/build/codegen/generators/runtime/runtimeConfig.d.ts +0 -7
  155. package/build/codegen/generators/typescript/addReferencedInputTypes.d.ts +0 -4
  156. package/build/codegen/generators/typescript/documentTypes.d.ts +0 -2
  157. package/build/codegen/generators/typescript/imperativeTypeDef.d.ts +0 -2
  158. package/build/codegen/generators/typescript/index.d.ts +0 -2
  159. package/build/codegen/generators/typescript/inlineType.d.ts +0 -29
  160. package/build/codegen/generators/typescript/loadingState.d.ts +0 -8
  161. package/build/codegen/index.d.ts +0 -8
  162. package/build/codegen/transforms/addFields.d.ts +0 -2
  163. package/build/codegen/transforms/collectDefinitions.d.ts +0 -9
  164. package/build/codegen/transforms/componentFields.d.ts +0 -8
  165. package/build/codegen/transforms/fragmentVariables.d.ts +0 -17
  166. package/build/codegen/transforms/index.d.ts +0 -9
  167. package/build/codegen/transforms/list.d.ts +0 -9
  168. package/build/codegen/transforms/paginate.d.ts +0 -4
  169. package/build/codegen/transforms/runtimeScalars.d.ts +0 -2
  170. package/build/codegen/transforms/schema.d.ts +0 -2
  171. package/build/codegen/transforms/typename.d.ts +0 -2
  172. package/build/codegen/utils/commonjs.d.ts +0 -5
  173. package/build/codegen/utils/flattenSelections.d.ts +0 -11
  174. package/build/codegen/utils/index.d.ts +0 -4
  175. package/build/codegen/utils/moduleExport.d.ts +0 -4
  176. package/build/codegen/utils/murmur.d.ts +0 -9
  177. package/build/codegen/utils/objectIdentificationSelection.d.ts +0 -3
  178. package/build/codegen/utils/stripLoc.d.ts +0 -3
  179. package/build/codegen/validators/componentFields.d.ts +0 -2
  180. package/build/codegen/validators/index.d.ts +0 -5
  181. package/build/codegen/validators/noIDAlias.d.ts +0 -2
  182. package/build/codegen/validators/plugins.d.ts +0 -3
  183. package/build/codegen/validators/typeCheck.d.ts +0 -5
  184. package/build/codegen/validators/uniqueNames.d.ts +0 -2
  185. package/build/codegen-cjs/index.js +0 -74661
  186. package/build/codegen-cjs/package.json +0 -1
  187. package/build/codegen-esm/index.js +0 -74660
  188. package/build/lib/cleanupFiles.d.ts +0 -1
  189. package/build/lib/detectTools.d.ts +0 -16
  190. package/build/lib/introspection.d.ts +0 -3
  191. package/build/lib/plugin.d.ts +0 -2
  192. package/build/lib/router/index.d.ts +0 -9
  193. package/build/lib/router/server.d.ts +0 -7
  194. package/build/lib/router/types.d.ts +0 -23
  195. package/build/lib/typescript.d.ts +0 -20
  196. package/build/lib/watchAndRun.d.ts +0 -61
  197. package/build/lib-cjs/index.js +0 -79736
  198. package/build/lib-cjs/package.json +0 -1
  199. package/build/lib-esm/index.js +0 -79645
  200. package/build/runtime/cache/cache.d.ts +0 -169
  201. package/build/runtime/client/plugins/cache.d.ts +0 -9
  202. package/build/runtime/client/plugins/fetch.d.ts +0 -38
  203. package/build/runtime/client/plugins/fetchParams.d.ts +0 -9
  204. package/build/runtime/client/plugins/fragment.d.ts +0 -2
  205. package/build/runtime/client/plugins/index.d.ts +0 -9
  206. package/build/runtime/client/plugins/injectedPlugins.d.ts +0 -4
  207. package/build/runtime/client/plugins/mutation.d.ts +0 -2
  208. package/build/runtime/client/plugins/optimisticKeys.d.ts +0 -7
  209. package/build/runtime/client/plugins/query.d.ts +0 -2
  210. package/build/runtime/client/plugins/subscription.d.ts +0 -20
  211. package/build/runtime/client/plugins/test.d.ts +0 -15
  212. package/build/runtime/client/plugins/throwOnError.d.ts +0 -8
  213. package/build/runtime/client/utils/documentPlugins.d.ts +0 -3
  214. package/build/runtime/client/utils/index.d.ts +0 -1
  215. package/build/runtime/generated.d.ts +0 -5
  216. package/build/runtime/imports/config.d.ts +0 -3
  217. package/build/runtime/imports/pluginConfig.d.ts +0 -3
  218. package/build/runtime/lib/config.d.ts +0 -216
  219. package/build/runtime/lib/deepEquals.d.ts +0 -1
  220. package/build/runtime/lib/flatten.d.ts +0 -2
  221. package/build/runtime/lib/index.d.ts +0 -10
  222. package/build/runtime/lib/key.d.ts +0 -6
  223. package/build/runtime/lib/log.d.ts +0 -6
  224. package/build/runtime/lib/lru.d.ts +0 -52
  225. package/build/runtime/lib/pageInfo.d.ts +0 -7
  226. package/build/runtime/lib/pagination.d.ts +0 -27
  227. package/build/runtime/lib/scalars.d.ts +0 -14
  228. package/build/runtime/lib/selection.d.ts +0 -2
  229. package/build/runtime/public/cache.d.ts +0 -43
  230. package/build/runtime/public/index.d.ts +0 -1
  231. package/build/runtime/public/list.d.ts +0 -18
  232. package/build/runtime/public/record.d.ts +0 -40
  233. package/build/runtime/public/tests/test.d.ts +0 -156
  234. package/build/runtime/public/types.d.ts +0 -62
  235. package/build/runtime/router/cookies.d.ts +0 -41
  236. package/build/runtime/router/jwt.d.ts +0 -117
  237. package/build/runtime/router/server.d.ts +0 -24
  238. package/build/runtime/router/types.d.ts +0 -26
  239. package/build/runtime-cjs/cache/cache.d.ts +0 -169
  240. package/build/runtime-cjs/cache/cache.js +0 -1077
  241. package/build/runtime-cjs/cache/constants.d.ts +0 -1
  242. package/build/runtime-cjs/cache/constants.js +0 -28
  243. package/build/runtime-cjs/cache/gc.d.ts +0 -10
  244. package/build/runtime-cjs/cache/gc.js +0 -74
  245. package/build/runtime-cjs/cache/index.d.ts +0 -3
  246. package/build/runtime-cjs/cache/index.js +0 -25
  247. package/build/runtime-cjs/cache/lists.d.ts +0 -89
  248. package/build/runtime-cjs/cache/lists.js +0 -467
  249. package/build/runtime-cjs/cache/staleManager.d.ts +0 -31
  250. package/build/runtime-cjs/cache/staleManager.js +0 -123
  251. package/build/runtime-cjs/cache/storage.d.ts +0 -110
  252. package/build/runtime-cjs/cache/storage.js +0 -451
  253. package/build/runtime-cjs/cache/stuff.d.ts +0 -2
  254. package/build/runtime-cjs/cache/stuff.js +0 -56
  255. package/build/runtime-cjs/cache/subscription.d.ts +0 -52
  256. package/build/runtime-cjs/cache/subscription.js +0 -349
  257. package/build/runtime-cjs/client/documentStore.d.ts +0 -107
  258. package/build/runtime-cjs/client/documentStore.js +0 -487
  259. package/build/runtime-cjs/client/index.d.ts +0 -50
  260. package/build/runtime-cjs/client/index.js +0 -162
  261. package/build/runtime-cjs/client/plugins/cache.d.ts +0 -9
  262. package/build/runtime-cjs/client/plugins/cache.js +0 -138
  263. package/build/runtime-cjs/client/plugins/fetch.d.ts +0 -38
  264. package/build/runtime-cjs/client/plugins/fetch.js +0 -210
  265. package/build/runtime-cjs/client/plugins/fetchParams.d.ts +0 -9
  266. package/build/runtime-cjs/client/plugins/fetchParams.js +0 -47
  267. package/build/runtime-cjs/client/plugins/fragment.d.ts +0 -2
  268. package/build/runtime-cjs/client/plugins/fragment.js +0 -77
  269. package/build/runtime-cjs/client/plugins/index.d.ts +0 -9
  270. package/build/runtime-cjs/client/plugins/index.js +0 -45
  271. package/build/runtime-cjs/client/plugins/injectedPlugins.d.ts +0 -4
  272. package/build/runtime-cjs/client/plugins/injectedPlugins.js +0 -25
  273. package/build/runtime-cjs/client/plugins/mutation.d.ts +0 -2
  274. package/build/runtime-cjs/client/plugins/mutation.js +0 -89
  275. package/build/runtime-cjs/client/plugins/optimisticKeys.d.ts +0 -7
  276. package/build/runtime-cjs/client/plugins/optimisticKeys.js +0 -324
  277. package/build/runtime-cjs/client/plugins/query.d.ts +0 -2
  278. package/build/runtime-cjs/client/plugins/query.js +0 -93
  279. package/build/runtime-cjs/client/plugins/subscription.d.ts +0 -20
  280. package/build/runtime-cjs/client/plugins/subscription.js +0 -114
  281. package/build/runtime-cjs/client/plugins/test.d.ts +0 -15
  282. package/build/runtime-cjs/client/plugins/test.js +0 -118
  283. package/build/runtime-cjs/client/plugins/throwOnError.d.ts +0 -8
  284. package/build/runtime-cjs/client/plugins/throwOnError.js +0 -47
  285. package/build/runtime-cjs/client/utils/documentPlugins.d.ts +0 -3
  286. package/build/runtime-cjs/client/utils/documentPlugins.js +0 -57
  287. package/build/runtime-cjs/client/utils/index.d.ts +0 -1
  288. package/build/runtime-cjs/client/utils/index.js +0 -22
  289. package/build/runtime-cjs/generated.d.ts +0 -5
  290. package/build/runtime-cjs/generated.js +0 -16
  291. package/build/runtime-cjs/imports/config.d.ts +0 -3
  292. package/build/runtime-cjs/imports/config.js +0 -24
  293. package/build/runtime-cjs/imports/pluginConfig.d.ts +0 -3
  294. package/build/runtime-cjs/imports/pluginConfig.js +0 -25
  295. package/build/runtime-cjs/index.d.ts +0 -8
  296. package/build/runtime-cjs/index.js +0 -61
  297. package/build/runtime-cjs/lib/config.d.ts +0 -216
  298. package/build/runtime-cjs/lib/config.js +0 -110
  299. package/build/runtime-cjs/lib/constants.d.ts +0 -6
  300. package/build/runtime-cjs/lib/constants.js +0 -38
  301. package/build/runtime-cjs/lib/deepEquals.js +0 -52
  302. package/build/runtime-cjs/lib/flatten.js +0 -41
  303. package/build/runtime-cjs/lib/index.d.ts +0 -10
  304. package/build/runtime-cjs/lib/index.js +0 -40
  305. package/build/runtime-cjs/lib/key.js +0 -41
  306. package/build/runtime-cjs/lib/log.js +0 -72
  307. package/build/runtime-cjs/lib/lru.js +0 -73
  308. package/build/runtime-cjs/lib/pageInfo.js +0 -79
  309. package/build/runtime-cjs/lib/pagination.js +0 -240
  310. package/build/runtime-cjs/lib/scalars.js +0 -147
  311. package/build/runtime-cjs/lib/selection.js +0 -66
  312. package/build/runtime-cjs/lib/store.d.ts +0 -19
  313. package/build/runtime-cjs/lib/store.js +0 -81
  314. package/build/runtime-cjs/lib/types.d.ts +0 -417
  315. package/build/runtime-cjs/lib/types.js +0 -104
  316. package/build/runtime-cjs/package.json +0 -1
  317. package/build/runtime-cjs/public/cache.d.ts +0 -43
  318. package/build/runtime-cjs/public/cache.js +0 -112
  319. package/build/runtime-cjs/public/index.d.ts +0 -1
  320. package/build/runtime-cjs/public/index.js +0 -28
  321. package/build/runtime-cjs/public/list.d.ts +0 -18
  322. package/build/runtime-cjs/public/list.js +0 -151
  323. package/build/runtime-cjs/public/record.d.ts +0 -40
  324. package/build/runtime-cjs/public/record.js +0 -94
  325. package/build/runtime-cjs/public/tests/test.d.ts +0 -156
  326. package/build/runtime-cjs/public/tests/test.js +0 -60
  327. package/build/runtime-cjs/public/types.d.ts +0 -62
  328. package/build/runtime-cjs/public/types.js +0 -16
  329. package/build/runtime-cjs/router/cookies.js +0 -168
  330. package/build/runtime-cjs/router/jwt.js +0 -168
  331. package/build/runtime-cjs/router/match.d.ts +0 -39
  332. package/build/runtime-cjs/router/match.js +0 -158
  333. package/build/runtime-cjs/router/server.d.ts +0 -24
  334. package/build/runtime-cjs/router/server.js +0 -112
  335. package/build/runtime-cjs/router/session.d.ts +0 -22
  336. package/build/runtime-cjs/router/session.js +0 -97
  337. package/build/runtime-cjs/router/types.d.ts +0 -26
  338. package/build/runtime-cjs/router/types.js +0 -16
  339. package/build/runtime-esm/cache/cache.d.ts +0 -169
  340. package/build/runtime-esm/cache/constants.d.ts +0 -1
  341. package/build/runtime-esm/cache/gc.d.ts +0 -10
  342. package/build/runtime-esm/cache/index.d.ts +0 -3
  343. package/build/runtime-esm/cache/index.js +0 -5
  344. package/build/runtime-esm/cache/lists.d.ts +0 -89
  345. package/build/runtime-esm/cache/staleManager.d.ts +0 -31
  346. package/build/runtime-esm/cache/storage.d.ts +0 -110
  347. package/build/runtime-esm/cache/stuff.d.ts +0 -2
  348. package/build/runtime-esm/cache/subscription.d.ts +0 -52
  349. package/build/runtime-esm/client/documentStore.d.ts +0 -107
  350. package/build/runtime-esm/client/index.d.ts +0 -50
  351. package/build/runtime-esm/client/index.js +0 -130
  352. package/build/runtime-esm/client/plugins/cache.d.ts +0 -9
  353. package/build/runtime-esm/client/plugins/cache.js +0 -104
  354. package/build/runtime-esm/client/plugins/fetch.d.ts +0 -38
  355. package/build/runtime-esm/client/plugins/fetch.js +0 -184
  356. package/build/runtime-esm/client/plugins/fetchParams.d.ts +0 -9
  357. package/build/runtime-esm/client/plugins/fetchParams.js +0 -23
  358. package/build/runtime-esm/client/plugins/fragment.d.ts +0 -2
  359. package/build/runtime-esm/client/plugins/fragment.js +0 -53
  360. package/build/runtime-esm/client/plugins/index.d.ts +0 -9
  361. package/build/runtime-esm/client/plugins/index.js +0 -12
  362. package/build/runtime-esm/client/plugins/injectedPlugins.d.ts +0 -4
  363. package/build/runtime-esm/client/plugins/injectedPlugins.js +0 -5
  364. package/build/runtime-esm/client/plugins/mutation.d.ts +0 -2
  365. package/build/runtime-esm/client/plugins/mutation.js +0 -65
  366. package/build/runtime-esm/client/plugins/optimisticKeys.d.ts +0 -7
  367. package/build/runtime-esm/client/plugins/optimisticKeys.js +0 -290
  368. package/build/runtime-esm/client/plugins/query.d.ts +0 -2
  369. package/build/runtime-esm/client/plugins/query.js +0 -69
  370. package/build/runtime-esm/client/plugins/subscription.d.ts +0 -20
  371. package/build/runtime-esm/client/plugins/subscription.js +0 -90
  372. package/build/runtime-esm/client/plugins/test.d.ts +0 -15
  373. package/build/runtime-esm/client/plugins/test.js +0 -93
  374. package/build/runtime-esm/client/plugins/throwOnError.d.ts +0 -8
  375. package/build/runtime-esm/client/plugins/throwOnError.js +0 -23
  376. package/build/runtime-esm/client/utils/documentPlugins.d.ts +0 -3
  377. package/build/runtime-esm/client/utils/documentPlugins.js +0 -33
  378. package/build/runtime-esm/client/utils/index.d.ts +0 -1
  379. package/build/runtime-esm/client/utils/index.js +0 -1
  380. package/build/runtime-esm/generated.d.ts +0 -5
  381. package/build/runtime-esm/generated.js +0 -0
  382. package/build/runtime-esm/imports/config.d.ts +0 -3
  383. package/build/runtime-esm/imports/config.js +0 -4
  384. package/build/runtime-esm/imports/pluginConfig.d.ts +0 -3
  385. package/build/runtime-esm/imports/pluginConfig.js +0 -5
  386. package/build/runtime-esm/index.d.ts +0 -8
  387. package/build/runtime-esm/index.js +0 -22
  388. package/build/runtime-esm/lib/config.d.ts +0 -216
  389. package/build/runtime-esm/lib/config.js +0 -69
  390. package/build/runtime-esm/lib/constants.d.ts +0 -6
  391. package/build/runtime-esm/lib/deepEquals.d.ts +0 -1
  392. package/build/runtime-esm/lib/flatten.d.ts +0 -2
  393. package/build/runtime-esm/lib/index.d.ts +0 -10
  394. package/build/runtime-esm/lib/index.js +0 -10
  395. package/build/runtime-esm/lib/key.d.ts +0 -6
  396. package/build/runtime-esm/lib/log.d.ts +0 -6
  397. package/build/runtime-esm/lib/lru.d.ts +0 -52
  398. package/build/runtime-esm/lib/pageInfo.d.ts +0 -7
  399. package/build/runtime-esm/lib/pagination.d.ts +0 -27
  400. package/build/runtime-esm/lib/scalars.d.ts +0 -14
  401. package/build/runtime-esm/lib/selection.d.ts +0 -2
  402. package/build/runtime-esm/lib/store.d.ts +0 -19
  403. package/build/runtime-esm/lib/types.d.ts +0 -417
  404. package/build/runtime-esm/public/cache.d.ts +0 -43
  405. package/build/runtime-esm/public/cache.js +0 -88
  406. package/build/runtime-esm/public/index.d.ts +0 -1
  407. package/build/runtime-esm/public/index.js +0 -4
  408. package/build/runtime-esm/public/list.d.ts +0 -18
  409. package/build/runtime-esm/public/list.js +0 -127
  410. package/build/runtime-esm/public/record.d.ts +0 -40
  411. package/build/runtime-esm/public/record.js +0 -70
  412. package/build/runtime-esm/public/tests/test.d.ts +0 -156
  413. package/build/runtime-esm/public/tests/test.js +0 -36
  414. package/build/runtime-esm/public/types.d.ts +0 -62
  415. package/build/runtime-esm/router/cookies.d.ts +0 -41
  416. package/build/runtime-esm/router/jwt.d.ts +0 -117
  417. package/build/runtime-esm/router/match.d.ts +0 -39
  418. package/build/runtime-esm/router/match.js +0 -131
  419. package/build/runtime-esm/router/server.d.ts +0 -24
  420. package/build/runtime-esm/router/server.js +0 -87
  421. package/build/runtime-esm/router/session.d.ts +0 -22
  422. package/build/runtime-esm/router/session.js +0 -71
  423. package/build/runtime-esm/router/types.d.ts +0 -26
  424. package/build/runtime-esm/router/types.js +0 -0
  425. package/build/test-cjs/index.js +0 -75254
  426. package/build/test-cjs/package.json +0 -1
  427. package/build/test-esm/index.js +0 -75249
  428. package/build/vite/imports.d.ts +0 -40
  429. package/build/vite-cjs/index.js +0 -86271
  430. package/build/vite-cjs/package.json +0 -1
  431. package/build/vite-esm/index.js +0 -86263
  432. /package/build/{adapter-esm → adapter}/package.json +0 -0
  433. /package/build/{cmd-esm → cmd}/package.json +0 -0
  434. /package/build/{vite → lib}/ast.d.ts +0 -0
  435. /package/build/{codegen-esm → lib}/package.json +0 -0
  436. /package/build/{lib-esm → node}/package.json +0 -0
  437. /package/build/{runtime-esm → oauth}/package.json +0 -0
  438. /package/build/{runtime-cjs/router → router}/cookies.d.ts +0 -0
  439. /package/build/{runtime-cjs/router → router}/jwt.d.ts +0 -0
  440. /package/build/{test-esm → router}/package.json +0 -0
  441. /package/build/{runtime-esm/public → router}/types.js +0 -0
  442. /package/build/{runtime-esm → runtime}/cache/constants.js +0 -0
  443. /package/build/{runtime-esm/lib → runtime}/constants.js +0 -0
  444. /package/build/{runtime-cjs/lib → runtime}/deepEquals.d.ts +0 -0
  445. /package/build/{runtime-esm/lib → runtime}/deepEquals.js +0 -0
  446. /package/build/{runtime-esm/lib → runtime}/flatten.js +0 -0
  447. /package/build/{runtime-cjs/lib → runtime}/log.d.ts +0 -0
  448. /package/build/{runtime-cjs/lib → runtime}/lru.d.ts +0 -0
  449. /package/build/{runtime-esm/lib → runtime}/lru.js +0 -0
  450. /package/build/{vite-esm → runtime}/package.json +0 -0
@@ -0,0 +1,57 @@
1
+ import { createServerAdapter } from '@whatwg-node/server';
2
+ import type { ServerAdapterRequestHandler } from '@whatwg-node/server';
3
+ import type { GraphQLSchema } from 'graphql';
4
+ import { YogaServer, type YogaServerOptions as YogaConfig } from 'graphql-yoga';
5
+ import type { ConfigFile, ServerConfigFile } from '../lib/config.js';
6
+ import type { HoudiniClient } from '../runtime/client.js';
7
+ import { signFormToken } from './auth-token.js';
8
+ import type { RouterManifest, RouterPageManifest, YogaServerOptions } from './types.js';
9
+ export { signFormToken };
10
+ export type FormResult = Record<string, {
11
+ data: any;
12
+ errors: any;
13
+ }>;
14
+ export declare function _serverHandler<ComponentType = unknown>({ schema, server, client, production, manifest, graphqlEndpoint, on_render, componentCache, config_file, server_config, }: {
15
+ schema?: GraphQLSchema | null;
16
+ server?: Server<any, any>;
17
+ client: HoudiniClient;
18
+ production: boolean;
19
+ manifest: RouterManifest<ComponentType> | null;
20
+ assetPrefix: string;
21
+ graphqlEndpoint: string;
22
+ componentCache: Record<string, any>;
23
+ on_render: (args: {
24
+ url: string;
25
+ match: RouterPageManifest<ComponentType> | null;
26
+ is404: boolean;
27
+ manifest: RouterManifest<unknown>;
28
+ session: App.Session;
29
+ componentCache: Record<string, any>;
30
+ headers: Record<string, string>;
31
+ formResult?: FormResult;
32
+ formToken?: string;
33
+ authUrl?: string;
34
+ }) => Response | Promise<Response | undefined> | undefined;
35
+ config_file: ConfigFile;
36
+ server_config?: ServerConfigFile;
37
+ } & Omit<YogaServerOptions, 'schema'>): (request: Request, ...extraContext: Array<any>) => Promise<Response>;
38
+ export declare const serverAdapterFactory: (args: Parameters<typeof _serverHandler>[0]) => ReturnType<typeof createServerAdapter>;
39
+ export declare function collect_response_headers(match: {
40
+ headers?: Array<() => Promise<(() => unknown) | undefined>>;
41
+ } | null): Promise<Record<string, string>>;
42
+ export declare function apply_antiframing_defaults(headers: Record<string, string>): void;
43
+ export type ServerAdapterFactory = typeof serverAdapterFactory;
44
+ type YogaParams = Required<ConstructorParameters<typeof YogaServer>>[0];
45
+ type YogaSchemaDefinition<TContext> = NonNullable<YogaConfig<any, TContext>['schema']>;
46
+ type ConstructorParams = Omit<YogaParams, 'schema' | 'graphqlEndpoint'>;
47
+ export declare class Server<ServerContext extends Record<string, any>, UserContext extends Record<string, any>> {
48
+ opts: ConstructorParams | null;
49
+ _yoga: YogaServer<any, any> | null;
50
+ constructor(opts?: ConstructorParams);
51
+ init({ endpoint, schema, getSession, }: {
52
+ schema: YogaSchemaDefinition<any>;
53
+ endpoint: string;
54
+ getSession: (request: Request) => Promise<UserContext>;
55
+ }): import("@whatwg-node/server").ServerAdapter<ServerContext, Server<ServerContext, UserContext>>;
56
+ handle: ServerAdapterRequestHandler<ServerContext>;
57
+ }
@@ -0,0 +1,500 @@
1
+ import { createServerAdapter } from "@whatwg-node/server";
2
+ import {
3
+ YogaServer
4
+ } from "graphql-yoga";
5
+ import { getAuthUrl, resolveApiEndpoint, setAuthUrl } from "../runtime/config.js";
6
+ import { interpolateRedirect, valueAtPath } from "../runtime/endpoint.js";
7
+ import { coerceFormData } from "../runtime/formData.js";
8
+ import { buildGraphQLBody } from "../runtime/multipart.js";
9
+ import { marshalInputs } from "../runtime/scalars.js";
10
+ import { CSRF_FIELD, signFormToken, verifyFormToken, signSessionToken } from "./auth-token.js";
11
+ import { serialize as encodeCookie } from "./cookies.js";
12
+ import { find_match, find_prefix_match } from "./match.js";
13
+ import {
14
+ applySessionToken,
15
+ clear_session,
16
+ get_session,
17
+ handle_request,
18
+ isAllowedOrigin,
19
+ session_cookie_name,
20
+ set_session,
21
+ sign_session
22
+ } from "./session.js";
23
+ const HOUDINI_REQUEST_HEADER = "x-houdini-request";
24
+ const HOUDINI_OPERATION_HEADER = "x-houdini-operation";
25
+ async function readBodyWithLimit(request, maxBytes) {
26
+ if (!request.body) {
27
+ return request;
28
+ }
29
+ const reader = request.body.getReader();
30
+ const chunks = [];
31
+ let total = 0;
32
+ while (true) {
33
+ const { done, value } = await reader.read();
34
+ if (done) {
35
+ break;
36
+ }
37
+ if (value) {
38
+ total += value.byteLength;
39
+ if (total > maxBytes) {
40
+ await reader.cancel();
41
+ return null;
42
+ }
43
+ chunks.push(value);
44
+ }
45
+ }
46
+ const body = new Uint8Array(total);
47
+ let offset = 0;
48
+ for (const chunk of chunks) {
49
+ body.set(chunk, offset);
50
+ offset += chunk.byteLength;
51
+ }
52
+ return new Request(request.url, {
53
+ method: request.method,
54
+ headers: request.headers,
55
+ body
56
+ });
57
+ }
58
+ function sessionMintPlugin(manifest, sessionKeys) {
59
+ return {
60
+ onExecute() {
61
+ return {
62
+ async onExecuteDone({ args, result, setResult }) {
63
+ if (!result || typeof result[Symbol.asyncIterator] === "function" || !result.data) {
64
+ return;
65
+ }
66
+ if (args?.contextValue?.request?.headers?.get(INTERNAL_FORM_HEADER)) {
67
+ return;
68
+ }
69
+ const token = await mintSessionToken({
70
+ data: result.data,
71
+ errors: result.errors,
72
+ operationName: operationNameOf(args),
73
+ requestHeaders: args.contextValue.request.headers,
74
+ manifest,
75
+ sessionKeys
76
+ });
77
+ if (!token) {
78
+ return;
79
+ }
80
+ setResult({
81
+ ...result,
82
+ extensions: { ...result.extensions, houdiniSession: token }
83
+ });
84
+ }
85
+ };
86
+ }
87
+ };
88
+ }
89
+ async function mintSessionToken({
90
+ data,
91
+ errors,
92
+ operationName,
93
+ requestHeaders,
94
+ manifest,
95
+ sessionKeys
96
+ }) {
97
+ if (errors?.length) {
98
+ return null;
99
+ }
100
+ const session = operationName ? manifest?.sessionMutations?.[operationName] : void 0;
101
+ if (!session) {
102
+ return null;
103
+ }
104
+ const value = valueAtPath(data, session.sessionPath.split("."));
105
+ const priorSession = await get_session(requestHeaders, sessionKeys);
106
+ return await signSessionToken(
107
+ value ?? null,
108
+ sessionKeys,
109
+ session.merge,
110
+ priorSession
111
+ );
112
+ }
113
+ const INTERNAL_FORM_HEADER = "x-houdini-internal-form";
114
+ function operationNameOf(args) {
115
+ if (args?.operationName) {
116
+ return args.operationName;
117
+ }
118
+ const ops = (args?.document?.definitions ?? []).filter(
119
+ (def) => def.kind === "OperationDefinition"
120
+ );
121
+ if (ops.length === 1 && ops[0].name?.value) {
122
+ return ops[0].name.value;
123
+ }
124
+ return null;
125
+ }
126
+ function _serverHandler({
127
+ schema,
128
+ server,
129
+ client,
130
+ production,
131
+ manifest,
132
+ graphqlEndpoint,
133
+ on_render,
134
+ componentCache,
135
+ config_file,
136
+ server_config
137
+ }) {
138
+ const session_keys = localApiSessionKeys(server_config);
139
+ setAuthUrl(server_config?.auth?.url);
140
+ const sessionProxyPath = schema ? void 0 : getAuthUrl() + "/proxy";
141
+ if (session_keys.length === 0) {
142
+ session_keys.push(crypto.randomUUID());
143
+ }
144
+ if (schema && !server) {
145
+ server = new Server({
146
+ landingPage: !production
147
+ });
148
+ }
149
+ if (server instanceof Server) {
150
+ server.opts = {
151
+ ...server.opts ?? {},
152
+ plugins: [...server.opts?.plugins ?? [], sessionMintPlugin(manifest, session_keys)]
153
+ };
154
+ }
155
+ let requestHandler = null;
156
+ if (server && schema) {
157
+ requestHandler = server.init({
158
+ schema,
159
+ endpoint: graphqlEndpoint,
160
+ getSession: (request) => get_session(request.headers, session_keys)
161
+ });
162
+ }
163
+ client.componentCache = componentCache;
164
+ if (requestHandler) {
165
+ client.registerProxy(graphqlEndpoint, async ({ query, variables, session }) => {
166
+ const response = await requestHandler(
167
+ new Request(`http://localhost/${graphqlEndpoint}`, {
168
+ method: "POST",
169
+ headers: {
170
+ "Content-Type": "application/json",
171
+ // sign the session so the local handler's get_session (a signed-JWT verify)
172
+ // accepts it — a raw JSON cookie is rejected and would run session-less.
173
+ Cookie: encodeCookie(
174
+ session_cookie_name,
175
+ await sign_session(session ?? {}, session_keys[0]),
176
+ { httpOnly: true }
177
+ )
178
+ },
179
+ body: JSON.stringify({
180
+ query,
181
+ variables
182
+ })
183
+ })
184
+ );
185
+ return await response.json();
186
+ });
187
+ }
188
+ const renderPage = async (nonNullManifest, request, url, opts) => {
189
+ const [exactMatch] = find_match(nonNullManifest, url);
190
+ const is404 = !exactMatch;
191
+ const match = exactMatch ?? find_prefix_match(nonNullManifest, url);
192
+ const headers = await collect_response_headers(match);
193
+ apply_antiframing_defaults(headers);
194
+ const session = await get_session(request.headers, session_keys);
195
+ const formToken = await signFormToken(session, session_keys);
196
+ const rendered = await on_render({
197
+ url,
198
+ match,
199
+ is404,
200
+ session,
201
+ manifest: nonNullManifest,
202
+ componentCache,
203
+ headers,
204
+ formResult: opts?.formResult,
205
+ formToken,
206
+ // the session endpoint, injected so the client relay/useSession can reach it (it's
207
+ // server-only config). The GraphQL endpoint + proxy path are derived client-side from
208
+ // the public config, so they aren't injected here.
209
+ authUrl: getAuthUrl()
210
+ });
211
+ if (!rendered) {
212
+ return new Response("404", { status: 404 });
213
+ }
214
+ if (opts?.status && opts.status !== rendered.status) {
215
+ return new Response(rendered.body, { status: opts.status, headers: rendered.headers });
216
+ }
217
+ return rendered;
218
+ };
219
+ const handleForm = async (nonNullManifest, request, parsedURL, url) => {
220
+ if (request.method !== "POST") {
221
+ return null;
222
+ }
223
+ const contentType = request.headers.get("content-type") ?? "";
224
+ if (!contentType.includes("application/x-www-form-urlencoded") && !contentType.includes("multipart/form-data")) {
225
+ return null;
226
+ }
227
+ if (!isAllowedOrigin(request, server_config)) {
228
+ return new Response("Forbidden", { status: 403 });
229
+ }
230
+ const maxBodyBytes = server_config?.formMaxBodyBytes ?? 10 * 1024 * 1024;
231
+ const contentLength = Number(request.headers.get("content-length"));
232
+ if (Number.isFinite(contentLength) && contentLength > maxBodyBytes) {
233
+ return new Response("Payload Too Large", { status: 413 });
234
+ }
235
+ const limited = await readBodyWithLimit(request, maxBodyBytes);
236
+ if (limited === null) {
237
+ return new Response("Payload Too Large", { status: 413 });
238
+ }
239
+ const formData = await limited.formData();
240
+ const session = await get_session(request.headers, session_keys);
241
+ if (!await verifyFormToken(formData.get(CSRF_FIELD), session, session_keys)) {
242
+ return new Response("Forbidden", { status: 403 });
243
+ }
244
+ const mutationName = formData.get("__houdini_form");
245
+ if (typeof mutationName !== "string") {
246
+ return new Response("Bad Request", { status: 400 });
247
+ }
248
+ const formIdValue = formData.get("__houdini_form_id");
249
+ const formId = typeof formIdValue === "string" && formIdValue ? formIdValue : mutationName;
250
+ const loadArtifact = nonNullManifest.formActions?.[mutationName];
251
+ if (!loadArtifact) {
252
+ return new Response(`Unknown form mutation: ${mutationName}`, { status: 400 });
253
+ }
254
+ const handler = requestHandler;
255
+ if (!handler) {
256
+ return new Response("Form submissions require a local GraphQL server", { status: 500 });
257
+ }
258
+ const { default: artifact } = await loadArtifact();
259
+ const input = artifact.input ?? { fields: {}, types: {}, defaults: {}, runtimeScalars: {} };
260
+ const coerced = coerceFormData(formData, input, config_file, artifact.endpoint?.fields);
261
+ const variables = marshalInputs({ artifact, input: coerced, config: config_file }) ?? {};
262
+ const { contentType: bodyContentType, body } = buildGraphQLBody(artifact.raw, variables);
263
+ const response = await handler(
264
+ new Request(`http://localhost/${graphqlEndpoint}`, {
265
+ method: "POST",
266
+ headers: {
267
+ ...bodyContentType ? { "Content-Type": bodyContentType } : {},
268
+ // mark this as the no-JS form's internal execution so the session-mint plugin
269
+ // skips it (we set the cookie directly below)
270
+ [INTERNAL_FORM_HEADER]: "1",
271
+ // sign the session so the in-process handler's get_session (a signed-JWT verify)
272
+ // accepts it — a raw JSON value would fail verification and run session-less
273
+ Cookie: encodeCookie(
274
+ session_cookie_name,
275
+ await sign_session(session ?? {}, session_keys[0]),
276
+ { httpOnly: true }
277
+ )
278
+ },
279
+ body
280
+ })
281
+ );
282
+ const result = await response.json();
283
+ if (result.errors && result.errors.length > 0) {
284
+ return renderPage(nonNullManifest, request, url, {
285
+ formResult: { [formId]: { data: result.data ?? null, errors: result.errors } },
286
+ status: 422
287
+ });
288
+ }
289
+ let location = url;
290
+ const redirect = artifact.endpoint?.redirect;
291
+ if (redirect) {
292
+ const target = interpolateRedirect(redirect, result.data);
293
+ if (target) {
294
+ location = target;
295
+ } else if (!production) {
296
+ console.warn(
297
+ `@endpoint redirect for "${mutationName}" resolved to a null value; falling back to the current page`
298
+ );
299
+ }
300
+ }
301
+ const formResponse = new Response(null, { status: 303, headers: { Location: location } });
302
+ const sessionWrite = nonNullManifest.sessionMutations?.[mutationName];
303
+ if (sessionWrite) {
304
+ const value = valueAtPath(result.data, sessionWrite.sessionPath.split("."));
305
+ const req = { request, config: config_file, session_keys };
306
+ if (value == null) {
307
+ clear_session(formResponse);
308
+ } else if (sessionWrite.merge) {
309
+ const existing = await get_session(request.headers, session_keys);
310
+ await set_session(req, formResponse, { ...existing, ...value });
311
+ } else {
312
+ await set_session(req, formResponse, value);
313
+ }
314
+ }
315
+ return formResponse;
316
+ };
317
+ const handleSessionProxy = async (request) => {
318
+ if (!sessionProxyPath || new URL(request.url).pathname !== sessionProxyPath) {
319
+ return void 0;
320
+ }
321
+ if (request.method !== "POST") {
322
+ return new Response("Method Not Allowed", { status: 405 });
323
+ }
324
+ if (!isAllowedOrigin(request, server_config)) {
325
+ return new Response("Forbidden", { status: 403 });
326
+ }
327
+ const maxBodyBytes = server_config?.formMaxBodyBytes ?? 10 * 1024 * 1024;
328
+ const limited = await readBodyWithLimit(request, maxBodyBytes);
329
+ if (limited === null) {
330
+ return new Response("Payload Too Large", { status: 413 });
331
+ }
332
+ const bodyBytes = new Uint8Array(await limited.arrayBuffer());
333
+ const forwardHeaders = new Headers(request.headers);
334
+ forwardHeaders.delete("cookie");
335
+ forwardHeaders.delete("host");
336
+ forwardHeaders.delete("content-length");
337
+ forwardHeaders.delete(HOUDINI_OPERATION_HEADER);
338
+ let upstreamResponse;
339
+ try {
340
+ upstreamResponse = await fetch(resolveApiEndpoint(config_file), {
341
+ method: "POST",
342
+ headers: forwardHeaders,
343
+ body: bodyBytes
344
+ });
345
+ } catch {
346
+ return new Response("Bad Gateway", { status: 502 });
347
+ }
348
+ const upstreamText = await upstreamResponse.text();
349
+ let payload;
350
+ try {
351
+ payload = JSON.parse(upstreamText);
352
+ } catch {
353
+ return new Response(upstreamText, {
354
+ status: upstreamResponse.status,
355
+ headers: {
356
+ "content-type": upstreamResponse.headers.get("content-type") ?? "text/plain"
357
+ }
358
+ });
359
+ }
360
+ const operationName = request.headers.get(HOUDINI_OPERATION_HEADER);
361
+ const carrier = new Response(null, { status: upstreamResponse.status });
362
+ let body = payload;
363
+ const token = await mintSessionToken({
364
+ data: payload?.data,
365
+ errors: payload?.errors,
366
+ operationName,
367
+ requestHeaders: request.headers,
368
+ manifest,
369
+ sessionKeys: session_keys
370
+ });
371
+ if (token && await applySessionToken(
372
+ { request, config: config_file, server_config, session_keys },
373
+ carrier,
374
+ token
375
+ )) {
376
+ body = {
377
+ ...payload,
378
+ extensions: { ...payload?.extensions, houdiniSessionApplied: true }
379
+ };
380
+ }
381
+ carrier.headers.set("content-type", "application/json");
382
+ return new Response(JSON.stringify(body), {
383
+ status: upstreamResponse.status,
384
+ headers: carrier.headers
385
+ });
386
+ };
387
+ return async (request, ...extraContext) => {
388
+ if (!manifest) {
389
+ return new Response(
390
+ "Adapter did not provide the project's manifest. Please open an issue on github.",
391
+ { status: 500 }
392
+ );
393
+ }
394
+ const parsedURL = new URL(request.url);
395
+ const url = parsedURL.pathname + parsedURL.search;
396
+ if (requestHandler && parsedURL.pathname === graphqlEndpoint) {
397
+ if (request.method === "POST") {
398
+ const contentType = request.headers.get("content-type") ?? "";
399
+ if (contentType.includes("application/x-www-form-urlencoded")) {
400
+ return new Response("Unsupported Media Type", { status: 415 });
401
+ }
402
+ const corsSimpleBody = contentType === "" || contentType.includes("multipart/form-data") || contentType.includes("text/plain");
403
+ if (corsSimpleBody && !request.headers.get(HOUDINI_REQUEST_HEADER)) {
404
+ return new Response("Forbidden", { status: 403 });
405
+ }
406
+ }
407
+ return requestHandler(request, ...extraContext);
408
+ }
409
+ const proxyResponse = await handleSessionProxy(request);
410
+ if (proxyResponse) {
411
+ return proxyResponse;
412
+ }
413
+ const authResponse = await handle_request({
414
+ request,
415
+ config: config_file,
416
+ server_config,
417
+ session_keys
418
+ });
419
+ if (authResponse) {
420
+ return authResponse;
421
+ }
422
+ const formResponse = await handleForm(manifest, request, parsedURL, url);
423
+ if (formResponse) {
424
+ return formResponse;
425
+ }
426
+ return renderPage(manifest, request, url);
427
+ };
428
+ }
429
+ const serverAdapterFactory = (args) => {
430
+ return createServerAdapter(_serverHandler(args));
431
+ };
432
+ async function collect_response_headers(match) {
433
+ const merged = {};
434
+ for (const load of match?.headers ?? []) {
435
+ const fn = await load();
436
+ if (typeof fn !== "function") {
437
+ continue;
438
+ }
439
+ const result = await fn();
440
+ if (result && typeof result === "object") {
441
+ for (const [key, value] of Object.entries(result)) {
442
+ merged[key] = String(value);
443
+ }
444
+ }
445
+ }
446
+ return merged;
447
+ }
448
+ function apply_antiframing_defaults(headers) {
449
+ const has = (name) => Object.keys(headers).some((key) => key.toLowerCase() === name);
450
+ if (!has("content-security-policy")) {
451
+ headers["Content-Security-Policy"] = "frame-ancestors 'self'";
452
+ }
453
+ if (!has("x-frame-options")) {
454
+ headers["X-Frame-Options"] = "SAMEORIGIN";
455
+ }
456
+ }
457
+ function localApiSessionKeys(serverConfig) {
458
+ return serverConfig?.auth?.sessionKeys ?? [];
459
+ }
460
+ class Server {
461
+ opts;
462
+ _yoga = null;
463
+ constructor(opts) {
464
+ this.opts = opts ?? null;
465
+ }
466
+ init({
467
+ endpoint,
468
+ schema,
469
+ getSession
470
+ }) {
471
+ this._yoga = new YogaServer({
472
+ ...this.opts,
473
+ schema,
474
+ graphqlEndpoint: endpoint,
475
+ context: async (ctx) => {
476
+ const userContext = !this.opts ? {} : typeof this.opts.context === "function" ? await this.opts.context(ctx) : this.opts.context || {};
477
+ const sessionContext = await getSession(ctx.request) || {};
478
+ return {
479
+ ...userContext,
480
+ session: sessionContext
481
+ };
482
+ }
483
+ });
484
+ return createServerAdapter(this, {
485
+ fetchAPI: this._yoga.fetchAPI,
486
+ plugins: this._yoga.plugins
487
+ });
488
+ }
489
+ handle = (request, serverContext) => {
490
+ return this._yoga.handle(request, serverContext);
491
+ };
492
+ }
493
+ export {
494
+ Server,
495
+ _serverHandler,
496
+ apply_antiframing_defaults,
497
+ collect_response_headers,
498
+ serverAdapterFactory,
499
+ signFormToken
500
+ };
@@ -1,9 +1,12 @@
1
- import type { ConfigFile } from '../lib';
2
- type ServerHandlerArgs = {
1
+ import type { ConfigFile, ServerConfigFile } from '../lib/index.js';
2
+ export declare function isAllowedOrigin(request: Request, server_config?: ServerConfigFile): boolean;
3
+ export type ServerHandlerArgs = {
3
4
  request: Request;
4
5
  config: ConfigFile;
6
+ server_config?: ServerConfigFile;
5
7
  session_keys: string[];
6
8
  };
9
+ export declare function applySessionToken(args: ServerHandlerArgs, response: Response, token: unknown): Promise<boolean>;
7
10
  export declare function handle_request(args: ServerHandlerArgs): Promise<Response | undefined>;
8
11
  export type Server = {
9
12
  use(fn: ServerMiddleware): void;
@@ -18,5 +21,7 @@ export type ServerResponse = {
18
21
  set_header(name: string, value: string): void;
19
22
  };
20
23
  export declare const session_cookie_name = "__houdini__";
24
+ export declare function clear_session(response: Response): void;
25
+ export declare function sign_session(session: App.Session, key: string): Promise<string>;
26
+ export declare function set_session(req: ServerHandlerArgs, response: Response, value: App.Session): Promise<void>;
21
27
  export declare function get_session(req: Headers, secrets: string[]): Promise<App.Session>;
22
- export {};