houdini 2.0.0-next.9 → 2.0.1

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 (455) 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 +627 -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 +2 -3
  32. package/build/lib/parse.js +33 -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} +107 -102
  116. package/build/{runtime-esm/lib → runtime}/types.js +37 -15
  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 +433 -0
  122. package/build/vite/houdini.d.ts +4 -10
  123. package/build/vite/houdini.js +144 -0
  124. package/build/vite/index.d.ts +13 -7
  125. package/build/vite/index.js +106 -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 -89299
  134. package/build/cmd-cjs/package.json +0 -1
  135. package/build/cmd-esm/index.js +0 -89303
  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 -74656
  186. package/build/codegen-cjs/package.json +0 -1
  187. package/build/codegen-esm/index.js +0 -74655
  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 -79739
  198. package/build/lib-cjs/package.json +0 -1
  199. package/build/lib-esm/index.js +0 -79648
  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 -42
  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/server/index.d.ts +0 -17
  240. package/build/runtime-cjs/cache/cache.d.ts +0 -169
  241. package/build/runtime-cjs/cache/cache.js +0 -1077
  242. package/build/runtime-cjs/cache/constants.d.ts +0 -1
  243. package/build/runtime-cjs/cache/constants.js +0 -28
  244. package/build/runtime-cjs/cache/gc.d.ts +0 -10
  245. package/build/runtime-cjs/cache/gc.js +0 -74
  246. package/build/runtime-cjs/cache/index.d.ts +0 -3
  247. package/build/runtime-cjs/cache/index.js +0 -25
  248. package/build/runtime-cjs/cache/lists.d.ts +0 -89
  249. package/build/runtime-cjs/cache/lists.js +0 -467
  250. package/build/runtime-cjs/cache/staleManager.d.ts +0 -31
  251. package/build/runtime-cjs/cache/staleManager.js +0 -123
  252. package/build/runtime-cjs/cache/storage.d.ts +0 -110
  253. package/build/runtime-cjs/cache/storage.js +0 -451
  254. package/build/runtime-cjs/cache/stuff.d.ts +0 -2
  255. package/build/runtime-cjs/cache/stuff.js +0 -56
  256. package/build/runtime-cjs/cache/subscription.d.ts +0 -52
  257. package/build/runtime-cjs/cache/subscription.js +0 -349
  258. package/build/runtime-cjs/client/documentStore.d.ts +0 -107
  259. package/build/runtime-cjs/client/documentStore.js +0 -487
  260. package/build/runtime-cjs/client/index.d.ts +0 -50
  261. package/build/runtime-cjs/client/index.js +0 -162
  262. package/build/runtime-cjs/client/plugins/cache.d.ts +0 -9
  263. package/build/runtime-cjs/client/plugins/cache.js +0 -138
  264. package/build/runtime-cjs/client/plugins/fetch.d.ts +0 -38
  265. package/build/runtime-cjs/client/plugins/fetch.js +0 -210
  266. package/build/runtime-cjs/client/plugins/fetchParams.d.ts +0 -9
  267. package/build/runtime-cjs/client/plugins/fetchParams.js +0 -47
  268. package/build/runtime-cjs/client/plugins/fragment.d.ts +0 -2
  269. package/build/runtime-cjs/client/plugins/fragment.js +0 -77
  270. package/build/runtime-cjs/client/plugins/index.d.ts +0 -9
  271. package/build/runtime-cjs/client/plugins/index.js +0 -45
  272. package/build/runtime-cjs/client/plugins/injectedPlugins.d.ts +0 -4
  273. package/build/runtime-cjs/client/plugins/injectedPlugins.js +0 -25
  274. package/build/runtime-cjs/client/plugins/mutation.d.ts +0 -2
  275. package/build/runtime-cjs/client/plugins/mutation.js +0 -89
  276. package/build/runtime-cjs/client/plugins/optimisticKeys.d.ts +0 -7
  277. package/build/runtime-cjs/client/plugins/optimisticKeys.js +0 -324
  278. package/build/runtime-cjs/client/plugins/query.d.ts +0 -2
  279. package/build/runtime-cjs/client/plugins/query.js +0 -93
  280. package/build/runtime-cjs/client/plugins/subscription.d.ts +0 -20
  281. package/build/runtime-cjs/client/plugins/subscription.js +0 -114
  282. package/build/runtime-cjs/client/plugins/test.d.ts +0 -15
  283. package/build/runtime-cjs/client/plugins/test.js +0 -118
  284. package/build/runtime-cjs/client/plugins/throwOnError.d.ts +0 -8
  285. package/build/runtime-cjs/client/plugins/throwOnError.js +0 -47
  286. package/build/runtime-cjs/client/utils/documentPlugins.d.ts +0 -3
  287. package/build/runtime-cjs/client/utils/documentPlugins.js +0 -57
  288. package/build/runtime-cjs/client/utils/index.d.ts +0 -1
  289. package/build/runtime-cjs/client/utils/index.js +0 -22
  290. package/build/runtime-cjs/generated.d.ts +0 -5
  291. package/build/runtime-cjs/generated.js +0 -16
  292. package/build/runtime-cjs/imports/config.d.ts +0 -3
  293. package/build/runtime-cjs/imports/config.js +0 -24
  294. package/build/runtime-cjs/imports/pluginConfig.d.ts +0 -3
  295. package/build/runtime-cjs/imports/pluginConfig.js +0 -25
  296. package/build/runtime-cjs/index.d.ts +0 -8
  297. package/build/runtime-cjs/index.js +0 -61
  298. package/build/runtime-cjs/lib/config.d.ts +0 -216
  299. package/build/runtime-cjs/lib/config.js +0 -110
  300. package/build/runtime-cjs/lib/constants.d.ts +0 -6
  301. package/build/runtime-cjs/lib/constants.js +0 -38
  302. package/build/runtime-cjs/lib/deepEquals.js +0 -52
  303. package/build/runtime-cjs/lib/flatten.js +0 -41
  304. package/build/runtime-cjs/lib/index.d.ts +0 -10
  305. package/build/runtime-cjs/lib/index.js +0 -40
  306. package/build/runtime-cjs/lib/key.js +0 -41
  307. package/build/runtime-cjs/lib/log.js +0 -72
  308. package/build/runtime-cjs/lib/lru.js +0 -73
  309. package/build/runtime-cjs/lib/pageInfo.js +0 -79
  310. package/build/runtime-cjs/lib/pagination.js +0 -240
  311. package/build/runtime-cjs/lib/scalars.js +0 -147
  312. package/build/runtime-cjs/lib/selection.js +0 -66
  313. package/build/runtime-cjs/lib/store.d.ts +0 -19
  314. package/build/runtime-cjs/lib/store.js +0 -81
  315. package/build/runtime-cjs/lib/types.d.ts +0 -417
  316. package/build/runtime-cjs/lib/types.js +0 -104
  317. package/build/runtime-cjs/package.json +0 -1
  318. package/build/runtime-cjs/public/cache.d.ts +0 -42
  319. package/build/runtime-cjs/public/cache.js +0 -98
  320. package/build/runtime-cjs/public/index.d.ts +0 -1
  321. package/build/runtime-cjs/public/index.js +0 -28
  322. package/build/runtime-cjs/public/list.d.ts +0 -18
  323. package/build/runtime-cjs/public/list.js +0 -151
  324. package/build/runtime-cjs/public/record.d.ts +0 -40
  325. package/build/runtime-cjs/public/record.js +0 -94
  326. package/build/runtime-cjs/public/tests/test.d.ts +0 -156
  327. package/build/runtime-cjs/public/tests/test.js +0 -60
  328. package/build/runtime-cjs/public/types.d.ts +0 -62
  329. package/build/runtime-cjs/public/types.js +0 -16
  330. package/build/runtime-cjs/router/cookies.js +0 -168
  331. package/build/runtime-cjs/router/jwt.js +0 -168
  332. package/build/runtime-cjs/router/match.d.ts +0 -39
  333. package/build/runtime-cjs/router/match.js +0 -158
  334. package/build/runtime-cjs/router/server.d.ts +0 -24
  335. package/build/runtime-cjs/router/server.js +0 -117
  336. package/build/runtime-cjs/router/session.d.ts +0 -22
  337. package/build/runtime-cjs/router/session.js +0 -100
  338. package/build/runtime-cjs/router/types.d.ts +0 -26
  339. package/build/runtime-cjs/router/types.js +0 -16
  340. package/build/runtime-cjs/server/index.d.ts +0 -17
  341. package/build/runtime-cjs/server/index.js +0 -62
  342. package/build/runtime-esm/cache/cache.d.ts +0 -169
  343. package/build/runtime-esm/cache/constants.d.ts +0 -1
  344. package/build/runtime-esm/cache/gc.d.ts +0 -10
  345. package/build/runtime-esm/cache/index.d.ts +0 -3
  346. package/build/runtime-esm/cache/index.js +0 -5
  347. package/build/runtime-esm/cache/lists.d.ts +0 -89
  348. package/build/runtime-esm/cache/staleManager.d.ts +0 -31
  349. package/build/runtime-esm/cache/storage.d.ts +0 -110
  350. package/build/runtime-esm/cache/stuff.d.ts +0 -2
  351. package/build/runtime-esm/cache/subscription.d.ts +0 -52
  352. package/build/runtime-esm/client/documentStore.d.ts +0 -107
  353. package/build/runtime-esm/client/index.d.ts +0 -50
  354. package/build/runtime-esm/client/index.js +0 -130
  355. package/build/runtime-esm/client/plugins/cache.d.ts +0 -9
  356. package/build/runtime-esm/client/plugins/cache.js +0 -104
  357. package/build/runtime-esm/client/plugins/fetch.d.ts +0 -38
  358. package/build/runtime-esm/client/plugins/fetch.js +0 -184
  359. package/build/runtime-esm/client/plugins/fetchParams.d.ts +0 -9
  360. package/build/runtime-esm/client/plugins/fetchParams.js +0 -23
  361. package/build/runtime-esm/client/plugins/fragment.d.ts +0 -2
  362. package/build/runtime-esm/client/plugins/fragment.js +0 -53
  363. package/build/runtime-esm/client/plugins/index.d.ts +0 -9
  364. package/build/runtime-esm/client/plugins/index.js +0 -12
  365. package/build/runtime-esm/client/plugins/injectedPlugins.d.ts +0 -4
  366. package/build/runtime-esm/client/plugins/injectedPlugins.js +0 -5
  367. package/build/runtime-esm/client/plugins/mutation.d.ts +0 -2
  368. package/build/runtime-esm/client/plugins/mutation.js +0 -65
  369. package/build/runtime-esm/client/plugins/optimisticKeys.d.ts +0 -7
  370. package/build/runtime-esm/client/plugins/optimisticKeys.js +0 -290
  371. package/build/runtime-esm/client/plugins/query.d.ts +0 -2
  372. package/build/runtime-esm/client/plugins/query.js +0 -69
  373. package/build/runtime-esm/client/plugins/subscription.d.ts +0 -20
  374. package/build/runtime-esm/client/plugins/subscription.js +0 -90
  375. package/build/runtime-esm/client/plugins/test.d.ts +0 -15
  376. package/build/runtime-esm/client/plugins/test.js +0 -93
  377. package/build/runtime-esm/client/plugins/throwOnError.d.ts +0 -8
  378. package/build/runtime-esm/client/plugins/throwOnError.js +0 -23
  379. package/build/runtime-esm/client/utils/documentPlugins.d.ts +0 -3
  380. package/build/runtime-esm/client/utils/documentPlugins.js +0 -33
  381. package/build/runtime-esm/client/utils/index.d.ts +0 -1
  382. package/build/runtime-esm/client/utils/index.js +0 -1
  383. package/build/runtime-esm/generated.d.ts +0 -5
  384. package/build/runtime-esm/generated.js +0 -0
  385. package/build/runtime-esm/imports/config.d.ts +0 -3
  386. package/build/runtime-esm/imports/config.js +0 -4
  387. package/build/runtime-esm/imports/pluginConfig.d.ts +0 -3
  388. package/build/runtime-esm/imports/pluginConfig.js +0 -5
  389. package/build/runtime-esm/index.d.ts +0 -8
  390. package/build/runtime-esm/index.js +0 -22
  391. package/build/runtime-esm/lib/config.d.ts +0 -216
  392. package/build/runtime-esm/lib/config.js +0 -69
  393. package/build/runtime-esm/lib/constants.d.ts +0 -6
  394. package/build/runtime-esm/lib/deepEquals.d.ts +0 -1
  395. package/build/runtime-esm/lib/flatten.d.ts +0 -2
  396. package/build/runtime-esm/lib/index.d.ts +0 -10
  397. package/build/runtime-esm/lib/index.js +0 -10
  398. package/build/runtime-esm/lib/key.d.ts +0 -6
  399. package/build/runtime-esm/lib/log.d.ts +0 -6
  400. package/build/runtime-esm/lib/lru.d.ts +0 -52
  401. package/build/runtime-esm/lib/pageInfo.d.ts +0 -7
  402. package/build/runtime-esm/lib/pagination.d.ts +0 -27
  403. package/build/runtime-esm/lib/scalars.d.ts +0 -14
  404. package/build/runtime-esm/lib/selection.d.ts +0 -2
  405. package/build/runtime-esm/lib/store.d.ts +0 -19
  406. package/build/runtime-esm/lib/types.d.ts +0 -417
  407. package/build/runtime-esm/public/cache.d.ts +0 -42
  408. package/build/runtime-esm/public/cache.js +0 -74
  409. package/build/runtime-esm/public/index.d.ts +0 -1
  410. package/build/runtime-esm/public/index.js +0 -4
  411. package/build/runtime-esm/public/list.d.ts +0 -18
  412. package/build/runtime-esm/public/list.js +0 -127
  413. package/build/runtime-esm/public/record.d.ts +0 -40
  414. package/build/runtime-esm/public/record.js +0 -70
  415. package/build/runtime-esm/public/tests/test.d.ts +0 -156
  416. package/build/runtime-esm/public/tests/test.js +0 -36
  417. package/build/runtime-esm/public/types.d.ts +0 -62
  418. package/build/runtime-esm/router/cookies.d.ts +0 -41
  419. package/build/runtime-esm/router/jwt.d.ts +0 -117
  420. package/build/runtime-esm/router/match.d.ts +0 -39
  421. package/build/runtime-esm/router/match.js +0 -131
  422. package/build/runtime-esm/router/server.d.ts +0 -24
  423. package/build/runtime-esm/router/server.js +0 -92
  424. package/build/runtime-esm/router/session.d.ts +0 -22
  425. package/build/runtime-esm/router/session.js +0 -74
  426. package/build/runtime-esm/router/types.d.ts +0 -26
  427. package/build/runtime-esm/router/types.js +0 -0
  428. package/build/runtime-esm/server/index.d.ts +0 -17
  429. package/build/runtime-esm/server/index.js +0 -38
  430. package/build/test-cjs/index.js +0 -75249
  431. package/build/test-cjs/package.json +0 -1
  432. package/build/test-esm/index.js +0 -75244
  433. package/build/vite/imports.d.ts +0 -40
  434. package/build/vite-cjs/index.js +0 -86272
  435. package/build/vite-cjs/package.json +0 -1
  436. package/build/vite-esm/index.js +0 -86264
  437. /package/build/{adapter-esm → adapter}/package.json +0 -0
  438. /package/build/{cmd-esm → cmd}/package.json +0 -0
  439. /package/build/{vite → lib}/ast.d.ts +0 -0
  440. /package/build/{codegen-esm → lib}/package.json +0 -0
  441. /package/build/{lib-esm → node}/package.json +0 -0
  442. /package/build/{runtime-esm → oauth}/package.json +0 -0
  443. /package/build/{runtime-cjs/router → router}/cookies.d.ts +0 -0
  444. /package/build/{runtime-cjs/router → router}/jwt.d.ts +0 -0
  445. /package/build/{test-esm → router}/package.json +0 -0
  446. /package/build/{runtime-esm/public → router}/types.js +0 -0
  447. /package/build/{runtime-esm → runtime}/cache/constants.js +0 -0
  448. /package/build/{runtime-esm/lib → runtime}/constants.js +0 -0
  449. /package/build/{runtime-cjs/lib → runtime}/deepEquals.d.ts +0 -0
  450. /package/build/{runtime-esm/lib → runtime}/deepEquals.js +0 -0
  451. /package/build/{runtime-esm/lib → runtime}/flatten.js +0 -0
  452. /package/build/{runtime-cjs/lib → runtime}/log.d.ts +0 -0
  453. /package/build/{runtime-cjs/lib → runtime}/lru.d.ts +0 -0
  454. /package/build/{runtime-esm/lib → runtime}/lru.js +0 -0
  455. /package/build/{vite-esm → runtime}/package.json +0 -0
