postgraphile 5.0.0-beta.9 → 5.0.0-rc.2

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 (70) hide show
  1. package/CHANGELOG.md +2298 -4
  2. package/README.md +5 -11
  3. package/dist/cli.d.ts +2 -3
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +13 -12
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +19 -8
  9. package/dist/index.js.map +1 -1
  10. package/dist/plugins/PgV4BehaviorPlugin.d.ts +3 -0
  11. package/dist/plugins/PgV4BehaviorPlugin.d.ts.map +1 -1
  12. package/dist/plugins/PgV4BehaviorPlugin.js +52 -51
  13. package/dist/plugins/PgV4BehaviorPlugin.js.map +1 -1
  14. package/dist/plugins/PgV4InflectionPlugin.d.ts +3 -0
  15. package/dist/plugins/PgV4InflectionPlugin.d.ts.map +1 -1
  16. package/dist/plugins/PgV4InflectionPlugin.js +17 -4
  17. package/dist/plugins/PgV4InflectionPlugin.js.map +1 -1
  18. package/dist/plugins/PgV4SimpleSubscriptionsPlugin.d.ts +2 -0
  19. package/dist/plugins/PgV4SimpleSubscriptionsPlugin.d.ts.map +1 -0
  20. package/dist/plugins/PgV4SimpleSubscriptionsPlugin.js +87 -0
  21. package/dist/plugins/PgV4SimpleSubscriptionsPlugin.js.map +1 -0
  22. package/dist/plugins/PgV4SmartTagsPlugin.d.ts +6 -0
  23. package/dist/plugins/PgV4SmartTagsPlugin.d.ts.map +1 -1
  24. package/dist/plugins/PgV4SmartTagsPlugin.js +37 -14
  25. package/dist/plugins/PgV4SmartTagsPlugin.js.map +1 -1
  26. package/dist/presets/amber.d.ts +1 -3
  27. package/dist/presets/amber.d.ts.map +1 -1
  28. package/dist/presets/amber.js +2 -4
  29. package/dist/presets/amber.js.map +1 -1
  30. package/dist/presets/lazy-jwt.d.ts +8 -1
  31. package/dist/presets/lazy-jwt.d.ts.map +1 -1
  32. package/dist/presets/lazy-jwt.js +18 -11
  33. package/dist/presets/lazy-jwt.js.map +1 -1
  34. package/dist/presets/relay.d.ts +8 -4
  35. package/dist/presets/relay.d.ts.map +1 -1
  36. package/dist/presets/relay.js +101 -96
  37. package/dist/presets/relay.js.map +1 -1
  38. package/dist/presets/v4.d.ts +29 -5
  39. package/dist/presets/v4.d.ts.map +1 -1
  40. package/dist/presets/v4.js +166 -38
  41. package/dist/presets/v4.js.map +1 -1
  42. package/dist/version.d.ts +1 -1
  43. package/dist/version.d.ts.map +1 -1
  44. package/dist/version.js +1 -1
  45. package/dist/version.js.map +1 -1
  46. package/fwd/@dataplan/pg/pg-sql2/index.d.ts +1 -0
  47. package/fwd/@dataplan/pg/pg-sql2/index.js +1 -0
  48. package/fwd/grafast/mermaid/index.d.ts +1 -0
  49. package/fwd/grafast/mermaid/index.js +1 -0
  50. package/fwd/grafserv/envelop/index.d.ts +1 -0
  51. package/fwd/grafserv/envelop/index.js +1 -0
  52. package/fwd/grafserv/hono/v4/index.d.ts +1 -0
  53. package/fwd/grafserv/hono/v4/index.js +1 -0
  54. package/fwd/grafserv/koa/v3/index.d.ts +1 -0
  55. package/fwd/grafserv/koa/v3/index.js +1 -0
  56. package/fwd/grafserv/lambda/v1/index.d.ts +1 -0
  57. package/fwd/grafserv/lambda/v1/index.js +1 -0
  58. package/fwd/grafserv/ruru/static/index.d.ts +1 -0
  59. package/fwd/grafserv/ruru/static/index.js +1 -0
  60. package/fwd/grafserv/whatwg-node__server/v4/index.d.ts +1 -0
  61. package/fwd/grafserv/whatwg-node__server/v4/index.js +1 -0
  62. package/fwd/graphile-build-pg/@dataplan/pg/adaptors/pg/index.d.ts +1 -0
  63. package/fwd/graphile-build-pg/@dataplan/pg/adaptors/pg/index.js +1 -0
  64. package/fwd/graphile-build-pg/@dataplan/pg/index.d.ts +1 -0
  65. package/fwd/graphile-build-pg/@dataplan/pg/index.js +1 -0
  66. package/fwd/graphile-build-pg/@dataplan/pg/pg-sql2/index.d.ts +1 -0
  67. package/fwd/graphile-build-pg/@dataplan/pg/pg-sql2/index.js +1 -0
  68. package/fwd/graphile-build-pg/pg-sql2/index.d.ts +1 -0
  69. package/fwd/graphile-build-pg/pg-sql2/index.js +1 -0
  70. package/package.json +110 -48
package/CHANGELOG.md CHANGED
@@ -1,5 +1,2303 @@
1
1
  # postgraphile
2
2
 
