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,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
+ };