@@ -0,0 +1,88 @@
1
+ const DEFAULT_AUTH_URL = "/_auth";
2
+ let _authUrl;
3
+ function setAuthUrl(url) {
4
+ _authUrl = url || void 0;
5
+ }
6
+ function getAuthUrl() {
7
+ return _authUrl ?? DEFAULT_AUTH_URL;
8
+ }
9
+ const DEFAULT_API_ENDPOINT = "/_api";
10
+ function resolveApiEndpoint(config) {
11
+ return config.url ?? config.apiURL ?? DEFAULT_API_ENDPOINT;
12
+ }
13
+ const HOUDINI_SESSION_EVENT = "_houdini_session_";
14
+ let mockConfig = null;
15
+ function getMockConfig() {
16
+ return mockConfig;
17
+ }
18
+ function setMockConfig(config) {
19
+ mockConfig = config;
20
+ }
21
+ function defaultConfigValues(file) {
22
+ return {
23
+ defaultKeys: ["id"],
24
+ ...file,
25
+ types: {
26
+ Node: {
27
+ keys: ["id"],
28
+ resolve: {
29
+ queryField: "node",
30
+ arguments: (node) => ({ id: node.id })
31
+ }
32
+ },
33
+ ...file.types
34
+ }
35
+ };
36
+ }
37
+ function keyFieldsForType(configFile, type) {
38
+ const withDefault = defaultConfigValues(configFile);
39
+ return withDefault.types?.[type]?.keys || withDefault.defaultKeys;
40
+ }
41
+ function entityRefetchVariables(configFile, targetType, state) {
42
+ if (!targetType || targetType === "Query" || !state) {
43
+ return {};
44
+ }
45
+ const config = defaultConfigValues(configFile);
46
+ const typeConfig = config.types?.[targetType];
47
+ if (typeConfig?.resolve?.arguments) {
48
+ return typeConfig.resolve.arguments(state) ?? {};
49
+ }
50
+ const keys = keyFieldsForType(config, targetType);
51
+ return Object.fromEntries(keys.map((key) => [key, state[key]]));
52
+ }
53
+ function computeID(configFile, type, data) {
54
+ const fields = keyFieldsForType(configFile, type);
55
+ let id = "";
56
+ for (const field of fields) {
57
+ id += `${data[field]}__`;
58
+ }
59
+ return id.slice(0, -2);
60
+ }
61
+ let _configFile = null;
62
+ function getCurrentConfig() {
63
+ const mockConfig2 = getMockConfig();
64
+ if (mockConfig2) {
65
+ return mockConfig2;
66
+ }
67
+ if (_configFile) {
68
+ return _configFile;
69
+ }
70
+ const defaultConfig = defaultConfigValues({});
71
+ _configFile = defaultConfig;
72
+ return defaultConfig;
73
+ }
74
+ export {
75
+ DEFAULT_API_ENDPOINT,
76
+ DEFAULT_AUTH_URL,
77
+ HOUDINI_SESSION_EVENT,
78
+ computeID,
79
+ defaultConfigValues,
80
+ entityRefetchVariables,
81
+ getAuthUrl,
82
+ getCurrentConfig,
83
+ getMockConfig,
84
+ keyFieldsForType,
85
+ resolveApiEndpoint,
86
+ setAuthUrl,
87
+ setMockConfig
88
+ };
@@ -3,4 +3,4 @@ export declare const siteURL = "SITE_URL";
3
3
  * @param focus example "#0160"