3
+ ## 5.0.0-rc.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2806](https://github.com/graphile/crystal/pull/2806)
8
+ [`5ad7ad0`](https://github.com/graphile/crystal/commit/5ad7ad018c0c4429005da8c680ba5f415ad560ed)
9
+ Thanks [@benjie](https://github.com/benjie)! - Fix issues with extending
10
+ interfaces by adding new `build.append` helper.
11
+
12
+ - [#2834](https://github.com/graphile/crystal/pull/2834)
13
+ [`bd6b605`](https://github.com/graphile/crystal/commit/bd6b60574e7c6f4e296eefb6de3475479beb7c93)
14
+ Thanks [@benjie](https://github.com/benjie)! - Hide conflict errors when
15
+ installing watch fixtures.
16
+
17
+ - [#2829](https://github.com/graphile/crystal/pull/2829)
18
+ [`a82e6fa`](https://github.com/graphile/crystal/commit/a82e6fae099f7e9d62fb3fc1ee173368cdabca27)
19
+ Thanks [@benjie](https://github.com/benjie)! - Update dependency ranges.
20
+
21
+ - Updated dependencies
22
+ [[`5ad7ad0`](https://github.com/graphile/crystal/commit/5ad7ad018c0c4429005da8c680ba5f415ad560ed),
23
+ [`f3a9869`](https://github.com/graphile/crystal/commit/f3a9869c6f9e7aa1eb501af5f7d582d2073be585),
24
+ [`68f61cd`](https://github.com/graphile/crystal/commit/68f61cdbeea19e81b1d59a3fac69a569642c5c88),
25
+ [`8cfe23f`](https://github.com/graphile/crystal/commit/8cfe23f6e694503ffb99a642f816e858275f5b4e),
26
+ [`bd6b605`](https://github.com/graphile/crystal/commit/bd6b60574e7c6f4e296eefb6de3475479beb7c93),
27
+ [`980e97e`](https://github.com/graphile/crystal/commit/980e97e9306d0af5472e14a36f87bd019d28f641),
28
+ [`a82e6fa`](https://github.com/graphile/crystal/commit/a82e6fae099f7e9d62fb3fc1ee173368cdabca27)]:
29
+ - graphile-build-pg@5.0.0-rc.2
30
+ - graphile-build@5.0.0-rc.2
31
+ - graphile-utils@5.0.0-rc.2
32
+ - grafast@1.0.0-rc.2
33
+ - pg-sql2@5.0.0-rc.2
34
+ - @dataplan/json@1.0.0-rc.2
35
+ - graphile-config@1.0.0-rc.2
36
+ - @dataplan/pg@1.0.0-rc.2
37
+ - grafserv@1.0.0-rc.2
38
+ - tamedevil@0.1.0-rc.2
39
+ - @graphile/lru@5.0.0-rc.2
40
+
41
+ ## 5.0.0-rc.1
42
+
43
+ ### Patch Changes
44
+
45
+ - [#2767](https://github.com/graphile/crystal/pull/2767)
46
+ [`9797500`](https://github.com/graphile/crystal/commit/9797500071f4bbd0cc1b73c74e7f402cb1bb687f)
47
+ Thanks [@benjie](https://github.com/benjie)! - Use tuple comparison for cursor
48
+ pagination when possible.
49
+
50
+ - [#2736](https://github.com/graphile/crystal/pull/2736)
51
+ [`3fb7111`](https://github.com/graphile/crystal/commit/3fb71118462ba2d97f045023c715e4b0a447766a)
52
+ Thanks [@benjie](https://github.com/benjie)! - `wrapPlans()` now automatically
53
+ applies `fieldArgs` when you call the underlying `plan()`, so your wrapper
54
+ applies _after_ field args have been applied. This helps address invalid plan
55
+ heirarchy issues due to side effects your plan wrappers may wish to add and
56
+ similar. Opt out via
57
+ `{ autoApplyFieldArgs: false, plan(plan, $parent, fieldArgs) { ... } }`.
58
+
59
+ - [#2752](https://github.com/graphile/crystal/pull/2752)
60
+ [`92781a1`](https://github.com/graphile/crystal/commit/92781a183b3548902ed92b152ae915d597d62b97)
61
+ Thanks [@benjie](https://github.com/benjie)! - Softens the requirements for a
62
+ column/relation to be treated as "indexed" to reflect the optimizations in
63
+ Postgres v18+. (This may result in more fields, filters, orders and relations
64
+ appearing in your PostGraphile schema - you can use
65
+ `@behavior -filterBy -orderBy` on columns and
66
+ `@behavior -select -list -connection -single -manyToMany` on foreign key
67
+ constraints to remove them again.)
68
+
69
+ - [#2745](https://github.com/graphile/crystal/pull/2745)
70
+ [`71adb87`](https://github.com/graphile/crystal/commit/71adb87f21069f70df1c1f8b90146bd176bd30fe)
71
+ Thanks [@benjie](https://github.com/benjie)! - V4 compat with smart tags: only
72
+ add behavior if non-empty.
73
+
74
+ - [#2756](https://github.com/graphile/crystal/pull/2756)
75
+ [`982c1a5`](https://github.com/graphile/crystal/commit/982c1a566da21706f85c7bfb0adda210e251e6e1)
76
+ Thanks [@benjie](https://github.com/benjie)! - Fixes bug with parsing arrays
77
+ that use alternative delimeters (e.g. `;` instead of `,`) - for example
78
+ `box[]`.
79
+
80
+ - [#2777](https://github.com/graphile/crystal/pull/2777)
81
+ [`6a4e3b9`](https://github.com/graphile/crystal/commit/6a4e3b9ec182f7d066600aee0f8cc21d451b0ae2)
82
+ Thanks [@benjie](https://github.com/benjie)! - Implement queue for
83
+ `watchGather`/`watchSchema`/etc and integrate with grafserv's `setPreset`
84
+ middleware. Promises returned by such now delay schema application, preventing
85
+ growing concurrent work.
86
+
87
+ - [#2758](https://github.com/graphile/crystal/pull/2758)
88
+ [`eb39702`](https://github.com/graphile/crystal/commit/eb3970215a61a78e18359e6ebb473c2cb3991bd7)
89
+ Thanks [@benjie](https://github.com/benjie)! - Apply `pgOrderByNullsLast` to
90
+ computed columns too.
91
+
92
+ - [#2777](https://github.com/graphile/crystal/pull/2777)
93
+ [`c6cbe61`](https://github.com/graphile/crystal/commit/c6cbe6175b0f1f034db59d42cbe594e7d329aba6)
94
+ Thanks [@benjie](https://github.com/benjie)! - Tighten our public API surface
95
+ by:
96
+ - renaming `EventStreamHeandlerResult` to the correctly spelt
97
+ `EventStreamHandlerResult` (and keeping only a deprecated alias for the old
98
+ name)
99
+ - dropping the long-deprecated Grafast exports `InterfaceOrUnionPlans` (use
100
+ `InterfacePlan` or `UnionPlan` as appropriate), `deepEval` (should be
101
+ `applyTransforms`) and `DeepEvalStep` (should be `ApplyTransformsStep`)
102
+ - removing the `PgAdaptorOptions` alias in favour of `PgAdaptorSettings`
103
+ - deleting the PostGraphile preset aliases `postgraphilePresetAmber` should be
104
+ `PostGraphileAmberPreset`) and `PgRelayPreset` (should be
105
+ `PostGraphileRelayPreset`), and updating all first-party usage to the
106
+ canonical names
107
+
108
+ - [`8a5a7c5`](https://github.com/graphile/crystal/commit/8a5a7c536fc4b9b702600c5cc3d413724670c327)
109
+ Thanks [@benjie](https://github.com/benjie)! - Bump to release candidate
110
+
111
+ - [#2785](https://github.com/graphile/crystal/pull/2785)
112
+ [`b6821f5`](https://github.com/graphile/crystal/commit/b6821f5f4dc13abd0b605be7396c1b3c36e66177)
113
+ Thanks [@benjie](https://github.com/benjie)! - Fix types for abstract type's
114
+ `planType` method:
115
+ 1. `AbtractTypePlan`'s `TSpecifier` generic is now the first generic parameter
116
+ (previously second) and now represents the specifier _data_, not the
117
+ _step_.
118
+ 2. Existence of `planType`'s second parameter (`info`) is now reflected in the
119
+ types.
120
+ 3. The same changes are made for `UnionPlan` and `InterfacePlan`.
121
+
122
+ If you were using `graphql-codegen-grafast`, be sure to update to the latest
123
+ version and regenerate the types so these changes are reflected.
124
+
125
+ - Updated dependencies
126
+ [[`9797500`](https://github.com/graphile/crystal/commit/9797500071f4bbd0cc1b73c74e7f402cb1bb687f),
127
+ [`be318e6`](https://github.com/graphile/crystal/commit/be318e666c18ee06e62291d3e7ed7d0d1345eb3b),
128
+ [`abb623d`](https://github.com/graphile/crystal/commit/abb623d59e517c0949f0fef5440b817103c685bf),
129
+ [`3fb7111`](https://github.com/graphile/crystal/commit/3fb71118462ba2d97f045023c715e4b0a447766a),
130
+ [`31b388c`](https://github.com/graphile/crystal/commit/31b388c6d5546640af7dcf4e6021643e47892ed1),
131
+ [`8a852d2`](https://github.com/graphile/crystal/commit/8a852d21c80c7b06f2b3dd9fa01727e2d8a5522b),
132
+ [`92781a1`](https://github.com/graphile/crystal/commit/92781a183b3548902ed92b152ae915d597d62b97),
133
+ [`930240a`](https://github.com/graphile/crystal/commit/930240a4a7d3373f5691d495df752bb8fedac2af),
134
+ [`7b86454`](https://github.com/graphile/crystal/commit/7b864546fa81803ce0e573a2efa2e7f0905b2040),
135
+ [`42a0785`](https://github.com/graphile/crystal/commit/42a0785ddabf58812a22d764eeddfde9362974e5),
136
+ [`d196d60`](https://github.com/graphile/crystal/commit/d196d60664fbc9ffd410c11645db27554b22ac0b),
137
+ [`982c1a5`](https://github.com/graphile/crystal/commit/982c1a566da21706f85c7bfb0adda210e251e6e1),
138
+ [`6a4e3b9`](https://github.com/graphile/crystal/commit/6a4e3b9ec182f7d066600aee0f8cc21d451b0ae2),
139
+ [`eb39702`](https://github.com/graphile/crystal/commit/eb3970215a61a78e18359e6ebb473c2cb3991bd7),
140
+ [`c6cbe61`](https://github.com/graphile/crystal/commit/c6cbe6175b0f1f034db59d42cbe594e7d329aba6),
141
+ [`d4ac603`](https://github.com/graphile/crystal/commit/d4ac603da7df6ea01aaa483a7cb29b1e514a90cd),
142
+ [`f23e0e0`](https://github.com/graphile/crystal/commit/f23e0e0da9105a973dd8ac76f8ae519345d0a5b1),
143
+ [`8a5a7c5`](https://github.com/graphile/crystal/commit/8a5a7c536fc4b9b702600c5cc3d413724670c327),
144
+ [`ea0135f`](https://github.com/graphile/crystal/commit/ea0135fac3f43850b65828f2ff2b01a34cfdff15),
145
+ [`91b8376`](https://github.com/graphile/crystal/commit/91b83765f9ded133031c1de53d6b3926c8011bf5),
146
+ [`b6821f5`](https://github.com/graphile/crystal/commit/b6821f5f4dc13abd0b605be7396c1b3c36e66177)]:
147
+ - @dataplan/pg@1.0.0-rc.1
148
+ - grafast@1.0.0-rc.1
149
+ - graphile-utils@5.0.0-rc.1
150
+ - pg-sql2@5.0.0-rc.1
151
+ - graphile-build-pg@5.0.0-rc.1
152
+ - graphile-build@5.0.0-rc.1
153
+ - grafserv@1.0.0-rc.1
154
+ - @dataplan/json@1.0.0-rc.1
155
+ - graphile-config@1.0.0-rc.1
156
+ - tamedevil@0.1.0-rc.1
157
+ - @graphile/lru@5.0.0-rc.1
158
+
159
+ ## 5.0.0-beta.49
160
+
161
+ ### Patch Changes
162
+
163
+ - [#2730](https://github.com/graphile/crystal/pull/2730)
164
+ [`4c3cf22`](https://github.com/graphile/crystal/commit/4c3cf22592f44cb28e399434474ca5fcef0e1a3b)
165
+ Thanks [@benjie](https://github.com/benjie)! - Update `graphql` version range
166
+
167
+ - [#2142](https://github.com/graphile/crystal/pull/2142)
168
+ [`0465b4a`](https://github.com/graphile/crystal/commit/0465b4a038cc8d7ef4a857fb929a3c3b0104441c)
169
+ Thanks [@benjie](https://github.com/benjie)! - GraphQL v16.9.0+ is now
170
+ required for enum thunk support (enums will now break without this)
171
+
172
+ - [#2723](https://github.com/graphile/crystal/pull/2723)
173
+ [`e790f7a`](https://github.com/graphile/crystal/commit/e790f7ac7933c8ed01465688e20c2af76d2a79e8)
174
+ Thanks [@benjie](https://github.com/benjie)! - `@dataplan/pg` now exports
175
+ `sql` from `pg-sql2` and also adds forwards to the whole module
176
+ (`import ... from '@dataplan/pg/pg-sql2'`)
177
+
178
+ - [#2721](https://github.com/graphile/crystal/pull/2721)
179
+ [`a27b599`](https://github.com/graphile/crystal/commit/a27b5996544169314575d2361bc438515a4a3db5)
180
+ Thanks [@benjie](https://github.com/benjie)! - Simple subscriptions plugin now
181
+ supports `initialEvent` argument, as in V4.
182
+
183
+ - [#2718](https://github.com/graphile/crystal/pull/2718)
184
+ [`74e15d5`](https://github.com/graphile/crystal/commit/74e15d5bf2c6aada713711722aa31fb8b2da232d)
185
+ Thanks [@benjie](https://github.com/benjie)! - Port the
186
+ ["enum table domains" feature](https://github.com/graphile/graphile-engine/pull/832)
187
+ from PostGraphile V4, so enum table values can be used as input and output
188
+ from PostgreSQL functions.
189
+
190
+ - [#2725](https://github.com/graphile/crystal/pull/2725)
191
+ [`d414491`](https://github.com/graphile/crystal/commit/d41449156d4983466fee4f34e3e361df4d561b3e)
192
+ Thanks [@benjie](https://github.com/benjie)! - Enable partitions to be exposed
193
+ via the `@partitionExpose child` or `@partitionExpose both` smart tags on the
194
+ partitioned table. Also adds a global configuration option for managing the
195
+ default setting for this (`parent` by default: only expose the parent
196
+ partitioned table, not its underlying child partitions).
197
+ - Updated dependencies
198
+ [[`2814c63`](https://github.com/graphile/crystal/commit/2814c639983437e9883de040c64cceda433a2687),
199
+ [`4c3cf22`](https://github.com/graphile/crystal/commit/4c3cf22592f44cb28e399434474ca5fcef0e1a3b),
200
+ [`7ce4d41`](https://github.com/graphile/crystal/commit/7ce4d41f9befce7c26e52cbfd7bf98febc764968),
201
+ [`0465b4a`](https://github.com/graphile/crystal/commit/0465b4a038cc8d7ef4a857fb929a3c3b0104441c),
202
+ [`71e0af2`](https://github.com/graphile/crystal/commit/71e0af265c90e9d9d0dc764cc552f7470e860251),
203
+ [`a26ad3e`](https://github.com/graphile/crystal/commit/a26ad3ebcc008acb9a6f5216e3f27ef74f138953),
204
+ [`a0a6082`](https://github.com/graphile/crystal/commit/a0a6082173247caf8f76df925a9d8e7926792663),
205
+ [`ab96e5f`](https://github.com/graphile/crystal/commit/ab96e5f58aa3315db9b85b452b048f600cb8353e),
206
+ [`278b4d3`](https://github.com/graphile/crystal/commit/278b4d398eb7db1935caba4155e1d1727284a370),
207
+ [`eaa771b`](https://github.com/graphile/crystal/commit/eaa771b34dbdac1c4d701faa8fb5947e9cf1d1be),
208
+ [`b539002`](https://github.com/graphile/crystal/commit/b539002a627bf3d595ffb994e871dfc2eb5c2b64),
209
+ [`e28e4d9`](https://github.com/graphile/crystal/commit/e28e4d9b651a8ee40582006de34dd011309ba4e1),
210
+ [`020b579`](https://github.com/graphile/crystal/commit/020b5791b57282d6fcbd42d0cbfd8be9e95cee47),
211
+ [`e790f7a`](https://github.com/graphile/crystal/commit/e790f7ac7933c8ed01465688e20c2af76d2a79e8),
212
+ [`32ba479`](https://github.com/graphile/crystal/commit/32ba479160eb5b9ceb5dbb10161a37b62a20f3aa),
213
+ [`c8412aa`](https://github.com/graphile/crystal/commit/c8412aa73875aafe64317cc4c655654a86486047),
214
+ [`13eb44b`](https://github.com/graphile/crystal/commit/13eb44b0c8fb56252f1ecb3aea99d8f0fe10e3fa),
215
+ [`d0c15cc`](https://github.com/graphile/crystal/commit/d0c15ccc32ed8dec19ff068f851529132dc93302),
216
+ [`74e15d5`](https://github.com/graphile/crystal/commit/74e15d5bf2c6aada713711722aa31fb8b2da232d),
217
+ [`3488ac0`](https://github.com/graphile/crystal/commit/3488ac0e0e3ffe0dd2a072858390df51e0ebaf39),
218
+ [`b20a63f`](https://github.com/graphile/crystal/commit/b20a63f5ee77734ce2e3aa71f9f4de3c00e27e55),
219
+ [`bffbb77`](https://github.com/graphile/crystal/commit/bffbb775ea76d1add85422866a6b7e904d2311af),
220
+ [`d414491`](https://github.com/graphile/crystal/commit/d41449156d4983466fee4f34e3e361df4d561b3e),
221
+ [`c48ca48`](https://github.com/graphile/crystal/commit/c48ca4840227b8e5e6a1dc198a189cfd911a602b),
222
+ [`05f3e44`](https://github.com/graphile/crystal/commit/05f3e449a771aefcd9a81c6275a376ad87e3d316),
223
+ [`81c62bb`](https://github.com/graphile/crystal/commit/81c62bb9f9b05f7ff1251695712e1777de7315f9)]:
224
+ - graphile-utils@5.0.0-beta.45
225
+ - graphile-build-pg@5.0.0-beta.47
226
+ - graphile-build@5.0.0-beta.39
227
+ - @dataplan/pg@0.0.1-beta.39
228
+ - grafserv@0.1.1-beta.29
229
+ - grafast@0.1.1-beta.27
230
+
231
+ ## 5.0.0-beta.48
232
+
233
+ ### Patch Changes
234
+
235
+ - [#2700](https://github.com/graphile/crystal/pull/2700)
236
+ [`dcd3583`](https://github.com/graphile/crystal/commit/dcd35835d86eb2758bbbc8e24ce647e97dee42b6)
237
+ Thanks [@benjie](https://github.com/benjie)! - Switch to consistently using
238
+ workspace:^ dependencies (in an attempt to appease pnpm)
239
+ - Updated dependencies
240
+ [[`dcd3583`](https://github.com/graphile/crystal/commit/dcd35835d86eb2758bbbc8e24ce647e97dee42b6)]:
241
+ - graphile-build-pg@5.0.0-beta.46
242
+ - @dataplan/pg@0.0.1-beta.38
243
+
244
+ ## 5.0.0-beta.47
245
+
246
+ ### Patch Changes
247
+
248
+ - [#2675](https://github.com/graphile/crystal/pull/2675)
249
+ [`b09719f`](https://github.com/graphile/crystal/commit/b09719f5107eada15104c2bbfa4f1290af0a4465)
250
+ Thanks [@slaskis](https://github.com/slaskis)! - Fix "simple subscriptions"
251
+ `ListenPayload.relatedNode` following the overhaul of polymorphism (thanks
252
+ @slaskis for the reproduction in the test suite!)
253
+
254
+ - [#2686](https://github.com/graphile/crystal/pull/2686)
255
+ [`5dbb9e8`](https://github.com/graphile/crystal/commit/5dbb9e87850ce8de29ab4fec18c9d06333b642de)
256
+ Thanks [@benjie](https://github.com/benjie)! - Fix a bug with mutations where
257
+ the results of computed columns were calculated using the snapshot from before
258
+ the mutation (due to the way Postgres works). Solved by breaking the
259
+ post-mutation function calls out into a separate post-mutation statement.
260
+
261
+ - [#2690](https://github.com/graphile/crystal/pull/2690)
262
+ [`208364f`](https://github.com/graphile/crystal/commit/208364f9423abd240a0772b661986aae6e185c47)
263
+ Thanks [@benjie](https://github.com/benjie)! - Add keepalive to grafserv
264
+ websocket connections.
265
+
266
+ - [#2689](https://github.com/graphile/crystal/pull/2689)
267
+ [`6762c70`](https://github.com/graphile/crystal/commit/6762c7005c56d17c06cebb6857e8d295d86399eb)
268
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in
269
+ PgIndexBehaviorsPlugin that would treat all view attributes as unindexed.
270
+ Views can't have indexes, so we must give them the benefit of the doubt.
271
+
272
+ - [#2694](https://github.com/graphile/crystal/pull/2694)
273
+ [`13513dd`](https://github.com/graphile/crystal/commit/13513ddaea15ad9498a77de7c4e92679498f99ca)
274
+ Thanks [@benjie](https://github.com/benjie)! - Add support for `onError` RFC
275
+ with `PROPAGATE`, `NULL` and `HALT` behaviors implemented.
276
+
277
+ - [#2659](https://github.com/graphile/crystal/pull/2659)
278
+ [`bc2b188`](https://github.com/graphile/crystal/commit/bc2b188a50e00f153dc68df6955399c5917130bd)
279
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 Tracking of side effects has
280
+ been completely overhauled, the main difference for users is that if you hit
281
+ issues you may need to ensure that **this.hasSideEffects = true**, if set, is
282
+ the last thing that your step does in its constructor (previously, doing this
283
+ anywhere in the constructor was okay). This should fix a number of oddities
284
+ around side effects and their impact on the operation plan - essentially it's
285
+ a lot stricter now.
286
+
287
+ - [#2691](https://github.com/graphile/crystal/pull/2691)
288
+ [`703d162`](https://github.com/graphile/crystal/commit/703d162df2cc148ac343c1339b8e7df750aa781d)
289
+ Thanks [@benjie](https://github.com/benjie)! - Deprecate
290
+ `withPgClient`/`withPgClientTransaction` because people are using them
291
+ incorrectly and causing themselves N+1 issues. Instead, rename to
292
+ `sideEffectWithPgClient` and introduce new `loadOneWithPgClient` and
293
+ `loadManyWithPgClient` helpers that people should use instead of
294
+ `withPgClient`.
295
+
296
+ - [#2659](https://github.com/graphile/crystal/pull/2659)
297
+ [`4a9072b`](https://github.com/graphile/crystal/commit/4a9072bfa3d3e86c6013caf2b89a31e87f2bb421)
298
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 **Building connections
299
+ overhauled** - `connection()` has been overhauled, please re-read the docs on
300
+ this and adjust your plans as necessary.
301
+ - If your custom steps have the `connectionClone` method, the first argument
302
+ (`$connection`) has been removed because connection depends on your
303
+ collection step (rather than the other way around as it was previously) -
304
+ this should simplify implementation.
305
+ - Custom steps that are used with `connection()` are now just assumed to be
306
+ simple lists unless they indicate otherwise using `paginationSupport` (see
307
+ the `connection()` docs) - this means you can use any (list-returning) step
308
+ with `connection()`! 🎉
309
+ - `PgPageInfoStep` is no more. Various other steps have been rearranged and
310
+ had (mostly internal, or at least extremely rarely used) methods renamed,
311
+ replaced or removed. (E.g. `PgSelectSingleStep` no longer has `.node()` or
312
+ `.cursor()` methods since it is no longer implicitly an "edge step".)
313
+ - `@stream` has been optimized somewhat, no longer requiring multiple
314
+ independent streams from the database as required previously (and as would
315
+ be required by GraphQL.js under the same circumstances)
316
+
317
+ - [#2687](https://github.com/graphile/crystal/pull/2687)
318
+ [`7766c19`](https://github.com/graphile/crystal/commit/7766c19ecefd3aebc965306db90ba29b3b05200c)
319
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue whereby
320
+ nodeId:insert/nodeId:update permissions were not rejected by PgRBACPlugin when
321
+ the underlying columns were not writable.
322
+
323
+ - [#2678](https://github.com/graphile/crystal/pull/2678)
324
+ [`6dafac1`](https://github.com/graphile/crystal/commit/6dafac162955291e5147c21e57734b44e30acb98)
325
+ Thanks [@benjie](https://github.com/benjie)! - Remove peer dependency
326
+ optionality in an attempt to satisfy pnpm's installation algorithms
327
+
328
+ - [#2692](https://github.com/graphile/crystal/pull/2692)
329
+ [`aa8fb3d`](https://github.com/graphile/crystal/commit/aa8fb3dbd23b0c3b6b8039922cb4ab7293b51844)
330
+ Thanks [@benjie](https://github.com/benjie)! - Forbid export of 'build', this
331
+ has required a slight degradation of the
332
+ makeAddPgTableConditionPlugin/addPgTableCondition signature for people using
333
+ the legacy signature - namely the entire build object is no longer available
334
+ in the callback that is the fourth argument. (Only have 3 arguments to your
335
+ call? You're not impacted!) In the unlikely event this causes you any issues,
336
+ your best bet is to move to the `apply()` approach (only use the 3 documented
337
+ arguments), but we can also potentially expand the parts of build that are
338
+ made available.
339
+
340
+ - [#2688](https://github.com/graphile/crystal/pull/2688)
341
+ [`e15f886`](https://github.com/graphile/crystal/commit/e15f886cae1041416b44b74b75426f8d43000dcf)
342
+ Thanks [@benjie](https://github.com/benjie)! - Fixes bug where two different
343
+ plugins with the same name would be allowed to exist in the same (resolved)
344
+ preset. Users of dynamically created presets and plugins (e.g.
345
+ `makeV4Preset(...)` in PostGraphile) should be wary not to include two calls
346
+ to the same factory in their preset (directly or indirectly).
347
+
348
+ - [#2659](https://github.com/graphile/crystal/pull/2659)
349
+ [`185d449`](https://github.com/graphile/crystal/commit/185d449ed30d29c9134cc898b50a1473ab2910a2)
350
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `loadOne` and `loadMany` no
351
+ longer accept 2-4 arguments; instead exactly two arguments are accepted.
352
+ **There is a codeshift available** in the repository
353
+ (`shifts/loadArguments.ts`) that you can execute with `jscodeshift` (see
354
+ comment at top of file) to do this rewrite for you across your codebase. Be
355
+ sure to check the results carefully!
356
+
357
+ The first argument is unchanged, the second argument is either the loader
358
+ callback (as before) or a "loader object":
359
+ - `shared` (optional) - replaces the `unary` argument, and works as before
360
+ except you may now also use a thunk! (See below)
361
+ - `ioEquivalence` (optional) - as before
362
+ - `load` (required) - the loader callback
363
+ - `name` (optional) - display name for the callback (will appear in plan
364
+ diagrams)
365
+ - `paginationSupport` (optional) - only relevant to loadMany, add this to
366
+ indicate which optimizations your loader callback supports (see the
367
+ documentation) - for example, does it support applying a `limit`?
368
+
369
+ **The motivation for the "loader object"** is that every step that calls a
370
+ given load function should have the same `ioEquivalence`, `shared`, `name` and
371
+ `paginationSupport` - so rather than defining them in each of your plan
372
+ resolvers, we should **associate the metadata with the callback directly**.
373
+
374
+ To make this practical, `shared` (previously: `unary`) can now be a callback
375
+ so that you can create steps to provide any shared details, e.g. database or
376
+ API clients from `context()`.
377
+
378
+ Ultimately the aim is to move this boilerplate out of your plan resolvers and
379
+ instead to co-locate it with your data loading callbacks:
380
+
381
+ ```diff
382
+ function User_friends($user, { $first }) {
383
+ const $userId = get($user, "id");
384
+ - const $apiClient = context().get("apiClient");
385
+ - const $collection = loadMany(
386
+ - $userId,
387
+ - null, // ioEquivalence
388
+ - $apiClient, // shared (previously 'unary')
389
+ - batchGetFriendsByUserId // load callback
390
+ - );
391
+ + const $collection = loadMany($userId, batchGetFriendIdsByUserId);
392
+ $collection.setParam("limit", $first);
393
+ return $collection;
394
+ }
395
+
396
+ const batchGetFriendsByUserId =
397
+ + {
398
+ + shared: () => context().get("apiClient"),
399
+ + load:
400
+ (userIds, info) => {
401
+ - const apiClient = info.unary;
402
+ + const apiClient = info.shared;
403
+ /* ... */
404
+ }
405
+ + }
406
+ ```
407
+
408
+ - [#2657](https://github.com/graphile/crystal/pull/2657)
409
+ [`f83b191`](https://github.com/graphile/crystal/commit/f83b191f39c9d521fd12563cca6aa20d1a6f0494)
410
+ Thanks [@dependabot](https://github.com/apps/dependabot)! - Add support for
411
+ Koa v3 (via v2 code) and update package exports.
412
+
413
+ - Updated dependencies
414
+ [[`5dbb9e8`](https://github.com/graphile/crystal/commit/5dbb9e87850ce8de29ab4fec18c9d06333b642de),
415
+ [`cfd4c3c`](https://github.com/graphile/crystal/commit/cfd4c3cff0ef40ed87a2c700b7719c1ca0e73588),
416
+ [`c3f9c38`](https://github.com/graphile/crystal/commit/c3f9c38cb00ad4553e4bc3c04e16a7c77bd16142),
417
+ [`68a1243`](https://github.com/graphile/crystal/commit/68a1243f104227ebf7d1f3cedcbec49dc3c8e258),
418
+ [`3d5c464`](https://github.com/graphile/crystal/commit/3d5c4641df66b431066efd6c74b67ca0d38ba7f4),
419
+ [`208364f`](https://github.com/graphile/crystal/commit/208364f9423abd240a0772b661986aae6e185c47),
420
+ [`6762c70`](https://github.com/graphile/crystal/commit/6762c7005c56d17c06cebb6857e8d295d86399eb),
421
+ [`05b971e`](https://github.com/graphile/crystal/commit/05b971e2d63cb5c946512bb83e6c255a7d9ec93f),
422
+ [`13513dd`](https://github.com/graphile/crystal/commit/13513ddaea15ad9498a77de7c4e92679498f99ca),
423
+ [`bc2b188`](https://github.com/graphile/crystal/commit/bc2b188a50e00f153dc68df6955399c5917130bd),
424
+ [`5bea9c1`](https://github.com/graphile/crystal/commit/5bea9c14b7b20609eec1593fe3109f8d6c170b44),
425
+ [`87a4c92`](https://github.com/graphile/crystal/commit/87a4c92dc89093a8bd601dcd692910eadf0c4cd3),
426
+ [`703d162`](https://github.com/graphile/crystal/commit/703d162df2cc148ac343c1339b8e7df750aa781d),
427
+ [`c13813e`](https://github.com/graphile/crystal/commit/c13813eecb42c0d9a6703540c022e318e18c5751),
428
+ [`4a9072b`](https://github.com/graphile/crystal/commit/4a9072bfa3d3e86c6013caf2b89a31e87f2bb421),
429
+ [`7766c19`](https://github.com/graphile/crystal/commit/7766c19ecefd3aebc965306db90ba29b3b05200c),
430
+ [`6dafac1`](https://github.com/graphile/crystal/commit/6dafac162955291e5147c21e57734b44e30acb98),
431
+ [`aa8fb3d`](https://github.com/graphile/crystal/commit/aa8fb3dbd23b0c3b6b8039922cb4ab7293b51844),
432
+ [`e15f886`](https://github.com/graphile/crystal/commit/e15f886cae1041416b44b74b75426f8d43000dcf),
433
+ [`34efed0`](https://github.com/graphile/crystal/commit/34efed09892d4b6533f40026de4a6b0a8a35035d),
434
+ [`185d449`](https://github.com/graphile/crystal/commit/185d449ed30d29c9134cc898b50a1473ab2910a2),
435
+ [`e2048e2`](https://github.com/graphile/crystal/commit/e2048e260bf99ed946f92d6ea579e08f126ba4d5),
436
+ [`33c7784`](https://github.com/graphile/crystal/commit/33c7784a8c81ac29c1e2e4a8733d04c30ef7035b),
437
+ [`f83b191`](https://github.com/graphile/crystal/commit/f83b191f39c9d521fd12563cca6aa20d1a6f0494)]:
438
+ - graphile-build-pg@5.0.0-beta.45
439
+ - @dataplan/pg@0.0.1-beta.37
440
+ - graphile-config@0.0.1-beta.18
441
+ - grafast@0.1.1-beta.26
442
+ - graphile-build@5.0.0-beta.38
443
+ - graphile-utils@5.0.0-beta.44
444
+ - tamedevil@0.0.0-beta.9
445
+ - grafserv@0.1.1-beta.28
446
+
447
+ ## 5.0.0-beta.46
448
+
449
+ ### Patch Changes
450
+
451
+ - Updated dependencies
452
+ [[`9e21b2a`](https://github.com/graphile/crystal/commit/9e21b2ac0814c351d68f50b5a121699e088209bd),
453
+ [`2adfd6e`](https://github.com/graphile/crystal/commit/2adfd6efedd1ab6831605526a515c683a7e95c2c),
454
+ [`8cfd4b3`](https://github.com/graphile/crystal/commit/8cfd4b37057ec54814f2f53f96a42400cbde69ca),
455
+ [`73f626b`](https://github.com/graphile/crystal/commit/73f626b8065389f226f66a4752112cf6b013855a),
456
+ [`6113518`](https://github.com/graphile/crystal/commit/61135188900c39d0cb6bd2f9c0033f0954cd0e6a)]:
457
+ - graphile-build@5.0.0-beta.37
458
+ - graphile-build-pg@5.0.0-beta.44
459
+ - @dataplan/json@0.0.1-beta.33
460
+ - @dataplan/pg@0.0.1-beta.36
461
+ - grafast@0.1.1-beta.25
462
+ - graphile-utils@5.0.0-beta.43
463
+
464
+ ## 5.0.0-beta.45
465
+
466
+ ### Patch Changes
467
+
468
+ - [#2635](https://github.com/graphile/crystal/pull/2635)
469
+ [`85c8364`](https://github.com/graphile/crystal/commit/85c83642b6fe7abcdb17c6879fbafbe162175843)
470
+ Thanks [@benjie](https://github.com/benjie)! - Remove non-functional fields
471
+ generated from mode:union-returning functions from the schema.
472
+ - Updated dependencies
473
+ [[`85c8364`](https://github.com/graphile/crystal/commit/85c83642b6fe7abcdb17c6879fbafbe162175843)]:
474
+ - graphile-build-pg@5.0.0-beta.43
475
+
476
+ ## 5.0.0-beta.44
477
+
478
+ ### Patch Changes
479
+
480
+ - [#2559](https://github.com/graphile/crystal/pull/2559)
481
+ [`4c8f028`](https://github.com/graphile/crystal/commit/4c8f028a7e5c4388efbab53ea65e7b3018ab6d47)
482
+ Thanks [@benjie](https://github.com/benjie)! - Remove `make...Plugin`
483
+ prefix/suffix from plugin factories. (Old name is still supported but
484
+ deprecated, this is non-breaking.)
485
+
486
+ - [#2571](https://github.com/graphile/crystal/pull/2571)
487
+ [`5451c90`](https://github.com/graphile/crystal/commit/5451c9031e341bdae16dc1b7a3b6b19154056701)
488
+ Thanks [@slaskis](https://github.com/slaskis)! - Add support for JSONPath type
489
+ (thanks @slaskis!)
490
+
491
+ - [#2578](https://github.com/graphile/crystal/pull/2578)
492
+ [`1d76d2f`](https://github.com/graphile/crystal/commit/1d76d2f0d19b4d56895ee9988440a35d2c60f9f9)
493
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 **Ruru has been "rebuilt"!
494
+ The loading methods and APIs have changed!**
495
+
496
+ Ruru is now built on top of GraphiQL v5, which moves to using the Monaco
497
+ editor (the same editor used in VSCode) enabling more familiar keybindings and
498
+ more features (e.g. press F1 in the editor to see the command palette, and you
499
+ can now add comments in the variables JSON). This has required a
500
+ rearchitecture to Ruru's previously "single file" approach since Monaco uses
501
+ workers which require additional files.
502
+
503
+ In this release we have embraced the bundle splitting approach. We now bundle
504
+ both `prettier` and `mermaid`, and they are now loaded on-demand.
505
+
506
+ Usage instructions for all environments have had to change since we can no
507
+ longer serve Ruru as a single HTML file. We now include helpers for serving
508
+ Ruru's static files from whatever JS-based webserver you are using.
509
+
510
+ We've also added some additional improvements:
511
+ - Formatting with prettier now maintains the cursor position
512
+ (`Ctrl-Shift-P`/`Meta-Shift-P`/`Cmd-Shift-P` depending on platform)
513
+ - All editors are now formatted, not just the GraphQL editor
514
+ - Prettier and mermaid should now work offline
515
+ - Even more GraphiQL props are now passed through, including
516
+ `inputValueDeprecation` and `schemaDeprecation` which you can set to false
517
+ if your GraphQL server is, _ahem_, a little behind the GraphQL spec draft.
518
+
519
+ 🚨 **Changes you need to make:** 🚨
520
+ - If you are using Ruru directly (i.e. importing from `ruru/server`), please
521
+ see the new Ruru README for setup instructions, you'll want to switch out
522
+ your previous setup. In particular, `ruru/bundle` no longer exists and you
523
+ now need to serve the static files (via `ruru/static`).
524
+ - `defaultHTMLParts` is no more; instead `config.htmlParts` (also
525
+ `preset.ruru.htmlParts` for Graphile Config users) now allows the entries to
526
+ be callback functions reducing boilerplate:
527
+ ```diff
528
+ -import { defaultHTMLParts } from "ruru/server";
529
+ const config = {
530
+ htmlParts: {
531
+ - metaTags: defaultHTMLParts.metaTags + "<!-- local override -->",
532
+ + metaTags: (base) => base + "<!-- local override -->",
533
+ }
534
+ }
535
+ ```
536
+ (alternatively you can use `makeHTMLParts(config)`)
537
+ - Grafserv users: `plugin.grafserv.middleware.ruruHTMLParts` is renamed to
538
+ `ruruHTML` and wraps the generation of the HTML - simply trim `Parts` from
539
+ the name and be sure calling `next()` is the final line of the function
540
+ ```diff
541
+ const plugin = {
542
+ grafserv: {
543
+ middleware: {
544
+ - ruruHTMLParts(next, event) {
545
+ + ruruHTML(next, event) {
546
+ const { htmlParts, request } = event;
547
+ htmlParts.titleTag = `<title>${escapeHTML(
548
+ "Ruru | " + request.getHeader("host"),
549
+ )}</title>`;
550
+ return next();
551
+ },
552
+ },
553
+ },
554
+ };
555
+ ```
556
+
557
+ Additional changes:
558
+ - `RuruConfig.clientConfig` has been added for props to explicitly pass to
559
+ Ruru making it explicit that these will be sent to the client
560
+ - `RuruServerConfig` has deprecated the client options `editorTheme`,
561
+ `debugTools` and `eventSourceInit` at the top level; instead these should be
562
+ passed via `RuruServerConfig.clientConfig` making it explicit these will be
563
+ sent to the client and expanding to cover more props
564
+ ```diff
565
+ const config = {
566
+ endpoint: "/graphql",
567
+ + clientConfig: {
568
+ editorTheme: "dark",
569
+ + },
570
+ }
571
+ ```
572
+
573
+ - [#2571](https://github.com/graphile/crystal/pull/2571)
574
+ [`7147cb0`](https://github.com/graphile/crystal/commit/7147cb07e4d7286bb3b9e949164a2a232d59e28c)
575
+ Thanks [@slaskis](https://github.com/slaskis)! - 🚨 Give built-in codecs a
576
+ concept of "natural sorting" and "natural equality"; disable ordering by
577
+ default for those without natural sorting, disable filtering by default for
578
+ those without natural equality. Those using AmberPreset will have some order
579
+ enum options and filter options removed from their schema; V4 preset users
580
+ should be unaffected. To restore the previous items, a small plugin can be
581
+ introduced, see:
582
+ https://github.com/slaskis/crystal/blob/bb940399a3a741c0982b53fffbe4604eebe6ffb0/postgraphile/postgraphile/src/plugins/PgV4BehaviorPlugin.ts#L81-L98
583
+
584
+ - [#2593](https://github.com/graphile/crystal/pull/2593)
585
+ [`7847c0b`](https://github.com/graphile/crystal/commit/7847c0b09aa6be5526df8ccdb3f429e680a2da03)
586
+ Thanks [@benjie](https://github.com/benjie)! - Fixes a bug where ordering or
587
+ filtering by 'via' attributes (such as those from polymorphic 'relational'
588
+ tables) resulted in an error.
589
+
590
+ - [#2593](https://github.com/graphile/crystal/pull/2593)
591
+ [`0e6c4e0`](https://github.com/graphile/crystal/commit/0e6c4e062be3ecb79c0ae30c89fad1550a0b5e98)
592
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `resource.resolveVia()` has
593
+ changed result format; from `{ relation: string, attribute: string }` to
594
+ `{ relationName: string, attributeName: string, relation: PgCodecRelation, attribute: PgCodecAttribute }`.
595
+ If you use `resolveVia`, please be sure to extract the correct properties.
596
+
597
+ - [#2600](https://github.com/graphile/crystal/pull/2600)
598
+ [`ad588ec`](https://github.com/graphile/crystal/commit/ad588ecde230359f56800e414b7c5fa1aed14957)
599
+ Thanks [@benjie](https://github.com/benjie)! - Mark all
600
+ peerDependencies=dependencies modules as optional peerDependencies to make
601
+ pnpm marginally happier hopefully.
602
+
603
+ - [#2598](https://github.com/graphile/crystal/pull/2598)
604
+ [`e8bb5be`](https://github.com/graphile/crystal/commit/e8bb5be91df242d3c2b8ed4e7010d48feffdcfe2)
605
+ Thanks [@benjie](https://github.com/benjie)! - Amber and V4 preset now
606
+ implicitly import `postgraphile` which imports the Graphile Config types you
607
+ need from graphile-build, grafast, etc automatically.
608
+ - Updated dependencies
609
+ [[`4c8f028`](https://github.com/graphile/crystal/commit/4c8f028a7e5c4388efbab53ea65e7b3018ab6d47),
610
+ [`5451c90`](https://github.com/graphile/crystal/commit/5451c9031e341bdae16dc1b7a3b6b19154056701),
611
+ [`1d76d2f`](https://github.com/graphile/crystal/commit/1d76d2f0d19b4d56895ee9988440a35d2c60f9f9),
612
+ [`c54c6db`](https://github.com/graphile/crystal/commit/c54c6db320b3967ab16784a504770c9b5ef24494),
613
+ [`7147cb0`](https://github.com/graphile/crystal/commit/7147cb07e4d7286bb3b9e949164a2a232d59e28c),
614
+ [`7847c0b`](https://github.com/graphile/crystal/commit/7847c0b09aa6be5526df8ccdb3f429e680a2da03),
615
+ [`9d86063`](https://github.com/graphile/crystal/commit/9d86063aacf2d064c35bd62e2cf58ea687910ac8),
616
+ [`a480f6d`](https://github.com/graphile/crystal/commit/a480f6d22605fbb0d0fcdf6845cbdf294d3194b5),
617
+ [`0e6c4e0`](https://github.com/graphile/crystal/commit/0e6c4e062be3ecb79c0ae30c89fad1550a0b5e98),
618
+ [`ad588ec`](https://github.com/graphile/crystal/commit/ad588ecde230359f56800e414b7c5fa1aed14957)]:
619
+ - graphile-build-pg@5.0.0-beta.42
620
+ - graphile-utils@5.0.0-beta.42
621
+ - @dataplan/pg@0.0.1-beta.35
622
+ - grafserv@0.1.1-beta.27
623
+ - grafast@0.1.1-beta.24
624
+ - graphile-build@5.0.0-beta.36
625
+
626
+ ## 5.0.0-beta.43
627
+
628
+ ### Patch Changes
629
+
630
+ - [#2577](https://github.com/graphile/crystal/pull/2577)
631
+ [`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47)
632
+ Thanks [@benjie](https://github.com/benjie)! - Update dependencies
633
+
634
+ - Updated dependencies
635
+ [[`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47),
636
+ [`1f4544d`](https://github.com/graphile/crystal/commit/1f4544d011a1442688c4e34b677f7123f3ae6927),
637
+ [`e0cdabe`](https://github.com/graphile/crystal/commit/e0cdabe25c8894da550546c93bc03b895585544c),
638
+ [`faee38b`](https://github.com/graphile/crystal/commit/faee38bbff0421bbccfaa77c0dffa5c2d44e2b92)]:
639
+ - graphile-build-pg@5.0.0-beta.41
640
+ - graphile-build@5.0.0-beta.35
641
+ - graphile-utils@5.0.0-beta.41
642
+ - graphile-config@0.0.1-beta.17
643
+ - @dataplan/pg@0.0.1-beta.34
644
+ - grafserv@0.1.1-beta.26
645
+ - grafast@0.1.1-beta.23
646
+ - @dataplan/json@0.0.1-beta.32
647
+
648
+ ## 5.0.0-beta.42
649
+
650
+ ### Patch Changes
651
+
652
+ - [#2575](https://github.com/graphile/crystal/pull/2575)
653
+ [`5c802ea6819361eed36b75f246ae0adb35b14669`](https://github.com/graphile/crystal/commit/5c802ea6819361eed36b75f246ae0adb35b14669)
654
+ Thanks [@benjie](https://github.com/benjie)! - Fixes a bug in relational
655
+ polymorphism where PostgreSQL functions returning polymorphic records were
656
+ causing planning errors.
657
+ - Updated dependencies
658
+ [[`5c802ea6819361eed36b75f246ae0adb35b14669`](https://github.com/graphile/crystal/commit/5c802ea6819361eed36b75f246ae0adb35b14669)]:
659
+ - graphile-build-pg@5.0.0-beta.40
660
+ - graphile-utils@5.0.0-beta.40
661
+ - @dataplan/pg@0.0.1-beta.33
662
+ - graphile-build@5.0.0-beta.34
663
+
664
+ ## 5.0.0-beta.41
665
+
666
+ ### Patch Changes
667
+
668
+ - [#2444](https://github.com/graphile/crystal/pull/2444)
669
+ [`192a27e08763ea26607344a2ea6c7f5c595cc2a3`](https://github.com/graphile/crystal/commit/192a27e08763ea26607344a2ea6c7f5c595cc2a3)
670
+ Thanks [@benjie](https://github.com/benjie)! - Upgrade to Mermaid 11, and
671
+ reduce verbosity of polymorphism in plan diagrams.
672
+
673
+ - [#2525](https://github.com/graphile/crystal/pull/2525)
674
+ [`09d95319be3e25e023dfbab9d1542dfe06f65355`](https://github.com/graphile/crystal/commit/09d95319be3e25e023dfbab9d1542dfe06f65355)
675
+ Thanks [@benjie](https://github.com/benjie)! - Plan computed column inputs
676
+ (particularly Node IDs) in the root layer plan, allowing for greater plan
677
+ deduplication and more efficient SQL generation.
678
+
679
+ - [#2478](https://github.com/graphile/crystal/pull/2478)
680
+ [`a830770e775a65ce1d09fa767f38e84f5c0e5139`](https://github.com/graphile/crystal/commit/a830770e775a65ce1d09fa767f38e84f5c0e5139)
681
+ Thanks [@benjie](https://github.com/benjie)! - Use new .addRef and .getRef
682
+ methods from grafast.
683
+
684
+ - [#2482](https://github.com/graphile/crystal/pull/2482)
685
+ [`459e1869a2ec58925b2bac5458af487c52a8ca37`](https://github.com/graphile/crystal/commit/459e1869a2ec58925b2bac5458af487c52a8ca37)
686
+ Thanks [@benjie](https://github.com/benjie)! - Minimum version of Node.js
687
+ bumped to Node 22 (the latest LTS).
688
+
689
+ - [#2521](https://github.com/graphile/crystal/pull/2521)
690
+ [`c43ed67b9d3acbadb172ee88ba9c2a4d32528a25`](https://github.com/graphile/crystal/commit/c43ed67b9d3acbadb172ee88ba9c2a4d32528a25)
691
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in nullable nodeID
692
+ handling for computed column arguments with the Relay preset that was causing
693
+ the entire select to be inhibited on null/undefined.
694
+
695
+ - [#2527](https://github.com/graphile/crystal/pull/2527)
696
+ [`576fb8bad56cb940ab444574d752e914d462018a`](https://github.com/graphile/crystal/commit/576fb8bad56cb940ab444574d752e914d462018a)
697
+ Thanks [@{](https://github.com/{)! - In order to make the libraries more type
698
+ safe, `makeGrafastSchema` (from `grafast`) and `makeExtendSchemaPlugin` (from
699
+ `postgraphile/utils`) have deprecated the `typeDefs`/`plans` pattern since
700
+ `plans` (like `resolvers` in the traditional format) ended up being a
701
+ mish-mash of lots of different types and `__`-prefixed fields for special
702
+ cases.
703
+
704
+ Instead the configuration should be split into `typeDefs` with `objects`,
705
+ `interfaces`, `unions`, `inputObjects`, `scalars` and `enums`; and object and
706
+ input object fields should be specified via the `plans` entry within the type
707
+ to avoid conflicts with `resolveType`/`isTypeOf`/`planType`/`scope` and
708
+ similar type-level (rather than field-level) properties. Similarly, enum
709
+ values should be added under a `values` property. This also means these
710
+ type-level fields no longer have the `__` prefix.
711
+
712
+ Migration is quite straightforward:
713
+ 1. **Add new top-level properties**. Add `objects`, `interfaces`, `unions`,
714
+ `inputObjects`, `scalars`, and `enums` as top level properties alongside
715
+ `typeDefs` and `plans`. Each should be an empty object. You can skip any
716
+ where you're not defining types of that kind.
717
+ 1. **Split definitions based on type kind**. For each type defined in `plans`
718
+ move it into the appropriate new property based on the keyword used to
719
+ define the type in the `typeDefs` (`type` &rarr; `objects`, `interface`
720
+ &rarr; `interfaces`, `union` &rarr; `unions`, `input object` &rarr;
721
+ `inputObjects`, `scalar` &rarr; `scalars`, `enum` &rarr; `enums`).
722
+ 1. **Move field plans into nested `plans: {...}` object**. For each type
723
+ defined in the new `objects` and `inputObjects` maps: create a
724
+ `plans: { ... }` entry inside the type and move all fields (anything not
725
+ prefixed with `__`) inside this new (nested) property.
726
+ 1. **Move enum values into nested `values: {...}` object**. For each type
727
+ defined in the new `enums` map: create a `values: { ... }` entry inside the
728
+ type and move all values (anything not prefixed with `__`) inside this new
729
+ (nested) property.
730
+ 1. **Remove `__` prefixes**. For each type across
731
+ `objects`/`interfaces`/`unions`/`interfaceObjects`/`scalars` and `enums`:
732
+ remove the `__` prefix from any methods/properties.
733
+
734
+ Example:
735
+
736
+ ```diff
737
+ typeDefs: ...,
738
+ -plans: {
739
+ +objects: {
740
+
741
+ - __isTypeOf(v) {
742
+ + isTypeOf(v) {
743
+ return v.username != null;
744
+ },
745
+ + plans: {
746
+ fieldName($source, fieldArgs) {
747
+ // ...
748
+ },
749
+ + },
750
+ },
751
+ +},
752
+ +interfaces: {,
753
+ MyInterface: {
754
+ - __resolveType($specifier) {
755
+ + resolveType($specifier) {
756
+ // ...
757
+ }
758
+ }
759
+ +},
760
+ +enums: {
761
+ MyEnum: {
762
+ + values: {
763
+ ONE: {value: 1},
764
+ TWO: {value: 2},
765
+ THREE: {value: 3},
766
+ + }
767
+ }
768
+ },
769
+ ```
770
+
771
+ Other changes:
772
+ - `ObjectPlans`/`GrafastPlans`/`FieldPlans`/`InputObjectPlans`/`ScalarPlans`
773
+ all changed to signular
774
+ - `InterfaceOrUnionPlans` split to `InterfacePlan`/`UnionPlan` (identical
775
+ currently)
776
+ - Shape of `ObjectPlan`/`InterfacePlan`/`UnionPlan` has changed;
777
+ `DeprecatedObjectPlan`/etc exist for backcompat
778
+ - `FieldArgs` can now accept an input shape indicating the args and their
779
+ types
780
+ - `FieldPlanResolver<TArgs, TParentStep, TResultStep>` has switched the order
781
+ of the first two generic parameters:
782
+ `FieldPlanResolver<TParentStep, TArgs, TResultStep>` - this is to reflect
783
+ the order of the arguments to the function. Also null has been removed from
784
+ the generics.
785
+ - Various generics (including `GrafastFieldConfig`) that used to take a
786
+ GraphQL type instance as a generic parameter no longer do - you need to use
787
+ external code generation because TypeScript cannot handle the dynamic
788
+ creation.
789
+ - `GrafastFieldConfig` last two generics swapped order.
790
+ - `GrafastArgumentConfig` generics completely changed
791
+
792
+ - [#2548](https://github.com/graphile/crystal/pull/2548)
793
+ [`45adaff886e7cd72b864150927be6c0cb4a7dfe8`](https://github.com/graphile/crystal/commit/45adaff886e7cd72b864150927be6c0cb4a7dfe8)
794
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 Complete overhaul of
795
+ polymorphism:
796
+ - Centralized the responsibility of polymorphic resolution from field plan
797
+ resolvers into abstract types.
798
+ - Eliminated the concept of "polymorphic capable" steps: any step may now be
799
+ used for polymorphism.
800
+ - Steps such as `polymorphicBranch`, `pgPolymorphism`, and other polymorphism
801
+ related steps no longer exist as they are no longer supported in this new
802
+ paradigm.
803
+ - Abstract types gain a `planType` method: passed a `$specifier` step from the
804
+ field plan resolver, and returns an `AbstractTypePlanner` object which
805
+ returns a `$__typename` step indicating the concrete object type name for
806
+ this `$specifier` along with an (optional) `planForType(objectType)` method
807
+ to plan how to turn the `$specifier` into a step suitable for usage by the
808
+ given object type (assuming the `$__typename` matches).
809
+ - No more exponential branching: we now merge the previous polymorphic branch
810
+ into a single `$specifier` step before planning the next level of
811
+ polymorphism.
812
+
813
+ PostGraphile Postgres-level polymorphism users are unaffected (all changes
814
+ have been done for you); SQL queries are now slightly smaller, and in general
815
+ there may be fewer requests to the DB.
816
+
817
+ If you've written your own plan resolvers by hand, first: thanks for being
818
+ brave! Second, sorry... You're going to have to rewrite them. Hopefully the
819
+ result will be a net reduction in complexity though &mdash; you can move
820
+ repetative polymorphism handling code from the field plan resolvers themselves
821
+ to the new `planType` method on the abstract type. It's hard to explain all
822
+ the possible ways of re-writing these plans, so read the docs about the new
823
+ pattern first and, if you still need help, please do reach out
824
+ [on Discord](https://discord.gg/graphile)!
825
+
826
+ This is the last breaking change to hand written plan resolvers that we expect
827
+ to make before the v1.0 release (other than some improvements around
828
+ TypeScript types) and marks the completion of the fourth and final epic that
829
+ was outlined in the first Grafast Working Group. With this change, we're much
830
+ closer to moving to release candidate status!
831
+
832
+ - [#2523](https://github.com/graphile/crystal/pull/2523)
833
+ [`b05d57b932ea00d10715dcab9f79d443408881fc`](https://github.com/graphile/crystal/commit/b05d57b932ea00d10715dcab9f79d443408881fc)
834
+ Thanks [@Dacjan](https://github.com/Dacjan)! - Fix bug with `@ref ... plural`
835
+ smart tag where multiple `@refVia` are present but the target type is not
836
+ abstract.
837
+ - Updated dependencies
838
+ [[`0e36cb9077c76710d2e407830323f86c5038126e`](https://github.com/graphile/crystal/commit/0e36cb9077c76710d2e407830323f86c5038126e),
839
+ [`5a26196eff8fd1956d73e0b8fdf5cfcb7f01b7d3`](https://github.com/graphile/crystal/commit/5a26196eff8fd1956d73e0b8fdf5cfcb7f01b7d3),
840
+ [`c0c3f48fa9f60cb9a4436ea135979b779ecc71ec`](https://github.com/graphile/crystal/commit/c0c3f48fa9f60cb9a4436ea135979b779ecc71ec),
841
+ [`cef9a37f846b4af105ac20960530d65c9f44afa9`](https://github.com/graphile/crystal/commit/cef9a37f846b4af105ac20960530d65c9f44afa9),
842
+ [`56ce94a847c6a4094643665cbf5d3712f56140b6`](https://github.com/graphile/crystal/commit/56ce94a847c6a4094643665cbf5d3712f56140b6),
843
+ [`070467c4ea693a2516fc8006bebb88b1ab96fb26`](https://github.com/graphile/crystal/commit/070467c4ea693a2516fc8006bebb88b1ab96fb26),
844
+ [`192a27e08763ea26607344a2ea6c7f5c595cc2a3`](https://github.com/graphile/crystal/commit/192a27e08763ea26607344a2ea6c7f5c595cc2a3),
845
+ [`142e39f26ce329f09bee0b5427f1ddc5103e610e`](https://github.com/graphile/crystal/commit/142e39f26ce329f09bee0b5427f1ddc5103e610e),
846
+ [`6ef6abce15936a896156d5316020df55cf7d18e3`](https://github.com/graphile/crystal/commit/6ef6abce15936a896156d5316020df55cf7d18e3),
847
+ [`17b160d5450e20e0f5c6597d5cffe125ece49d65`](https://github.com/graphile/crystal/commit/17b160d5450e20e0f5c6597d5cffe125ece49d65),
848
+ [`0239c2d519300a72f545e0db7c371adae4ade2a9`](https://github.com/graphile/crystal/commit/0239c2d519300a72f545e0db7c371adae4ade2a9),
849
+ [`09d95319be3e25e023dfbab9d1542dfe06f65355`](https://github.com/graphile/crystal/commit/09d95319be3e25e023dfbab9d1542dfe06f65355),
850
+ [`873b24dc70cea68e236e5dcf5bc7ff8f46fa43fe`](https://github.com/graphile/crystal/commit/873b24dc70cea68e236e5dcf5bc7ff8f46fa43fe),
851
+ [`eb771be5e8b06a0cd53476cb36495e7e1aca56b7`](https://github.com/graphile/crystal/commit/eb771be5e8b06a0cd53476cb36495e7e1aca56b7),
852
+ [`0ea439d33ccef7f8d01ac5f54893ab2bbf1cbd4d`](https://github.com/graphile/crystal/commit/0ea439d33ccef7f8d01ac5f54893ab2bbf1cbd4d),
853
+ [`8034614d1078b1bd177b6e7fcc949420614e3245`](https://github.com/graphile/crystal/commit/8034614d1078b1bd177b6e7fcc949420614e3245),
854
+ [`a830770e775a65ce1d09fa767f38e84f5c0e5139`](https://github.com/graphile/crystal/commit/a830770e775a65ce1d09fa767f38e84f5c0e5139),
855
+ [`459e1869a2ec58925b2bac5458af487c52a8ca37`](https://github.com/graphile/crystal/commit/459e1869a2ec58925b2bac5458af487c52a8ca37),
856
+ [`c350e49e372ec12a4cbf04fb6b4260e01832d12b`](https://github.com/graphile/crystal/commit/c350e49e372ec12a4cbf04fb6b4260e01832d12b),
857
+ [`3176ea3e57d626b39613a73117ef97627370ec83`](https://github.com/graphile/crystal/commit/3176ea3e57d626b39613a73117ef97627370ec83),
858
+ [`46a42f5547c041289aa98657ebc6815f4b6c8539`](https://github.com/graphile/crystal/commit/46a42f5547c041289aa98657ebc6815f4b6c8539),
859
+ [`a87bbd76f1a8b60fd86de65922746d830cc160b4`](https://github.com/graphile/crystal/commit/a87bbd76f1a8b60fd86de65922746d830cc160b4),
860
+ [`be3f174c5aae8fe78a240e1bc4e1de7f18644b43`](https://github.com/graphile/crystal/commit/be3f174c5aae8fe78a240e1bc4e1de7f18644b43),
861
+ [`c43ed67b9d3acbadb172ee88ba9c2a4d32528a25`](https://github.com/graphile/crystal/commit/c43ed67b9d3acbadb172ee88ba9c2a4d32528a25),
862
+ [`576fb8bad56cb940ab444574d752e914d462018a`](https://github.com/graphile/crystal/commit/576fb8bad56cb940ab444574d752e914d462018a),
863
+ [`9f459101fa4428aa4bac71531e75f99e33da8e17`](https://github.com/graphile/crystal/commit/9f459101fa4428aa4bac71531e75f99e33da8e17),
864
+ [`921665df8babe2651ab3b5886ab68bb518f2125b`](https://github.com/graphile/crystal/commit/921665df8babe2651ab3b5886ab68bb518f2125b),
865
+ [`78bb1a615754d772a5fda000e96073c91fa9eba7`](https://github.com/graphile/crystal/commit/78bb1a615754d772a5fda000e96073c91fa9eba7),
866
+ [`c9cd0cc72a4db4b02b2bdf770161c9346cb4b174`](https://github.com/graphile/crystal/commit/c9cd0cc72a4db4b02b2bdf770161c9346cb4b174),
867
+ [`ab0bcda5fc3c136eea09493a7d9ed4542975858e`](https://github.com/graphile/crystal/commit/ab0bcda5fc3c136eea09493a7d9ed4542975858e),
868
+ [`455f4811d37ad8fff91183c7a88621bcf9d79acf`](https://github.com/graphile/crystal/commit/455f4811d37ad8fff91183c7a88621bcf9d79acf),
869
+ [`45adaff886e7cd72b864150927be6c0cb4a7dfe8`](https://github.com/graphile/crystal/commit/45adaff886e7cd72b864150927be6c0cb4a7dfe8),
870
+ [`b05d57b932ea00d10715dcab9f79d443408881fc`](https://github.com/graphile/crystal/commit/b05d57b932ea00d10715dcab9f79d443408881fc)]:
871
+ - grafast@0.1.1-beta.22
872
+ - pg-sql2@5.0.0-beta.9
873
+ - @dataplan/pg@0.0.1-beta.33
874
+ - grafserv@0.1.1-beta.25
875
+ - graphile-build-pg@5.0.0-beta.39
876
+ - @dataplan/json@0.0.1-beta.31
877
+ - graphile-build@5.0.0-beta.34
878
+ - graphile-utils@5.0.0-beta.39
879
+ - graphile-config@0.0.1-beta.16
880
+ - @graphile/lru@5.0.0-beta.4
881
+ - tamedevil@0.0.0-beta.8
882
+
883
+ ## 5.0.0-beta.40
884
+
885
+ ### Patch Changes
886
+
887
+ - Updated dependencies []:
888
+ - grafserv@0.1.1-beta.24
889
+ - graphile-build-pg@5.0.0-beta.38
890
+ - @dataplan/pg@0.0.1-beta.32
891
+ - graphile-utils@5.0.0-beta.38
892
+
893
+ ## 5.0.0-beta.39
894
+
895
+ ### Patch Changes
896
+
897
+ - [#2335](https://github.com/graphile/crystal/pull/2335)
898
+ [`2f31836cb89a7ab27a8919803fe12b53a46d77e4`](https://github.com/graphile/crystal/commit/2f31836cb89a7ab27a8919803fe12b53a46d77e4)
899
+ Thanks [@benjie](https://github.com/benjie)! - PgSelectStep and PgUnionAllStep
900
+ now return objects rather than arrays/streams; thanks to the new Grafast
901
+ .items() method and these classes being "opaque" steps this is _mostly_ a
902
+ non-breaking change.
903
+
904
+ - [#2424](https://github.com/graphile/crystal/pull/2424)
905
+ [`e6da5d956ab696932410e7172cedfacba71dbf5e`](https://github.com/graphile/crystal/commit/e6da5d956ab696932410e7172cedfacba71dbf5e)
906
+ Thanks [@benjie](https://github.com/benjie)! - Small tweaks to make exported
907
+ schemas have nicer formatting.
908
+
909
+ - [#2335](https://github.com/graphile/crystal/pull/2335)
910
+ [`72b300b436a7acedaa7d0e3a7a5458d15a0e5396`](https://github.com/graphile/crystal/commit/72b300b436a7acedaa7d0e3a7a5458d15a0e5396)
911
+ Thanks [@benjie](https://github.com/benjie)! - PgSelectStep's stream behavior
912
+ updated to match the latest logic in Grafast.
913
+
914
+ - [#2376](https://github.com/graphile/crystal/pull/2376)
915
+ [`da6f3c04efe3d8634c0bc3fcf93ac2518de85322`](https://github.com/graphile/crystal/commit/da6f3c04efe3d8634c0bc3fcf93ac2518de85322)
916
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul Grafast to remove more
917
+ input planning - inputs should be evaluated at runtime - and remove more
918
+ plan-time step evaluation.
919
+
920
+ `FieldArgs.get` is no more; use `FieldArgs.getRaw` or use `bakedInput()`
921
+ (TODO: document) to get the "baked" version of a raw input value.
922
+
923
+ Input object fields no longer have `applyPlan`/`inputPlan`, instead having the
924
+ runtime equivalents `apply()` and `baked()`. `FieldArgs` is no longer
925
+ available on input object fields, since these fields are no longer called at
926
+ plantime; instead, the actual value is passed.
927
+
928
+ `FieldArgs` gains `.typeAt(path)` method that details the GraphQL input type
929
+ at the given path.
930
+
931
+ Field arguments are no longer passed `FieldArgs`, instead they're passed a
932
+ (similar) `FieldArg` object representing the argument value itself.
933
+
934
+ `autoApplyAfterParentPlan` is no more - instead if an argument has `applyPlan`
935
+ it will be called automatically unless it was called during the field plan
936
+ resolver itself.
937
+
938
+ `autoApplyAfterParentSubscribePlan` is no more - instead if an argument has
939
+ `applySubscribePlan` it will be called automatically unless it was called
940
+ during the field plan resolver itself.
941
+
942
+ Field arguments no longer support `inputPlan` - use `bakedInput()` if you need
943
+ that.
944
+
945
+ Input fields no longer support `inputPlan`, `applyPlan`,
946
+ `autoApplyAfterParentInputPlan` nor `autoApplyAfterParentApplyPlan`. Instead,
947
+ `apply()` (which is called by `applyStep()` at runtime) has been added.
948
+
949
+ `sqlValueWithCodec(value, codec)` can be used at runtime in places where
950
+ `$step.placeholder($value, codec)` would have been used previously.
951
+ `placeholder` has been removed from all places that are now runtime - namely
952
+ the list of modifiers below...
953
+
954
+ The following `ModifierStep` classes have all dropped their `Step` suffix,
955
+ these `Modifier` classes now all run at runtime, and are thus no longer steps;
956
+ they're invoked as part of the new `applyInput()` (TODO: document) step:
957
+ - `ModifierStep` &rArr; `Modifier`
958
+ - `PgBooleanFilterStep` &rArr; `PgBooleanFilter`
959
+ - `PgClassFilterStep` &rArr; `PgClassFilter`
960
+ - `PgConditionCapableParentStep` &rArr; `PgConditionCapableParent`
961
+ - `PgConditionLikeStep` &rArr; `PgConditionLike`
962
+ - `PgConditionStepMode` &rArr; `PgConditionMode`
963
+ - `PgConditionStep` &rArr; `PgCondition`
964
+ - `PgManyFilterStep` &rArr; `PgManyFilter`
965
+ - `PgOrFilterStep` &rArr; `PgOrFilter`
966
+ - `PgTempTableStep` &rArr; `PgTempTable`
967
+ - `SetterCapableStep` &rArr; `SetterCapable`
968
+ - `SetterStep` &rArr; `Setter`
969
+
970
+ (Interestingly, other than the removal of `placeholder` and the fact they deal
971
+ with runtime values rather than steps now, they're very similar to what they
972
+ were before.)
973
+
974
+ The deprecated forms of the above have been removed.
975
+
976
+ Methods that rely on these modifier plans have been removed:
977
+ - `PgUnionAllStep.wherePlan` - use
978
+ `fieldArg.apply($unionAll, qb => qb.whereBuilder())` instead
979
+ - `PgUnionAllStep.havingPlan` - use
980
+ `fieldArg.apply($unionAll, qb => qb.havingBuilder())` instead
981
+ - Same for PgSelectStep
982
+
983
+ The following gain query builders:
984
+ - `PgInsertSingle`
985
+ - `PgUpdateSingle`
986
+ - `PgDeleteSingle`
987
+
988
+ Query builders gain `meta`, an object that can be augmented with metadata
989
+ about the operation (typically this relates to cursors and similar
990
+ functionality). This is now used to implement `clientMutationId`.
991
+
992
+ Extends query builders with additional functionality.
993
+
994
+ Many of the types have had their generics changed, TypeScript should guide you
995
+ if you have issues here.
996
+
997
+ `NodeIdHandler` now requires a `getIdentifiers` method that runs at runtime
998
+ and returns the identifiers from a decoded NodeId string.
999
+
1000
+ Types around GraphQL Global Object Identification (i.e. `Node` / `id`) have
1001
+ changed.
1002
+
1003
+ - [#2357](https://github.com/graphile/crystal/pull/2357)
1004
+ [`8026b982a81776fb3d1d808392970c2d678c4023`](https://github.com/graphile/crystal/commit/8026b982a81776fb3d1d808392970c2d678c4023)
1005
+ Thanks [@benjie](https://github.com/benjie)! - Start migrating away from
1006
+ `applyPlan`/`inputPlan`. ~~When adding an argument to a field you can now
1007
+ augment the field's plan resolver via `context.addToPlanResolver` hook~~ (this
1008
+ was later replaced with new `inputApply()` step, and arguments still keep
1009
+ `applyPlan` though input object fields lose it). Use this and other changes to
1010
+ move handling of orderBy to runtime from plantime.
1011
+
1012
+ Introduces runtime query builder for `PgSelectStep` and `PgUnionAllStep`, and
1013
+ `PgSelectStep.apply()`/`PgUnionAllStep.apply()` so that you can register
1014
+ callbacks that will augment the query builder at runtime.
1015
+
1016
+ - Updated dependencies
1017
+ [[`d34014a9a3c469154cc796086ba13719954731e5`](https://github.com/graphile/crystal/commit/d34014a9a3c469154cc796086ba13719954731e5),
1018
+ [`d3ae3415c230784fdfefc9d192ad93aca462bceb`](https://github.com/graphile/crystal/commit/d3ae3415c230784fdfefc9d192ad93aca462bceb),
1019
+ [`98516379ac355a0833a64e002f3717cc3a1d6473`](https://github.com/graphile/crystal/commit/98516379ac355a0833a64e002f3717cc3a1d6473),
1020
+ [`f8602d05eed3247c90b87c55d7af580d1698effc`](https://github.com/graphile/crystal/commit/f8602d05eed3247c90b87c55d7af580d1698effc),
1021
+ [`65df25534fa3f787ba2ab7fd9547d295ff2b1288`](https://github.com/graphile/crystal/commit/65df25534fa3f787ba2ab7fd9547d295ff2b1288),
1022
+ [`1b3c76efd27df73eab3a5a1d221ce13de4cd6b1a`](https://github.com/graphile/crystal/commit/1b3c76efd27df73eab3a5a1d221ce13de4cd6b1a),
1023
+ [`f6e22692b628703b8ea48e580dc0b6f0bcbc9c5a`](https://github.com/graphile/crystal/commit/f6e22692b628703b8ea48e580dc0b6f0bcbc9c5a),
1024
+ [`e10c372dafbe0d6014b1e946349b22f40aa87ef9`](https://github.com/graphile/crystal/commit/e10c372dafbe0d6014b1e946349b22f40aa87ef9),
1025
+ [`c3538050abbb485cf1d43f7c870b89f1ad7c2218`](https://github.com/graphile/crystal/commit/c3538050abbb485cf1d43f7c870b89f1ad7c2218),
1026
+ [`3c0a925f26f10cae627a23c49c75ccd8d76b60c8`](https://github.com/graphile/crystal/commit/3c0a925f26f10cae627a23c49c75ccd8d76b60c8),
1027
+ [`fcaeb48844156e258a037f420ea1505edb50c52a`](https://github.com/graphile/crystal/commit/fcaeb48844156e258a037f420ea1505edb50c52a),
1028
+ [`68926abc31c32ce527327ffbb1ede4b0b7be446b`](https://github.com/graphile/crystal/commit/68926abc31c32ce527327ffbb1ede4b0b7be446b),
1029
+ [`98c5009e21e423b0da22c2cb70cdb62909578f50`](https://github.com/graphile/crystal/commit/98c5009e21e423b0da22c2cb70cdb62909578f50),
1030
+ [`4b49dbd2df3b339a2ba3f1e9ff400fa1a125298b`](https://github.com/graphile/crystal/commit/4b49dbd2df3b339a2ba3f1e9ff400fa1a125298b),
1031
+ [`d7950e8e28ec6106a4ce2f7fe5e35d88b10eac48`](https://github.com/graphile/crystal/commit/d7950e8e28ec6106a4ce2f7fe5e35d88b10eac48),
1032
+ [`c8f1971ea4198633ec97f72f82abf65089f71a88`](https://github.com/graphile/crystal/commit/c8f1971ea4198633ec97f72f82abf65089f71a88),
1033
+ [`182ed0564104f59b012e0f9ffd452556b0927750`](https://github.com/graphile/crystal/commit/182ed0564104f59b012e0f9ffd452556b0927750),
1034
+ [`dd3d22eab73a8554715bf1111e30586251f69a88`](https://github.com/graphile/crystal/commit/dd3d22eab73a8554715bf1111e30586251f69a88),
1035
+ [`a120a8e43b24dfc174950cdbb69e481272a0b45e`](https://github.com/graphile/crystal/commit/a120a8e43b24dfc174950cdbb69e481272a0b45e),
1036
+ [`be1e558d6a1a8cae3bf4b5724c340469d8837504`](https://github.com/graphile/crystal/commit/be1e558d6a1a8cae3bf4b5724c340469d8837504),
1037
+ [`3b0f5082b2272997ce33ce8823a4752513d19e28`](https://github.com/graphile/crystal/commit/3b0f5082b2272997ce33ce8823a4752513d19e28),
1038
+ [`84f06eafa051e907a3050237ac6ee5aefb184652`](https://github.com/graphile/crystal/commit/84f06eafa051e907a3050237ac6ee5aefb184652),
1039
+ [`4a3aeaa77c8b8d2e39c1a9d05581d0c613b812cf`](https://github.com/graphile/crystal/commit/4a3aeaa77c8b8d2e39c1a9d05581d0c613b812cf),
1040
+ [`3789326b2e2fdb86519acc75e606c752ddefe590`](https://github.com/graphile/crystal/commit/3789326b2e2fdb86519acc75e606c752ddefe590),
1041
+ [`12d3a7174949794a1679132635e196f5dadce8a2`](https://github.com/graphile/crystal/commit/12d3a7174949794a1679132635e196f5dadce8a2),
1042
+ [`ab7658ac44e1a5a0a98c6bb688a26d94b1175cc1`](https://github.com/graphile/crystal/commit/ab7658ac44e1a5a0a98c6bb688a26d94b1175cc1),
1043
+ [`bc2a00d35f0a1954dba22e857adc3f4e2f5118e5`](https://github.com/graphile/crystal/commit/bc2a00d35f0a1954dba22e857adc3f4e2f5118e5),
1044
+ [`ceeb9a6b63e566b09298e0440a385943302ad0f9`](https://github.com/graphile/crystal/commit/ceeb9a6b63e566b09298e0440a385943302ad0f9),
1045
+ [`3e8c64bef928295494119e15e1e55cbdadb696fa`](https://github.com/graphile/crystal/commit/3e8c64bef928295494119e15e1e55cbdadb696fa),
1046
+ [`0fc2db95d90df918cf5c59ef85f22ac78d8000d3`](https://github.com/graphile/crystal/commit/0fc2db95d90df918cf5c59ef85f22ac78d8000d3),
1047
+ [`d68c5831ed66dc8a7a79aab2100ca733409c6f72`](https://github.com/graphile/crystal/commit/d68c5831ed66dc8a7a79aab2100ca733409c6f72),
1048
+ [`90e81a5deeae554a8be2dd55dcd01489860e96e6`](https://github.com/graphile/crystal/commit/90e81a5deeae554a8be2dd55dcd01489860e96e6),
1049
+ [`836c8327a5ca1bd3c69f72055e71d00694de363e`](https://github.com/graphile/crystal/commit/836c8327a5ca1bd3c69f72055e71d00694de363e),
1050
+ [`2f31836cb89a7ab27a8919803fe12b53a46d77e4`](https://github.com/graphile/crystal/commit/2f31836cb89a7ab27a8919803fe12b53a46d77e4),
1051
+ [`c59132eb7a93bc82493d2f1ca050db8aaea9f4d1`](https://github.com/graphile/crystal/commit/c59132eb7a93bc82493d2f1ca050db8aaea9f4d1),
1052
+ [`7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7`](https://github.com/graphile/crystal/commit/7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7),
1053
+ [`728888b28fcd2a6fc481e0ccdfe20d41181a091f`](https://github.com/graphile/crystal/commit/728888b28fcd2a6fc481e0ccdfe20d41181a091f),
1054
+ [`f4f39092d7a51517668384945895d3b450237cce`](https://github.com/graphile/crystal/commit/f4f39092d7a51517668384945895d3b450237cce),
1055
+ [`5cf3dc9d158891eaf324b2cd4f485d1d4bbb6b5e`](https://github.com/graphile/crystal/commit/5cf3dc9d158891eaf324b2cd4f485d1d4bbb6b5e),
1056
+ [`925689578ee9def403382df70f0e003bb299c166`](https://github.com/graphile/crystal/commit/925689578ee9def403382df70f0e003bb299c166),
1057
+ [`83d3b533e702cc875b46ba2ca02bf3642b421be8`](https://github.com/graphile/crystal/commit/83d3b533e702cc875b46ba2ca02bf3642b421be8),
1058
+ [`7001138c38e09822ad13db1018c62d2cac37941e`](https://github.com/graphile/crystal/commit/7001138c38e09822ad13db1018c62d2cac37941e),
1059
+ [`e9e7e33665e22ec397e9ead054d2e4aad3eadc8c`](https://github.com/graphile/crystal/commit/e9e7e33665e22ec397e9ead054d2e4aad3eadc8c),
1060
+ [`bb6ec8d834e3e630e28316196246f514114a2296`](https://github.com/graphile/crystal/commit/bb6ec8d834e3e630e28316196246f514114a2296),
1061
+ [`3e188c2e981193d228ba3b7433f5e326336f629b`](https://github.com/graphile/crystal/commit/3e188c2e981193d228ba3b7433f5e326336f629b),
1062
+ [`07a5469e5d3d050a7bcab928bb751c9e150d2e49`](https://github.com/graphile/crystal/commit/07a5469e5d3d050a7bcab928bb751c9e150d2e49),
1063
+ [`e6da5d956ab696932410e7172cedfacba71dbf5e`](https://github.com/graphile/crystal/commit/e6da5d956ab696932410e7172cedfacba71dbf5e),
1064
+ [`2b1918d053f590cdc534c8cb81f7e74e96c1bbe6`](https://github.com/graphile/crystal/commit/2b1918d053f590cdc534c8cb81f7e74e96c1bbe6),
1065
+ [`037a1bcdc8ed8493d4748e08c18f258e4382a815`](https://github.com/graphile/crystal/commit/037a1bcdc8ed8493d4748e08c18f258e4382a815),
1066
+ [`72b300b436a7acedaa7d0e3a7a5458d15a0e5396`](https://github.com/graphile/crystal/commit/72b300b436a7acedaa7d0e3a7a5458d15a0e5396),
1067
+ [`770363214ee630746cddc9080dec22bbf38a3bb5`](https://github.com/graphile/crystal/commit/770363214ee630746cddc9080dec22bbf38a3bb5),
1068
+ [`d1ecb39693a341f85762b27012ec4ea013857b0c`](https://github.com/graphile/crystal/commit/d1ecb39693a341f85762b27012ec4ea013857b0c),
1069
+ [`042ebafe11fcf7e2ecac9b131265a55dddd42a6d`](https://github.com/graphile/crystal/commit/042ebafe11fcf7e2ecac9b131265a55dddd42a6d),
1070
+ [`fa005eb0783c58a2476add984fbdd462e0e91dbe`](https://github.com/graphile/crystal/commit/fa005eb0783c58a2476add984fbdd462e0e91dbe),
1071
+ [`7bb77961a38abea8a07980a3f47bc3ca22dac8f8`](https://github.com/graphile/crystal/commit/7bb77961a38abea8a07980a3f47bc3ca22dac8f8),
1072
+ [`df0e5a0f968cf6f9ae97b68745a9a2f391324bf5`](https://github.com/graphile/crystal/commit/df0e5a0f968cf6f9ae97b68745a9a2f391324bf5),
1073
+ [`ef4cf75acd80e6b9c700c2b5a7ace899e565ef7f`](https://github.com/graphile/crystal/commit/ef4cf75acd80e6b9c700c2b5a7ace899e565ef7f),
1074
+ [`ba2bfa15deaaddd92757a56c2b761624afe940bd`](https://github.com/graphile/crystal/commit/ba2bfa15deaaddd92757a56c2b761624afe940bd),
1075
+ [`c041fd250372c57601188b65a6411c8f440afab6`](https://github.com/graphile/crystal/commit/c041fd250372c57601188b65a6411c8f440afab6),
1076
+ [`629b45aab49151810f6efc18ac18f7d735626433`](https://github.com/graphile/crystal/commit/629b45aab49151810f6efc18ac18f7d735626433),
1077
+ [`6d19724330d50d076aab9442660fa8abddd095cb`](https://github.com/graphile/crystal/commit/6d19724330d50d076aab9442660fa8abddd095cb),
1078
+ [`ca5bc1a834df7b894088fb8602a12f9fcff55b38`](https://github.com/graphile/crystal/commit/ca5bc1a834df7b894088fb8602a12f9fcff55b38),
1079
+ [`da6f3c04efe3d8634c0bc3fcf93ac2518de85322`](https://github.com/graphile/crystal/commit/da6f3c04efe3d8634c0bc3fcf93ac2518de85322),
1080
+ [`8026b982a81776fb3d1d808392970c2d678c4023`](https://github.com/graphile/crystal/commit/8026b982a81776fb3d1d808392970c2d678c4023),
1081
+ [`d257a1a1e59a7d4da0bf67345c07b04c04a2f7da`](https://github.com/graphile/crystal/commit/d257a1a1e59a7d4da0bf67345c07b04c04a2f7da),
1082
+ [`00d79e6f5608affc3f36bb0ce4ca2547230174e7`](https://github.com/graphile/crystal/commit/00d79e6f5608affc3f36bb0ce4ca2547230174e7),
1083
+ [`412b92a0b1e03ad962521f630b57a996d8620cf6`](https://github.com/graphile/crystal/commit/412b92a0b1e03ad962521f630b57a996d8620cf6),
1084
+ [`15854c5109114919b3d38fa675c539cda1f634a1`](https://github.com/graphile/crystal/commit/15854c5109114919b3d38fa675c539cda1f634a1),
1085
+ [`f0bc64b71914dfdd3612f4b65370401fd85b97bc`](https://github.com/graphile/crystal/commit/f0bc64b71914dfdd3612f4b65370401fd85b97bc)]:
1086
+ - grafast@0.1.1-beta.21
1087
+ - @dataplan/pg@0.0.1-beta.32
1088
+ - pg-sql2@5.0.0-beta.8
1089
+ - graphile-build-pg@5.0.0-beta.38
1090
+ - graphile-utils@5.0.0-beta.38
1091
+ - graphile-build@5.0.0-beta.33
1092
+ - @dataplan/json@0.0.1-beta.30
1093
+ - graphile-config@0.0.1-beta.15
1094
+ - grafserv@0.1.1-beta.23
1095
+
1096
+ ## 5.0.0-beta.38
1097
+
1098
+ ### Patch Changes
1099
+
1100
+ - Updated dependencies
1101
+ [[`fc9d64eb8`](https://github.com/graphile/crystal/commit/fc9d64eb8002d3b72625bc505ed76c07f4296d68),
1102
+ [`a2dbad945`](https://github.com/graphile/crystal/commit/a2dbad9457195bec797d72e4e6d45f45278f9f69),
1103
+ [`31078842a`](https://github.com/graphile/crystal/commit/31078842ad0eeaa7111491fa9eb5e3bd026fb38a),
1104
+ [`5a0ec31de`](https://github.com/graphile/crystal/commit/5a0ec31deae91f1dd17a77a4bb7c1a911a27e26a)]:
1105
+ - @dataplan/pg@0.0.1-beta.31
1106
+ - grafast@0.1.1-beta.20
1107
+ - graphile-build-pg@5.0.0-beta.37
1108
+ - graphile-utils@5.0.0-beta.37
1109
+ - @dataplan/json@0.0.1-beta.29
1110
+ - grafserv@0.1.1-beta.22
1111
+ - graphile-build@5.0.0-beta.32
1112
+
1113
+ ## 5.0.0-beta.37
1114
+
1115
+ ### Patch Changes
1116
+
1117
+ - Updated dependencies
1118
+ [[`83c546509`](https://github.com/graphile/crystal/commit/83c546509d24be2955a56120981363ad3c3a5f3f)]:
1119
+ - graphile-config@0.0.1-beta.14
1120
+ - @dataplan/pg@0.0.1-beta.30
1121
+ - grafast@0.1.1-beta.19
1122
+ - grafserv@0.1.1-beta.21
1123
+ - graphile-build@5.0.0-beta.31
1124
+ - graphile-build-pg@5.0.0-beta.36
1125
+ - graphile-utils@5.0.0-beta.36
1126
+ - @dataplan/json@0.0.1-beta.28
1127
+
1128
+ ## 5.0.0-beta.36
1129
+
1130
+ ### Patch Changes
1131
+
1132
+ - [#2279](https://github.com/graphile/crystal/pull/2279)
1133
+ [`b336a5829`](https://github.com/graphile/crystal/commit/b336a58291cfec7aef884d3843172d408abfaf3c)
1134
+ Thanks [@benjie](https://github.com/benjie)! - Introduce step caching to
1135
+ reduce deduplication workload safely, thereby reducing planning time for many
1136
+ larger queries.
1137
+ - Updated dependencies
1138
+ [[`7580bc16a`](https://github.com/graphile/crystal/commit/7580bc16a050fd8d916c6dabe9d1ded980090349),
1139
+ [`b336a5829`](https://github.com/graphile/crystal/commit/b336a58291cfec7aef884d3843172d408abfaf3c)]:
1140
+ - graphile-config@0.0.1-beta.13
1141
+ - @dataplan/pg@0.0.1-beta.29
1142
+ - grafast@0.1.1-beta.18
1143
+ - grafserv@0.1.1-beta.20
1144
+ - graphile-build@5.0.0-beta.30
1145
+ - graphile-build-pg@5.0.0-beta.35
1146
+ - graphile-utils@5.0.0-beta.35
1147
+ - @dataplan/json@0.0.1-beta.27
1148
+
1149
+ ## 5.0.0-beta.35
1150
+
1151
+ ### Patch Changes
1152
+
1153
+ - [#2269](https://github.com/graphile/crystal/pull/2269)
1154
+ [`bee1db4f4`](https://github.com/graphile/crystal/commit/bee1db4f442502b62cb05cd0f7092990328497b8)
1155
+ Thanks [@benjie](https://github.com/benjie)! - Hotfix to inflection changes in
1156
+ beta.34 - fixes behavior of `orderByAttributeEnum` and removes V4 override of
1157
+ `_joinAttributeNames` which shouldn't be necessary (and seems to do more harm
1158
+ than good).
1159
+ - Updated dependencies
1160
+ [[`bee1db4f4`](https://github.com/graphile/crystal/commit/bee1db4f442502b62cb05cd0f7092990328497b8)]:
1161
+ - graphile-build-pg@5.0.0-beta.34
1162
+ - graphile-utils@5.0.0-beta.34
1163
+
1164
+ ## 5.0.0-beta.34
1165
+
1166
+ ### Patch Changes
1167
+
1168
+ - [#2251](https://github.com/graphile/crystal/pull/2251)
1169
+ [`555d65cce`](https://github.com/graphile/crystal/commit/555d65ccecb875f1e34cb40108176f0ddc11df64)
1170
+ Thanks [@benjie](https://github.com/benjie)! - We now enforce GraphQL name
1171
+ checks earlier and supply more information to better reveal where any invalid
1172
+ names are originating.
1173
+
1174
+ - [#2251](https://github.com/graphile/crystal/pull/2251)
1175
+ [`efa25d97d`](https://github.com/graphile/crystal/commit/efa25d97df2e00f13bc29806d396a8366a121031)
1176
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 **Inflection changes!** V4
1177
+ preset should be (mostly) unaffected, but Amber preset will likely have
1178
+ changes between `ID` and `ROW_ID` in various places, plus missing underscores
1179
+ may reappear/etc. Be sure to diff your schema before/after this update (as you
1180
+ should with every update... and to be honest, with everything else that
1181
+ changes your schema).
1182
+
1183
+ Normally `camelCase`/`upperCamelCase`/`constantCase`/etc are the final step
1184
+ before we name a field/type/enumValue/etc; however it turns out that some
1185
+ inflectors were using the camel-cased output as input to their own
1186
+ inflection - for example, when calculating the name of a relation it would
1187
+ take the column names _camel-cased_ and then combine them into a string which
1188
+ was then camel-cased again. Even worse, when these values are then used in an
1189
+ enum, it would then be _constant-cased_, so you end up with string 👉
1190
+ camel-case 👉 concatenate 👉 camel-case 👉 concatenate 👉 constant-case. This
1191
+ lead to certain edge cases where fields with numbers or underscores may come
1192
+ out in unexpected ways.
1193
+
1194
+ This release creates "raw" backing inflectors for a few things that remove the
1195
+ final step (camel-casing) so that later usage may choose to use the raw value
1196
+ rather than the camel-cased value. And due to this, we've also moved the `id`
1197
+ 👉 `rowId` tweaks from the `attribute()` inflector into the `_attributeName()`
1198
+ inflector - which is where most of the changes have come from. We've undone
1199
+ this change in the V4 preset, so if you don't use the V5 preset but need to
1200
+ undo this change, please check out the V4 overrides of:
1201
+ - [`_attributeName`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/presets/v4.ts#L135-L145)
1202
+ - [`_joinAttributeNames`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/plugins/PgV4InflectionPlugin.ts#L131-L138)
1203
+ - [`attribute`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/presets/v4.ts#L158-L169)
1204
+
1205
+ Note: the V4 preset is fairly stable, but the Amber preset is being constantly
1206
+ iterated to improve the OOTB V5 experience - it will only be stable once
1207
+ V5.0.0 is released.
1208
+
1209
+ - [#2252](https://github.com/graphile/crystal/pull/2252)
1210
+ [`d88b69d05`](https://github.com/graphile/crystal/commit/d88b69d0591601fb44b3e6e71b137b8235e70157)
1211
+ Thanks [@benjie](https://github.com/benjie)! - V4 preset now supports
1212
+ extendedErrors, showErrorStack and bodySizeLimit options.
1213
+
1214
+ - [#2257](https://github.com/graphile/crystal/pull/2257)
1215
+ [`2a37fb99a`](https://github.com/graphile/crystal/commit/2a37fb99a04784647dff6ab8c5bfffb072cc6e8a)
1216
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul how PostgreSQL arrays
1217
+ are handled, and fix the "empty arrays become null" bug caused by using
1218
+ `array_agg()`.
1219
+
1220
+ - [#2265](https://github.com/graphile/crystal/pull/2265)
1221
+ [`5d9f2de85`](https://github.com/graphile/crystal/commit/5d9f2de8519b216732b17464d0b326ec8d7c58de)
1222
+ Thanks [@benjie](https://github.com/benjie)! - Prevents inlining (via joins)
1223
+ child PgSelect queries into parents when the parent is relying on implicit
1224
+ ordering coming from a function or suitably flagged subquery.
1225
+ - Updated dependencies
1226
+ [[`555d65cce`](https://github.com/graphile/crystal/commit/555d65ccecb875f1e34cb40108176f0ddc11df64),
1227
+ [`866673e14`](https://github.com/graphile/crystal/commit/866673e14f7ad76b6f6d83d1b4e3a4eff8fdba37),
1228
+ [`69ab227b5`](https://github.com/graphile/crystal/commit/69ab227b5e1c057a6fc8ebba87bde80d5aa7f3c8),
1229
+ [`efa25d97d`](https://github.com/graphile/crystal/commit/efa25d97df2e00f13bc29806d396a8366a121031),
1230
+ [`9a0f9e78c`](https://github.com/graphile/crystal/commit/9a0f9e78c4ee46f50f49bb068baddef7e1de4119),
1231
+ [`d13b76f0f`](https://github.com/graphile/crystal/commit/d13b76f0fef2a58466ecb44880af62d25910e83e),
1232
+ [`b167bd849`](https://github.com/graphile/crystal/commit/b167bd8499be5866b71bac6594d55bd768fda1d0),
1233
+ [`a202145c5`](https://github.com/graphile/crystal/commit/a202145c5af3e5467424e6772d532c2db1eb67c6),
1234
+ [`7bf045282`](https://github.com/graphile/crystal/commit/7bf04528264c3b9c509f148253fed96d3394141d),
1235
+ [`2a37fb99a`](https://github.com/graphile/crystal/commit/2a37fb99a04784647dff6ab8c5bfffb072cc6e8a),
1236
+ [`5d9f2de85`](https://github.com/graphile/crystal/commit/5d9f2de8519b216732b17464d0b326ec8d7c58de),
1237
+ [`6a13ecbd4`](https://github.com/graphile/crystal/commit/6a13ecbd45534c39c846c1d8bc58242108426dd1),
1238
+ [`84f07626d`](https://github.com/graphile/crystal/commit/84f07626d9dd9e22f6ae6a1045053df046fbc4ea),
1239
+ [`86e228299`](https://github.com/graphile/crystal/commit/86e22829996a745dc1f8cbaf32e709b1bd346e79),
1240
+ [`933786868`](https://github.com/graphile/crystal/commit/9337868689f4f05ab5faf2d4bb18a8ad8e23e189),
1241
+ [`cba6ee06d`](https://github.com/graphile/crystal/commit/cba6ee06d38ec5ae4ef4dafa58569fad61f239ac)]:
1242
+ - graphile-build-pg@5.0.0-beta.33
1243
+ - graphile-build@5.0.0-beta.29
1244
+ - grafserv@0.1.1-beta.19
1245
+ - grafast@0.1.1-beta.17
1246
+ - graphile-config@0.0.1-beta.12
1247
+ - pg-sql2@5.0.0-beta.7
1248
+ - @dataplan/pg@0.0.1-beta.28
1249
+ - graphile-utils@5.0.0-beta.33
1250
+ - @dataplan/json@0.0.1-beta.26
1251
+
1252
+ ## 5.0.0-beta.33
1253
+
1254
+ ### Patch Changes
1255
+
1256
+ - [#2229](https://github.com/graphile/crystal/pull/2229)
1257
+ [`87bdf9730`](https://github.com/graphile/crystal/commit/87bdf973036a3801e44b22cfc9f0feb639de4aa9)
1258
+ Thanks [@benjie](https://github.com/benjie)! - Fixes bug handling optional
1259
+ arguments to computed column functions.
1260
+
1261
+ - [#2230](https://github.com/graphile/crystal/pull/2230)
1262
+ [`aa480f6a3`](https://github.com/graphile/crystal/commit/aa480f6a3db8b545ff113e7a3a4b479be42a0eab)
1263
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug recognizing the
1264
+ required-ness of arguments to functions using `out` args or `returns table` -
1265
+ this particularly affects people using `pgStrictFunctions` and should result
1266
+ in a couple of required arguments becoming nullable.
1267
+ - Updated dependencies
1268
+ [[`87bdf9730`](https://github.com/graphile/crystal/commit/87bdf973036a3801e44b22cfc9f0feb639de4aa9),
1269
+ [`5626c7d36`](https://github.com/graphile/crystal/commit/5626c7d3649285e11fe9857dfa319d2883d027eb),
1270
+ [`bf2a2e72a`](https://github.com/graphile/crystal/commit/bf2a2e72ab78a01f5aba6cda97b5a125563b1f3d),
1271
+ [`76c7340b7`](https://github.com/graphile/crystal/commit/76c7340b74d257c454beec883384d19ef078b21e),
1272
+ [`aa480f6a3`](https://github.com/graphile/crystal/commit/aa480f6a3db8b545ff113e7a3a4b479be42a0eab)]:
1273
+ - graphile-build-pg@5.0.0-beta.32
1274
+ - graphile-config@0.0.1-beta.11
1275
+ - grafserv@0.1.1-beta.18
1276
+ - grafast@0.1.1-beta.16
1277
+ - graphile-utils@5.0.0-beta.32
1278
+ - @dataplan/pg@0.0.1-beta.27
1279
+ - graphile-build@5.0.0-beta.28
1280
+ - @dataplan/json@0.0.1-beta.25
1281
+
1282
+ ## 5.0.0-beta.32
1283
+
1284
+ ### Patch Changes
1285
+
1286
+ - Updated dependencies
1287
+ [[`632691409`](https://github.com/graphile/crystal/commit/6326914098af55f20ac85ccf3537e75910a7dafa)]:
1288
+ - graphile-build-pg@5.0.0-beta.31
1289
+ - graphile-build@5.0.0-beta.27
1290
+ - graphile-utils@5.0.0-beta.31
1291
+
1292
+ ## 5.0.0-beta.31
1293
+
1294
+ ### Patch Changes
1295
+
1296
+ - Updated dependencies
1297
+ [[`0b1f7b577`](https://github.com/graphile/crystal/commit/0b1f7b577114a49b8e3283823845ec6e37484240)]:
1298
+ - graphile-build-pg@5.0.0-beta.30
1299
+ - graphile-build@5.0.0-beta.26
1300
+ - graphile-utils@5.0.0-beta.30
1301
+
1302
+ ## 5.0.0-beta.30
1303
+
1304
+ ### Patch Changes
1305
+
1306
+ - [#2197](https://github.com/graphile/crystal/pull/2197)
1307
+ [`d7e6e714f`](https://github.com/graphile/crystal/commit/d7e6e714f0cc5656112703484298b77538b2dccc)
1308
+ Thanks [@benjie](https://github.com/benjie)! - Amber preset now supports
1309
+ `@resultFieldName` on mutation functions, like V4 preset does.
1310
+
1311
+ - [#2187](https://github.com/graphile/crystal/pull/2187)
1312
+ [`bb006ec7b`](https://github.com/graphile/crystal/commit/bb006ec7bdab24192c84f093ce3f92969aeb7279)
1313
+ Thanks [@benjie](https://github.com/benjie)! - Fix behavior inheritance
1314
+ especially around functions incorrectly inheriting from their underlying
1315
+ codecs, bugs in unlogged/temp table behavior, and incorrect skipping of
1316
+ generating table types. You may find after this change you have fields
1317
+ appearing in your schema that were not present before, typically these will
1318
+ represent database functions where you `@omit`'d the underlying table -
1319
+ omitting the table should not prevent a function from accessing it. Further,
1320
+ fix behavior of `@omit read` emulation to add
1321
+ `-connection -list -array -single`.
1322
+
1323
+ - [#2156](https://github.com/graphile/crystal/pull/2156)
1324
+ [`6fdc6cad8`](https://github.com/graphile/crystal/commit/6fdc6cad8f8d1230202df533d05cc2bd80538f09)
1325
+ Thanks [@benjie](https://github.com/benjie)! - Added `pgRegistry.pgExecutors`
1326
+ so executors don't need to be looked up from a resource (this causes
1327
+ confusion) - instead they can be referenced directly. By default there's one
1328
+ executor called `main`, i.e. `build.input.pgRegistry.pgExecutors.main`.
1329
+
1330
+ - [#2175](https://github.com/graphile/crystal/pull/2175)
1331
+ [`c69b2fdec`](https://github.com/graphile/crystal/commit/c69b2fdec2d73f1101440eb96fe126f9ad77db98)
1332
+ Thanks [@benjie](https://github.com/benjie)! - Fix 'Container is falsy' error
1333
+ message the latest Babel patch release would cause.
1334
+
1335
+ - [#2191](https://github.com/graphile/crystal/pull/2191)
1336
+ [`1eac03ec2`](https://github.com/graphile/crystal/commit/1eac03ec2e9da65c64b7754c04292f43da82c40b)
1337
+ Thanks [@benjie](https://github.com/benjie)! - Broaden types around
1338
+ `pgSelectSingleFromRecord`
1339
+
1340
+ - [#2158](https://github.com/graphile/crystal/pull/2158)
1341
+ [`dfac43992`](https://github.com/graphile/crystal/commit/dfac43992019b0b6c1d113d2490a87eb03d103d7)
1342
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 Amber preset no longer
1343
+ enables backward pagination options (`before`, `last`) on functions by
1344
+ default - add `+backwards` behavior to these functions to enable. If you're
1345
+ using the V4 preset you should be unaffected by this change because it enables
1346
+ `+backwards` by default.
1347
+
1348
+ - [#2160](https://github.com/graphile/crystal/pull/2160)
1349
+ [`426e9320e`](https://github.com/graphile/crystal/commit/426e9320e76ef95927eebb6fe4072050b6208771)
1350
+ Thanks [@benjie](https://github.com/benjie)! - Massive overhaul of the
1351
+ behavior system which now has a centralized registry of known behaviors and
1352
+ applies behaviors in a more careful and nuanced way, removing many hacks and
1353
+ workarounds, and ultimately meaning that `defaultBehavior: "-*"` should now
1354
+ operate correctly. Importantly, `addBehaviorToTags()` has been removed - you
1355
+ should use `plugin.schema.entityBehaviors` to indicate behaviors as shown in
1356
+ this PR - do not mod the tags directly unless they're explicitly meant to be
1357
+ overrides.
1358
+
1359
+ Technically this is a significant breaking change (besides the removal of the
1360
+ `addBehaviorToTags()` helper) because the order in which behaviors are applied
1361
+ has changed, and so a different behavior might ultimately "win". This shows up
1362
+ in places where there is ambiguity, for example if you add `@filterable` to a
1363
+ function that you don't have execute permissions on, that function will now
1364
+ show up in the schema since user overrides (smart tags) "win" versus inferred
1365
+ behaviors such as introspected permissions; this wasn't the case before.
1366
+ Hopefully most users will not notice any difference, and for those who do, the
1367
+ `graphile behavior debug` CLI may be able to help you figure out what's going
1368
+ on.
1369
+
1370
+ Be sure to print your schema before and after this update and look for
1371
+ changes; if there are changes then you likely need to fix the relevant
1372
+ behaviors/smart tags. (Hopefully there's no changes for you!)
1373
+
1374
+ You'll also need to change any places where you're specifying behaviors that
1375
+ will be type checked; you can either cast your existing strings e.g.
1376
+ `defaultBehavior: "+connection -list" as GraphileBuild.BehaviorString`, or
1377
+ preferably you can specify your behaviors as an array, which should give you
1378
+ auto-complete on each entry; e.g. `defaultBehavior: ["connection", "-list"]`.
1379
+
1380
+ - [#2188](https://github.com/graphile/crystal/pull/2188)
1381
+ [`282eb909f`](https://github.com/graphile/crystal/commit/282eb909f3e2dc74fb262714248d29056464fb1d)
1382
+ Thanks [@benjie](https://github.com/benjie)! - PostGraphile V4 preset now
1383
+ automatically includes the Amber preset on which it relies.
1384
+
1385
+ - [#2202](https://github.com/graphile/crystal/pull/2202)
1386
+ [`2efadc0f8`](https://github.com/graphile/crystal/commit/2efadc0f80c3a0c172fb94c770afecc5447e832b)
1387
+ Thanks [@benjie](https://github.com/benjie)! - Postgres v17 support
1388
+
1389
+ - [#2151](https://github.com/graphile/crystal/pull/2151)
1390
+ [`e8a9fd424`](https://github.com/graphile/crystal/commit/e8a9fd4243981b892364148eca1df66620ddeb87)
1391
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug preventing using
1392
+ certain steps as input to `resource.find({...})` and `resource.get({...})`.
1393
+
1394
+ - [#2188](https://github.com/graphile/crystal/pull/2188)
1395
+ [`cc0941731`](https://github.com/graphile/crystal/commit/cc0941731a1679bc04ce7b7fd4254009bb5f1f62)
1396
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul the way in which
1397
+ `graphile-config` presets work such that including a preset at two different
1398
+ layers shouldn't result in unexpected behavior.
1399
+
1400
+ - [#2157](https://github.com/graphile/crystal/pull/2157)
1401
+ [`50f6ce456`](https://github.com/graphile/crystal/commit/50f6ce456de3edd084869b54ee9f2eaf51a7fa0c)
1402
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 PostGraphile now ignores
1403
+ unlogged database tables by default.
1404
+
1405
+ - [#2190](https://github.com/graphile/crystal/pull/2190)
1406
+ [`b0865d169`](https://github.com/graphile/crystal/commit/b0865d1691105b5419009954c98c8109a27a5d81)
1407
+ Thanks [@benjie](https://github.com/benjie)! - Apply `assertNotAsync` and
1408
+ `assertNotPromise` in more places to detect plan resolvers returning promises.
1409
+
1410
+ - [#2199](https://github.com/graphile/crystal/pull/2199)
1411
+ [`3b09b414f`](https://github.com/graphile/crystal/commit/3b09b414ff43c34593373fa1f242481b0c7ada70)
1412
+ Thanks [@benjie](https://github.com/benjie)! - Database enum comments are now
1413
+ reflected in the schema.
1414
+
1415
+ - [#2196](https://github.com/graphile/crystal/pull/2196)
1416
+ [`b7b6dd64f`](https://github.com/graphile/crystal/commit/b7b6dd64fcc07f2ca15528fd39d61297d743dcc6)
1417
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `@notNull` on a volatile
1418
+ function now results in the field on the payload becoming non-null, not the
1419
+ mutation field itself.
1420
+
1421
+ - [#2155](https://github.com/graphile/crystal/pull/2155)
1422
+ [`8b472cd51`](https://github.com/graphile/crystal/commit/8b472cd51cd66d8227f9f2722d09c0a774792b0f)
1423
+ Thanks [@benjie](https://github.com/benjie)! - `disablePlugins` now supports
1424
+ TypeScript auto-completion of known plugin names. Other names are still
1425
+ accepted without error, so this is just a minor DX improvement rather than
1426
+ type safety.
1427
+
1428
+ - [#2198](https://github.com/graphile/crystal/pull/2198)
1429
+ [`ba637b56d`](https://github.com/graphile/crystal/commit/ba637b56d79a14f82fe555739921724eab0c07f7)
1430
+ Thanks [@benjie](https://github.com/benjie)! - Ensure that interface subtypes
1431
+ are added to schema even if not referenced directly.
1432
+ - Updated dependencies
1433
+ [[`d7e6e714f`](https://github.com/graphile/crystal/commit/d7e6e714f0cc5656112703484298b77538b2dccc),
1434
+ [`d5834def1`](https://github.com/graphile/crystal/commit/d5834def1fb84f3e2c0c0a6f146f8249a6df890a),
1435
+ [`bb006ec7b`](https://github.com/graphile/crystal/commit/bb006ec7bdab24192c84f093ce3f92969aeb7279),
1436
+ [`653929af0`](https://github.com/graphile/crystal/commit/653929af0a99a8a4d52b66e66c736be668b8700a),
1437
+ [`6fdc6cad8`](https://github.com/graphile/crystal/commit/6fdc6cad8f8d1230202df533d05cc2bd80538f09),
1438
+ [`42b982463`](https://github.com/graphile/crystal/commit/42b9824637a6c05e02935f2b05b5e8e0c61965a6),
1439
+ [`eb69c7361`](https://github.com/graphile/crystal/commit/eb69c7361fc7bf8c5b1ce342eeb698bd28c9e013),
1440
+ [`54054b873`](https://github.com/graphile/crystal/commit/54054b8733236ba7b2f2fa47d84e085f7196e3f9),
1441
+ [`884a4b429`](https://github.com/graphile/crystal/commit/884a4b4297af90fdadaf73addd524f1fbbcfdcce),
1442
+ [`0df171123`](https://github.com/graphile/crystal/commit/0df17112300a8ea391dfd220c5f05d362ceaa58a),
1443
+ [`1eac03ec2`](https://github.com/graphile/crystal/commit/1eac03ec2e9da65c64b7754c04292f43da82c40b),
1444
+ [`dfac43992`](https://github.com/graphile/crystal/commit/dfac43992019b0b6c1d113d2490a87eb03d103d7),
1445
+ [`38835313a`](https://github.com/graphile/crystal/commit/38835313ad93445206dccdd4cf07b90c5a6e4377),
1446
+ [`426e9320e`](https://github.com/graphile/crystal/commit/426e9320e76ef95927eebb6fe4072050b6208771),
1447
+ [`e8a9fd424`](https://github.com/graphile/crystal/commit/e8a9fd4243981b892364148eca1df66620ddeb87),
1448
+ [`cc0941731`](https://github.com/graphile/crystal/commit/cc0941731a1679bc04ce7b7fd4254009bb5f1f62),
1449
+ [`50f6ce456`](https://github.com/graphile/crystal/commit/50f6ce456de3edd084869b54ee9f2eaf51a7fa0c),
1450
+ [`b0865d169`](https://github.com/graphile/crystal/commit/b0865d1691105b5419009954c98c8109a27a5d81),
1451
+ [`3b09b414f`](https://github.com/graphile/crystal/commit/3b09b414ff43c34593373fa1f242481b0c7ada70),
1452
+ [`b7b6dd64f`](https://github.com/graphile/crystal/commit/b7b6dd64fcc07f2ca15528fd39d61297d743dcc6),
1453
+ [`8b472cd51`](https://github.com/graphile/crystal/commit/8b472cd51cd66d8227f9f2722d09c0a774792b0f),
1454
+ [`ba637b56d`](https://github.com/graphile/crystal/commit/ba637b56d79a14f82fe555739921724eab0c07f7),
1455
+ [`9cd9bb522`](https://github.com/graphile/crystal/commit/9cd9bb5222a9f0398ee4b8bfa4f741b6de2a2192)]:
1456
+ - graphile-build-pg@5.0.0-beta.29
1457
+ - grafast@0.1.1-beta.15
1458
+ - graphile-build@5.0.0-beta.25
1459
+ - @dataplan/pg@0.0.1-beta.26
1460
+ - graphile-config@0.0.1-beta.10
1461
+ - graphile-utils@5.0.0-beta.29
1462
+ - @dataplan/json@0.0.1-beta.24
1463
+ - grafserv@0.1.1-beta.17
1464
+
1465
+ ## 5.0.0-beta.29
1466
+
1467
+ ### Patch Changes
1468
+
1469
+ - [#2149](https://github.com/graphile/crystal/pull/2149)
1470
+ [`52ef49ca9`](https://github.com/graphile/crystal/commit/52ef49ca9357e63d0aa5c06ac089bf57ee991c73)
1471
+ Thanks [@benjie](https://github.com/benjie)! - Fixed a bug in 'relational'
1472
+ polymorphism where relations to each of the concrete types would
1473
+ non-sensically be added to each of the concrete types.
1474
+ - Updated dependencies
1475
+ [[`52ef49ca9`](https://github.com/graphile/crystal/commit/52ef49ca9357e63d0aa5c06ac089bf57ee991c73),
1476
+ [`82ce02cd9`](https://github.com/graphile/crystal/commit/82ce02cd93df3df3c9570c3528483c4f720ff9bb),
1477
+ [`871d32b2a`](https://github.com/graphile/crystal/commit/871d32b2a18df0d257880fc54a61d9e68c4607d6),
1478
+ [`e8a0c4441`](https://github.com/graphile/crystal/commit/e8a0c4441cd04402974cd0af6b80816c9cda91e7),
1479
+ [`d9d07b97b`](https://github.com/graphile/crystal/commit/d9d07b97b41c928033b9a920931ae0ccccf88e82),
1480
+ [`a26e3a30c`](https://github.com/graphile/crystal/commit/a26e3a30c02f963f8f5e9c9d021e871f33689e1b),
1481
+ [`eca7e62e2`](https://github.com/graphile/crystal/commit/eca7e62e2a09af77f4f166a281dab81d009d9ec1),
1482
+ [`02c11a4d4`](https://github.com/graphile/crystal/commit/02c11a4d42bf434dffc9354b300e8d791c4eeb2d)]:
1483
+ - graphile-build-pg@5.0.0-beta.28
1484
+ - @dataplan/pg@0.0.1-beta.25
1485
+ - grafast@0.1.1-beta.14
1486
+ - graphile-build@5.0.0-beta.24
1487
+ - graphile-utils@5.0.0-beta.28
1488
+ - @dataplan/json@0.0.1-beta.23
1489
+ - grafserv@0.1.1-beta.16
1490
+
1491
+ ## 5.0.0-beta.28
1492
+
1493
+ ### Patch Changes
1494
+
1495
+ - Updated dependencies
1496
+ [[`807650035`](https://github.com/graphile/crystal/commit/8076500354a3e2bc2de1b6c4e947bd710cc5bddc)]:
1497
+ - @dataplan/pg@0.0.1-beta.24
1498
+ - grafast@0.1.1-beta.13
1499
+ - graphile-build-pg@5.0.0-beta.27
1500
+ - graphile-utils@5.0.0-beta.27
1501
+ - @dataplan/json@0.0.1-beta.22
1502
+ - grafserv@0.1.1-beta.15
1503
+ - graphile-build@5.0.0-beta.23
1504
+
1505
+ ## 5.0.0-beta.27
1506
+
1507
+ ### Patch Changes
1508
+
1509
+ - [#2129](https://github.com/graphile/crystal/pull/2129)
1510
+ [`1f67999eb`](https://github.com/graphile/crystal/commit/1f67999eb11435562ca76e8e7349aaadc28390f6)
1511
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in orderBy planning
1512
+ that caused a new plan to be required for every request.
1513
+
1514
+ - [#2121](https://github.com/graphile/crystal/pull/2121)
1515
+ [`8bdc553b7`](https://github.com/graphile/crystal/commit/8bdc553b79aae21a27d22a4e1f1e57ee2e5d1d3f)
1516
+ Thanks [@benjie](https://github.com/benjie)! - Add support for accepting
1517
+ poolConfig via makePgService
1518
+
1519
+ - [#2128](https://github.com/graphile/crystal/pull/2128)
1520
+ [`4e102b1a1`](https://github.com/graphile/crystal/commit/4e102b1a1cd232e6f6703df0706415f01831dab2)
1521
+ Thanks [@adamni21](https://github.com/adamni21)! - Reduce planning cost of
1522
+ large input object trees by evaluating keys up front (thanks to @adamni21).
1523
+
1524
+ - [#1985](https://github.com/graphile/crystal/pull/1985)
1525
+ [`d6102714e`](https://github.com/graphile/crystal/commit/d6102714e4fec35952784c988c1617c789eee0cd)
1526
+ Thanks [@hannesj](https://github.com/hannesj)! - 🚨 PostgreSQL adaptor is no
1527
+ longer loaded via string value; instead you must pass the adaptor instance
1528
+ directly. If you have `adaptor: "@dataplan/pg/adaptors/pg"` then replace it
1529
+ with `adaptor: await import("@dataplan/pg/adaptors/pg")`. (This shouldn't
1530
+ cause you issues because you _should_ be using `makePgService` to construct
1531
+ your `pgServices` rather than building raw objects.)
1532
+
1533
+ 🚨 If you've implemented a custom PgAdaptor, talk to Benjie about how to port
1534
+ it. (Should be straightforward, but no point me figuring it out if no-one has
1535
+ done it yet 🤷)
1536
+
1537
+ This change improves bundle-ability by reducing the number of dynamic imports.
1538
+
1539
+ Also: `PgAdaptorOptions` has been renamed to `PgAdaptorSettings`, so please do
1540
+ a global find and replace for that.
1541
+
1542
+ - [#2094](https://github.com/graphile/crystal/pull/2094)
1543
+ [`c0e50a1b4`](https://github.com/graphile/crystal/commit/c0e50a1b4f1c95bfcafb5458dce0d5e56852d7d0)
1544
+ Thanks [@benjie](https://github.com/benjie)! - makeWrapPlansPlugin more likely
1545
+ to be exportable.
1546
+
1547
+ - Updated dependencies
1548
+ [[`1f67999eb`](https://github.com/graphile/crystal/commit/1f67999eb11435562ca76e8e7349aaadc28390f6),
1549
+ [`1bd50b61e`](https://github.com/graphile/crystal/commit/1bd50b61ebb10b7d09b3612c2e2767c41cca3b78),
1550
+ [`8bdc553b7`](https://github.com/graphile/crystal/commit/8bdc553b79aae21a27d22a4e1f1e57ee2e5d1d3f),
1551
+ [`61f8bbca5`](https://github.com/graphile/crystal/commit/61f8bbca5badda5b27872e0ee01a2d4c1372210d),
1552
+ [`4e102b1a1`](https://github.com/graphile/crystal/commit/4e102b1a1cd232e6f6703df0706415f01831dab2),
1553
+ [`1cabbd311`](https://github.com/graphile/crystal/commit/1cabbd311bdefd7ce78f8dacbf61a42237a6c73c),
1554
+ [`7bb1573ba`](https://github.com/graphile/crystal/commit/7bb1573ba45a4d8b7fa9ad53cdd79686d2641383),
1555
+ [`590b6fdf5`](https://github.com/graphile/crystal/commit/590b6fdf5d04a392c4cc9e8bdad83278377c547b),
1556
+ [`18addb385`](https://github.com/graphile/crystal/commit/18addb3852525aa91019a36d58fa2fecd8b5b443),
1557
+ [`d6102714e`](https://github.com/graphile/crystal/commit/d6102714e4fec35952784c988c1617c789eee0cd),
1558
+ [`6ed615e55`](https://github.com/graphile/crystal/commit/6ed615e557b2ab1fb57f1e68c06730a8e3da7175),
1559
+ [`b25cc539c`](https://github.com/graphile/crystal/commit/b25cc539c00aeda7a943c37509aaae4dc7812317),
1560
+ [`867f33136`](https://github.com/graphile/crystal/commit/867f331365346fc46ed1e0d23c79719846e398f4),
1561
+ [`925123497`](https://github.com/graphile/crystal/commit/925123497cf17b5e145ab80f62fa9de768a977ae),
1562
+ [`cf535c210`](https://github.com/graphile/crystal/commit/cf535c21078da06c14dd12f30e9b4378da4ded03),
1563
+ [`c0e50a1b4`](https://github.com/graphile/crystal/commit/c0e50a1b4f1c95bfcafb5458dce0d5e56852d7d0),
1564
+ [`acf99b190`](https://github.com/graphile/crystal/commit/acf99b190954e3c5926e820daed68dfe8eb3ee1f),
1565
+ [`4967a197f`](https://github.com/graphile/crystal/commit/4967a197fd2c71ee2a581fe29470ee9f30e74de5),
1566
+ [`1908e1ba1`](https://github.com/graphile/crystal/commit/1908e1ba11883a34dac66f985fc20ab160e572b1),
1567
+ [`084d80be6`](https://github.com/graphile/crystal/commit/084d80be6e17187c9a9932bcf079e3f460368782),
1568
+ [`aa0474755`](https://github.com/graphile/crystal/commit/aa0474755142a758fc58c5c1a30b8c754bc84e7c)]:
1569
+ - graphile-build-pg@5.0.0-beta.26
1570
+ - grafast@0.1.1-beta.12
1571
+ - @dataplan/pg@0.0.1-beta.23
1572
+ - grafserv@0.1.1-beta.14
1573
+ - graphile-utils@5.0.0-beta.26
1574
+ - @dataplan/json@0.0.1-beta.21
1575
+ - graphile-build@5.0.0-beta.22
1576
+
1577
+ ## 5.0.0-beta.26
1578
+
1579
+ ### Patch Changes
1580
+
1581
+ - [#2071](https://github.com/graphile/crystal/pull/2071)
1582
+ [`582bd768f`](https://github.com/graphile/crystal/commit/582bd768fec403ce3284f293b85b9fd86e4d3f40)
1583
+ Thanks [@benjie](https://github.com/benjie)! - `GrafastExecutionArgs` now
1584
+ accepts `resolvedPreset` and `requestContext` directly; passing these through
1585
+ additional arguments is now deprecated and support will be removed in a future
1586
+ revision. This affects:
1587
+ - `grafast()`
1588
+ - `execute()`
1589
+ - `subscribe()`
1590
+ - `hookArgs()`
1591
+
1592
+ `graphile-config` has gained a middleware system which is more powerful than
1593
+ it's AsyncHooks system. Old hooks can be emulated through the middleware
1594
+ system safely since middleware is a superset of hooks' capabilities.
1595
+ `applyHooks` has been renamed to `orderedApply` (because it applies to more
1596
+ than just hooks), calling `applyHooks` will still work but is deprecated.
1597
+
1598
+ 🚨 `grafast` no longer automatically reads your `graphile.config.ts` or
1599
+ similar; you must do that yourself and pass the `resolvedPreset` to grafast
1600
+ via the `args`. This is to aid in bundling of grafast since it should not need
1601
+ to read from filesystem or dynamically load modules.
1602
+
1603
+ `grafast` no longer outputs performance warning when you set
1604
+ `GRAPHILE_ENV=development`.
1605
+
1606
+ 🚨 `plugin.grafast.hooks.args` is now `plugin.grafast.middleware.prepareArgs`,
1607
+ and the signature has changed - you must be sure to call the `next()` function
1608
+ and ctx/resolvedPreset can be extracted directly from `args`:
1609
+
1610
+ ```diff
1611
+ const plugin = {
1612
+ grafast: {
1613
+ - hooks: {
1614
+ + middleware: {
1615
+ - args({ args, ctx, resolvedPreset }) {
1616
+ + prepareArgs(next, { args }) {
1617
+ + const { requestContext: ctx, resolvedPreset } = args;
1618
+ // ...
1619
+ + return next();
1620
+ }
1621
+ }
1622
+ }
1623
+ }
1624
+ ```
1625
+
1626
+ Many more middleware have been added; use TypeScript's autocomplete to see
1627
+ what's available until we have proper documentation for them.
1628
+
1629
+ `plugin.grafserv.hooks.*` are still supported but deprecated; instead use
1630
+ middleware `plugin.grafserv.middleware.*` (note that call signatures have
1631
+ changed slightly, similar to the diff above):
1632
+ - `hooks.init` -> `middleware.setPreset`
1633
+ - `hooks.processGraphQLRequestBody` -> `middleware.processGraphQLRequestBody`
1634
+ - `hooks.ruruHTMLParts` -> `middleware.ruruHTMLParts`
1635
+
1636
+ A few TypeScript types related to Hooks have been renamed, but their old names
1637
+ are still available, just deprecated. They will be removed in a future update:
1638
+ - `HookObject` -> `FunctionalityObject`
1639
+ - `PluginHook` -> `CallbackOrDescriptor`
1640
+ - `PluginHookObject` -> `CallbackDescriptor`
1641
+ - `PluginHookCallback` -> `UnwrapCallback`
1642
+
1643
+ - Updated dependencies
1644
+ [[`582bd768f`](https://github.com/graphile/crystal/commit/582bd768fec403ce3284f293b85b9fd86e4d3f40)]:
1645
+ - graphile-build@5.0.0-beta.21
1646
+ - graphile-config@0.0.1-beta.9
1647
+ - @dataplan/pg@0.0.1-beta.22
1648
+ - grafserv@0.1.1-beta.13
1649
+ - grafast@0.1.1-beta.11
1650
+ - graphile-build-pg@5.0.0-beta.25
1651
+ - graphile-utils@5.0.0-beta.25
1652
+ - @dataplan/json@0.0.1-beta.20
1653
+
1654
+ ## 5.0.0-beta.25
1655
+
1656
+ ### Patch Changes
1657
+
1658
+ - Updated dependencies
1659
+ [[`3c161f7e1`](https://github.com/graphile/crystal/commit/3c161f7e13375105b1035a7d5d1c0f2b507ca5c7),
1660
+ [`a674a9923`](https://github.com/graphile/crystal/commit/a674a9923bc908c9315afa40e0cb256ee0953d16),
1661
+ [`b7cfeffd1`](https://github.com/graphile/crystal/commit/b7cfeffd1019d61c713a5054c4f5929960a2a6ab)]:
1662
+ - grafast@0.1.1-beta.10
1663
+ - @dataplan/json@0.0.1-beta.19
1664
+ - @dataplan/pg@0.0.1-beta.21
1665
+ - grafserv@0.1.1-beta.12
1666
+ - graphile-build@5.0.0-beta.20
1667
+ - graphile-build-pg@5.0.0-beta.24
1668
+ - graphile-utils@5.0.0-beta.24
1669
+
1670
+ ## 5.0.0-beta.24
1671
+
1672
+ ### Patch Changes
1673
+
1674
+ - [#2064](https://github.com/graphile/crystal/pull/2064)
1675
+ [`437570f97`](https://github.com/graphile/crystal/commit/437570f97e8520afaf3d0d0b514d1f4c31546b76)
1676
+ Thanks [@benjie](https://github.com/benjie)! - Fix a bug relating to Global
1677
+ Object Identifiers (specifically in update mutations, but probably elsewhere
1678
+ too) related to early exit.
1679
+ - Updated dependencies
1680
+ [[`437570f97`](https://github.com/graphile/crystal/commit/437570f97e8520afaf3d0d0b514d1f4c31546b76)]:
1681
+ - graphile-build-pg@5.0.0-beta.23
1682
+ - grafast@0.1.1-beta.9
1683
+ - graphile-utils@5.0.0-beta.23
1684
+ - @dataplan/json@0.0.1-beta.18
1685
+ - @dataplan/pg@0.0.1-beta.20
1686
+ - grafserv@0.1.1-beta.11
1687
+ - graphile-build@5.0.0-beta.19
1688
+
1689
+ ## 5.0.0-beta.23
1690
+
1691
+ ### Patch Changes
1692
+
1693
+ - [#2056](https://github.com/graphile/crystal/pull/2056)
1694
+ [`1842af661`](https://github.com/graphile/crystal/commit/1842af661950d5f962b65f6362a45a3b9c8f15e8)
1695
+ Thanks [@benjie](https://github.com/benjie)! - Improve exporting of resource
1696
+ options (neater export code)
1697
+
1698
+ - Updated dependencies
1699
+ [[`1842af661`](https://github.com/graphile/crystal/commit/1842af661950d5f962b65f6362a45a3b9c8f15e8),
1700
+ [`bd5a908a4`](https://github.com/graphile/crystal/commit/bd5a908a4d04310f90dfb46ad87398ffa993af3b)]:
1701
+ - graphile-build-pg@5.0.0-beta.22
1702
+ - graphile-build@5.0.0-beta.18
1703
+ - grafast@0.1.1-beta.8
1704
+ - graphile-utils@5.0.0-beta.22
1705
+ - @dataplan/json@0.0.1-beta.17
1706
+ - @dataplan/pg@0.0.1-beta.19
1707
+ - grafserv@0.1.1-beta.10
1708
+
1709
+ ## 5.0.0-beta.22
1710
+
1711
+ ### Patch Changes
1712
+
1713
+ - [#2015](https://github.com/graphile/crystal/pull/2015)
1714
+ [`5eca6d65a`](https://github.com/graphile/crystal/commit/5eca6d65a816bac3d0ceaa6cafa7df1a79c2be47)
1715
+ Thanks [@benjie](https://github.com/benjie)! - Use `inhibitOnNull` when
1716
+ decoding a spec ID to prevent it being consumed if invalid (e.g. don't allow
1717
+ using a 'Post' node ID to fetch a 'Person' record).
1718
+
1719
+ - [#1994](https://github.com/graphile/crystal/pull/1994)
1720
+ [`ab08cbf9c`](https://github.com/graphile/crystal/commit/ab08cbf9c504c3cc22495a99a965e7634c18a6a3)
1721
+ Thanks [@benjie](https://github.com/benjie)! - Introduce
1722
+ `interface SQLable {[$toSQL](): SQL}` to `pg-sql2` and use it to simplify SQL
1723
+ fragments in various places.
1724
+
1725
+ - [#1978](https://github.com/graphile/crystal/pull/1978)
1726
+ [`a287a57c2`](https://github.com/graphile/crystal/commit/a287a57c2765da0fb6a132ea0953f64453210ceb)
1727
+ Thanks [@benjie](https://github.com/benjie)! - Breaking: `connection()` step
1728
+ now accepts configuration object in place of 2nd argument onwards:
1729
+
1730
+ ```diff
1731
+ -return connection($list, nodePlan, cursorPlan);
1732
+ +return connection($list, { nodePlan, cursorPlan });
1733
+ ```
1734
+
1735
+ Feature: `edgeDataPlan` can be specified as part of this configuration object,
1736
+ allowing you to associate edge data with your connection edges:
1737
+
1738
+ ```ts
1739
+ return connection($list, {
1740
+ edgeDataPlan($item) {
1741
+ return object({ item: $item, otherThing: $otherThing });
1742
+ },
1743
+ });
1744
+
1745
+ // ...
1746
+
1747
+ const plans = {
1748
+ FooEdge: {
1749
+ otherThing($edge) {
1750
+ return $edge.data().get("otherThing");
1751
+ },
1752
+ },
1753
+ };
1754
+ ```
1755
+
1756
+ Feature: `ConnectionStep` and `EdgeStep` gain `get()` methods, so
1757
+ `*Connection.edges`, `*Connection.nodes`, `*Connection.pageInfo`, `*Edge.node`
1758
+ and `*Edge.cursor` no longer need plans to be defined.
1759
+
1760
+ - [#2006](https://github.com/graphile/crystal/pull/2006)
1761
+ [`7ad35fe4d`](https://github.com/graphile/crystal/commit/7ad35fe4d9b20f6ec82dc95c362390a87e25b42c)
1762
+ Thanks [@benjie](https://github.com/benjie)! - When replacing inflectors via
1763
+ `plugin.inflection.replace.<inflector_name>` the first argument is the
1764
+ previous inflector (or null). Previously this was typed including the
1765
+ `this: Inflection` argument which meant to appease TypeScript you needed to do
1766
+ `previous.call(this, arg1, arg2)`, but this was never necessary in JS. This is
1767
+ now fixed, and you can now issue `previous(arg1, arg2)` from TypeScript
1768
+ without error.
1769
+
1770
+ - [#2050](https://github.com/graphile/crystal/pull/2050)
1771
+ [`272608c13`](https://github.com/graphile/crystal/commit/272608c135e4ef0f76b8b5a9f764494a3f3ad779)
1772
+ Thanks [@benjie](https://github.com/benjie)! - Add missing EXPORTABLE (and
1773
+ remove excessive EXPORTABLE) to fix schema exports.
1774
+
1775
+ - [#1995](https://github.com/graphile/crystal/pull/1995)
1776
+ [`e0d69e518`](https://github.com/graphile/crystal/commit/e0d69e518a98c70f9b90f59d243ce33978c1b5a1)
1777
+ Thanks [@benjie](https://github.com/benjie)! - Refactoring of unary logic.
1778
+
1779
+ - [#2048](https://github.com/graphile/crystal/pull/2048)
1780
+ [`db8ceed0f`](https://github.com/graphile/crystal/commit/db8ceed0f17923eb78ff09c9f3f28800a5c7e3b6)
1781
+ Thanks [@benjie](https://github.com/benjie)! - Help detect more invalid
1782
+ presets and plugins (bad imports) by forbidding keys starting with a capital
1783
+ or the key `default`.
1784
+
1785
+ - [#2046](https://github.com/graphile/crystal/pull/2046)
1786
+ [`966203504`](https://github.com/graphile/crystal/commit/96620350467ab8c65b56adf2f055e19450f8e772)
1787
+ Thanks [@benjie](https://github.com/benjie)! - Envelop peer dependency
1788
+ upgraded to V5
1789
+
1790
+ - [#1973](https://github.com/graphile/crystal/pull/1973)
1791
+ [`a0e82b9c5`](https://github.com/graphile/crystal/commit/a0e82b9c5f4e585f1af1e147299cd07944ece6f8)
1792
+ Thanks [@benjie](https://github.com/benjie)! - Add 'unary steps' concept to
1793
+ codebase and refactor to using new executeV2 execution method which leverages
1794
+ them. Backwards compatibility maintained, but users should move to executeV2.
1795
+
1796
+ - [#1989](https://github.com/graphile/crystal/pull/1989)
1797
+ [`c48d3da7f`](https://github.com/graphile/crystal/commit/c48d3da7fe4fac2562fab5f085d252a0bfb6f0b6)
1798
+ Thanks [@benjie](https://github.com/benjie)! - Make it so that more pgSelect
1799
+ queries optimize themselves into parent queries via new step.canAddDependency
1800
+ helper.
1801
+
1802
+ - [#2006](https://github.com/graphile/crystal/pull/2006)
1803
+ [`bee0a0a68`](https://github.com/graphile/crystal/commit/bee0a0a68d48816f84b1a7f5ec69bd6069211426)
1804
+ Thanks [@benjie](https://github.com/benjie)! - Adopt improved inflection
1805
+ typings.
1806
+
1807
+ - [#2019](https://github.com/graphile/crystal/pull/2019)
1808
+ [`51a94417f`](https://github.com/graphile/crystal/commit/51a94417fb62b54d309be184f4be479bc267c2b7)
1809
+ Thanks [@benjie](https://github.com/benjie)! - Now possible to filter by relay
1810
+ node identifiers without weird results if you pass an incompatible node id
1811
+ (e.g. a 'Post' ID where a 'User' ID was expected) - significantly improves the
1812
+ Relay preset.
1813
+
1814
+ - [#1988](https://github.com/graphile/crystal/pull/1988)
1815
+ [`81d17460c`](https://github.com/graphile/crystal/commit/81d17460ced08608814635779c5cf997c19c101d)
1816
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue with record types
1817
+ when attributes need to be cast; this previously caused errors with computed
1818
+ columns when passed particular arguments.
1819
+ - Updated dependencies
1820
+ [[`357d475f5`](https://github.com/graphile/crystal/commit/357d475f54fecc8c51892e0346d6872b34132430),
1821
+ [`30bcd6c12`](https://github.com/graphile/crystal/commit/30bcd6c12e59f878617ea987c35a2f589ce05cb8),
1822
+ [`3551725e7`](https://github.com/graphile/crystal/commit/3551725e71c3ed876554e19e5ab2c1dcb0fb1143),
1823
+ [`80836471e`](https://github.com/graphile/crystal/commit/80836471e5cedb29dee63bc5002550c4f1713cfd),
1824
+ [`b788dd868`](https://github.com/graphile/crystal/commit/b788dd86849e703cc3aa863fd9190c36a087b865),
1825
+ [`5eca6d65a`](https://github.com/graphile/crystal/commit/5eca6d65a816bac3d0ceaa6cafa7df1a79c2be47),
1826
+ [`a5c20fefb`](https://github.com/graphile/crystal/commit/a5c20fefb571dea6d1187515dc48dd547e9e6204),
1827
+ [`1ce08980e`](https://github.com/graphile/crystal/commit/1ce08980e2a52ed9bc81564d248c19648ecd3616),
1828
+ [`ab08cbf9c`](https://github.com/graphile/crystal/commit/ab08cbf9c504c3cc22495a99a965e7634c18a6a3),
1829
+ [`dff4f2535`](https://github.com/graphile/crystal/commit/dff4f2535ac6ce893089b312fcd5fffcd98573a5),
1830
+ [`a287a57c2`](https://github.com/graphile/crystal/commit/a287a57c2765da0fb6a132ea0953f64453210ceb),
1831
+ [`45e10950b`](https://github.com/graphile/crystal/commit/45e10950b533f97cdd986e5442e2e160a8e431a2),
1832
+ [`2fe56f9a6`](https://github.com/graphile/crystal/commit/2fe56f9a6dac03484ace45c29c2223a65f9ca1db),
1833
+ [`fed603d71`](https://github.com/graphile/crystal/commit/fed603d719c02f33e12190f925c9e3b06c581fac),
1834
+ [`ed6e0d278`](https://github.com/graphile/crystal/commit/ed6e0d2788217a1c419634837f4208013eaf2923),
1835
+ [`86168b740`](https://github.com/graphile/crystal/commit/86168b740510aef17bde7ae21f1d0eebb0c5c9b3),
1836
+ [`7ad35fe4d`](https://github.com/graphile/crystal/commit/7ad35fe4d9b20f6ec82dc95c362390a87e25b42c),
1837
+ [`e82e4911e`](https://github.com/graphile/crystal/commit/e82e4911e32138df1b90ec0fde555ea963018d21),
1838
+ [`94a05064e`](https://github.com/graphile/crystal/commit/94a05064ea05108685ff71174a9f871ab5b4c147),
1839
+ [`272608c13`](https://github.com/graphile/crystal/commit/272608c135e4ef0f76b8b5a9f764494a3f3ad779),
1840
+ [`42ece5aa6`](https://github.com/graphile/crystal/commit/42ece5aa6ca05345ebc17fb5c7d55df3b79b7612),
1841
+ [`e0d69e518`](https://github.com/graphile/crystal/commit/e0d69e518a98c70f9b90f59d243ce33978c1b5a1),
1842
+ [`e22cb4dfa`](https://github.com/graphile/crystal/commit/e22cb4dfa94b60d1b99c374e8c28943373bd8496),
1843
+ [`db8ceed0f`](https://github.com/graphile/crystal/commit/db8ceed0f17923eb78ff09c9f3f28800a5c7e3b6),
1844
+ [`a5a0816bd`](https://github.com/graphile/crystal/commit/a5a0816bddc85a841770202db57457ff13137852),
1845
+ [`6699388ec`](https://github.com/graphile/crystal/commit/6699388ec167d35c71220ce5d9113cac578da6cb),
1846
+ [`966203504`](https://github.com/graphile/crystal/commit/96620350467ab8c65b56adf2f055e19450f8e772),
1847
+ [`c1645b249`](https://github.com/graphile/crystal/commit/c1645b249aae949a548cd916e536ccfb63e5ab35),
1848
+ [`ed8bbaa3c`](https://github.com/graphile/crystal/commit/ed8bbaa3cd1563a7601ca8c6b0412633b0ea4ce9),
1849
+ [`a0e82b9c5`](https://github.com/graphile/crystal/commit/a0e82b9c5f4e585f1af1e147299cd07944ece6f8),
1850
+ [`14e2412ee`](https://github.com/graphile/crystal/commit/14e2412ee368e8d53abf6774c7f0069f32d4e8a3),
1851
+ [`c48d3da7f`](https://github.com/graphile/crystal/commit/c48d3da7fe4fac2562fab5f085d252a0bfb6f0b6),
1852
+ [`57ab0e1e7`](https://github.com/graphile/crystal/commit/57ab0e1e72c01213b21d3efc539cd655d83d993a),
1853
+ [`8442242e4`](https://github.com/graphile/crystal/commit/8442242e43cac7d89ca0c413cf42c9fabf6f247f),
1854
+ [`bee0a0a68`](https://github.com/graphile/crystal/commit/bee0a0a68d48816f84b1a7f5ec69bd6069211426),
1855
+ [`51a94417f`](https://github.com/graphile/crystal/commit/51a94417fb62b54d309be184f4be479bc267c2b7),
1856
+ [`64ce7b765`](https://github.com/graphile/crystal/commit/64ce7b7650530251aec38a51089da66f914c19b4),
1857
+ [`cba842357`](https://github.com/graphile/crystal/commit/cba84235786acbd77ade53bae7a3fba4a9be1eb7),
1858
+ [`2fa77d0f2`](https://github.com/graphile/crystal/commit/2fa77d0f237cdb98d3dafb6b5e4083a2c6c38673),
1859
+ [`81d17460c`](https://github.com/graphile/crystal/commit/81d17460ced08608814635779c5cf997c19c101d)]:
1860
+ - @dataplan/json@0.0.1-beta.16
1861
+ - @dataplan/pg@0.0.1-beta.18
1862
+ - grafast@0.1.1-beta.7
1863
+ - tamedevil@0.0.0-beta.7
1864
+ - graphile-build-pg@5.0.0-beta.21
1865
+ - pg-sql2@5.0.0-beta.6
1866
+ - graphile-build@5.0.0-beta.17
1867
+ - graphile-utils@5.0.0-beta.21
1868
+ - graphile-config@0.0.1-beta.8
1869
+ - grafserv@0.1.1-beta.9
1870
+
1871
+ ## 5.0.0-beta.21
1872
+
1873
+ ### Patch Changes
1874
+
1875
+ - [#1955](https://github.com/graphile/crystal/pull/1955)
1876
+ [`6c6be29f1`](https://github.com/graphile/crystal/commit/6c6be29f12b24782c926b2bc62ed2ede09ac05de)
1877
+ Thanks [@benjie](https://github.com/benjie)! - Steps are now prevented from
1878
+ calling other steps' lifecycle methods. GRAPHILE_ENV is actively encouraged,
1879
+ and falls back to NODE_ENV.
1880
+
1881
+ - [#1944](https://github.com/graphile/crystal/pull/1944)
1882
+ [`6c80c44b7`](https://github.com/graphile/crystal/commit/6c80c44b76a5eb30cc2b1555ba81a4b6236f4300)
1883
+ Thanks [@benjie](https://github.com/benjie)! - Fix accidental double-encoding
1884
+ of values on their way to postgres.
1885
+
1886
+ - [#1949](https://github.com/graphile/crystal/pull/1949)
1887
+ [`179d25b09`](https://github.com/graphile/crystal/commit/179d25b09bb3272eeef564067b8e512d8de0112f)
1888
+ Thanks [@benjie](https://github.com/benjie)! - Add support for registering
1889
+ PgCodecs via plugins, add support for ltree type, improve error messages, no
1890
+ longer need to set a gather namespace to use cache/state.
1891
+
1892
+ - [#1958](https://github.com/graphile/crystal/pull/1958)
1893
+ [`8315e8d01`](https://github.com/graphile/crystal/commit/8315e8d01c118cebc4ebbc53a2f264b958b252ad)
1894
+ Thanks [@benjie](https://github.com/benjie)! - EXPORTABLE now accepts a third
1895
+ argument, `nameHint`, which is used to hint what variable name to use for the
1896
+ given value. Used this in `graphile-export` along with some fixes and
1897
+ optimizations to improve the exports further.
1898
+
1899
+ - [#1946](https://github.com/graphile/crystal/pull/1946)
1900
+ [`9d53dde72`](https://github.com/graphile/crystal/commit/9d53dde726b7304962e921b88a159649e49156e5)
1901
+ Thanks [@benjie](https://github.com/benjie)! - Exporting a schema now performs
1902
+ ESLint 'no-use-before-define' check to catch even more invalid export
1903
+ conditions. Fix `registerNodeIdCodec` calls caught by this.
1904
+ - Updated dependencies
1905
+ [[`9f85c614d`](https://github.com/graphile/crystal/commit/9f85c614d48dc745c5fed15333dbb75af7fddc88),
1906
+ [`6c6be29f1`](https://github.com/graphile/crystal/commit/6c6be29f12b24782c926b2bc62ed2ede09ac05de),
1907
+ [`6c80c44b7`](https://github.com/graphile/crystal/commit/6c80c44b76a5eb30cc2b1555ba81a4b6236f4300),
1908
+ [`179d25b09`](https://github.com/graphile/crystal/commit/179d25b09bb3272eeef564067b8e512d8de0112f),
1909
+ [`8315e8d01`](https://github.com/graphile/crystal/commit/8315e8d01c118cebc4ebbc53a2f264b958b252ad),
1910
+ [`9d53dde72`](https://github.com/graphile/crystal/commit/9d53dde726b7304962e921b88a159649e49156e5)]:
1911
+ - @dataplan/pg@0.0.1-beta.17
1912
+ - grafast@0.1.1-beta.6
1913
+ - graphile-build-pg@5.0.0-beta.20
1914
+ - graphile-build@5.0.0-beta.16
1915
+ - graphile-utils@5.0.0-beta.20
1916
+ - tamedevil@0.0.0-beta.6
1917
+ - @dataplan/json@0.0.1-beta.15
1918
+ - grafserv@0.1.1-beta.8
1919
+
1920
+ ## 5.0.0-beta.20
1921
+
1922
+ ### Patch Changes
1923
+
1924
+ - [#1927](https://github.com/graphile/crystal/pull/1927)
1925
+ [`00d32d887`](https://github.com/graphile/crystal/commit/00d32d887a6ae01374a4fda1babab7c8f14832c0)
1926
+ Thanks [@benjie](https://github.com/benjie)! - Excludes table constraints on
1927
+ tables from extensions if configured to not include extensions.
1928
+
1929
+ - [#1927](https://github.com/graphile/crystal/pull/1927)
1930
+ [`c62eee10b`](https://github.com/graphile/crystal/commit/c62eee10b445f9455bf2a0524ad2b828bdf4ffa6)
1931
+ Thanks [@benjie](https://github.com/benjie)! - Add pg_am to pg-introspection
1932
+ to enable determining index access method
1933
+
1934
+ - [#1934](https://github.com/graphile/crystal/pull/1934)
1935
+ [`9ac0ddc01`](https://github.com/graphile/crystal/commit/9ac0ddc014bfceb60b4b5641d6e8db605cc6a79b)
1936
+ Thanks [@benjie](https://github.com/benjie)! - Automatically detect when a
1937
+ `graphile-export` export is invalid, and throw an error indicating which
1938
+ method needs to have `EXPORTABLE` added around it.
1939
+
1940
+ - [#1931](https://github.com/graphile/crystal/pull/1931)
1941
+ [`941e28003`](https://github.com/graphile/crystal/commit/941e280038a735014a9fe4e24fc534a197fac0f2)
1942
+ Thanks [@benjie](https://github.com/benjie)! - Add support for deprecated
1943
+ arguments to Ruru.
1944
+
1945
+ - [#1935](https://github.com/graphile/crystal/pull/1935)
1946
+ [`8ea67f891`](https://github.com/graphile/crystal/commit/8ea67f8910693edaf70daa9952e35d8396166f38)
1947
+ Thanks [@benjie](https://github.com/benjie)! - Fix lots of things related to
1948
+ exporting a schema with `graphile-export`.
1949
+
1950
+ - [#1931](https://github.com/graphile/crystal/pull/1931)
1951
+ [`068be2f51`](https://github.com/graphile/crystal/commit/068be2f51d7a9c17311f26c6c9451985397c9e1f)
1952
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue typing into Ruru
1953
+ explorer plugin - characters no longer overwritten.
1954
+
1955
+ - [#1929](https://github.com/graphile/crystal/pull/1929)
1956
+ [`7587ca9e0`](https://github.com/graphile/crystal/commit/7587ca9e0f2bb93d0b22d1e2979d7b7912363600)
1957
+ Thanks [@benjie](https://github.com/benjie)! - PgLazyJWTPreset: return 401
1958
+ error when validation of JWT fails.
1959
+
1960
+ - [#1935](https://github.com/graphile/crystal/pull/1935)
1961
+ [`e20e66ed7`](https://github.com/graphile/crystal/commit/e20e66ed71b499ee5bbf05105f981809fd302212)
1962
+ Thanks [@benjie](https://github.com/benjie)! - Make even more of the schema
1963
+ exportable, including handling scalars with no parseLiteral definition.
1964
+
1965
+ - [#1931](https://github.com/graphile/crystal/pull/1931)
1966
+ [`ec3112c7b`](https://github.com/graphile/crystal/commit/ec3112c7b58d142b4b1d86cbb7de4ca80bbfda00)
1967
+ Thanks [@benjie](https://github.com/benjie)! - Add support for deprecating
1968
+ arguments to makeExtendSchemaPlugin
1969
+
1970
+ - Updated dependencies
1971
+ [[`49fd8afed`](https://github.com/graphile/crystal/commit/49fd8afed1afe573ea76a2a7a821dfa5d6288e2d),
1972
+ [`63dd7ea99`](https://github.com/graphile/crystal/commit/63dd7ea992d30ad711dd85a73a127484a0e35479),
1973
+ [`d801c9778`](https://github.com/graphile/crystal/commit/d801c9778a86d61e060896460af9fe62a733534a),
1974
+ [`c21252541`](https://github.com/graphile/crystal/commit/c212525410cb2d97a808964ad727d0a68dd15f8b),
1975
+ [`3a2ea80ee`](https://github.com/graphile/crystal/commit/3a2ea80ee470b2aef91366727d7d60a0c65067f5),
1976
+ [`ef44c29b2`](https://github.com/graphile/crystal/commit/ef44c29b24a1ad5a042ae1536a4546dd64b17195),
1977
+ [`8ea67f891`](https://github.com/graphile/crystal/commit/8ea67f8910693edaf70daa9952e35d8396166f38),
1978
+ [`5de3e86eb`](https://github.com/graphile/crystal/commit/5de3e86eba1ddfe5e07732d0325c63e5d72d4b5b),
1979
+ [`e20e66ed7`](https://github.com/graphile/crystal/commit/e20e66ed71b499ee5bbf05105f981809fd302212),
1980
+ [`ec3112c7b`](https://github.com/graphile/crystal/commit/ec3112c7b58d142b4b1d86cbb7de4ca80bbfda00)]:
1981
+ - tamedevil@0.0.0-beta.5
1982
+ - grafast@0.1.1-beta.5
1983
+ - grafserv@0.1.1-beta.7
1984
+ - graphile-build-pg@5.0.0-beta.19
1985
+ - graphile-build@5.0.0-beta.15
1986
+ - graphile-utils@5.0.0-beta.19
1987
+ - @dataplan/json@0.0.1-beta.14
1988
+ - @dataplan/pg@0.0.1-beta.16
1989
+ - pg-sql2@5.0.0-beta.5
1990
+ - graphile-config@0.0.1-beta.7
1991
+
1992
+ ## 5.0.0-beta.19
1993
+
1994
+ ### Patch Changes
1995
+
1996
+ - [#1895](https://github.com/graphile/crystal/pull/1895)
1997
+ [`555a2be03`](https://github.com/graphile/crystal/commit/555a2be037f49bd599abbaafe6e5d5ab190c96d6)
1998
+ Thanks [@enisdenjo](https://github.com/enisdenjo)! - Fix issue with aggregates
1999
+ for polymorphic connections.
2000
+
2001
+ - [#1917](https://github.com/graphile/crystal/pull/1917)
2002
+ [`886833e2e`](https://github.com/graphile/crystal/commit/886833e2e319f23d905d7184ca88fca701b94044)
2003
+ Thanks [@benjie](https://github.com/benjie)! - Add `polymorphicBranch` step to
2004
+ core to help users deal with simple polymorphic use cases.
2005
+
2006
+ - [#1904](https://github.com/graphile/crystal/pull/1904)
2007
+ [`5b2db0c75`](https://github.com/graphile/crystal/commit/5b2db0c7586182523015f8f79fa4d43f98679c1e)
2008
+ Thanks [@benjie](https://github.com/benjie)! - Add pgRefDetails to scope for
2009
+ some ref-generated fields, to enable plugins to hook them.
2010
+
2011
+ - [#1920](https://github.com/graphile/crystal/pull/1920)
2012
+ [`635af159f`](https://github.com/graphile/crystal/commit/635af159fd412171030dbaee3a82b661c516a9f8)
2013
+ Thanks [@benjie](https://github.com/benjie)! - Add ability to set (and infer)
2014
+ scopes to makeExtendSchemaPlugin
2015
+
2016
+ - [#1905](https://github.com/graphile/crystal/pull/1905)
2017
+ [`184773382`](https://github.com/graphile/crystal/commit/184773382f074a3b5339e4cfabec55173cd4f1e1)
2018
+ Thanks [@benjie](https://github.com/benjie)! - Enable specifying the
2019
+ polymorphic subtype a function returns via `@returnType MyType` smart tag.
2020
+
2021
+ - [#1901](https://github.com/graphile/crystal/pull/1901)
2022
+ [`f97d7976a`](https://github.com/graphile/crystal/commit/f97d7976a683a1e2cb0fed1ce0e30aeff8cc1886)
2023
+ Thanks [@benjie](https://github.com/benjie)! - Loosens step assertion from
2024
+ Query type so it can be served from `constant(true)`.
2025
+ - Updated dependencies
2026
+ [[`555a2be03`](https://github.com/graphile/crystal/commit/555a2be037f49bd599abbaafe6e5d5ab190c96d6),
2027
+ [`1b6c2f636`](https://github.com/graphile/crystal/commit/1b6c2f6360a316a8dc550c60e28c61deea538f19),
2028
+ [`de7add402`](https://github.com/graphile/crystal/commit/de7add402bd4a45c8782fce69bf210635360cbe8),
2029
+ [`a2176ea32`](https://github.com/graphile/crystal/commit/a2176ea324db0801249661b30e9c9d314c6fb159),
2030
+ [`886833e2e`](https://github.com/graphile/crystal/commit/886833e2e319f23d905d7184ca88fca701b94044),
2031
+ [`5b2db0c75`](https://github.com/graphile/crystal/commit/5b2db0c7586182523015f8f79fa4d43f98679c1e),
2032
+ [`635af159f`](https://github.com/graphile/crystal/commit/635af159fd412171030dbaee3a82b661c516a9f8),
2033
+ [`184773382`](https://github.com/graphile/crystal/commit/184773382f074a3b5339e4cfabec55173cd4f1e1),
2034
+ [`f97d7976a`](https://github.com/graphile/crystal/commit/f97d7976a683a1e2cb0fed1ce0e30aeff8cc1886)]:
2035
+ - @dataplan/pg@0.0.1-beta.15
2036
+ - tamedevil@0.0.0-beta.4
2037
+ - grafserv@0.1.1-beta.6
2038
+ - graphile-utils@5.0.0-beta.18
2039
+ - grafast@0.1.1-beta.4
2040
+ - graphile-build-pg@5.0.0-beta.18
2041
+ - graphile-build@5.0.0-beta.14
2042
+ - @dataplan/json@0.0.1-beta.13
2043
+
2044
+ ## 5.0.0-beta.18
2045
+
2046
+ ### Patch Changes
2047
+
2048
+ - [#1892](https://github.com/graphile/crystal/pull/1892)
2049
+ [`0df5511ac`](https://github.com/graphile/crystal/commit/0df5511ac8b79ea34f8d12ebf8feeb421f8fe971)
2050
+ Thanks [@benjie](https://github.com/benjie)! - Fix plugin ordering bug that
2051
+ ignored before/after when there was no provider; this now means
2052
+ PgSmartTagsPlugin is correctly loaded before PgFakeConstraintPlugin, fixing
2053
+ the `postgraphile.tags.json5` file.
2054
+
2055
+ - [#1894](https://github.com/graphile/crystal/pull/1894)
2056
+ [`7851d89ab`](https://github.com/graphile/crystal/commit/7851d89ab4216b0252583f0068a69900fa2ddc88)
2057
+ Thanks [@benjie](https://github.com/benjie)! - Fix logic around RBAC
2058
+ permissions for tables and sequences.
2059
+
2060
+ - Updated dependencies
2061
+ [[`0df5511ac`](https://github.com/graphile/crystal/commit/0df5511ac8b79ea34f8d12ebf8feeb421f8fe971)]:
2062
+ - graphile-config@0.0.1-beta.6
2063
+ - @dataplan/pg@0.0.1-beta.14
2064
+ - grafast@0.1.1-beta.3
2065
+ - grafserv@0.1.1-beta.5
2066
+ - graphile-build@5.0.0-beta.13
2067
+ - graphile-build-pg@5.0.0-beta.17
2068
+ - graphile-utils@5.0.0-beta.17
2069
+ - @dataplan/json@0.0.1-beta.12
2070
+
2071
+ ## 5.0.0-beta.17
2072
+
2073
+ ### Patch Changes
2074
+
2075
+ - [#1884](https://github.com/graphile/crystal/pull/1884)
2076
+ [`bce0636d4`](https://github.com/graphile/crystal/commit/bce0636d424476664672166193a181c83476423a)
2077
+ Thanks [@benjie](https://github.com/benjie)! - Fixes multiple pgServices codec
2078
+ name conflicts by prepending the service name if it's not 'main'.
2079
+
2080
+ - [#1867](https://github.com/graphile/crystal/pull/1867)
2081
+ [`004889258`](https://github.com/graphile/crystal/commit/004889258e22a19ffe9a641f57e4ddd5299db9bf)
2082
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in CLI parser where
2083
+ omitting `--watch` would force `watch: false` even if config sets
2084
+ `watch: true`.
2085
+
2086
+ - [#1817](https://github.com/graphile/crystal/pull/1817)
2087
+ [`f305c3278`](https://github.com/graphile/crystal/commit/f305c327848eb7baef46c5384a7cc5af6f79db8d)
2088
+ Thanks [@benjie](https://github.com/benjie)! - Add support for limiting
2089
+ polymorphic plans (only some of them, specifically `pgUnionAll()` right now)
2090
+ to limit the types of their results; exposed via an experimental 'only'
2091
+ argument on fields, for example
2092
+ `allApplications(only: [GcpApplication, AwsApplication])` would limit the type
2093
+ of applications returned to only be the two specified.
2094
+
2095
+ - [#1885](https://github.com/graphile/crystal/pull/1885)
2096
+ [`9e1df08b7`](https://github.com/graphile/crystal/commit/9e1df08b702ae32870a8f1324bab37f447cba868)
2097
+ Thanks [@benjie](https://github.com/benjie)! - Fix `orderBy:null` regression
2098
+
2099
+ - [#1878](https://github.com/graphile/crystal/pull/1878)
2100
+ [`e04238c0a`](https://github.com/graphile/crystal/commit/e04238c0aee46cc86ba61d6461b6636c2f9d1183)
2101
+ Thanks [@benjie](https://github.com/benjie)! - Add emulation for
2102
+ `--simple-subscriptions` to V4 preset.
2103
+
2104
+ - [#1884](https://github.com/graphile/crystal/pull/1884)
2105
+ [`c66c3527c`](https://github.com/graphile/crystal/commit/c66c3527ce2bb38afa37242ecb5a22247efd6db9)
2106
+ Thanks [@benjie](https://github.com/benjie)! - List codecs can now have names.
2107
+
2108
+ - Updated dependencies
2109
+ [[`3fdc2bce4`](https://github.com/graphile/crystal/commit/3fdc2bce42418773f808c5b8309dfb361cd95ce9),
2110
+ [`aeef362b5`](https://github.com/graphile/crystal/commit/aeef362b5744816f01e4a6f714bbd77f92332bc5),
2111
+ [`8a76db07f`](https://github.com/graphile/crystal/commit/8a76db07f4c110cecc6225504f9a05ccbcbc7b92),
2112
+ [`bce0636d4`](https://github.com/graphile/crystal/commit/bce0636d424476664672166193a181c83476423a),
2113
+ [`f305c3278`](https://github.com/graphile/crystal/commit/f305c327848eb7baef46c5384a7cc5af6f79db8d),
2114
+ [`3b558e0c1`](https://github.com/graphile/crystal/commit/3b558e0c110dd49e5d51e49a5ad6463a9ed68ecb),
2115
+ [`2ae8d33aa`](https://github.com/graphile/crystal/commit/2ae8d33aa83955649dcd6e7489604b059ed2daf4),
2116
+ [`9e1df08b7`](https://github.com/graphile/crystal/commit/9e1df08b702ae32870a8f1324bab37f447cba868),
2117
+ [`8a0cdb95f`](https://github.com/graphile/crystal/commit/8a0cdb95f200b28b0ea1ab5caa12b23dce5f374f),
2118
+ [`dbd91fdd8`](https://github.com/graphile/crystal/commit/dbd91fdd836f041b6e2ff9d358c6a6f521f43914),
2119
+ [`995e25035`](https://github.com/graphile/crystal/commit/995e250352217fdf8f036b8ed6cad3fab520817f),
2120
+ [`f1d5ad18e`](https://github.com/graphile/crystal/commit/f1d5ad18e1cd0d59b9e74f619ec6b0de57f07b17),
2121
+ [`c66c3527c`](https://github.com/graphile/crystal/commit/c66c3527ce2bb38afa37242ecb5a22247efd6db9),
2122
+ [`f66cc40b3`](https://github.com/graphile/crystal/commit/f66cc40b3bc5bf2e7f92fe5a6bd5638e2a51ac2b),
2123
+ [`f18635a5c`](https://github.com/graphile/crystal/commit/f18635a5cf55845c9534d82bb483e5fbb9ed179e),
2124
+ [`1c9f1c0ed`](https://github.com/graphile/crystal/commit/1c9f1c0edf4e621a5b6345d3a41527a18143c6ae),
2125
+ [`9fb5cc06e`](https://github.com/graphile/crystal/commit/9fb5cc06ee52165378392969172e6ee8128833f6)]:
2126
+ - grafast@0.1.1-beta.2
2127
+ - graphile-utils@5.0.0-beta.16
2128
+ - graphile-build-pg@5.0.0-beta.16
2129
+ - @dataplan/pg@0.0.1-beta.13
2130
+ - graphile-build@5.0.0-beta.12
2131
+ - graphile-config@0.0.1-beta.5
2132
+ - grafserv@0.1.1-beta.4
2133
+ - @dataplan/json@0.0.1-beta.11
2134
+
2135
+ ## 5.0.0-beta.16
2136
+
2137
+ ### Patch Changes
2138
+
2139
+ - [#1834](https://github.com/graphile/crystal/pull/1834)
2140
+ [`2e7fc6449`](https://github.com/graphile/crystal/commit/2e7fc6449c2d08c44c32985811bb2e233a04056b)
2141
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue with watch mode where
2142
+ schema omits database resources in some situations.
2143
+ - Updated dependencies
2144
+ [[`9696a1b08`](https://github.com/graphile/crystal/commit/9696a1b0885442f44e3a6ca6a4909ec96a445884),
2145
+ [`49fcb0d58`](https://github.com/graphile/crystal/commit/49fcb0d585b31b291c9072c339d6f5b550eefc9f),
2146
+ [`2e7fc6449`](https://github.com/graphile/crystal/commit/2e7fc6449c2d08c44c32985811bb2e233a04056b),
2147
+ [`7aef73319`](https://github.com/graphile/crystal/commit/7aef73319a8a147c700727be62427e1eefdefbf8)]:
2148
+ - grafserv@0.1.1-beta.3
2149
+ - grafast@0.1.1-beta.1
2150
+ - graphile-build-pg@5.0.0-beta.15
2151
+ - graphile-config@0.0.1-beta.4
2152
+ - @dataplan/pg@0.0.1-beta.12
2153
+ - @dataplan/json@0.0.1-beta.10
2154
+ - graphile-build@5.0.0-beta.11
2155
+ - graphile-utils@5.0.0-beta.15
2156
+
2157
+ ## 5.0.0-beta.15
2158
+
2159
+ ### Patch Changes
2160
+
2161
+ - [#1799](https://github.com/graphile/crystal/pull/1799)
2162
+ [`3dd5d86d6`](https://github.com/graphile/crystal/commit/3dd5d86d6c1ea7ba106c08e8a315ec47ed6cfa2d)
2163
+ Thanks [@jvandermey](https://github.com/jvandermey)! - Can now pass onEdit
2164
+ callbacks through the Ruru config via the plugin system; e.g. to update the
2165
+ URL search params with the current editor state.
2166
+
2167
+ - [#1801](https://github.com/graphile/crystal/pull/1801)
2168
+ [`2d447a6b4`](https://github.com/graphile/crystal/commit/2d447a6b45d7db2813bd957f412cd959e2185759)
2169
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug where the owner of a
2170
+ database object wasn't seen as having any privileges.
2171
+ - Updated dependencies
2172
+ [[`2d447a6b4`](https://github.com/graphile/crystal/commit/2d447a6b45d7db2813bd957f412cd959e2185759)]:
2173
+ - graphile-build-pg@5.0.0-beta.14
2174
+ - graphile-utils@5.0.0-beta.14
2175
+ - grafserv@0.1.1-beta.2
2176
+ - @dataplan/pg@0.0.1-beta.11
2177
+
2178
+ ## 5.0.0-beta.14
2179
+
2180
+ ### Patch Changes
2181
+
2182
+ - [#1796](https://github.com/graphile/crystal/pull/1796)
2183
+ [`ebb0b817e`](https://github.com/graphile/crystal/commit/ebb0b817e3efe210445d3f3396ff4bc53ebab3e7)
2184
+ Thanks [@benjie](https://github.com/benjie)! - Can now set initial query and
2185
+ variables in Ruru via the plugin system; e.g. to set query/variables based on
2186
+ query string.
2187
+
2188
+ - [#1797](https://github.com/graphile/crystal/pull/1797)
2189
+ [`26e0bc726`](https://github.com/graphile/crystal/commit/26e0bc72653cd8dcef4b6cfb3c76876a5e620a12)
2190
+ Thanks [@benjie](https://github.com/benjie)! - Fix that smart tags were not
2191
+ copied onto enum codecs.
2192
+
2193
+ - Updated dependencies
2194
+ [[`781a89758`](https://github.com/graphile/crystal/commit/781a89758fff2712f0080d8fafb4048da189b782),
2195
+ [`a38e650d6`](https://github.com/graphile/crystal/commit/a38e650d67d6c7ff0cf5b853377622090ede3a50),
2196
+ [`26e0bc726`](https://github.com/graphile/crystal/commit/26e0bc72653cd8dcef4b6cfb3c76876a5e620a12)]:
2197
+ - grafserv@0.1.1-beta.1
2198
+ - graphile-build-pg@5.0.0-beta.13
2199
+ - @dataplan/pg@0.0.1-beta.11
2200
+ - graphile-utils@5.0.0-beta.13
2201
+
2202
+ ## 5.0.0-beta.13
2203
+
2204
+ ### Patch Changes
2205
+
2206
+ - Updated dependencies
2207
+ [[`2805edc68`](https://github.com/graphile/crystal/commit/2805edc68b90546bf71ffd293af4d87a79345825)]:
2208
+ - pg-sql2@5.0.0-beta.4
2209
+ - @dataplan/pg@0.0.1-beta.10
2210
+ - grafast@0.1.1-beta.0
2211
+ - graphile-build-pg@5.0.0-beta.12
2212
+ - graphile-utils@5.0.0-beta.12
2213
+
2214
+ ## 5.0.0-beta.12
2215
+
2216
+ ### Patch Changes
2217
+
2218
+ - [#1779](https://github.com/graphile/crystal/pull/1779)
2219
+ [`4a4d26d87`](https://github.com/graphile/crystal/commit/4a4d26d87ce74589429b8ca5126a7bfdf30351b8)
2220
+ Thanks [@benjie](https://github.com/benjie)! - Fix a polymorphic planning
2221
+ issue.
2222
+
2223
+ - [#1778](https://github.com/graphile/crystal/pull/1778)
2224
+ [`b2bce88da`](https://github.com/graphile/crystal/commit/b2bce88da26c7a8965468be16fc2d935eadd3434)
2225
+ Thanks [@benjie](https://github.com/benjie)! - Enable source maps in modules
2226
+ where it was disabled.
2227
+
2228
+ - [#1780](https://github.com/graphile/crystal/pull/1780)
2229
+ [`861a8a306`](https://github.com/graphile/crystal/commit/861a8a306ef42a821da19e77903ddd7e8130bfb3)
2230
+ Thanks [@benjie](https://github.com/benjie)! - Fix an issue with side effect
2231
+ plans and polymorphism
2232
+
2233
+ - [#1770](https://github.com/graphile/crystal/pull/1770)
2234
+ [`9a84bc6dd`](https://github.com/graphile/crystal/commit/9a84bc6dd5b33c1919f75f867df1f61c78686695)
2235
+ Thanks [@benjie](https://github.com/benjie)! - Fix issues around enum tables:
2236
+ indicate when an enum table codec replaces a regular attribute codec, expose
2237
+ helpers for working with enum tables, and don't exclude enum table references
2238
+ when using the Relay preset.
2239
+
2240
+ - [#1774](https://github.com/graphile/crystal/pull/1774)
2241
+ [`7d55d2c34`](https://github.com/graphile/crystal/commit/7d55d2c343880d7e665f9743f6ae7e39343c22cc)
2242
+ Thanks [@benjie](https://github.com/benjie)! - Add
2243
+ `preset.gather.pgIdentifiers` setting (values: 'qualified' or 'unqualified');
2244
+ if set to 'unqualified' then we will not add the schema name to table or
2245
+ function identifiers - it's up to you to ensure they're present in the
2246
+ `search_path` (which you can set via `pgSettings` on a per-request basis).
2247
+ - Updated dependencies
2248
+ [[`eeccfd675`](https://github.com/graphile/crystal/commit/eeccfd67585a79330197886fdc98335562e08c0a),
2249
+ [`4a4d26d87`](https://github.com/graphile/crystal/commit/4a4d26d87ce74589429b8ca5126a7bfdf30351b8),
2250
+ [`b2bce88da`](https://github.com/graphile/crystal/commit/b2bce88da26c7a8965468be16fc2d935eadd3434),
2251
+ [`861a8a306`](https://github.com/graphile/crystal/commit/861a8a306ef42a821da19e77903ddd7e8130bfb3),
2252
+ [`9a84bc6dd`](https://github.com/graphile/crystal/commit/9a84bc6dd5b33c1919f75f867df1f61c78686695),
2253
+ [`b728d7fb9`](https://github.com/graphile/crystal/commit/b728d7fb91eb29fbb21d955af5fd9cb4278f6222),
2254
+ [`264158f03`](https://github.com/graphile/crystal/commit/264158f034e7b6ebc1a9a94d92b7e4fb746c5fac),
2255
+ [`2d31f058b`](https://github.com/graphile/crystal/commit/2d31f058b34d3f5ef11699582b9a4960a4ebc471),
2256
+ [`7d55d2c34`](https://github.com/graphile/crystal/commit/7d55d2c343880d7e665f9743f6ae7e39343c22cc)]:
2257
+ - graphile-utils@5.0.0-beta.11
2258
+ - grafast@0.1.1-beta.0
2259
+ - @dataplan/json@0.0.1-beta.9
2260
+ - @dataplan/pg@0.0.1-beta.9
2261
+ - graphile-build-pg@5.0.0-beta.11
2262
+ - graphile-build@5.0.0-beta.10
2263
+ - grafserv@0.1.1-beta.0
2264
+
2265
+ ## 5.0.0-beta.11
2266
+
2267
+ ### Patch Changes
2268
+
2269
+ - [#514](https://github.com/graphile/crystal-pre-merge/pull/514)
2270
+ [`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b)
2271
+ Thanks [@benjie](https://github.com/benjie)! - Update package.json repository
2272
+ information
2273
+
2274
+ - Updated dependencies
2275
+ [[`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b),
2276
+ [`ede1092fe`](https://github.com/graphile/crystal-pre-merge/commit/ede1092fe197719b6fa786f4cfa75f6a1f4c56c1),
2277
+ [`566983fbd`](https://github.com/graphile/crystal-pre-merge/commit/566983fbd99c4b2df8c4ebd6260521670a2b7dfc),
2278
+ [`409bf6071`](https://github.com/graphile/crystal-pre-merge/commit/409bf607180d4d8faec658c803e5ec4d1a00c451)]:
2279
+ - graphile-build-pg@5.0.0-beta.10
2280
+ - graphile-build@5.0.0-beta.9
2281
+ - graphile-utils@5.0.0-beta.10
2282
+ - @dataplan/json@0.0.1-beta.8
2283
+ - graphile-config@0.0.1-beta.3
2284
+ - @dataplan/pg@0.0.1-beta.8
2285
+ - grafserv@0.0.1-beta.9
2286
+ - grafast@0.0.1-beta.8
2287
+ - tamedevil@0.0.0-beta.3
2288
+ - pg-sql2@5.0.0-beta.3
2289
+ - @graphile/lru@5.0.0-beta.3
2290
+
2291
+ ## 5.0.0-beta.10
2292
+
2293
+ ### Patch Changes
2294
+
2295
+ - Updated dependencies []:
2296
+ - grafserv@0.0.1-beta.8
2297
+ - graphile-build-pg@5.0.0-beta.9
2298
+ - @dataplan/pg@0.0.1-beta.7
2299
+ - graphile-utils@5.0.0-beta.9
2300
+
3
2301
  ## 5.0.0-beta.9
4
2302
 
5
2303
  ### Patch Changes
@@ -584,7 +2882,6 @@
584
2882
  [`ff91a5660`](https://github.com/benjie/crystal/commit/ff91a5660c5a33ab32555ab3da12f880179d9892)
585
2883
  Thanks [@benjie](https://github.com/benjie)! - Added
586
2884
  `postgraphile/presets/relay` preset:
587
-
588
2885
  - Hides primary key columns from output schema, and includes `id: ID` instead
589
2886
  - Hides foreign key columns from output schema, expecting you to use the
590
2887
  relation instead
@@ -1380,7 +3677,6 @@
1380
3677
  resources, and more. So, we've renamed lots of things as part of the API
1381
3678
  stabilization work. You're probably only affected by the first 2 bullet
1382
3679
  points.
1383
-
1384
3680
  - `pgConfigs` -> `pgServices` (also applies to related `pgConfig` terms such
1385
3681
  as `makePgConfig` -> `makePgService`, `MakePgConfigOptions` ->
1386
3682
  `MakePgServiceOptions`, etc) - see your `graphile.config.ts` or equivalent
@@ -1832,7 +4128,6 @@
1832
4128
  [`652cf1073`](https://github.com/benjie/crystal/commit/652cf107316ea5832f69c6a55574632187f5c876)
1833
4129
  Thanks [@benjie](https://github.com/benjie)! - 🚨 Breaking changes around
1834
4130
  types and postgres configuration:
1835
-
1836
4131
  - `GraphileBuild.GraphileResolverContext` renamed to `Grafast.Context`
1837
4132
  - `GraphileConfig.GraphQLRequestContext` renamed to `Grafast.RequestContext`
1838
4133
  - `Grafast.PgDatabaseAdaptorOptions` renaed to
@@ -1886,7 +4181,6 @@
1886
4181
 
1887
4182
  - [`72bf5f535`](undefined) - Overhaul the behavior system (see
1888
4183
  https://postgraphile.org/postgraphile/next/behavior).
1889
-
1890
4184
  - Adds `schema.defaultBehavior` configuration option to save having to write a
1891
4185
  plugin for such a simple task
1892
4186
  - Changes a bunch of behavior strings: