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
@@ -1,15 +1,16 @@
1
- import { computeKey, PendingValue } from "../lib";
2
- import { computeID, defaultConfigValues, keyFieldsForType, getCurrentConfig } from "../lib/config";
3
- import { deepEquals } from "../lib/deepEquals";
4
- import { flatten } from "../lib/flatten";
5
- import { getFieldsForType } from "../lib/selection";
6
- import { fragmentKey } from "../lib/types";
7
- import { GarbageCollector } from "./gc";
8
- import { ListManager } from "./lists";
9
- import { StaleManager } from "./staleManager";
10
- import { InMemoryStorage } from "./storage";
11
- import { evaluateKey, rootID } from "./stuff";
12
- import { InMemorySubscriptions } from "./subscription";
1
+ import { computeID, defaultConfigValues, keyFieldsForType } from "../config.js";
2
+ import { deepEquals } from "../deepEquals.js";
3
+ import { flatten } from "../flatten.js";
4
+ import { computeKey } from "../key.js";
5
+ import { getFieldsForType } from "../selection.js";
6
+ import { PendingValue } from "../types.js";
7
+ import { ArtifactKind, fragmentKey } from "../types.js";
8
+ import { GarbageCollector } from "./gc.js";
9
+ import { ListManager, opaqueListID } from "./lists.js";
10
+ import { StaleManager } from "./staleManager.js";
11
+ import { InMemoryStorage } from "./storage.js";
12
+ import { evaluateKey, rootID } from "./stuff.js";
13
+ import { filterValue, InMemorySubscriptions } from "./subscription.js";
13
14
  class Cache {
14
15
  // the internal implementation for a lot of the cache's methods are moved into
15
16
  // a second class to avoid users from relying on unstable APIs. typescript's private
@@ -44,7 +45,8 @@ class Cache {
44
45
  ...args
45
46
  }) {
46
47
  const layer = layerID ? this._internal_unstable.storage.getLayer(layerID) : this._internal_unstable.storage.topLayer;
47
- const subscribers = this._internal_unstable.writeSelection({ ...args, layer }).map((sub) => sub[0]);
48
+ const toNotify = this._internal_unstable.writeSelection({ ...args, layer });
49
+ const subscribers = [...toNotify];
48
50
  this.#notifySubscribers(subscribers.concat(notifySubscribers));
49
51
  return subscribers;
50
52
  }
@@ -86,7 +88,7 @@ class Cache {
86
88
  const handler = this._internal_unstable.lists.get(name, parentID, allLists, skipMatches);
87
89
  if (!handler) {
88
90
  throw new Error(
89
- `Cannot find list with name: ${name}${parentID ? " under parent " + parentID : ""}. Is it possible that the query is not mounted?`
91
+ `Cannot find list with name: ${name}${parentID ? ` under parent ${parentID}` : ""}. Is it possible that the query is not mounted?`
90
92
  );
91
93
  }
92
94
  return handler;
@@ -124,6 +126,33 @@ class Cache {
124
126
  );
125
127
  }
126
128
  }