4
4
  */
5
5
  export declare const InfoReleaseNote: (focus?: string) => string;
6
- export declare const OutdatedFunctionInlineInfo: (type: 'query' | 'paginatedQuery' | 'mutation' | 'subscription', name: string) => string;
6
+ export declare const OutdatedFunctionInlineInfo: (type: "query" | "paginatedQuery" | "mutation" | "subscription", name: string) => string;
@@ -1,10 +1,9 @@
1
- import type { HoudiniClient } from '.';
2
- import type { Cache } from '../cache/cache';
3
- import type { Layer } from '../cache/storage';
4
- import type { ConfigFile } from '../lib/config';
5
- import { Writable } from '../lib/store';
6
- import type { DocumentArtifact, QueryResult, GraphQLObject, SubscriptionSpec, CachePolicies, GraphQLVariables } from '../lib/types';
7
- export declare class DocumentStore<_Data extends GraphQLObject, _Input extends GraphQLVariables> extends Writable<QueryResult<_Data, _Input>> {
1
+ import type { ConfigFile } from 'houdini';
2
+ import type { HoudiniClient } from './index.js';
3
+ import type { Layer } from './cache/storage.js';
4
+ import { Writable } from './store.js';
5
+ import type { DocumentArtifact, QueryResult, GraphQLObject, SubscriptionSpec, CachePolicies, GraphQLVariables } from './types.js';
6
+ export declare class DocumentStore<_Data extends GraphQLObject, _Input extends GraphQLVariables | undefined> extends Writable<QueryResult<_Data, _Input>> {
8
7
  #private;
9
8
  readonly artifact: DocumentArtifact;
10
9
  pendingPromise: {
@@ -12,19 +11,24 @@ export declare class DocumentStore<_Data extends GraphQLObject, _Input extends G
12
11
  } | null;
13
12
  serverSideFallback?: boolean;
14
13
  controllerKey(variables: any): string;
15
- constructor({ artifact, plugins, pipeline, client, cache, enableCache, initialValue, initialVariables, fetching, }: {
14
+ constructor({ artifact, plugins, client, initialValue, initialVariables, fetching, proxies, config, }: {
16
15
  artifact: DocumentArtifact;
17
16
  plugins?: ClientHooks[];
18
- pipeline?: ClientHooks[];
19
17
  client: HoudiniClient | null;
20
- cache?: Cache;
21
18
  enableCache?: boolean;
22
19
  initialValue?: _Data | null;
23
20
  fetching?: boolean;
24
21
  serverSideFallback?: boolean;
25
22
  initialVariables?: _Input;
23
+ proxies?: Record<string, (operation: {
24
+ query: string;
25
+ variables: any;
26
+ operationName: string;
27
+ session: App.Session | null | undefined;
28
+ }) => Promise<any>>;
29
+ config: ConfigFile;
26
30
  });
27
- send({ metadata, session, fetch, variables, policy, stuff, cacheParams, setup, silenceEcho, abortController, }?: SendParams): Promise<QueryResult<_Data, _Input>>;
31
+ send({ metadata, session, fetch, variables, policy, stuff, cacheParams, setup, initialState, silenceEcho, abortController, }?: SendParams): Promise<QueryResult<_Data, _Input>>;
28
32
  cleanup(): Promise<void>;
29
33
  getFetch(getSession: () => App.Session | null | undefined): (input: RequestInfo | URL, init?: RequestInit | undefined) => Promise<Response>;
30
34
  }
@@ -45,6 +49,7 @@ export type ClientPluginContext = {
45
49
  name: string;
46
50
  text: string;
47
51
  hash: string;
52
+ documentStore: DocumentStore<any, any>;
48
53
  artifact: DocumentArtifact;
49
54
  policy?: CachePolicies;
50
55
  fetch?: Fetch;
@@ -60,6 +65,7 @@ export type ClientPluginContext = {
60
65
  disableWrite?: boolean;
61
66
  disableRead?: boolean;
62
67
  disableSubscriptions?: boolean;
68
+ disablePartial?: boolean;
63
69
  applyUpdates?: string[];
64
70
  serverSideFallback?: boolean;
65
71
  };
@@ -101,6 +107,7 @@ export type SendParams = {
101
107
  stuff?: Partial<App.Stuff>;
102
108
  cacheParams?: ClientPluginContext['cacheParams'];
103
109
  setup?: boolean;
110
+ initialState?: QueryResult;
104
111
  silenceEcho?: boolean;
105
112
  abortController?: AbortController;
106
113
  };
@@ -1,17 +1,16 @@
1
- import { getCurrentConfig } from "../lib/config";
2
- import { deepEquals } from "../lib/deepEquals";
3
- import { marshalInputs } from "../lib/scalars";
4
- import { Writable } from "../lib/store";
5
- import { ArtifactKind, DedupeMatchMode } from "../lib/types";
6
- import { cachePolicy } from "./plugins";
1
+ import { deepEquals } from "./deepEquals.js";
2
+ import { marshalInputs } from "./scalars.js";
3
+ import { Writable } from "./store.js";
4
+ import { ArtifactKind, DedupeMatchMode } from "./types.js";
7
5
  const steps = {
8
6
  forward: ["start", "beforeNetwork", "network"],
9
7
  backwards: ["end", "afterNetwork"]
10
8
  };
11
- let inflightRequests = {};
9
+ const inflightRequests = {};
12
10
  class DocumentStore extends Writable {
13
11
  artifact;
14
12
  #client;
13
+ #proxies = {};
15
14
  #configFile;
16
15
  // the list of instantiated plugins
17
16
  #plugins;
@@ -30,13 +29,12 @@ class DocumentStore extends Writable {
30
29
  constructor({
31
30
  artifact,
32
31
  plugins,
33
- pipeline,
34
32
  client,
35
- cache,
36
- enableCache = true,
37
33
  initialValue,
38
34
  initialVariables,
39
- fetching
35
+ fetching,
36
+ proxies = {},
37
+ config
40
38
  }) {
41
39
  fetching ??= artifact.kind === ArtifactKind.Query;
42
40
  const initialState = {
@@ -57,24 +55,9 @@ class DocumentStore extends Writable {
57
55
  this.artifact = artifact;
58
56
  this.#client = client;
59
57
  this.#lastVariables = null;
60
- this.#configFile = getCurrentConfig();
61
- this.#plugins = pipeline ?? [
62
- // cache policy needs to always come first so that it can be the first network to fire
63
- cachePolicy({
64
- cache,
65
- enabled: enableCache,
66
- setFetching: (fetching2, data) => {
67
- this.update((state) => {
68
- const newState = { ...state, fetching: fetching2 };
69
- if (fetching2 && data) {
70
- newState.data = data;
71
- }
72
- return newState;
73
- });
74
- }
75
- })(),
76
- ...plugins ?? []
77
- ];
58
+ this.#configFile = config;
59
+ this.#plugins = plugins ?? [];
60
+ this.#proxies = proxies;
78
61
  }
79
62
  // used by the client to send a new set of variables to the pipeline
80
63
  async send({
@@ -86,15 +69,17 @@ class DocumentStore extends Writable {
86
69
  stuff,
87
70
  cacheParams,
88
71
  setup = false,
72
+ initialState,
89
73
  silenceEcho = false,
90
74
  abortController = new AbortController()
91
75
  } = {}) {
92
76
  if ("dedupe" in this.artifact && this.artifact.dedupe && this.artifact.dedupe.match !== "None") {
93
77
  const dedupeKey = this.controllerKey(variables);
94
- if (inflightRequests[dedupeKey]) {
78
+ const existingRequest = inflightRequests[dedupeKey];
79
+ if (existingRequest && !existingRequest.controller.signal.aborted) {
95
80
  if (this.artifact.dedupe.cancel === "first") {
96
- inflightRequests[dedupeKey].controller.abort();
97
- inflightRequests[dedupeKey].controller = abortController;
81
+ existingRequest.controller.abort();
82
+ existingRequest.controller = abortController;
98
83
  } else {
99
84
  abortController.abort();
100
85
  }
@@ -108,6 +93,7 @@ class DocumentStore extends Writable {
108
93
  let context = new ClientPluginContextWrapper({
109
94
  abortController,
110
95
  config: this.#configFile,
96
+ documentStore: this,
111
97
  name: this.artifact.name,
112
98
  text: this.artifact.raw,
113
99
  hash: this.artifact.hash,
@@ -134,6 +120,7 @@ class DocumentStore extends Writable {
134
120
  const promise = new Promise((resolve, reject) => {
135
121
  const state = {
136
122
  setup,
123
+ initialState,
137
124
  currentStep: 0,
138
125
  index: 0,
139
126
  silenceEcho,
@@ -141,6 +128,7 @@ class DocumentStore extends Writable {
141
128
  resolved: false,
142
129
  resolve,
143
130
  reject,
131
+ // biome-ignore lint/suspicious/noThenProperty: thenable required for await support
144
132
  then: (...args) => promise.then(...args)
145
133
  },
146
134
  // patch the context with new variables
@@ -151,9 +139,11 @@ class DocumentStore extends Writable {
151
139
  }
152
140
  this.#step("forward", state);
153
141
  });
154
- const response = await promise;
155
- delete inflightRequests[this.controllerKey(variables)];
156
- return response;
142
+ try {
143
+ return await promise;
144
+ } finally {
145
+ delete inflightRequests[this.controllerKey(variables)];
146
+ }
157
147
  }
158
148
  async cleanup() {
159
149
  for (const plugin of this.#plugins) {
@@ -173,12 +163,14 @@ class DocumentStore extends Writable {
173
163
  url = new URL(input.url).pathname;
174
164
  }
175
165
  if (input instanceof Request) {
176
- const body = await input.json();
177
- if (!Array.isArray(body)) {
178
- queries = [body];
166
+ if ((input.headers.get("content-type") ?? "").includes("application/json")) {
167
+ const body = await input.clone().json();
168
+ if (!Array.isArray(body)) {
169
+ queries = [body];
170
+ }
179
171
  }
180
- } else {
181
- const body = JSON.parse(init?.body);
172
+ } else if (typeof init?.body === "string") {
173
+ const body = JSON.parse(init.body);
182
174
  if (!Array.isArray(body)) {
183
175
  queries = [body];
184
176
  }
@@ -186,10 +178,10 @@ class DocumentStore extends Writable {
186
178
  if (!url || queries.length === 0) {
187
179
  return await globalThis.fetch(input, init);
188
180
  }
189
- if (this.#client?.proxies[url]) {
181
+ if (this.#proxies[url]) {
190
182
  const result = await Promise.all(
191
183
  queries.map(
192
- (q) => this.#client?.proxies[url]({
184
+ (q) => this.#proxies[url]({
193
185
  ...q,
194
186
  session: getSession()
195
187
  })
@@ -209,12 +201,12 @@ class DocumentStore extends Writable {
209
201
  step = (i) => i - 1;
210
202
  }
211
203
  for (let index = ctx.index; valid(index); index = step(index)) {
212
- let target = this.#plugins[index]?.[hook];
204
+ const target = this.#plugins[index]?.[hook];
213
205
  if (!target) {
214
206
  continue;
215
207
  }
216
208
  const draft = ctx.context.draft();
217
- let variablesRefChanged = (newContext) => newContext.variables !== draft.variables;
209
+ const variablesRefChanged = (newContext) => newContext.variables !== draft.variables;
218
210
  const common = {
219
211
  initialValue: this.state,
220
212
  client: this.#client,
@@ -265,9 +257,9 @@ class DocumentStore extends Writable {
265
257
  handlers = {
266
258
  ...common,
267
259
  value,
268
- resolve: (ctx2, data) => {
260
+ resolve: ((ctx2, data) => {
269
261
  return common.resolve(ctx2, data ?? value);
270
- }
262
+ })
271
263
  };
272
264
  } else if (direction === "error") {
273
265
  handlers = {
@@ -282,9 +274,11 @@ class DocumentStore extends Writable {
282
274
  throw abortError;
283
275
  }
284
276
  const result = target(draft, handlers);
285
- result?.catch((err) => {
286
- this.#step("error", { ...ctx, index: index - 1 }, err);
287
- });
277
+ if (result) {
278
+ result?.catch((err) => {
279
+ this.#step("error", { ...ctx, index: index - 1 }, err);
280
+ });
281
+ }
288
282
  } catch (err) {
289
283
  this.#step("error", { ...ctx, index: index - 1 }, err);
290
284
  }
@@ -292,22 +286,24 @@ class DocumentStore extends Writable {
292
286
  }
293
287
  if (direction === "forward") {
294
288
  if (ctx.setup) {
295
- return this.#step(
289
+ this.#step(
296
290
  "backwards",
297
291
  {
298
292
  ...ctx,
299
293
  currentStep: 0,
300
294
  index: this.#plugins.length
301
295
  },
302
- this.state
296
+ ctx.initialState ?? this.state
303
297
  );
298
+ return;
304
299
  }
305
300
  if (ctx.currentStep <= steps.forward.length - 2) {
306
- return this.#step("forward", {
301
+ this.#step("forward", {
307
302
  ...ctx,
308
303
  currentStep: ctx.currentStep + 1,
309
304
  index: 0
310
305
  });
306
+ return;
311
307
  }
312
308
  throw new Error(
313
309
  "Called next() on last possible plugin. Your chain is missing a plugin that calls resolve()."
@@ -321,7 +317,7 @@ class DocumentStore extends Writable {
321
317
  return;
322
318
  }
323
319
  if (ctx.currentStep > 0) {
324
- return this.#step(
320
+ this.#step(
325
321
  "backwards",
326
322
  {
327
323
  ...ctx,
@@ -330,6 +326,7 @@ class DocumentStore extends Writable {
330
326
  },
331
327
  value
332
328
  );
329
+ return;
333
330
  }
334
331
  if (!ctx.silenceEcho || value.data !== this.state.data) {
335
332
  this.set(value);
@@ -386,7 +383,7 @@ class ClientPluginContextWrapper {
386
383
  ...values
387
384
  };
388
385
  const val = values.variables;
389
- let changed = {};
386
+ const changed = {};
390
387
  for (const [name, value] of Object.entries(val ?? {})) {
391
388
  if (value !== source.variables?.[name]) {
392
389
  changed[name] = value;
@@ -398,11 +395,11 @@ class ClientPluginContextWrapper {
398
395
  ...ctx.stuff.inputs
399
396
  }
400
397
  };
401
- const firstInit = !ctx.stuff.inputs || !ctx.stuff.inputs.init;
398
+ const firstInit = !ctx.stuff.inputs?.init;
402
399
  const hasChanged = Object.keys(changed).length > 0 || firstInit;
403
400
  if (hasChanged) {
404
401
  const newVariables = {
405
- ...ctx.stuff.inputs?.marshaled,
402
+ ...source.stuff.inputs?.marshaled,
406
403
  ...marshalInputs({
407
404
  artifact,
408
405
  input: changed,
@@ -0,0 +1,14 @@
1
+ import type { RedirectTemplate } from './types.js';
2
+ /**
3
+ * interpolateRedirect builds an @endpoint redirect URL from its parsed template and the
4
+ * mutation result. Literal segments are emitted verbatim; interpolation paths are resolved
5
+ * against the data and URL-encoded (closing the open-redirect hole at the value level, on
6
+ * top of the compiler's build-time relative-path check).
7
+ *
8
+ * Returns `null` when any interpolation path resolves to null/undefined — the caller then
9
+ * skips the redirect and falls back to PRG-back-to-the-page rather than navigating to
10
+ * `/users/undefined`. Shared by the server form handler and the client form hook so both
11
+ * paths produce the same target.
12
+ */
13
+ export declare function interpolateRedirect(template: RedirectTemplate, data: any): string | null;
14
+ export declare function valueAtPath(data: any, path: readonly string[]): any;
@@ -0,0 +1,29 @@
1
+ function interpolateRedirect(template, data) {
2
+ let url = "";
3
+ for (const part of template) {
4
+ if (typeof part === "string") {
5
+ url += part;
6
+ continue;
7
+ }
8
+ const value = valueAtPath(data, part);
9
+ if (value === null || value === void 0) {
10
+ return null;
11
+ }
12
+ url += encodeURIComponent(String(value));
13
+ }
14
+ return url;
15
+ }
16
+ function valueAtPath(data, path) {
17
+ let cursor = data;
18
+ for (const key of path) {
19
+ if (cursor == null) {
20
+ return void 0;
21
+ }
22
+ cursor = cursor[key];
23
+ }
24
+ return cursor;
25
+ }
26
+ export {
27
+ interpolateRedirect,
28
+ valueAtPath
29
+ };
@@ -1,2 +1,2 @@
1
- import type { NestedList } from './types';
1
+ import type { NestedList } from './types.js';
2
2
  export declare function flatten<T>(source?: NestedList<T>): T[];
@@ -0,0 +1,24 @@
1
+ import type { ConfigFile } from 'houdini';
2
+ import type { InputObject } from './types.js';
3
+ /**
4
+ * coerceFormData turns a browser FormData into GraphQL variables, driven by a document's
5
+ * compiled `input` metadata. It is the single coercion shared by the client (enhanced
6
+ * form submit) and the server (no-JS form endpoint) so the two paths can't drift.
7
+ *
8
+ * It is a domain wrapper over the shared coercion core (`unmarshalValue`): it folds the
9
+ * flat FormData keys into the right shape, applies the form-specific rules below, and
10
+ * hands custom-scalar leaves to the core. The result holds **rich** runtime values (e.g.
11
+ * Dates), so the normal mutation send re-marshals them — no special, marshal-bypassing
12
+ * code path is needed.
13
+ *
14
+ * Form-specific rules:
15
+ * - an unchecked checkbox is absent from FormData → a missing Boolean becomes `false`
16
+ * - an empty string is "absent" for numbers/enums/custom scalars → `null` (but a real
17
+ * "" is kept for String/ID)
18
+ * - File/Blob values pass through untouched for multipart handling
19
+ *
20
+ * Field-name conventions:
21
+ * - `.` nests: name="input.address.city"
22
+ * - trailing `[]`: name="tags[]" (a scalar list; repeat the field per item)
23
+ */
24
+ export declare function coerceFormData(formData: FormData, input: InputObject, config?: ConfigFile, allowedFields?: readonly string[]): Record<string, any>;
@@ -0,0 +1,93 @@
1
+ import { isFile, unmarshalValue } from "./coerce.js";
2
+ import { getCurrentConfig } from "./config.js";
3
+ function coerceFormData(formData, input, config = getCurrentConfig(), allowedFields) {
4
+ const raw = foldFormData(formData, allowedFields ? new Set(allowedFields) : void 0);
5
+ return coerceObject(raw, input.fields, input, config);
6
+ }
7
+ function foldFormData(formData, allowed) {
8
+ const root = {};
9
+ formData.forEach((value, key) => {
10
+ if (allowed && !allowed.has(key)) {
11
+ return;
12
+ }
13
+ const segments = key.split(".");
14
+ let cursor = root;
15
+ segments.forEach((segment, i) => {
16
+ const isLast = i === segments.length - 1;
17
+ const isList = segment.endsWith("[]");
18
+ const name = isList ? segment.slice(0, -2) : segment;
19
+ if (!isLast) {
20
+ cursor[name] = cursor[name] ?? {};
21
+ cursor = cursor[name];
22
+ return;
23
+ }
24
+ if (isList) {
25
+ cursor[name] = cursor[name] ?? [];
26
+ cursor[name].push(value);
27
+ } else {
28
+ cursor[name] = value;
29
+ }
30
+ });
31
+ });
32
+ return root;
33
+ }
34
+ function coerceObject(raw, fields, input, config) {
35
+ const result = {};
36
+ for (const [field, type] of Object.entries(fields)) {
37
+ const value = raw?.[field];
38
+ const nestedFields = input.types[type];
39
+ if (nestedFields) {
40
+ if (Array.isArray(value)) {
41
+ result[field] = value.map(
42
+ (entry) => coerceObject(entry, nestedFields, input, config)
43
+ );
44
+ } else if (value !== void 0) {
45
+ result[field] = coerceObject(value, nestedFields, input, config);
46
+ }
47
+ continue;
48
+ }
49
+ if (value === void 0) {
50
+ if (type === "Boolean") {
51
+ result[field] = false;
52
+ }
53
+ continue;
54
+ }
55
+ if (Array.isArray(value)) {
56
+ result[field] = value.map((entry) => coerceLeaf(entry, type, config));
57
+ } else {
58
+ result[field] = coerceLeaf(value, type, config);
59
+ }
60
+ }
61
+ return result;
62
+ }
63
+ function coerceLeaf(value, type, config) {
64
+ if (isFile(value)) {
65
+ return value;
66
+ }
67
+ const text = typeof value === "string" ? value : String(value);
68
+ if (config.scalars?.[type]) {
69
+ return text === "" ? null : unmarshalValue(text, config.scalars[type]?.unmarshal);
70
+ }
71
+ switch (type) {
72
+ case "Int": {
73
+ if (text === "") return null;
74
+ const parsed = Number.parseInt(text, 10);
75
+ return Number.isNaN(parsed) ? null : parsed;
76
+ }
77
+ case "Float": {
78
+ if (text === "") return null;
79
+ const parsed = Number.parseFloat(text);
80
+ return Number.isNaN(parsed) ? null : parsed;
81
+ }
82
+ case "Boolean":
83
+ return text === "true" || text === "on" || text === "1";
84
+ case "String":
85
+ case "ID":
86
+ return text;
87
+ default:
88
+ return text === "" ? null : text;
89
+ }
90
+ }
91
+ export {
92
+ coerceFormData
93
+ };
@@ -1,8 +1,16 @@
1
- import type { Cache as InternalCache } from './cache/cache';
2
- import type { CacheTypeDef } from './generated';
3
- import { Cache } from './public';
4
- export * from './client';
5
- export * from './lib';
6
- export declare function graphql<_Payload, _Result = _Payload>(str: TemplateStringsArray): _Result;
7
- export declare const cache: Cache<CacheTypeDef>;
8
- export declare function getCache(): InternalCache;
1
+ export * from './client.js';
2
+ export { decodeScalar, unmarshalValue, type Unmarshaler } from './coerce.js';
3
+ export { deepEquals } from './deepEquals.js';
4
+ export { interpolateRedirect, valueAtPath } from './endpoint.js';
5
+ export { coerceFormData } from './formData.js';
6
+ export { buildGraphQLBody } from './multipart.js';
7
+ export * from './scalars.js';
8
+ export * from './types.js';
9
+ export { computeID, keyFieldsForType, entityRefetchVariables, setMockConfig, getMockConfig, getCurrentConfig, getAuthUrl, setAuthUrl, DEFAULT_AUTH_URL, resolveApiEndpoint, DEFAULT_API_ENDPOINT, HOUDINI_SESSION_EVENT, type HoudiniSessionEventDetail, } from './config.js';
10
+ export { getFieldsForType } from './selection.js';
11
+ export { flatten } from './flatten.js';
12
+ export * from './pageInfo.js';
13
+ export * from './pagination.js';
14
+ export * from './constants.js';
15
+ export * from './log.js';
16
+ export { LRUCache, createLRUCache } from './lru.js';
@@ -0,0 +1,54 @@
1
+ export * from "./client.js";
2
+ import { decodeScalar, unmarshalValue } from "./coerce.js";
3
+ import { deepEquals } from "./deepEquals.js";
4
+ import { interpolateRedirect, valueAtPath } from "./endpoint.js";
5
+ import { coerceFormData } from "./formData.js";
6
+ import { buildGraphQLBody } from "./multipart.js";
7
+ export * from "./scalars.js";
8
+ export * from "./types.js";
9
+ import {
10
+ computeID,
11
+ keyFieldsForType,
12
+ entityRefetchVariables,
13
+ setMockConfig,
14
+ getMockConfig,
15
+ getCurrentConfig,
16
+ getAuthUrl,
17
+ setAuthUrl,
18
+ DEFAULT_AUTH_URL,
19
+ resolveApiEndpoint,
20
+ DEFAULT_API_ENDPOINT,
21
+ HOUDINI_SESSION_EVENT
22
+ } from "./config.js";
23
+ import { getFieldsForType } from "./selection.js";
24
+ import { flatten } from "./flatten.js";
25
+ export * from "./pageInfo.js";
26
+ export * from "./pagination.js";
27
+ export * from "./constants.js";
28
+ export * from "./log.js";
29
+ import { LRUCache, createLRUCache } from "./lru.js";
30
+ export {
31
+ DEFAULT_API_ENDPOINT,
32
+ DEFAULT_AUTH_URL,
33
+ HOUDINI_SESSION_EVENT,
34
+ LRUCache,
35
+ buildGraphQLBody,
36
+ coerceFormData,
37
+ computeID,
38
+ createLRUCache,
39
+ decodeScalar,
40
+ deepEquals,
41
+ entityRefetchVariables,
42
+ flatten,
43
+ getAuthUrl,
44
+ getCurrentConfig,
45
+ getFieldsForType,
46
+ getMockConfig,
47
+ interpolateRedirect,
48
+ keyFieldsForType,
49
+ resolveApiEndpoint,
50
+ setAuthUrl,
51
+ setMockConfig,
52
+ unmarshalValue,
53
+ valueAtPath
54
+ };