129
+ // ask every document whose data contains the record(s) to refetch itself.
130
+ // this includes documents that only contain a record behind a masked
131
+ // boundary (a fragment spread) thanks to their masked parent subscriptions.
132
+ // passing several ids notifies each document at most once, even if it
133
+ // depends on more than one of them (eg a list returned by a mutation).
134
+ refresh(id) {
135
+ const ids = Array.isArray(id) ? id : [id];
136
+ const notified = /* @__PURE__ */ new Set();
137
+ for (const baseID of ids) {
138
+ const recordIDs = [this._internal_unstable.storage.idMaps[baseID], baseID].filter(
139
+ Boolean
140
+ );
141
+ for (const recordID of recordIDs) {
142
+ for (const [spec] of this._internal_unstable.subscriptions.getAll(recordID, {
143
+ includeMaskedParents: true
144
+ })) {
145
+ if (spec.kind === ArtifactKind.Subscription) {
146
+ continue;
147
+ }
148
+ if (!notified.has(spec.onMessage)) {
149
+ notified.add(spec.onMessage);
150
+ spec.onMessage({ kind: "refetch" });
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
127
156
  markRecordStale(id, options) {
128
157
  if (options.field) {
129
158
  const key = computeKey({ field: options.field, args: options.when ?? {} });
@@ -147,14 +176,18 @@ class Cache {
147
176
  clearLayer(layerID) {
148
177
  const layer = this._internal_unstable.storage.getLayer(layerID);
149
178
  if (!layer) {
150
- throw new Error("Cannot find layer with id: " + layerID);
179
+ throw new Error(`Cannot find layer with id: ${layerID}`);
151
180
  }
152
181
  const toNotify = [];
153
182
  const allFields = [];
154
183
  for (const target of [layer.fields, layer.links]) {
155
184
  for (const [id, fields] of Object.entries(target)) {
156
185
  allFields.push(
157
- ...Object.entries(fields).map(([field, value]) => ({ id, field, value }))
186
+ ...Object.entries(fields).map(([field, value]) => ({
187
+ id,
188
+ field,
189
+ value
190
+ }))
158
191
  );
159
192
  }
160
193
  }
@@ -198,22 +231,29 @@ class Cache {
198
231
  this._internal_unstable.storage.reset();
199
232
  this.#notifySubscribers(subSpecs);
200
233
  }
234
+ // returns the current notification generation; fragment references carry this value
235
+ // so hooks can detect which epoch of data they were rendered with
236
+ getEpoch() {
237
+ return this._internal_unstable.epoch;
238
+ }
201
239
  #notifySubscribers(subs) {
202
240
  if (subs.length === 0) {
203
241
  return;
204
242
  }
205
- const notified = [];
243
+ this._internal_unstable.epoch++;
244
+ const notified = /* @__PURE__ */ new Set();
206
245
  for (const spec of subs) {
207
- if (!notified.includes(spec.set)) {
208
- notified.push(spec.set);
209
- spec.set(
210
- this._internal_unstable.getSelection({
246
+ if (!notified.has(spec.onMessage)) {
247
+ notified.add(spec.onMessage);
248
+ spec.onMessage({
249
+ kind: "update",
250
+ data: this._internal_unstable.getSelection({
211
251
  parent: spec.parentID || rootID,
212
252
  selection: spec.selection,
213
253
  variables: spec.variables?.() || {},
214
254
  ignoreMasking: false
215
255
  }).data
216
- );
256
+ });
217
257
  }
218
258
  }
219
259
  }
@@ -221,6 +261,9 @@ class Cache {
221
261
  class CacheInternal {
222
262
  // for server-side requests we need to be able to flag the cache as disabled so we dont write to it
223
263
  disabled = false;
264
+ // monotonically increasing counter incremented on every cache notification flush;
265
+ // threaded into fragment references so hooks know which generation of data they hold
266
+ epoch = 0;
224
267
  _config;
225
268
  storage;
226
269
  subscriptions;
@@ -260,7 +303,7 @@ class CacheInternal {
260
303
  }
261
304
  }
262
305
  get config() {
263
- return this._config ?? getCurrentConfig();
306
+ return this._config ?? {};
264
307
  }
265
308
  setConfig(config) {
266
309
  this._config = config;
@@ -272,19 +315,19 @@ class CacheInternal {
272
315
  parent = rootID,
273
316
  applyUpdates,
274
317
  layer,
275
- toNotify = [],
318
+ toNotify = /* @__PURE__ */ new Set(),
276
319
  forceNotify,
277
320
  forceStale
278
321
  }) {
279
322
  if (this.disabled) {
280
- return [];
323
+ return toNotify;
281
324
  }
282
- let targetSelection = getFieldsForType(
325
+ const targetSelection = getFieldsForType(
283
326
  selection,
284
- data["__typename"],
327
+ data.__typename,
285
328
  false
286
329
  );
287
- for (const [field, value] of Object.entries(data)) {
330
+ for (let [field, value] of Object.entries(data)) {
288
331
  if (!selection || !targetSelection[field]) {
289
332
  continue;
290
333
  }
@@ -297,11 +340,12 @@ class CacheInternal {
297
340
  updates
298
341
  } = targetSelection[field];
299
342
  const key = evaluateKey(keyRaw, variables);
300
- if (value && typeof value === "object" && "__typename" in value && value["__typename"]) {
301
- linkedType = value["__typename"];
343
+ if (value && typeof value === "object" && "__typename" in value && value.__typename) {
344
+ linkedType = value.__typename;
302
345
  }
303
346
  const currentSubscribers = this.subscriptions.get(parent, key);
304
- const specs = currentSubscribers.map((sub) => sub[0]);
347
+ const maskedParentSubscribers = this.subscriptions.getMaskedParents(parent, key);
348
+ const specs = currentSubscribers.map((sub) => sub[0]).concat(maskedParentSubscribers.map((sub) => sub[0]));
305
349
  const { value: previousValue, displayLayers } = this.storage.get(parent, key);
306
350
  const displayLayer = layer.isDisplayLayer(displayLayers);
307
351
  if (displayLayer) {
@@ -326,16 +370,17 @@ class CacheInternal {
326
370
  }
327
371
  }
328
372
  }
329
- if (updates && applyUpdates?.includes("prepend") && ["endCursor", "hasNextPage"].includes(key)) {
330
- newValue = previousValue;
331
- } else if (updates && applyUpdates?.includes("append") && ["startCursor", "hasPreviousPage"].includes(key)) {
373
+ if (updates && applyUpdates?.some((op) => !updates.includes(op))) {
332
374
  newValue = previousValue;
333
375
  }
334
376
  const valueChanged = !deepEquals(newValue, previousValue);
335
377
  if (displayLayer && (valueChanged || forceNotify)) {
336
- toNotify.push(...currentSubscribers);
378
+ for (const [sub] of currentSubscribers) toNotify.add(sub);
337
379
  }
338
380
  layer.writeField(parent, key, newValue);
381
+ if (key === "__typename" && typeof newValue === "string") {
382
+ this.storage.typenames.set(parent, newValue);
383
+ }
339
384
  } else if (value === null) {
340
385
  if (previousValue === null) {
341
386
  continue;
@@ -345,8 +390,9 @@ class CacheInternal {
345
390
  this.subscriptions.remove(link, fieldSelection, specs, variables);
346
391
  }
347
392
  layer.writeLink(parent, key, null);
348
- toNotify.push(...currentSubscribers);
393
+ for (const [sub] of currentSubscribers) toNotify.add(sub);
349
394
  } else if (value instanceof Object && !Array.isArray(value)) {
395
+ value = value;
350
396
  if (isAbstract) {
351
397
  if (!value.__typename) {
352
398
  throw new Error(
@@ -358,7 +404,7 @@ class CacheInternal {
358
404
  if (value !== null) {
359
405
  linkedID = !this.isEmbedded(linkedType, value) ? this.id(linkedType, value) : `${parent}.${key}`;
360
406
  }
361
- let linkChange = linkedID !== previousValue;
407
+ const linkChange = linkedID !== previousValue;
362
408
  layer.writeLink(parent, key, linkedID);
363
409
  if (linkedID && displayLayer && (linkChange || forceNotify)) {
364
410
  if (previousValue && typeof previousValue === "string") {
@@ -370,7 +416,16 @@ class CacheInternal {
370
416
  variables,
371
417
  parentType: linkedType
372
418
  });
373
- toNotify.push(...currentSubscribers);
419
+ if (maskedParentSubscribers.length > 0) {
420
+ this.subscriptions.addMany({
421
+ parent: linkedID,
422
+ subscribers: maskedParentSubscribers,
423
+ variables,
424
+ parentType: linkedType,
425
+ masked: true
426
+ });
427
+ }
428
+ for (const [sub] of currentSubscribers) toNotify.add(sub);
374
429
  }
375
430
  if (linkedID) {
376
431
  this.writeSelection({
@@ -386,7 +441,7 @@ class CacheInternal {
386
441
  }
387
442
  } else if (Array.isArray(value) && // make typescript happy
388
443
  (typeof previousValue === "undefined" || previousValue === null || Array.isArray(previousValue))) {
389
- let oldIDs = [...previousValue || []];
444
+ let oldIDs = [...Array.isArray(previousValue) ? previousValue : []];
390
445
  if (updates?.includes("append") || updates?.includes("prepend")) {
391
446
  oldIDs = oldIDs.filter((id) => {
392
447
  for (const layer2 of this.storage.data) {
@@ -403,6 +458,11 @@ class CacheInternal {
403
458
  });
404
459
  }
405
460
  let linkedIDs = [];
461
+ const insertingUpdates = Boolean(
462
+ applyUpdates?.some(
463
+ (update) => update !== "replace" && updates?.includes(update)
464
+ )
465
+ );
406
466
  const { newIDs, nestedIDs } = this.extractNestedListIDs({
407
467
  value,
408
468
  abstract: Boolean(isAbstract),
@@ -414,7 +474,8 @@ class CacheInternal {
414
474
  variables,
415
475
  fields: fieldSelection,
416
476
  layer,
417
- forceNotify
477
+ forceNotify,
478
+ previousIDs: !insertingUpdates && Array.isArray(previousValue) ? previousValue : null
418
479
  });
419
480
  let action = () => {
420
481
  layer.writeLink(parent, key, linkedIDs);
@@ -488,19 +549,28 @@ class CacheInternal {
488
549
  }
489
550
  const contentChanged = !deepEquals(linkedIDs, oldIDs) || previousValue === null;
490
551
  if (contentChanged || forceNotify) {
491
- toNotify.push(...currentSubscribers);
552
+ for (const [sub] of currentSubscribers) toNotify.add(sub);
492
553
  }
554
+ const linkedIDSet = new Set(
555
+ linkedIDs.flat(Infinity)
556
+ );
493
557
  for (const lostID of oldIDs) {
494
- if (linkedIDs.includes(lostID) || !lostID) {
558
+ if (!lostID || linkedIDSet.has(lostID)) {
495
559
  continue;
496
560
  }
497
561
  this.subscriptions.remove(lostID, fieldSelection, specs, variables);
562
+ if (!layer.optimistic && typeof lostID === "string" && lostID.startsWith(`${parent}.${key}[`)) {
563
+ this.storage.removeEmbeddedRecord(lostID);
564
+ this.lifetimes.delete(lostID);
565
+ this.staleManager.deleteRecord(lostID);
566
+ }
498
567
  }
499
568
  if (contentChanged || oldIDs.length === 0 && newIDs.length === 0) {
500
569
  action();
501
570
  }
502
- for (const id of newIDs.filter((id2) => !oldIDs.includes(id2))) {
503
- if (id == null) {
571
+ const oldIDSet = new Set(oldIDs);
572
+ for (const id of newIDs) {
573
+ if (id == null || oldIDSet.has(id)) {
504
574
  continue;
505
575
  }
506
576
  this.subscriptions.addMany({
@@ -509,6 +579,15 @@ class CacheInternal {
509
579
  variables,
510
580
  parentType: linkedType
511
581
  });
582
+ if (maskedParentSubscribers.length > 0) {
583
+ this.subscriptions.addMany({
584
+ parent: id,
585
+ subscribers: maskedParentSubscribers,
586
+ variables,
587
+ parentType: linkedType,
588
+ masked: true
589
+ });
590
+ }
512
591
  }
513
592
  }
514
593
  const processedOperations = /* @__PURE__ */ new Set();
@@ -516,27 +595,43 @@ class CacheInternal {
516
595
  let parentID;
517
596
  if (operation.parentID) {
518
597
  if (operation.parentID.kind !== "Variable") {
519
- parentID = operation.parentID.value;
598
+ parentID = "value" in operation.parentID ? String(operation.parentID.value) : void 0;
520
599
  } else {
521
- const id = variables[operation.parentID.value];
600
+ const varName = operation.parentID.name.value;
601
+ const id = variables[varName];
522
602
  if (typeof id !== "string") {
523
603
  throw new Error("parentID value must be a string");
524
604
  }
525
605
  parentID = id;
526
606
  }
527
607
  }
528
- if (operation.list && !this.lists.get(operation.list, parentID, operation.target === "all")) {
529
- continue;
608
+ let opaqueListID2;
609
+ if (operation.listID) {
610
+ if (operation.listID.kind !== "Variable") {
611
+ opaqueListID2 = "value" in operation.listID ? String(operation.listID.value) : void 0;
612
+ } else {
613
+ const varName = operation.listID.name.value;
614
+ const id = variables[varName];
615
+ if (typeof id !== "string") {
616
+ throw new Error("listID value must be a string");
617
+ }
618
+ opaqueListID2 = id;
619
+ }
620
+ }
621
+ if (operation.list) {
622
+ const exists = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2) : this.lists.get(operation.list, parentID, operation.target === "all");
623
+ if (!exists) continue;
530
624
  }
531
625
  const targets = Array.isArray(value) ? value : [value];
532
626
  for (const target of targets) {
533
627
  if (operation.action === "insert" && target instanceof Object && fieldSelection && operation.list) {
534
- this.cache.list(
628
+ const insertList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
535
629
  operation.list,
536
630
  parentID,
537
631
  operation.target === "all",
538
632
  processedOperations
539
- ).when(operation.when).addToList(
633
+ );
634
+ insertList.when(resolveWhen(operation.when, variables)).addToList(
540
635
  fieldSelection,
541
636
  target,
542
637
  variables,
@@ -544,42 +639,54 @@ class CacheInternal {
544
639
  layer
545
640
  );
546
641
  } else if (operation.action === "toggle" && target instanceof Object && fieldSelection && operation.list) {
547
- this.cache.list(
642
+ const toggleList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
548
643
  operation.list,
549
644
  parentID,
550
645
  operation.target === "all",
551
646
  processedOperations
552
- ).when(operation.when).toggleElement({
647
+ );
648
+ toggleList.when(resolveWhen(operation.when, variables)).toggleElement({
553
649
  selection: fieldSelection,
554
650
  data: target,
555
651
  variables,
556
652
  where: operation.position || "last",
557
653
  layer
558
654
  });
655
+ } else if (operation.action === "upsert" && target instanceof Object && fieldSelection && operation.list) {
656
+ const upsertList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
657
+ operation.list,
658
+ parentID,
659
+ operation.target === "all",
660
+ processedOperations
661
+ );
662
+ upsertList.when(operation.when).upsertInList(
663
+ fieldSelection,
664
+ target,
665
+ variables,
666
+ operation.position || "last",
667
+ layer
668
+ );
559
669
  } else if (operation.action === "remove" && target instanceof Object && fieldSelection && operation.list) {
560
- this.cache.list(
670
+ const removeList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
561
671
  operation.list,
562
672
  parentID,
563
673
  operation.target === "all",
564
674
  processedOperations
565
- ).when(operation.when).remove(target, variables, layer);
675
+ );
676
+ removeList.when(resolveWhen(operation.when, variables)).remove(target, variables, layer);
566
677
  } else if (operation.action === "delete" && operation.type && target) {
567
678
  const targetID = this.id(operation.type, target);
568
679
  if (!targetID) {
569
680
  continue;
570
681
  }
571
- toNotify.push(
572
- ...this.subscriptions.getAll(targetID).filter((sub) => sub[0].parentID !== targetID)
573
- );
682
+ for (const [sub] of this.subscriptions.getAll(targetID).filter((sub2) => sub2[0].parentID !== targetID)) {
683
+ toNotify.add(sub);
684
+ }
574
685
  this.cache.delete(targetID, layer);
575
686
  }
576
687
  }
577
688
  if (operation.list) {
578
- const matchingLists = this.cache.list(
579
- operation.list,
580
- parentID,
581
- operation.target === "all"
582
- );
689
+ const matchingLists = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2) : this.cache.list(operation.list, parentID, operation.target === "all");
583
690
  for (const list of matchingLists.lists) {
584
691
  processedOperations.add(list.fieldRef);
585
692
  }
@@ -620,8 +727,8 @@ class CacheInternal {
620
727
  let partial = false;
621
728
  let cascadeNull = false;
622
729
  let stale = false;
623
- const typename = this.storage.get(parent, "__typename").value;
624
- let targetSelection = getFieldsForType(selection, typename, !!generateLoading);
730
+ const typename = this.storage.getTypename(parent);
731
+ const targetSelection = getFieldsForType(selection, typename, !!generateLoading);
625
732
  for (const [
626
733
  attributeName,
627
734
  {
@@ -644,7 +751,7 @@ class CacheInternal {
644
751
  return d.name === "include";
645
752
  });
646
753
  if (includeDirective) {
647
- if (!evaluateVariables(includeDirective.arguments, variables ?? {})["if"]) {
754
+ if (!evaluateVariables(includeDirective.arguments, variables ?? {}).if) {
648
755
  continue;
649
756
  }
650
757
  }
@@ -652,7 +759,7 @@ class CacheInternal {
652
759
  return d.name === "skip";
653
760
  });
654
761
  if (skipDirective) {
655
- if (evaluateVariables(skipDirective.arguments, variables ?? {})["if"]) {
762
+ if (evaluateVariables(skipDirective.arguments, variables ?? {}).if) {
656
763
  continue;
657
764
  }
658
765
  }
@@ -757,6 +864,10 @@ class CacheInternal {
757
864
  hasData = true;
758
865
  }
759
866
  }
867
+ if (list?.includeListID && fieldTarget[attributeName] != null) {
868
+ ;
869
+ fieldTarget[attributeName].__id = opaqueListID(parent, list.name);
870
+ }
760
871
  if (generateLoading && fieldLoading?.list) {
761
872
  fieldTarget[attributeName] = wrapInLists(
762
873
  Array.from({ length: fieldLoading.list.count }).fill(
@@ -792,7 +903,7 @@ class CacheInternal {
792
903
  if (!type) {
793
904
  return id;
794
905
  }
795
- return type + ":" + id;
906
+ return `${type}:${id}`;
796
907
  }
797
908
  // the list of fields that we need in order to compute an objects id
798
909
  idFields(type) {
@@ -894,12 +1005,14 @@ class CacheInternal {
894
1005
  applyUpdates,
895
1006
  specs,
896
1007
  layer,
897
- forceNotify
1008
+ forceNotify,
1009
+ previousIDs
898
1010
  }) {
899
1011
  const nestedIDs = [];
900
1012
  const newIDs = [];
901
1013
  for (const [i, entry] of value.entries()) {
902
1014
  if (Array.isArray(entry)) {
1015
+ const previousEntry = previousIDs?.[i];
903
1016
  const inner = this.extractNestedListIDs({
904
1017
  value: entry,
905
1018
  abstract,
@@ -911,7 +1024,8 @@ class CacheInternal {
911
1024
  applyUpdates,
912
1025
  specs,
913
1026
  layer,
914
- forceNotify
1027
+ forceNotify,
1028
+ previousIDs: Array.isArray(previousEntry) ? previousEntry : null
915
1029
  });
916
1030
  newIDs.push(...inner.newIDs);
917
1031
  nestedIDs[i] = inner.nestedIDs;
@@ -923,7 +1037,8 @@ class CacheInternal {
923
1037
  continue;
924
1038
  }
925
1039
  const entryObj = entry;
926
- let linkedID = `${recordID}.${key}[${this.storage.nextRank}]`;
1040
+ const previousID = previousIDs?.[i];
1041
+ let linkedID = typeof previousID === "string" && previousID.startsWith(`${recordID}.${key}[`) ? previousID : `${recordID}.${key}[${this.storage.nextRank}]`;
927
1042
  let innerType = linkedType;
928
1043
  const typename = entryObj.__typename;
929
1044
  if (typename) {
@@ -1008,6 +1123,18 @@ function variableValue(value, args) {
1008
1123
  );
1009
1124
  }
1010
1125
  }
1126
+ function resolveWhen(when, variables) {
1127
+ if (!when) {
1128
+ return void 0;
1129
+ }
1130
+ const resolve = (conditions) => Object.fromEntries(
1131
+ Object.entries(conditions).map(([key, value]) => [key, filterValue(value, variables)])
1132
+ );
1133
+ return {
1134
+ ...when.must ? { must: resolve(when.must) } : {},
1135
+ ...when.must_not ? { must_not: resolve(when.must_not) } : {}
1136
+ };
1137
+ }
1011
1138
  function fragmentReference({
1012
1139
  component,
1013
1140
  prop
@@ -1,13 +1,16 @@
1
- import type { SubscriptionSelection, ListWhen, SubscriptionSpec } from '../lib/types';
2
- import type { Cache } from './cache';
3
- import type { Layer } from './storage';
1
+ import type { SubscriptionSelection, ListWhen, SubscriptionSpec } from '../types.js';
2
+ import type { Cache } from './index.js';
3
+ import type { Layer } from './storage.js';
4
+ export declare function opaqueListID(parentID: string, listName: string): string;
4
5
  export declare class ListManager {
5
6
  rootID: string;
6
7
  cache: Cache;
7
8
  constructor(cache: Cache, rootID: string);
8
9
  lists: Map<string, Map<string, ListCollection>>;
9
10
  private listsByField;
11
+ private listsByOpaqueID;
10
12
  get(listName: string, id?: string, allLists?: boolean, skipMatches?: Set<string>): ListCollection | null;
13
+ getByOpaqueID(opaqueID: string, skipMatches?: Set<string>): ListCollection | null;
11
14
  getLists(listName: string, id?: string, allLists?: boolean): ListCollection | null | undefined;
12
15
  remove(listName: string, id: string): void;
13
16
  add(list: {
@@ -38,7 +41,7 @@ export declare class List {
38
41
  readonly name: string;
39
42
  private connection;
40
43
  private manager;
41
- private abstract?;
44
+ abstract?: boolean;
42
45
  constructor({ name, recordID, recordType, key, listType, selection, when, filters, connection, manager, abstract, }: Parameters<ListManager['add']>[0] & {
43
46
  manager: ListManager;
44
47
  });
@@ -70,6 +73,7 @@ export declare class List {
70
73
  layer?: Layer;
71
74
  where: 'first' | 'last';
72
75
  }): void;
76
+ upsertInList(selection: SubscriptionSelection, data: {}, variables: {} | undefined, where: 'first' | 'last', layer?: Layer): void;
73
77
  [Symbol.iterator](): Generator<string, void, unknown>;
74
78
  }
75
79
  export declare class ListCollection {
@@ -82,6 +86,7 @@ export declare class ListCollection {
82
86
  removeID(...args: Parameters<List['removeID']>): boolean;
83
87
  remove(...args: Parameters<List['remove']>): void;
84
88
  toggleElement(...args: Parameters<List['toggleElement']>): void;
89
+ upsertInList(...args: Parameters<List['upsertInList']>): void;
85
90
  when(when?: ListWhen): ListCollection;
86
91
  includes(key: string): boolean;
87
92
  deleteListWithKey(key: string): List[];