graphile-build-pg 5.0.0-beta.8 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +1639 -4
  2. package/README.md +4 -10
  3. package/dist/_.js +1 -2
  4. package/dist/_.js.map +1 -1
  5. package/dist/behavior.d.ts +1 -2
  6. package/dist/behavior.d.ts.map +1 -1
  7. package/dist/behavior.js +7 -18
  8. package/dist/behavior.js.map +1 -1
  9. package/dist/index.d.ts +129 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +16 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/inputUtils.js +2 -3
  14. package/dist/inputUtils.js.map +1 -1
  15. package/dist/interfaces.d.ts +2 -88
  16. package/dist/interfaces.d.ts.map +1 -1
  17. package/dist/interfaces.js +2 -0
  18. package/dist/interfaces.js.map +1 -1
  19. package/dist/plugins/PgAllRowsPlugin.d.ts +9 -0
  20. package/dist/plugins/PgAllRowsPlugin.d.ts.map +1 -1
  21. package/dist/plugins/PgAllRowsPlugin.js +13 -1
  22. package/dist/plugins/PgAllRowsPlugin.js.map +1 -1
  23. package/dist/plugins/PgAttributeDeprecationPlugin.d.ts +7 -0
  24. package/dist/plugins/PgAttributeDeprecationPlugin.d.ts.map +1 -1
  25. package/dist/plugins/PgAttributeDeprecationPlugin.js.map +1 -1
  26. package/dist/plugins/PgAttributesPlugin.d.ts +14 -1
  27. package/dist/plugins/PgAttributesPlugin.d.ts.map +1 -1
  28. package/dist/plugins/PgAttributesPlugin.js +154 -79
  29. package/dist/plugins/PgAttributesPlugin.js.map +1 -1
  30. package/dist/plugins/PgBasicsPlugin.d.ts +57 -14
  31. package/dist/plugins/PgBasicsPlugin.d.ts.map +1 -1
  32. package/dist/plugins/PgBasicsPlugin.js +154 -35
  33. package/dist/plugins/PgBasicsPlugin.js.map +1 -1
  34. package/dist/plugins/PgCodecsPlugin.d.ts +18 -0
  35. package/dist/plugins/PgCodecsPlugin.d.ts.map +1 -1
  36. package/dist/plugins/PgCodecsPlugin.js +267 -215
  37. package/dist/plugins/PgCodecsPlugin.js.map +1 -1
  38. package/dist/plugins/PgConditionArgumentPlugin.d.ts +18 -0
  39. package/dist/plugins/PgConditionArgumentPlugin.d.ts.map +1 -1
  40. package/dist/plugins/PgConditionArgumentPlugin.js +17 -12
  41. package/dist/plugins/PgConditionArgumentPlugin.js.map +1 -1
  42. package/dist/plugins/PgConditionCustomFieldsPlugin.d.ts +8 -0
  43. package/dist/plugins/PgConditionCustomFieldsPlugin.d.ts.map +1 -1
  44. package/dist/plugins/PgConditionCustomFieldsPlugin.js +20 -15
  45. package/dist/plugins/PgConditionCustomFieldsPlugin.js.map +1 -1
  46. package/dist/plugins/PgConnectionArgOrderByDefaultValuePlugin.d.ts +7 -0
  47. package/dist/plugins/PgConnectionArgOrderByDefaultValuePlugin.d.ts.map +1 -1
  48. package/dist/plugins/PgConnectionArgOrderByDefaultValuePlugin.js.map +1 -1
  49. package/dist/plugins/PgConnectionArgOrderByPlugin.d.ts +10 -4
  50. package/dist/plugins/PgConnectionArgOrderByPlugin.d.ts.map +1 -1
  51. package/dist/plugins/PgConnectionArgOrderByPlugin.js +36 -46
  52. package/dist/plugins/PgConnectionArgOrderByPlugin.js.map +1 -1
  53. package/dist/plugins/PgConnectionTotalCountPlugin.d.ts +8 -0
  54. package/dist/plugins/PgConnectionTotalCountPlugin.d.ts.map +1 -1
  55. package/dist/plugins/PgConnectionTotalCountPlugin.js +9 -1
  56. package/dist/plugins/PgConnectionTotalCountPlugin.js.map +1 -1
  57. package/dist/plugins/PgCustomTypeFieldPlugin.d.ts +29 -14
  58. package/dist/plugins/PgCustomTypeFieldPlugin.d.ts.map +1 -1
  59. package/dist/plugins/PgCustomTypeFieldPlugin.js +476 -337
  60. package/dist/plugins/PgCustomTypeFieldPlugin.js.map +1 -1
  61. package/dist/plugins/PgEnumDomainsPlugin.d.ts +2 -0
  62. package/dist/plugins/PgEnumDomainsPlugin.d.ts.map +1 -0
  63. package/dist/plugins/PgEnumDomainsPlugin.js +78 -0
  64. package/dist/plugins/PgEnumDomainsPlugin.js.map +1 -0
  65. package/dist/plugins/PgEnumTablesPlugin.d.ts +18 -0
  66. package/dist/plugins/PgEnumTablesPlugin.d.ts.map +1 -1
  67. package/dist/plugins/PgEnumTablesPlugin.js +97 -37
  68. package/dist/plugins/PgEnumTablesPlugin.js.map +1 -1
  69. package/dist/plugins/PgFakeConstraintsPlugin.d.ts +3 -0
  70. package/dist/plugins/PgFakeConstraintsPlugin.d.ts.map +1 -1
  71. package/dist/plugins/PgFakeConstraintsPlugin.js +6 -4
  72. package/dist/plugins/PgFakeConstraintsPlugin.js.map +1 -1
  73. package/dist/plugins/PgFirstLastBeforeAfterArgsPlugin.d.ts +5 -0
  74. package/dist/plugins/PgFirstLastBeforeAfterArgsPlugin.d.ts.map +1 -1
  75. package/dist/plugins/PgFirstLastBeforeAfterArgsPlugin.js +12 -7
  76. package/dist/plugins/PgFirstLastBeforeAfterArgsPlugin.js.map +1 -1
  77. package/dist/plugins/PgIndexBehaviorsPlugin.d.ts +20 -0
  78. package/dist/plugins/PgIndexBehaviorsPlugin.d.ts.map +1 -1
  79. package/dist/plugins/PgIndexBehaviorsPlugin.js +62 -25
  80. package/dist/plugins/PgIndexBehaviorsPlugin.js.map +1 -1
  81. package/dist/plugins/PgInterfaceModeUnionAllRowsPlugin.d.ts +9 -0
  82. package/dist/plugins/PgInterfaceModeUnionAllRowsPlugin.d.ts.map +1 -1
  83. package/dist/plugins/PgInterfaceModeUnionAllRowsPlugin.js +30 -86
  84. package/dist/plugins/PgInterfaceModeUnionAllRowsPlugin.js.map +1 -1
  85. package/dist/plugins/PgIntrospectionPlugin.d.ts +4 -0
  86. package/dist/plugins/PgIntrospectionPlugin.d.ts.map +1 -1
  87. package/dist/plugins/PgIntrospectionPlugin.js +135 -104
  88. package/dist/plugins/PgIntrospectionPlugin.js.map +1 -1
  89. package/dist/plugins/PgJWTPlugin.d.ts +6 -2
  90. package/dist/plugins/PgJWTPlugin.d.ts.map +1 -1
  91. package/dist/plugins/PgJWTPlugin.js +10 -0
  92. package/dist/plugins/PgJWTPlugin.js.map +1 -1
  93. package/dist/plugins/PgLtreePlugin.d.ts +9 -0
  94. package/dist/plugins/PgLtreePlugin.d.ts.map +1 -0
  95. package/dist/plugins/PgLtreePlugin.js +64 -0
  96. package/dist/plugins/PgLtreePlugin.js.map +1 -0
  97. package/dist/plugins/PgMutationCreatePlugin.d.ts +12 -0
  98. package/dist/plugins/PgMutationCreatePlugin.d.ts.map +1 -1
  99. package/dist/plugins/PgMutationCreatePlugin.js +48 -29
  100. package/dist/plugins/PgMutationCreatePlugin.js.map +1 -1
  101. package/dist/plugins/PgMutationPayloadEdgePlugin.d.ts +5 -0
  102. package/dist/plugins/PgMutationPayloadEdgePlugin.d.ts.map +1 -1
  103. package/dist/plugins/PgMutationPayloadEdgePlugin.js +25 -40
  104. package/dist/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  105. package/dist/plugins/PgMutationUpdateDeletePlugin.d.ts +16 -0
  106. package/dist/plugins/PgMutationUpdateDeletePlugin.d.ts.map +1 -1
  107. package/dist/plugins/PgMutationUpdateDeletePlugin.js +80 -32
  108. package/dist/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  109. package/dist/plugins/PgNodeIdAttributesPlugin.d.ts +11 -1
  110. package/dist/plugins/PgNodeIdAttributesPlugin.d.ts.map +1 -1
  111. package/dist/plugins/PgNodeIdAttributesPlugin.js +101 -32
  112. package/dist/plugins/PgNodeIdAttributesPlugin.js.map +1 -1
  113. package/dist/plugins/PgOrderAllAttributesPlugin.d.ts +6 -2
  114. package/dist/plugins/PgOrderAllAttributesPlugin.d.ts.map +1 -1
  115. package/dist/plugins/PgOrderAllAttributesPlugin.js +50 -44
  116. package/dist/plugins/PgOrderAllAttributesPlugin.js.map +1 -1
  117. package/dist/plugins/PgOrderByPrimaryKeyPlugin.d.ts +5 -0
  118. package/dist/plugins/PgOrderByPrimaryKeyPlugin.d.ts.map +1 -1
  119. package/dist/plugins/PgOrderByPrimaryKeyPlugin.js +11 -15
  120. package/dist/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
  121. package/dist/plugins/PgOrderCustomFieldsPlugin.d.ts +8 -0
  122. package/dist/plugins/PgOrderCustomFieldsPlugin.d.ts.map +1 -1
  123. package/dist/plugins/PgOrderCustomFieldsPlugin.js +23 -10
  124. package/dist/plugins/PgOrderCustomFieldsPlugin.js.map +1 -1
  125. package/dist/plugins/PgPolymorphismOnlyArgumentPlugin.d.ts +23 -0
  126. package/dist/plugins/PgPolymorphismOnlyArgumentPlugin.d.ts.map +1 -0
  127. package/dist/plugins/PgPolymorphismOnlyArgumentPlugin.js +157 -0
  128. package/dist/plugins/PgPolymorphismOnlyArgumentPlugin.js.map +1 -0
  129. package/dist/plugins/PgPolymorphismPlugin.d.ts +21 -3
  130. package/dist/plugins/PgPolymorphismPlugin.d.ts.map +1 -1
  131. package/dist/plugins/PgPolymorphismPlugin.js +510 -168
  132. package/dist/plugins/PgPolymorphismPlugin.js.map +1 -1
  133. package/dist/plugins/PgProceduresPlugin.d.ts +6 -0
  134. package/dist/plugins/PgProceduresPlugin.d.ts.map +1 -1
  135. package/dist/plugins/PgProceduresPlugin.js +61 -12
  136. package/dist/plugins/PgProceduresPlugin.js.map +1 -1
  137. package/dist/plugins/PgRBACPlugin.d.ts +25 -0
  138. package/dist/plugins/PgRBACPlugin.d.ts.map +1 -1
  139. package/dist/plugins/PgRBACPlugin.js +130 -67
  140. package/dist/plugins/PgRBACPlugin.js.map +1 -1
  141. package/dist/plugins/PgRefsPlugin.d.ts +3 -0
  142. package/dist/plugins/PgRefsPlugin.d.ts.map +1 -1
  143. package/dist/plugins/PgRefsPlugin.js +12 -8
  144. package/dist/plugins/PgRefsPlugin.js.map +1 -1
  145. package/dist/plugins/PgRegistryPlugin.d.ts +14 -8
  146. package/dist/plugins/PgRegistryPlugin.d.ts.map +1 -1
  147. package/dist/plugins/PgRegistryPlugin.js +3 -0
  148. package/dist/plugins/PgRegistryPlugin.js.map +1 -1
  149. package/dist/plugins/PgRelationsPlugin.d.ts +24 -1
  150. package/dist/plugins/PgRelationsPlugin.d.ts.map +1 -1
  151. package/dist/plugins/PgRelationsPlugin.js +227 -75
  152. package/dist/plugins/PgRelationsPlugin.js.map +1 -1
  153. package/dist/plugins/PgRemoveExtensionResourcesPlugin.d.ts +8 -0
  154. package/dist/plugins/PgRemoveExtensionResourcesPlugin.d.ts.map +1 -1
  155. package/dist/plugins/PgRemoveExtensionResourcesPlugin.js +38 -4
  156. package/dist/plugins/PgRemoveExtensionResourcesPlugin.js.map +1 -1
  157. package/dist/plugins/PgRowByUniquePlugin.d.ts +8 -0
  158. package/dist/plugins/PgRowByUniquePlugin.d.ts.map +1 -1
  159. package/dist/plugins/PgRowByUniquePlugin.js +12 -3
  160. package/dist/plugins/PgRowByUniquePlugin.js.map +1 -1
  161. package/dist/plugins/PgTableNodePlugin.d.ts +5 -0
  162. package/dist/plugins/PgTableNodePlugin.d.ts.map +1 -1
  163. package/dist/plugins/PgTableNodePlugin.js +56 -38
  164. package/dist/plugins/PgTableNodePlugin.js.map +1 -1
  165. package/dist/plugins/PgTablesPlugin.d.ts +27 -2
  166. package/dist/plugins/PgTablesPlugin.d.ts.map +1 -1
  167. package/dist/plugins/PgTablesPlugin.js +358 -70
  168. package/dist/plugins/PgTablesPlugin.js.map +1 -1
  169. package/dist/plugins/PgTypesPlugin.d.ts +8 -1
  170. package/dist/plugins/PgTypesPlugin.d.ts.map +1 -1
  171. package/dist/plugins/PgTypesPlugin.js +5 -22
  172. package/dist/plugins/PgTypesPlugin.js.map +1 -1
  173. package/dist/preset.d.ts +13 -0
  174. package/dist/preset.d.ts.map +1 -1
  175. package/dist/preset.js +27 -5
  176. package/dist/preset.js.map +1 -1
  177. package/dist/utils.d.ts +2 -3
  178. package/dist/utils.d.ts.map +1 -1
  179. package/dist/utils.js +69 -28
  180. package/dist/utils.js.map +1 -1
  181. package/dist/version.d.ts +1 -1
  182. package/dist/version.d.ts.map +1 -1
  183. package/dist/version.js +1 -1
  184. package/dist/version.js.map +1 -1
  185. package/dist/watchFixtures.d.ts.map +1 -1
  186. package/dist/watchFixtures.js +38 -18
  187. package/dist/watchFixtures.js.map +1 -1
  188. package/fwd/@dataplan/pg/adaptors/pg/index.d.ts +1 -0
  189. package/fwd/@dataplan/pg/adaptors/pg/index.js +1 -0
  190. package/fwd/@dataplan/pg/index.d.ts +1 -0
  191. package/fwd/@dataplan/pg/index.js +1 -0
  192. package/fwd/@dataplan/pg/pg-sql2/index.d.ts +1 -0
  193. package/fwd/@dataplan/pg/pg-sql2/index.js +1 -0
  194. package/fwd/pg-sql2/index.d.ts +1 -0
  195. package/fwd/pg-sql2/index.js +1 -0
  196. package/package.json +57 -34
  197. package/dist/pgServices.d.ts +0 -18
  198. package/dist/pgServices.d.ts.map +0 -1
  199. package/dist/pgServices.js +0 -133
  200. package/dist/pgServices.js.map +0 -1
  201. package/dist/plugins/PgContextPlugin.d.ts +0 -2
  202. package/dist/plugins/PgContextPlugin.d.ts.map +0 -1
  203. package/dist/plugins/PgContextPlugin.js +0 -52
  204. package/dist/plugins/PgContextPlugin.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,1644 @@
1
1
  # graphile-build-pg
2
2
 
3
+ ## 5.0.0-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2752](https://github.com/graphile/crystal/pull/2752)
8
+ [`92781a1`](https://github.com/graphile/crystal/commit/92781a183b3548902ed92b152ae915d597d62b97)
9
+ Thanks [@benjie](https://github.com/benjie)! - Softens the requirements for a
10
+ column/relation to be treated as "indexed" to reflect the optimizations in
11
+ Postgres v18+. (This may result in more fields, filters, orders and relations
12
+ appearing in your PostGraphile schema - you can use
13
+ `@behavior -filterBy -orderBy` on columns and
14
+ `@behavior -select -list -connection -single -manyToMany` on foreign key
15
+ constraints to remove them again.)
16
+
17
+ - [#2758](https://github.com/graphile/crystal/pull/2758)
18
+ [`eb39702`](https://github.com/graphile/crystal/commit/eb3970215a61a78e18359e6ebb473c2cb3991bd7)
19
+ Thanks [@benjie](https://github.com/benjie)! - Apply `pgOrderByNullsLast` to
20
+ computed columns too.
21
+
22
+ - [`8a5a7c5`](https://github.com/graphile/crystal/commit/8a5a7c536fc4b9b702600c5cc3d413724670c327)
23
+ Thanks [@benjie](https://github.com/benjie)! - Bump to release candidate
24
+
25
+ - Updated dependencies
26
+ [[`9797500`](https://github.com/graphile/crystal/commit/9797500071f4bbd0cc1b73c74e7f402cb1bb687f),
27
+ [`be318e6`](https://github.com/graphile/crystal/commit/be318e666c18ee06e62291d3e7ed7d0d1345eb3b),
28
+ [`abb623d`](https://github.com/graphile/crystal/commit/abb623d59e517c0949f0fef5440b817103c685bf),
29
+ [`31b388c`](https://github.com/graphile/crystal/commit/31b388c6d5546640af7dcf4e6021643e47892ed1),
30
+ [`930240a`](https://github.com/graphile/crystal/commit/930240a4a7d3373f5691d495df752bb8fedac2af),
31
+ [`7b86454`](https://github.com/graphile/crystal/commit/7b864546fa81803ce0e573a2efa2e7f0905b2040),
32
+ [`42a0785`](https://github.com/graphile/crystal/commit/42a0785ddabf58812a22d764eeddfde9362974e5),
33
+ [`d196d60`](https://github.com/graphile/crystal/commit/d196d60664fbc9ffd410c11645db27554b22ac0b),
34
+ [`982c1a5`](https://github.com/graphile/crystal/commit/982c1a566da21706f85c7bfb0adda210e251e6e1),
35
+ [`6a4e3b9`](https://github.com/graphile/crystal/commit/6a4e3b9ec182f7d066600aee0f8cc21d451b0ae2),
36
+ [`c6cbe61`](https://github.com/graphile/crystal/commit/c6cbe6175b0f1f034db59d42cbe594e7d329aba6),
37
+ [`d4ac603`](https://github.com/graphile/crystal/commit/d4ac603da7df6ea01aaa483a7cb29b1e514a90cd),
38
+ [`8a5a7c5`](https://github.com/graphile/crystal/commit/8a5a7c536fc4b9b702600c5cc3d413724670c327),
39
+ [`ea0135f`](https://github.com/graphile/crystal/commit/ea0135fac3f43850b65828f2ff2b01a34cfdff15),
40
+ [`91b8376`](https://github.com/graphile/crystal/commit/91b83765f9ded133031c1de53d6b3926c8011bf5),
41
+ [`b6821f5`](https://github.com/graphile/crystal/commit/b6821f5f4dc13abd0b605be7396c1b3c36e66177)]:
42
+ - @dataplan/pg@1.0.0-rc.1
43
+ - grafast@1.0.0-rc.1
44
+ - pg-sql2@5.0.0-rc.1
45
+ - graphile-build@5.0.0-rc.1
46
+ - pg-introspection@1.0.0-rc.1
47
+ - graphile-config@1.0.0-rc.1
48
+ - tamedevil@0.1.0-rc.1
49
+
50
+ ## 5.0.0-beta.47
51
+
52
+ ### Patch Changes
53
+
54
+ - [#2730](https://github.com/graphile/crystal/pull/2730)
55
+ [`4c3cf22`](https://github.com/graphile/crystal/commit/4c3cf22592f44cb28e399434474ca5fcef0e1a3b)
56
+ Thanks [@benjie](https://github.com/benjie)! - Update `graphql` version range
57
+
58
+ - [#2142](https://github.com/graphile/crystal/pull/2142)
59
+ [`0465b4a`](https://github.com/graphile/crystal/commit/0465b4a038cc8d7ef4a857fb929a3c3b0104441c)
60
+ Thanks [@benjie](https://github.com/benjie)! - GraphQL v16.9.0+ is now
61
+ required for enum thunk support (enums will now break without this)
62
+
63
+ - [#2716](https://github.com/graphile/crystal/pull/2716)
64
+ [`a0a6082`](https://github.com/graphile/crystal/commit/a0a6082173247caf8f76df925a9d8e7926792663)
65
+ Thanks [@benjie](https://github.com/benjie)! - Add ability for Postgres client
66
+ to capture `RAISE NOTIFY` issued during an SQL query. An example follows:
67
+
68
+ Database:
69
+
70
+ ```sql
71
+ create table foo (id serial primary key, bar text);
72
+ create function tg_foo() returns trigger language plpgsql volatile as $
73
+ begin
74
+ raise notice 'Hello World' using hint = 'Hi, ' || NEW.bar;
75
+ return NEW;
76
+ end;
77
+ $;
78
+ create trigger _insert before insert on foo for each row execute function tg_foo();
79
+ ```
80
+
81
+ Plugin:
82
+
83
+ ```ts
84
+ const plugin = extendSchema({
85
+ typeDefs: /* GraphQL */ `
86
+ type PgNotice {
87
+ severity: String
88
+ message: String
89
+ code: String
90
+ detail: String
91
+ hint: String
92
+ }
93
+ extend type CreateFooPayload {
94
+ messages: [PgNotice]
95
+ }
96
+ `,
97
+ plans: {
98
+ CreateFooPayload: {
99
+ messages($payload: any) {
100
+ const $result = get($payload, "result") as PgInsertSingleStep;
101
+ return $result.getNotices();
102
+ },
103
+ },
104
+ },
105
+ });
106
+ ```
107
+
108
+ Result:
109
+
110
+ ```json
111
+ {
112
+ "data": {
113
+ "createFoo": {
114
+ "clientMutationId": null,
115
+ "foo": {
116
+ "id": "WyJmb29zIiwzXQ==",
117
+ "bar": "inputvalue"
118
+ },
119
+ "messages": [
120
+ {
121
+ "severity": "NOTICE",
122
+ "message": "Hello World",
123
+ "code": "00000",
124
+ "detail": null,
125
+ "hint": "Hi, inputvalue"
126
+ }
127
+ ]
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ - [#2709](https://github.com/graphile/crystal/pull/2709)
134
+ [`b539002`](https://github.com/graphile/crystal/commit/b539002a627bf3d595ffb994e871dfc2eb5c2b64)
135
+ Thanks [@benjie](https://github.com/benjie)! - Fix a bug in watch fixtures
136
+ where refreshing a materialized view would result in the schema being rebuilt
137
+ (thanks @zarybnicky!)
138
+
139
+ - [#2711](https://github.com/graphile/crystal/pull/2711)
140
+ [`020b579`](https://github.com/graphile/crystal/commit/020b5791b57282d6fcbd42d0cbfd8be9e95cee47)
141
+ Thanks [@JannisKoeksel](https://github.com/JannisKoeksel)! - Add missing
142
+ exports for 4 plugins (thanks @JannisKoeksel)
143
+
144
+ - [#2723](https://github.com/graphile/crystal/pull/2723)
145
+ [`e790f7a`](https://github.com/graphile/crystal/commit/e790f7ac7933c8ed01465688e20c2af76d2a79e8)
146
+ Thanks [@benjie](https://github.com/benjie)! - `@dataplan/pg` now exports
147
+ `sql` from `pg-sql2` and also adds forwards to the whole module
148
+ (`import ... from '@dataplan/pg/pg-sql2'`)
149
+
150
+ - [#2706](https://github.com/graphile/crystal/pull/2706)
151
+ [`13eb44b`](https://github.com/graphile/crystal/commit/13eb44b0c8fb56252f1ecb3aea99d8f0fe10e3fa)
152
+ Thanks [@benjie](https://github.com/benjie)! - Makes
153
+ isPgCreateMutation/isPgUpdateMutation/isPgDeleteMutation scope available, and
154
+ sets the resource for easier hooking of mutation fields.
155
+
156
+ - [#2718](https://github.com/graphile/crystal/pull/2718)
157
+ [`74e15d5`](https://github.com/graphile/crystal/commit/74e15d5bf2c6aada713711722aa31fb8b2da232d)
158
+ Thanks [@benjie](https://github.com/benjie)! - Port the
159
+ ["enum table domains" feature](https://github.com/graphile/graphile-engine/pull/832)
160
+ from PostGraphile V4, so enum table values can be used as input and output
161
+ from PostgreSQL functions.
162
+
163
+ - [#2715](https://github.com/graphile/crystal/pull/2715)
164
+ [`3488ac0`](https://github.com/graphile/crystal/commit/3488ac0e0e3ffe0dd2a072858390df51e0ebaf39)
165
+ Thanks [@benjie](https://github.com/benjie)! - Add shortcuts for improved DX:
166
+ - `build.pgResources` ← `build.input.pgRegistry.pgResources`
167
+ - `build.pgCodecs` ← `build.input.pgRegistry.pgCodecs`
168
+ - `build.pgRelations` ← `build.input.pgRegistry.pgRelations`
169
+ - `build.pgExecutor` is the first executor (the only executor unless you're
170
+ using multiple databases)
171
+
172
+ - [#2718](https://github.com/graphile/crystal/pull/2718)
173
+ [`b20a63f`](https://github.com/graphile/crystal/commit/b20a63f5ee77734ce2e3aa71f9f4de3c00e27e55)
174
+ Thanks [@benjie](https://github.com/benjie)! - Move a `graphile-build-pg` type
175
+ out of `@dataplan/pg`
176
+
177
+ - [#2725](https://github.com/graphile/crystal/pull/2725)
178
+ [`d414491`](https://github.com/graphile/crystal/commit/d41449156d4983466fee4f34e3e361df4d561b3e)
179
+ Thanks [@benjie](https://github.com/benjie)! - Enable partitions to be exposed
180
+ via the `@partitionExpose child` or `@partitionExpose both` smart tags on the
181
+ partitioned table. Also adds a global configuration option for managing the
182
+ default setting for this (`parent` by default: only expose the parent
183
+ partitioned table, not its underlying child partitions).
184
+
185
+ - [#2723](https://github.com/graphile/crystal/pull/2723)
186
+ [`05f3e44`](https://github.com/graphile/crystal/commit/05f3e449a771aefcd9a81c6275a376ad87e3d316)
187
+ Thanks [@benjie](https://github.com/benjie)! -
188
+ `ObjectStep<PgExecutorContextPlans<...>>` is deprecated; please use
189
+ `Step<PgExecutorContext<...>>` instead.
190
+
191
+ - [#2723](https://github.com/graphile/crystal/pull/2723)
192
+ [`81c62bb`](https://github.com/graphile/crystal/commit/81c62bb9f9b05f7ff1251695712e1777de7315f9)
193
+ Thanks [@benjie](https://github.com/benjie)! - makePgResourceOptions() is now
194
+ simply pgResourceOptions()
195
+
196
+ - Updated dependencies
197
+ [[`4c3cf22`](https://github.com/graphile/crystal/commit/4c3cf22592f44cb28e399434474ca5fcef0e1a3b),
198
+ [`7ce4d41`](https://github.com/graphile/crystal/commit/7ce4d41f9befce7c26e52cbfd7bf98febc764968),
199
+ [`0465b4a`](https://github.com/graphile/crystal/commit/0465b4a038cc8d7ef4a857fb929a3c3b0104441c),
200
+ [`71e0af2`](https://github.com/graphile/crystal/commit/71e0af265c90e9d9d0dc764cc552f7470e860251),
201
+ [`a0a6082`](https://github.com/graphile/crystal/commit/a0a6082173247caf8f76df925a9d8e7926792663),
202
+ [`ab96e5f`](https://github.com/graphile/crystal/commit/ab96e5f58aa3315db9b85b452b048f600cb8353e),
203
+ [`278b4d3`](https://github.com/graphile/crystal/commit/278b4d398eb7db1935caba4155e1d1727284a370),
204
+ [`eaa771b`](https://github.com/graphile/crystal/commit/eaa771b34dbdac1c4d701faa8fb5947e9cf1d1be),
205
+ [`e28e4d9`](https://github.com/graphile/crystal/commit/e28e4d9b651a8ee40582006de34dd011309ba4e1),
206
+ [`e790f7a`](https://github.com/graphile/crystal/commit/e790f7ac7933c8ed01465688e20c2af76d2a79e8),
207
+ [`c8412aa`](https://github.com/graphile/crystal/commit/c8412aa73875aafe64317cc4c655654a86486047),
208
+ [`d0c15cc`](https://github.com/graphile/crystal/commit/d0c15ccc32ed8dec19ff068f851529132dc93302),
209
+ [`b20a63f`](https://github.com/graphile/crystal/commit/b20a63f5ee77734ce2e3aa71f9f4de3c00e27e55),
210
+ [`1ec7ee5`](https://github.com/graphile/crystal/commit/1ec7ee55ed08f09e8a8721510778fd76b300c44b),
211
+ [`bffbb77`](https://github.com/graphile/crystal/commit/bffbb775ea76d1add85422866a6b7e904d2311af),
212
+ [`c48ca48`](https://github.com/graphile/crystal/commit/c48ca4840227b8e5e6a1dc198a189cfd911a602b),
213
+ [`05f3e44`](https://github.com/graphile/crystal/commit/05f3e449a771aefcd9a81c6275a376ad87e3d316),
214
+ [`81c62bb`](https://github.com/graphile/crystal/commit/81c62bb9f9b05f7ff1251695712e1777de7315f9)]:
215
+ - graphile-build@5.0.0-beta.39
216
+ - @dataplan/pg@0.0.1-beta.39
217
+ - grafast@0.1.1-beta.27
218
+ - pg-introspection@0.0.1-beta.13
219
+
220
+ ## 5.0.0-beta.46
221
+
222
+ ### Patch Changes
223
+
224
+ - [#2700](https://github.com/graphile/crystal/pull/2700)
225
+ [`dcd3583`](https://github.com/graphile/crystal/commit/dcd35835d86eb2758bbbc8e24ce647e97dee42b6)
226
+ Thanks [@benjie](https://github.com/benjie)! - Switch to consistently using
227
+ workspace:^ dependencies (in an attempt to appease pnpm)
228
+ - Updated dependencies
229
+ [[`dcd3583`](https://github.com/graphile/crystal/commit/dcd35835d86eb2758bbbc8e24ce647e97dee42b6)]:
230
+ - @dataplan/pg@0.0.1-beta.38
231
+
232
+ ## 5.0.0-beta.45
233
+
234
+ ### Patch Changes
235
+
236
+ - [#2686](https://github.com/graphile/crystal/pull/2686)
237
+ [`5dbb9e8`](https://github.com/graphile/crystal/commit/5dbb9e87850ce8de29ab4fec18c9d06333b642de)
238
+ Thanks [@benjie](https://github.com/benjie)! - Fix a bug with mutations where
239
+ the results of computed columns were calculated using the snapshot from before
240
+ the mutation (due to the way Postgres works). Solved by breaking the
241
+ post-mutation function calls out into a separate post-mutation statement.
242
+
243
+ - [#2683](https://github.com/graphile/crystal/pull/2683)
244
+ [`68a1243`](https://github.com/graphile/crystal/commit/68a1243f104227ebf7d1f3cedcbec49dc3c8e258)
245
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 Refs no longer have
246
+ singularized/pluralized names - we take the name verbatim and apply the
247
+ list/connection suffix to it as needed.
248
+
249
+ If you need the old naming back, please use this plugin (untested):
250
+
251
+ ```ts
252
+ const MyRefsInflectionPlugin = {
253
+ name: "MyRefsInflectionPlugin",
254
+ inflection: {
255
+ replace: {
256
+ refSingle(orig, resolvedPreset, { refDefinition, identifier }) {
257
+ return (
258
+ refDefinition.singleRecordFieldName ?? this.singularize(identifier)
259
+ );
260
+ },
261
+ refList(orig, resolvedPreset, { refDefinition, identifier }) {
262
+ return (
263
+ refDefinition.listFieldName ??
264
+ this.listField(this.pluralize(this.singularize(identifier)))
265
+ );
266
+ },
267
+ refConnection(orig, resolvedPreset, { refDefinition, identifier }) {
268
+ return (
269
+ refDefinition.connectionFieldName ??
270
+ this.connectionField(this.pluralize(this.singularize(identifier)))
271
+ );
272
+ },
273
+ },
274
+ },
275
+ };
276
+ ```
277
+
278
+ - [#2689](https://github.com/graphile/crystal/pull/2689)
279
+ [`6762c70`](https://github.com/graphile/crystal/commit/6762c7005c56d17c06cebb6857e8d295d86399eb)
280
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in
281
+ PgIndexBehaviorsPlugin that would treat all view attributes as unindexed.
282
+ Views can't have indexes, so we must give them the benefit of the doubt.
283
+
284
+ - [#2687](https://github.com/graphile/crystal/pull/2687)
285
+ [`7766c19`](https://github.com/graphile/crystal/commit/7766c19ecefd3aebc965306db90ba29b3b05200c)
286
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue whereby
287
+ nodeId:insert/nodeId:update permissions were not rejected by PgRBACPlugin when
288
+ the underlying columns were not writable.
289
+
290
+ - [#2678](https://github.com/graphile/crystal/pull/2678)
291
+ [`6dafac1`](https://github.com/graphile/crystal/commit/6dafac162955291e5147c21e57734b44e30acb98)
292
+ Thanks [@benjie](https://github.com/benjie)! - Remove peer dependency
293
+ optionality in an attempt to satisfy pnpm's installation algorithms
294
+ - Updated dependencies
295
+ [[`5dbb9e8`](https://github.com/graphile/crystal/commit/5dbb9e87850ce8de29ab4fec18c9d06333b642de),
296
+ [`cfd4c3c`](https://github.com/graphile/crystal/commit/cfd4c3cff0ef40ed87a2c700b7719c1ca0e73588),
297
+ [`c3f9c38`](https://github.com/graphile/crystal/commit/c3f9c38cb00ad4553e4bc3c04e16a7c77bd16142),
298
+ [`3d5c464`](https://github.com/graphile/crystal/commit/3d5c4641df66b431066efd6c74b67ca0d38ba7f4),
299
+ [`05b971e`](https://github.com/graphile/crystal/commit/05b971e2d63cb5c946512bb83e6c255a7d9ec93f),
300
+ [`13513dd`](https://github.com/graphile/crystal/commit/13513ddaea15ad9498a77de7c4e92679498f99ca),
301
+ [`bc2b188`](https://github.com/graphile/crystal/commit/bc2b188a50e00f153dc68df6955399c5917130bd),
302
+ [`87a4c92`](https://github.com/graphile/crystal/commit/87a4c92dc89093a8bd601dcd692910eadf0c4cd3),
303
+ [`703d162`](https://github.com/graphile/crystal/commit/703d162df2cc148ac343c1339b8e7df750aa781d),
304
+ [`c13813e`](https://github.com/graphile/crystal/commit/c13813eecb42c0d9a6703540c022e318e18c5751),
305
+ [`4a9072b`](https://github.com/graphile/crystal/commit/4a9072bfa3d3e86c6013caf2b89a31e87f2bb421),
306
+ [`6dafac1`](https://github.com/graphile/crystal/commit/6dafac162955291e5147c21e57734b44e30acb98),
307
+ [`e15f886`](https://github.com/graphile/crystal/commit/e15f886cae1041416b44b74b75426f8d43000dcf),
308
+ [`34efed0`](https://github.com/graphile/crystal/commit/34efed09892d4b6533f40026de4a6b0a8a35035d),
309
+ [`185d449`](https://github.com/graphile/crystal/commit/185d449ed30d29c9134cc898b50a1473ab2910a2),
310
+ [`e2048e2`](https://github.com/graphile/crystal/commit/e2048e260bf99ed946f92d6ea579e08f126ba4d5)]:
311
+ - @dataplan/pg@0.0.1-beta.37
312
+ - graphile-config@0.0.1-beta.18
313
+ - grafast@0.1.1-beta.26
314
+ - graphile-build@5.0.0-beta.38
315
+ - tamedevil@0.0.0-beta.9
316
+
317
+ ## 5.0.0-beta.44
318
+
319
+ ### Patch Changes
320
+
321
+ - [`9e21b2a`](https://github.com/graphile/crystal/commit/9e21b2ac0814c351d68f50b5a121699e088209bd)
322
+ Thanks [@benjie](https://github.com/benjie)! - Allow changing the Node ID
323
+ codec from the default (`base64JSON`) to your own default via the
324
+ `preset.schema.defaultNodeIdCodec` setting, or even override it on a per-table
325
+ basis with the `@nodeIdCodec` smart tag. Thanks @jsmnbom!
326
+
327
+ - [#2648](https://github.com/graphile/crystal/pull/2648)
328
+ [`73f626b`](https://github.com/graphile/crystal/commit/73f626b8065389f226f66a4752112cf6b013855a)
329
+ Thanks [@benjie](https://github.com/benjie)! - Internal refactor of
330
+ PgTableNodePlugin for safety.
331
+
332
+ - Updated dependencies
333
+ [[`9e21b2a`](https://github.com/graphile/crystal/commit/9e21b2ac0814c351d68f50b5a121699e088209bd),
334
+ [`2adfd6e`](https://github.com/graphile/crystal/commit/2adfd6efedd1ab6831605526a515c683a7e95c2c),
335
+ [`6113518`](https://github.com/graphile/crystal/commit/61135188900c39d0cb6bd2f9c0033f0954cd0e6a)]:
336
+ - graphile-build@5.0.0-beta.37
337
+ - @dataplan/pg@0.0.1-beta.36
338
+ - grafast@0.1.1-beta.25
339
+
340
+ ## 5.0.0-beta.43
341
+
342
+ ### Patch Changes
343
+
344
+ - [#2635](https://github.com/graphile/crystal/pull/2635)
345
+ [`85c8364`](https://github.com/graphile/crystal/commit/85c83642b6fe7abcdb17c6879fbafbe162175843)
346
+ Thanks [@benjie](https://github.com/benjie)! - Remove non-functional fields
347
+ generated from mode:union-returning functions from the schema.
348
+
349
+ ## 5.0.0-beta.42
350
+
351
+ ### Patch Changes
352
+
353
+ - [#2559](https://github.com/graphile/crystal/pull/2559)
354
+ [`4c8f028`](https://github.com/graphile/crystal/commit/4c8f028a7e5c4388efbab53ea65e7b3018ab6d47)
355
+ Thanks [@benjie](https://github.com/benjie)! - Remove `make...Plugin`
356
+ prefix/suffix from plugin factories. (Old name is still supported but
357
+ deprecated, this is non-breaking.)
358
+
359
+ - [#2571](https://github.com/graphile/crystal/pull/2571)
360
+ [`5451c90`](https://github.com/graphile/crystal/commit/5451c9031e341bdae16dc1b7a3b6b19154056701)
361
+ Thanks [@slaskis](https://github.com/slaskis)! - Add support for JSONPath type
362
+ (thanks @slaskis!)
363
+
364
+ - [#2571](https://github.com/graphile/crystal/pull/2571)
365
+ [`7147cb0`](https://github.com/graphile/crystal/commit/7147cb07e4d7286bb3b9e949164a2a232d59e28c)
366
+ Thanks [@slaskis](https://github.com/slaskis)! - 🚨 Give built-in codecs a
367
+ concept of "natural sorting" and "natural equality"; disable ordering by
368
+ default for those without natural sorting, disable filtering by default for
369
+ those without natural equality. Those using AmberPreset will have some order
370
+ enum options and filter options removed from their schema; V4 preset users
371
+ should be unaffected. To restore the previous items, a small plugin can be
372
+ introduced, see:
373
+ https://github.com/slaskis/crystal/blob/bb940399a3a741c0982b53fffbe4604eebe6ffb0/postgraphile/postgraphile/src/plugins/PgV4BehaviorPlugin.ts#L81-L98
374
+
375
+ - [#2593](https://github.com/graphile/crystal/pull/2593)
376
+ [`7847c0b`](https://github.com/graphile/crystal/commit/7847c0b09aa6be5526df8ccdb3f429e680a2da03)
377
+ Thanks [@benjie](https://github.com/benjie)! - Fixes a bug where ordering or
378
+ filtering by 'via' attributes (such as those from polymorphic 'relational'
379
+ tables) resulted in an error.
380
+
381
+ - [#2605](https://github.com/graphile/crystal/pull/2605)
382
+ [`9d86063`](https://github.com/graphile/crystal/commit/9d86063aacf2d064c35bd62e2cf58ea687910ac8)
383
+ Thanks [@benjie](https://github.com/benjie)! - Tweak deps/peerDeps.
384
+
385
+ - [#2593](https://github.com/graphile/crystal/pull/2593)
386
+ [`0e6c4e0`](https://github.com/graphile/crystal/commit/0e6c4e062be3ecb79c0ae30c89fad1550a0b5e98)
387
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `resource.resolveVia()` has
388
+ changed result format; from `{ relation: string, attribute: string }` to
389
+ `{ relationName: string, attributeName: string, relation: PgCodecRelation, attribute: PgCodecAttribute }`.
390
+ If you use `resolveVia`, please be sure to extract the correct properties.
391
+
392
+ - [#2600](https://github.com/graphile/crystal/pull/2600)
393
+ [`ad588ec`](https://github.com/graphile/crystal/commit/ad588ecde230359f56800e414b7c5fa1aed14957)
394
+ Thanks [@benjie](https://github.com/benjie)! - Mark all
395
+ peerDependencies=dependencies modules as optional peerDependencies to make
396
+ pnpm marginally happier hopefully.
397
+ - Updated dependencies
398
+ [[`6abfd4f`](https://github.com/graphile/crystal/commit/6abfd4fcad7633da3c50b2d3ea82979a3a27e317),
399
+ [`5451c90`](https://github.com/graphile/crystal/commit/5451c9031e341bdae16dc1b7a3b6b19154056701),
400
+ [`c54c6db`](https://github.com/graphile/crystal/commit/c54c6db320b3967ab16784a504770c9b5ef24494),
401
+ [`7147cb0`](https://github.com/graphile/crystal/commit/7147cb07e4d7286bb3b9e949164a2a232d59e28c),
402
+ [`9aa2637`](https://github.com/graphile/crystal/commit/9aa26374758e8489515a70a334c7ea4d345c6369),
403
+ [`7847c0b`](https://github.com/graphile/crystal/commit/7847c0b09aa6be5526df8ccdb3f429e680a2da03),
404
+ [`9d86063`](https://github.com/graphile/crystal/commit/9d86063aacf2d064c35bd62e2cf58ea687910ac8),
405
+ [`0e6c4e0`](https://github.com/graphile/crystal/commit/0e6c4e062be3ecb79c0ae30c89fad1550a0b5e98),
406
+ [`ad588ec`](https://github.com/graphile/crystal/commit/ad588ecde230359f56800e414b7c5fa1aed14957)]:
407
+ - pg-introspection@0.0.1-beta.12
408
+ - @dataplan/pg@0.0.1-beta.35
409
+ - grafast@0.1.1-beta.24
410
+ - graphile-build@5.0.0-beta.36
411
+
412
+ ## 5.0.0-beta.41
413
+
414
+ ### Patch Changes
415
+
416
+ - [#2577](https://github.com/graphile/crystal/pull/2577)
417
+ [`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47)
418
+ Thanks [@benjie](https://github.com/benjie)! - Update dependencies
419
+
420
+ - Updated dependencies
421
+ [[`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47),
422
+ [`e0cdabe`](https://github.com/graphile/crystal/commit/e0cdabe25c8894da550546c93bc03b895585544c)]:
423
+ - graphile-build@5.0.0-beta.35
424
+ - graphile-config@0.0.1-beta.17
425
+ - @dataplan/pg@0.0.1-beta.34
426
+ - grafast@0.1.1-beta.23
427
+
428
+ ## 5.0.0-beta.40
429
+
430
+ ### Patch Changes
431
+
432
+ - [#2575](https://github.com/graphile/crystal/pull/2575)
433
+ [`5c802ea6819361eed36b75f246ae0adb35b14669`](https://github.com/graphile/crystal/commit/5c802ea6819361eed36b75f246ae0adb35b14669)
434
+ Thanks [@benjie](https://github.com/benjie)! - Fixes a bug in relational
435
+ polymorphism where PostgreSQL functions returning polymorphic records were
436
+ causing planning errors.
437
+ - Updated dependencies []:
438
+ - @dataplan/pg@0.0.1-beta.33
439
+ - graphile-build@5.0.0-beta.34
440
+
441
+ ## 5.0.0-beta.39
442
+
443
+ ### Patch Changes
444
+
445
+ - [#2436](https://github.com/graphile/crystal/pull/2436)
446
+ [`142e39f26ce329f09bee0b5427f1ddc5103e610e`](https://github.com/graphile/crystal/commit/142e39f26ce329f09bee0b5427f1ddc5103e610e)
447
+ Thanks [@benjie](https://github.com/benjie)! - Don't apply the limitToTypes
448
+ step if the argument wasn't specified.
449
+
450
+ - [#2525](https://github.com/graphile/crystal/pull/2525)
451
+ [`09d95319be3e25e023dfbab9d1542dfe06f65355`](https://github.com/graphile/crystal/commit/09d95319be3e25e023dfbab9d1542dfe06f65355)
452
+ Thanks [@benjie](https://github.com/benjie)! - Plan computed column inputs
453
+ (particularly Node IDs) in the root layer plan, allowing for greater plan
454
+ deduplication and more efficient SQL generation.
455
+
456
+ - [#2482](https://github.com/graphile/crystal/pull/2482)
457
+ [`459e1869a2ec58925b2bac5458af487c52a8ca37`](https://github.com/graphile/crystal/commit/459e1869a2ec58925b2bac5458af487c52a8ca37)
458
+ Thanks [@benjie](https://github.com/benjie)! - Minimum version of Node.js
459
+ bumped to Node 22 (the latest LTS).
460
+
461
+ - [#2521](https://github.com/graphile/crystal/pull/2521)
462
+ [`c43ed67b9d3acbadb172ee88ba9c2a4d32528a25`](https://github.com/graphile/crystal/commit/c43ed67b9d3acbadb172ee88ba9c2a4d32528a25)
463
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in nullable nodeID
464
+ handling for computed column arguments with the Relay preset that was causing
465
+ the entire select to be inhibited on null/undefined.
466
+
467
+ - [#2517](https://github.com/graphile/crystal/pull/2517)
468
+ [`455f4811d37ad8fff91183c7a88621bcf9d79acf`](https://github.com/graphile/crystal/commit/455f4811d37ad8fff91183c7a88621bcf9d79acf)
469
+ Thanks [@benjie](https://github.com/benjie)! - Various of our steps weren't as
470
+ crisp on types as they could be. This makes them a lot stricter:
471
+ - `coalesce()` now yields `null` if it fails
472
+ - `each()` now reflects the type of the list item even if it's not a "list
473
+ capable" step
474
+ - `loadOne()`/`loadMany()` can now track the underlying nullability of the
475
+ callback (can differentiate `Maybe<ReadonlyArrray<Maybe<Thing>>>` from
476
+ `ReadonlyArray<Maybe<Thing>>` from `ReadonlyArray<Thing> | null` etc)
477
+ - `pgSelectFromRecord` (for `@dataplan/pg` users) no longer requires a mutable
478
+ array
479
+
480
+ 🚨 This will potentially break your plan types quite a bit. In particular, the
481
+ `LoadOneCallback` and `LoadManyCallback` types now have 5 (not 4) generic
482
+ parameters, the new one is inserted in the middle (after the second parameter)
483
+ and indicates the true return type of the callback (ignoring promises) - e.g.
484
+ `Maybe<ReadonlyArray<Maybe<ItemType>>>` for `LoadManyCallback`. They have
485
+ sensible defaults if you only specify the first two generics.
486
+
487
+ - [#2523](https://github.com/graphile/crystal/pull/2523)
488
+ [`b05d57b932ea00d10715dcab9f79d443408881fc`](https://github.com/graphile/crystal/commit/b05d57b932ea00d10715dcab9f79d443408881fc)
489
+ Thanks [@Dacjan](https://github.com/Dacjan)! - Fix bug with `@ref ... plural`
490
+ smart tag where multiple `@refVia` are present but the target type is not
491
+ abstract.
492
+ - Updated dependencies
493
+ [[`0e36cb9077c76710d2e407830323f86c5038126e`](https://github.com/graphile/crystal/commit/0e36cb9077c76710d2e407830323f86c5038126e),
494
+ [`5a26196eff8fd1956d73e0b8fdf5cfcb7f01b7d3`](https://github.com/graphile/crystal/commit/5a26196eff8fd1956d73e0b8fdf5cfcb7f01b7d3),
495
+ [`c0c3f48fa9f60cb9a4436ea135979b779ecc71ec`](https://github.com/graphile/crystal/commit/c0c3f48fa9f60cb9a4436ea135979b779ecc71ec),
496
+ [`cef9a37f846b4af105ac20960530d65c9f44afa9`](https://github.com/graphile/crystal/commit/cef9a37f846b4af105ac20960530d65c9f44afa9),
497
+ [`56ce94a847c6a4094643665cbf5d3712f56140b6`](https://github.com/graphile/crystal/commit/56ce94a847c6a4094643665cbf5d3712f56140b6),
498
+ [`070467c4ea693a2516fc8006bebb88b1ab96fb26`](https://github.com/graphile/crystal/commit/070467c4ea693a2516fc8006bebb88b1ab96fb26),
499
+ [`192a27e08763ea26607344a2ea6c7f5c595cc2a3`](https://github.com/graphile/crystal/commit/192a27e08763ea26607344a2ea6c7f5c595cc2a3),
500
+ [`6ef6abce15936a896156d5316020df55cf7d18e3`](https://github.com/graphile/crystal/commit/6ef6abce15936a896156d5316020df55cf7d18e3),
501
+ [`0239c2d519300a72f545e0db7c371adae4ade2a9`](https://github.com/graphile/crystal/commit/0239c2d519300a72f545e0db7c371adae4ade2a9),
502
+ [`0ea439d33ccef7f8d01ac5f54893ab2bbf1cbd4d`](https://github.com/graphile/crystal/commit/0ea439d33ccef7f8d01ac5f54893ab2bbf1cbd4d),
503
+ [`8034614d1078b1bd177b6e7fcc949420614e3245`](https://github.com/graphile/crystal/commit/8034614d1078b1bd177b6e7fcc949420614e3245),
504
+ [`a830770e775a65ce1d09fa767f38e84f5c0e5139`](https://github.com/graphile/crystal/commit/a830770e775a65ce1d09fa767f38e84f5c0e5139),
505
+ [`459e1869a2ec58925b2bac5458af487c52a8ca37`](https://github.com/graphile/crystal/commit/459e1869a2ec58925b2bac5458af487c52a8ca37),
506
+ [`c350e49e372ec12a4cbf04fb6b4260e01832d12b`](https://github.com/graphile/crystal/commit/c350e49e372ec12a4cbf04fb6b4260e01832d12b),
507
+ [`3176ea3e57d626b39613a73117ef97627370ec83`](https://github.com/graphile/crystal/commit/3176ea3e57d626b39613a73117ef97627370ec83),
508
+ [`46a42f5547c041289aa98657ebc6815f4b6c8539`](https://github.com/graphile/crystal/commit/46a42f5547c041289aa98657ebc6815f4b6c8539),
509
+ [`a87bbd76f1a8b60fd86de65922746d830cc160b4`](https://github.com/graphile/crystal/commit/a87bbd76f1a8b60fd86de65922746d830cc160b4),
510
+ [`be3f174c5aae8fe78a240e1bc4e1de7f18644b43`](https://github.com/graphile/crystal/commit/be3f174c5aae8fe78a240e1bc4e1de7f18644b43),
511
+ [`576fb8bad56cb940ab444574d752e914d462018a`](https://github.com/graphile/crystal/commit/576fb8bad56cb940ab444574d752e914d462018a),
512
+ [`9f459101fa4428aa4bac71531e75f99e33da8e17`](https://github.com/graphile/crystal/commit/9f459101fa4428aa4bac71531e75f99e33da8e17),
513
+ [`921665df8babe2651ab3b5886ab68bb518f2125b`](https://github.com/graphile/crystal/commit/921665df8babe2651ab3b5886ab68bb518f2125b),
514
+ [`78bb1a615754d772a5fda000e96073c91fa9eba7`](https://github.com/graphile/crystal/commit/78bb1a615754d772a5fda000e96073c91fa9eba7),
515
+ [`c9cd0cc72a4db4b02b2bdf770161c9346cb4b174`](https://github.com/graphile/crystal/commit/c9cd0cc72a4db4b02b2bdf770161c9346cb4b174),
516
+ [`ab0bcda5fc3c136eea09493a7d9ed4542975858e`](https://github.com/graphile/crystal/commit/ab0bcda5fc3c136eea09493a7d9ed4542975858e),
517
+ [`455f4811d37ad8fff91183c7a88621bcf9d79acf`](https://github.com/graphile/crystal/commit/455f4811d37ad8fff91183c7a88621bcf9d79acf),
518
+ [`45adaff886e7cd72b864150927be6c0cb4a7dfe8`](https://github.com/graphile/crystal/commit/45adaff886e7cd72b864150927be6c0cb4a7dfe8)]:
519
+ - grafast@0.1.1-beta.22
520
+ - pg-sql2@5.0.0-beta.9
521
+ - @dataplan/pg@0.0.1-beta.33
522
+ - graphile-build@5.0.0-beta.34
523
+ - graphile-config@0.0.1-beta.16
524
+ - pg-introspection@0.0.1-beta.11
525
+ - tamedevil@0.0.0-beta.8
526
+
527
+ ## 5.0.0-beta.38
528
+
529
+ ### Patch Changes
530
+
531
+ - [#2407](https://github.com/graphile/crystal/pull/2407)
532
+ [`be1e558d6a1a8cae3bf4b5724c340469d8837504`](https://github.com/graphile/crystal/commit/be1e558d6a1a8cae3bf4b5724c340469d8837504)
533
+ Thanks [@benjie](https://github.com/benjie)! - Generating parameter analysis
534
+ at runtime is unnecessarily expensive, allow callers to pass a parameter
535
+ analysis that has been performed at plan-time and cached.
536
+
537
+ - [#2377](https://github.com/graphile/crystal/pull/2377)
538
+ [`7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7`](https://github.com/graphile/crystal/commit/7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7)
539
+ Thanks [@benjie](https://github.com/benjie)! - Since `ModifierStep` and
540
+ `BaseStep` are no more; `ExecutableStep` can be renamed to simply `Step`. The
541
+ old name (`ExecutableStep`) is now deprecated.
542
+
543
+ - [#2424](https://github.com/graphile/crystal/pull/2424)
544
+ [`e6da5d956ab696932410e7172cedfacba71dbf5e`](https://github.com/graphile/crystal/commit/e6da5d956ab696932410e7172cedfacba71dbf5e)
545
+ Thanks [@benjie](https://github.com/benjie)! - Small tweaks to make exported
546
+ schemas have nicer formatting.
547
+
548
+ - [#2407](https://github.com/graphile/crystal/pull/2407)
549
+ [`ba2bfa15deaaddd92757a56c2b761624afe940bd`](https://github.com/graphile/crystal/commit/ba2bfa15deaaddd92757a56c2b761624afe940bd)
550
+ Thanks [@benjie](https://github.com/benjie)! - Add makeArgsRuntime helper to
551
+ enable generating the argument expressions for a PostgreSQL function at
552
+ runtime, as required by postgraphile-plugin-connection-filter.
553
+
554
+ - [#2398](https://github.com/graphile/crystal/pull/2398)
555
+ [`c041fd250372c57601188b65a6411c8f440afab6`](https://github.com/graphile/crystal/commit/c041fd250372c57601188b65a6411c8f440afab6)
556
+ Thanks [@benjie](https://github.com/benjie)! - Since the following have been
557
+ removed from Grafast, throw an error if they're seen in the schema:
558
+ - `autoApplyAfterParentInputPlan`
559
+ - `autoApplyAfterParentApplyPlan`
560
+ - `autoApplyAfterParentPlan`
561
+ - `autoApplyAfterParentSubscribePlan`
562
+ - `inputPlan`
563
+ - `applyPlan` on input fields
564
+
565
+ Also: when Query type fails to build, throw the underlying error directly.
566
+
567
+ - [#2384](https://github.com/graphile/crystal/pull/2384)
568
+ [`6d19724330d50d076aab9442660fa8abddd095cb`](https://github.com/graphile/crystal/commit/6d19724330d50d076aab9442660fa8abddd095cb)
569
+ Thanks [@benjie](https://github.com/benjie)! - Move postgresql argument logic
570
+ to runtime (from plantime) to avoid plantime eval of input values.
571
+
572
+ - [#2376](https://github.com/graphile/crystal/pull/2376)
573
+ [`da6f3c04efe3d8634c0bc3fcf93ac2518de85322`](https://github.com/graphile/crystal/commit/da6f3c04efe3d8634c0bc3fcf93ac2518de85322)
574
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul Grafast to remove more
575
+ input planning - inputs should be evaluated at runtime - and remove more
576
+ plan-time step evaluation.
577
+
578
+ `FieldArgs.get` is no more; use `FieldArgs.getRaw` or use `bakedInput()`
579
+ (TODO: document) to get the "baked" version of a raw input value.
580
+
581
+ Input object fields no longer have `applyPlan`/`inputPlan`, instead having the
582
+ runtime equivalents `apply()` and `baked()`. `FieldArgs` is no longer
583
+ available on input object fields, since these fields are no longer called at
584
+ plantime; instead, the actual value is passed.
585
+
586
+ `FieldArgs` gains `.typeAt(path)` method that details the GraphQL input type
587
+ at the given path.
588
+
589
+ Field arguments are no longer passed `FieldArgs`, instead they're passed a
590
+ (similar) `FieldArg` object representing the argument value itself.
591
+
592
+ `autoApplyAfterParentPlan` is no more - instead if an argument has `applyPlan`
593
+ it will be called automatically unless it was called during the field plan
594
+ resolver itself.
595
+
596
+ `autoApplyAfterParentSubscribePlan` is no more - instead if an argument has
597
+ `applySubscribePlan` it will be called automatically unless it was called
598
+ during the field plan resolver itself.
599
+
600
+ Field arguments no longer support `inputPlan` - use `bakedInput()` if you need
601
+ that.
602
+
603
+ Input fields no longer support `inputPlan`, `applyPlan`,
604
+ `autoApplyAfterParentInputPlan` nor `autoApplyAfterParentApplyPlan`. Instead,
605
+ `apply()` (which is called by `applyStep()` at runtime) has been added.
606
+
607
+ `sqlValueWithCodec(value, codec)` can be used at runtime in places where
608
+ `$step.placeholder($value, codec)` would have been used previously.
609
+ `placeholder` has been removed from all places that are now runtime - namely
610
+ the list of modifiers below...
611
+
612
+ The following `ModifierStep` classes have all dropped their `Step` suffix,
613
+ these `Modifier` classes now all run at runtime, and are thus no longer steps;
614
+ they're invoked as part of the new `applyInput()` (TODO: document) step:
615
+ - `ModifierStep` &rArr; `Modifier`
616
+ - `PgBooleanFilterStep` &rArr; `PgBooleanFilter`
617
+ - `PgClassFilterStep` &rArr; `PgClassFilter`
618
+ - `PgConditionCapableParentStep` &rArr; `PgConditionCapableParent`
619
+ - `PgConditionLikeStep` &rArr; `PgConditionLike`
620
+ - `PgConditionStepMode` &rArr; `PgConditionMode`
621
+ - `PgConditionStep` &rArr; `PgCondition`
622
+ - `PgManyFilterStep` &rArr; `PgManyFilter`
623
+ - `PgOrFilterStep` &rArr; `PgOrFilter`
624
+ - `PgTempTableStep` &rArr; `PgTempTable`
625
+ - `SetterCapableStep` &rArr; `SetterCapable`
626
+ - `SetterStep` &rArr; `Setter`
627
+
628
+ (Interestingly, other than the removal of `placeholder` and the fact they deal
629
+ with runtime values rather than steps now, they're very similar to what they
630
+ were before.)
631
+
632
+ The deprecated forms of the above have been removed.
633
+
634
+ Methods that rely on these modifier plans have been removed:
635
+ - `PgUnionAllStep.wherePlan` - use
636
+ `fieldArg.apply($unionAll, qb => qb.whereBuilder())` instead
637
+ - `PgUnionAllStep.havingPlan` - use
638
+ `fieldArg.apply($unionAll, qb => qb.havingBuilder())` instead
639
+ - Same for PgSelectStep
640
+
641
+ The following gain query builders:
642
+ - `PgInsertSingle`
643
+ - `PgUpdateSingle`
644
+ - `PgDeleteSingle`
645
+
646
+ Query builders gain `meta`, an object that can be augmented with metadata
647
+ about the operation (typically this relates to cursors and similar
648
+ functionality). This is now used to implement `clientMutationId`.
649
+
650
+ Extends query builders with additional functionality.
651
+
652
+ Many of the types have had their generics changed, TypeScript should guide you
653
+ if you have issues here.
654
+
655
+ `NodeIdHandler` now requires a `getIdentifiers` method that runs at runtime
656
+ and returns the identifiers from a decoded NodeId string.
657
+
658
+ Types around GraphQL Global Object Identification (i.e. `Node` / `id`) have
659
+ changed.
660
+
661
+ - [#2357](https://github.com/graphile/crystal/pull/2357)
662
+ [`8026b982a81776fb3d1d808392970c2d678c4023`](https://github.com/graphile/crystal/commit/8026b982a81776fb3d1d808392970c2d678c4023)
663
+ Thanks [@benjie](https://github.com/benjie)! - Start migrating away from
664
+ `applyPlan`/`inputPlan`. ~~When adding an argument to a field you can now
665
+ augment the field's plan resolver via `context.addToPlanResolver` hook~~ (this
666
+ was later replaced with new `inputApply()` step, and arguments still keep
667
+ `applyPlan` though input object fields lose it). Use this and other changes to
668
+ move handling of orderBy to runtime from plantime.
669
+
670
+ Introduces runtime query builder for `PgSelectStep` and `PgUnionAllStep`, and
671
+ `PgSelectStep.apply()`/`PgUnionAllStep.apply()` so that you can register
672
+ callbacks that will augment the query builder at runtime.
673
+
674
+ - [#2407](https://github.com/graphile/crystal/pull/2407)
675
+ [`15854c5109114919b3d38fa675c539cda1f634a1`](https://github.com/graphile/crystal/commit/15854c5109114919b3d38fa675c539cda1f634a1)
676
+ Thanks [@benjie](https://github.com/benjie)! - Ensures that the `condition`
677
+ argument is added before the `orderBy` argument is added. This was necessary
678
+ due to postgraphile-plugin-fulltext-filter wishing to order by the result of
679
+ having added a condition (so adding the condition must come first).
680
+ - Updated dependencies
681
+ [[`d34014a9a3c469154cc796086ba13719954731e5`](https://github.com/graphile/crystal/commit/d34014a9a3c469154cc796086ba13719954731e5),
682
+ [`d3ae3415c230784fdfefc9d192ad93aca462bceb`](https://github.com/graphile/crystal/commit/d3ae3415c230784fdfefc9d192ad93aca462bceb),
683
+ [`98516379ac355a0833a64e002f3717cc3a1d6473`](https://github.com/graphile/crystal/commit/98516379ac355a0833a64e002f3717cc3a1d6473),
684
+ [`f8602d05eed3247c90b87c55d7af580d1698effc`](https://github.com/graphile/crystal/commit/f8602d05eed3247c90b87c55d7af580d1698effc),
685
+ [`65df25534fa3f787ba2ab7fd9547d295ff2b1288`](https://github.com/graphile/crystal/commit/65df25534fa3f787ba2ab7fd9547d295ff2b1288),
686
+ [`1b3c76efd27df73eab3a5a1d221ce13de4cd6b1a`](https://github.com/graphile/crystal/commit/1b3c76efd27df73eab3a5a1d221ce13de4cd6b1a),
687
+ [`f6e22692b628703b8ea48e580dc0b6f0bcbc9c5a`](https://github.com/graphile/crystal/commit/f6e22692b628703b8ea48e580dc0b6f0bcbc9c5a),
688
+ [`e10c372dafbe0d6014b1e946349b22f40aa87ef9`](https://github.com/graphile/crystal/commit/e10c372dafbe0d6014b1e946349b22f40aa87ef9),
689
+ [`c3538050abbb485cf1d43f7c870b89f1ad7c2218`](https://github.com/graphile/crystal/commit/c3538050abbb485cf1d43f7c870b89f1ad7c2218),
690
+ [`3c0a925f26f10cae627a23c49c75ccd8d76b60c8`](https://github.com/graphile/crystal/commit/3c0a925f26f10cae627a23c49c75ccd8d76b60c8),
691
+ [`fcaeb48844156e258a037f420ea1505edb50c52a`](https://github.com/graphile/crystal/commit/fcaeb48844156e258a037f420ea1505edb50c52a),
692
+ [`68926abc31c32ce527327ffbb1ede4b0b7be446b`](https://github.com/graphile/crystal/commit/68926abc31c32ce527327ffbb1ede4b0b7be446b),
693
+ [`98c5009e21e423b0da22c2cb70cdb62909578f50`](https://github.com/graphile/crystal/commit/98c5009e21e423b0da22c2cb70cdb62909578f50),
694
+ [`4b49dbd2df3b339a2ba3f1e9ff400fa1a125298b`](https://github.com/graphile/crystal/commit/4b49dbd2df3b339a2ba3f1e9ff400fa1a125298b),
695
+ [`d7950e8e28ec6106a4ce2f7fe5e35d88b10eac48`](https://github.com/graphile/crystal/commit/d7950e8e28ec6106a4ce2f7fe5e35d88b10eac48),
696
+ [`c8f1971ea4198633ec97f72f82abf65089f71a88`](https://github.com/graphile/crystal/commit/c8f1971ea4198633ec97f72f82abf65089f71a88),
697
+ [`182ed0564104f59b012e0f9ffd452556b0927750`](https://github.com/graphile/crystal/commit/182ed0564104f59b012e0f9ffd452556b0927750),
698
+ [`dd3d22eab73a8554715bf1111e30586251f69a88`](https://github.com/graphile/crystal/commit/dd3d22eab73a8554715bf1111e30586251f69a88),
699
+ [`a120a8e43b24dfc174950cdbb69e481272a0b45e`](https://github.com/graphile/crystal/commit/a120a8e43b24dfc174950cdbb69e481272a0b45e),
700
+ [`be1e558d6a1a8cae3bf4b5724c340469d8837504`](https://github.com/graphile/crystal/commit/be1e558d6a1a8cae3bf4b5724c340469d8837504),
701
+ [`3b0f5082b2272997ce33ce8823a4752513d19e28`](https://github.com/graphile/crystal/commit/3b0f5082b2272997ce33ce8823a4752513d19e28),
702
+ [`84f06eafa051e907a3050237ac6ee5aefb184652`](https://github.com/graphile/crystal/commit/84f06eafa051e907a3050237ac6ee5aefb184652),
703
+ [`4a3aeaa77c8b8d2e39c1a9d05581d0c613b812cf`](https://github.com/graphile/crystal/commit/4a3aeaa77c8b8d2e39c1a9d05581d0c613b812cf),
704
+ [`3789326b2e2fdb86519acc75e606c752ddefe590`](https://github.com/graphile/crystal/commit/3789326b2e2fdb86519acc75e606c752ddefe590),
705
+ [`12d3a7174949794a1679132635e196f5dadce8a2`](https://github.com/graphile/crystal/commit/12d3a7174949794a1679132635e196f5dadce8a2),
706
+ [`ab7658ac44e1a5a0a98c6bb688a26d94b1175cc1`](https://github.com/graphile/crystal/commit/ab7658ac44e1a5a0a98c6bb688a26d94b1175cc1),
707
+ [`bc2a00d35f0a1954dba22e857adc3f4e2f5118e5`](https://github.com/graphile/crystal/commit/bc2a00d35f0a1954dba22e857adc3f4e2f5118e5),
708
+ [`ceeb9a6b63e566b09298e0440a385943302ad0f9`](https://github.com/graphile/crystal/commit/ceeb9a6b63e566b09298e0440a385943302ad0f9),
709
+ [`3e8c64bef928295494119e15e1e55cbdadb696fa`](https://github.com/graphile/crystal/commit/3e8c64bef928295494119e15e1e55cbdadb696fa),
710
+ [`0fc2db95d90df918cf5c59ef85f22ac78d8000d3`](https://github.com/graphile/crystal/commit/0fc2db95d90df918cf5c59ef85f22ac78d8000d3),
711
+ [`90e81a5deeae554a8be2dd55dcd01489860e96e6`](https://github.com/graphile/crystal/commit/90e81a5deeae554a8be2dd55dcd01489860e96e6),
712
+ [`836c8327a5ca1bd3c69f72055e71d00694de363e`](https://github.com/graphile/crystal/commit/836c8327a5ca1bd3c69f72055e71d00694de363e),
713
+ [`2f31836cb89a7ab27a8919803fe12b53a46d77e4`](https://github.com/graphile/crystal/commit/2f31836cb89a7ab27a8919803fe12b53a46d77e4),
714
+ [`c59132eb7a93bc82493d2f1ca050db8aaea9f4d1`](https://github.com/graphile/crystal/commit/c59132eb7a93bc82493d2f1ca050db8aaea9f4d1),
715
+ [`7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7`](https://github.com/graphile/crystal/commit/7c38cdeffe034c9b4f5cdd03a8f7f446bd52dcb7),
716
+ [`728888b28fcd2a6fc481e0ccdfe20d41181a091f`](https://github.com/graphile/crystal/commit/728888b28fcd2a6fc481e0ccdfe20d41181a091f),
717
+ [`f4f39092d7a51517668384945895d3b450237cce`](https://github.com/graphile/crystal/commit/f4f39092d7a51517668384945895d3b450237cce),
718
+ [`5cf3dc9d158891eaf324b2cd4f485d1d4bbb6b5e`](https://github.com/graphile/crystal/commit/5cf3dc9d158891eaf324b2cd4f485d1d4bbb6b5e),
719
+ [`925689578ee9def403382df70f0e003bb299c166`](https://github.com/graphile/crystal/commit/925689578ee9def403382df70f0e003bb299c166),
720
+ [`83d3b533e702cc875b46ba2ca02bf3642b421be8`](https://github.com/graphile/crystal/commit/83d3b533e702cc875b46ba2ca02bf3642b421be8),
721
+ [`7001138c38e09822ad13db1018c62d2cac37941e`](https://github.com/graphile/crystal/commit/7001138c38e09822ad13db1018c62d2cac37941e),
722
+ [`e9e7e33665e22ec397e9ead054d2e4aad3eadc8c`](https://github.com/graphile/crystal/commit/e9e7e33665e22ec397e9ead054d2e4aad3eadc8c),
723
+ [`bb6ec8d834e3e630e28316196246f514114a2296`](https://github.com/graphile/crystal/commit/bb6ec8d834e3e630e28316196246f514114a2296),
724
+ [`3e188c2e981193d228ba3b7433f5e326336f629b`](https://github.com/graphile/crystal/commit/3e188c2e981193d228ba3b7433f5e326336f629b),
725
+ [`07a5469e5d3d050a7bcab928bb751c9e150d2e49`](https://github.com/graphile/crystal/commit/07a5469e5d3d050a7bcab928bb751c9e150d2e49),
726
+ [`e6da5d956ab696932410e7172cedfacba71dbf5e`](https://github.com/graphile/crystal/commit/e6da5d956ab696932410e7172cedfacba71dbf5e),
727
+ [`2b1918d053f590cdc534c8cb81f7e74e96c1bbe6`](https://github.com/graphile/crystal/commit/2b1918d053f590cdc534c8cb81f7e74e96c1bbe6),
728
+ [`037a1bcdc8ed8493d4748e08c18f258e4382a815`](https://github.com/graphile/crystal/commit/037a1bcdc8ed8493d4748e08c18f258e4382a815),
729
+ [`72b300b436a7acedaa7d0e3a7a5458d15a0e5396`](https://github.com/graphile/crystal/commit/72b300b436a7acedaa7d0e3a7a5458d15a0e5396),
730
+ [`770363214ee630746cddc9080dec22bbf38a3bb5`](https://github.com/graphile/crystal/commit/770363214ee630746cddc9080dec22bbf38a3bb5),
731
+ [`d1ecb39693a341f85762b27012ec4ea013857b0c`](https://github.com/graphile/crystal/commit/d1ecb39693a341f85762b27012ec4ea013857b0c),
732
+ [`042ebafe11fcf7e2ecac9b131265a55dddd42a6d`](https://github.com/graphile/crystal/commit/042ebafe11fcf7e2ecac9b131265a55dddd42a6d),
733
+ [`fa005eb0783c58a2476add984fbdd462e0e91dbe`](https://github.com/graphile/crystal/commit/fa005eb0783c58a2476add984fbdd462e0e91dbe),
734
+ [`df0e5a0f968cf6f9ae97b68745a9a2f391324bf5`](https://github.com/graphile/crystal/commit/df0e5a0f968cf6f9ae97b68745a9a2f391324bf5),
735
+ [`ef4cf75acd80e6b9c700c2b5a7ace899e565ef7f`](https://github.com/graphile/crystal/commit/ef4cf75acd80e6b9c700c2b5a7ace899e565ef7f),
736
+ [`ba2bfa15deaaddd92757a56c2b761624afe940bd`](https://github.com/graphile/crystal/commit/ba2bfa15deaaddd92757a56c2b761624afe940bd),
737
+ [`c041fd250372c57601188b65a6411c8f440afab6`](https://github.com/graphile/crystal/commit/c041fd250372c57601188b65a6411c8f440afab6),
738
+ [`629b45aab49151810f6efc18ac18f7d735626433`](https://github.com/graphile/crystal/commit/629b45aab49151810f6efc18ac18f7d735626433),
739
+ [`6d19724330d50d076aab9442660fa8abddd095cb`](https://github.com/graphile/crystal/commit/6d19724330d50d076aab9442660fa8abddd095cb),
740
+ [`ca5bc1a834df7b894088fb8602a12f9fcff55b38`](https://github.com/graphile/crystal/commit/ca5bc1a834df7b894088fb8602a12f9fcff55b38),
741
+ [`da6f3c04efe3d8634c0bc3fcf93ac2518de85322`](https://github.com/graphile/crystal/commit/da6f3c04efe3d8634c0bc3fcf93ac2518de85322),
742
+ [`8026b982a81776fb3d1d808392970c2d678c4023`](https://github.com/graphile/crystal/commit/8026b982a81776fb3d1d808392970c2d678c4023),
743
+ [`d257a1a1e59a7d4da0bf67345c07b04c04a2f7da`](https://github.com/graphile/crystal/commit/d257a1a1e59a7d4da0bf67345c07b04c04a2f7da),
744
+ [`00d79e6f5608affc3f36bb0ce4ca2547230174e7`](https://github.com/graphile/crystal/commit/00d79e6f5608affc3f36bb0ce4ca2547230174e7),
745
+ [`412b92a0b1e03ad962521f630b57a996d8620cf6`](https://github.com/graphile/crystal/commit/412b92a0b1e03ad962521f630b57a996d8620cf6),
746
+ [`f0bc64b71914dfdd3612f4b65370401fd85b97bc`](https://github.com/graphile/crystal/commit/f0bc64b71914dfdd3612f4b65370401fd85b97bc)]:
747
+ - grafast@0.1.1-beta.21
748
+ - @dataplan/pg@0.0.1-beta.32
749
+ - pg-sql2@5.0.0-beta.8
750
+ - graphile-build@5.0.0-beta.33
751
+ - graphile-config@0.0.1-beta.15
752
+
753
+ ## 5.0.0-beta.37
754
+
755
+ ### Patch Changes
756
+
757
+ - Updated dependencies
758
+ [[`fc9d64eb8`](https://github.com/graphile/crystal/commit/fc9d64eb8002d3b72625bc505ed76c07f4296d68),
759
+ [`a2dbad945`](https://github.com/graphile/crystal/commit/a2dbad9457195bec797d72e4e6d45f45278f9f69),
760
+ [`31078842a`](https://github.com/graphile/crystal/commit/31078842ad0eeaa7111491fa9eb5e3bd026fb38a),
761
+ [`5a0ec31de`](https://github.com/graphile/crystal/commit/5a0ec31deae91f1dd17a77a4bb7c1a911a27e26a)]:
762
+ - @dataplan/pg@0.0.1-beta.31
763
+ - grafast@0.1.1-beta.20
764
+ - graphile-build@5.0.0-beta.32
765
+
766
+ ## 5.0.0-beta.36
767
+
768
+ ### Patch Changes
769
+
770
+ - Updated dependencies
771
+ [[`83c546509`](https://github.com/graphile/crystal/commit/83c546509d24be2955a56120981363ad3c3a5f3f)]:
772
+ - graphile-config@0.0.1-beta.14
773
+ - @dataplan/pg@0.0.1-beta.30
774
+ - grafast@0.1.1-beta.19
775
+ - graphile-build@5.0.0-beta.31
776
+
777
+ ## 5.0.0-beta.35
778
+
779
+ ### Patch Changes
780
+
781
+ - Updated dependencies
782
+ [[`7580bc16a`](https://github.com/graphile/crystal/commit/7580bc16a050fd8d916c6dabe9d1ded980090349),
783
+ [`b336a5829`](https://github.com/graphile/crystal/commit/b336a58291cfec7aef884d3843172d408abfaf3c)]:
784
+ - graphile-config@0.0.1-beta.13
785
+ - @dataplan/pg@0.0.1-beta.29
786
+ - grafast@0.1.1-beta.18
787
+ - graphile-build@5.0.0-beta.30
788
+
789
+ ## 5.0.0-beta.34
790
+
791
+ ### Patch Changes
792
+
793
+ - [#2269](https://github.com/graphile/crystal/pull/2269)
794
+ [`bee1db4f4`](https://github.com/graphile/crystal/commit/bee1db4f442502b62cb05cd0f7092990328497b8)
795
+ Thanks [@benjie](https://github.com/benjie)! - Hotfix to inflection changes in
796
+ beta.34 - fixes behavior of `orderByAttributeEnum` and removes V4 override of
797
+ `_joinAttributeNames` which shouldn't be necessary (and seems to do more harm
798
+ than good).
799
+
800
+ ## 5.0.0-beta.33
801
+
802
+ ### Patch Changes
803
+
804
+ - [#2251](https://github.com/graphile/crystal/pull/2251)
805
+ [`555d65cce`](https://github.com/graphile/crystal/commit/555d65ccecb875f1e34cb40108176f0ddc11df64)
806
+ Thanks [@benjie](https://github.com/benjie)! - We now enforce GraphQL name
807
+ checks earlier and supply more information to better reveal where any invalid
808
+ names are originating.
809
+
810
+ - [#2251](https://github.com/graphile/crystal/pull/2251)
811
+ [`efa25d97d`](https://github.com/graphile/crystal/commit/efa25d97df2e00f13bc29806d396a8366a121031)
812
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 **Inflection changes!** V4
813
+ preset should be (mostly) unaffected, but Amber preset will likely have
814
+ changes between `ID` and `ROW_ID` in various places, plus missing underscores
815
+ may reappear/etc. Be sure to diff your schema before/after this update (as you
816
+ should with every update... and to be honest, with everything else that
817
+ changes your schema).
818
+
819
+ Normally `camelCase`/`upperCamelCase`/`constantCase`/etc are the final step
820
+ before we name a field/type/enumValue/etc; however it turns out that some
821
+ inflectors were using the camel-cased output as input to their own
822
+ inflection - for example, when calculating the name of a relation it would
823
+ take the column names _camel-cased_ and then combine them into a string which
824
+ was then camel-cased again. Even worse, when these values are then used in an
825
+ enum, it would then be _constant-cased_, so you end up with string 👉
826
+ camel-case 👉 concatenate 👉 camel-case 👉 concatenate 👉 constant-case. This
827
+ lead to certain edge cases where fields with numbers or underscores may come
828
+ out in unexpected ways.
829
+
830
+ This release creates "raw" backing inflectors for a few things that remove the
831
+ final step (camel-casing) so that later usage may choose to use the raw value
832
+ rather than the camel-cased value. And due to this, we've also moved the `id`
833
+ 👉 `rowId` tweaks from the `attribute()` inflector into the `_attributeName()`
834
+ inflector - which is where most of the changes have come from. We've undone
835
+ this change in the V4 preset, so if you don't use the V5 preset but need to
836
+ undo this change, please check out the V4 overrides of:
837
+ - [`_attributeName`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/presets/v4.ts#L135-L145)
838
+ - [`_joinAttributeNames`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/plugins/PgV4InflectionPlugin.ts#L131-L138)
839
+ - [`attribute`](https://github.com/graphile/crystal/blob/ca9c872ff6c95915bd9e2f33c1370d86742ce815/postgraphile/postgraphile/src/presets/v4.ts#L158-L169)
840
+
841
+ Note: the V4 preset is fairly stable, but the Amber preset is being constantly
842
+ iterated to improve the OOTB V5 experience - it will only be stable once
843
+ V5.0.0 is released.
844
+
845
+ - [#2261](https://github.com/graphile/crystal/pull/2261)
846
+ [`a202145c5`](https://github.com/graphile/crystal/commit/a202145c5af3e5467424e6772d532c2db1eb67c6)
847
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug causing modifications
848
+ to introspection results (e.g. fake constraints) to be persisted to next watch
849
+ tick via gather cache.
850
+
851
+ - [#2257](https://github.com/graphile/crystal/pull/2257)
852
+ [`2a37fb99a`](https://github.com/graphile/crystal/commit/2a37fb99a04784647dff6ab8c5bfffb072cc6e8a)
853
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul how PostgreSQL arrays
854
+ are handled, and fix the "empty arrays become null" bug caused by using
855
+ `array_agg()`.
856
+
857
+ - [#2265](https://github.com/graphile/crystal/pull/2265)
858
+ [`5d9f2de85`](https://github.com/graphile/crystal/commit/5d9f2de8519b216732b17464d0b326ec8d7c58de)
859
+ Thanks [@benjie](https://github.com/benjie)! - Prevents inlining (via joins)
860
+ child PgSelect queries into parents when the parent is relying on implicit
861
+ ordering coming from a function or suitably flagged subquery.
862
+
863
+ - [#2251](https://github.com/graphile/crystal/pull/2251)
864
+ [`84f07626d`](https://github.com/graphile/crystal/commit/84f07626d9dd9e22f6ae6a1045053df046fbc4ea)
865
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `orderByAttributeEnum`
866
+ inflector no longer requires/provides attribute - it can be trivially fetched
867
+ from `codec` and `attributeName` via
868
+ `const attribute = codec.attributes[attributeName]`
869
+
870
+ - [#2250](https://github.com/graphile/crystal/pull/2250)
871
+ [`86e228299`](https://github.com/graphile/crystal/commit/86e22829996a745dc1f8cbaf32e709b1bd346e79)
872
+ Thanks [@benjie](https://github.com/benjie)! - Integrate preset.lib into build
873
+ and gather context so plugins can use modules without needing to install
874
+ dependencies (and thus avoiding the dual package hazard).
875
+
876
+ - [#2249](https://github.com/graphile/crystal/pull/2249)
877
+ [`933786868`](https://github.com/graphile/crystal/commit/9337868689f4f05ab5faf2d4bb18a8ad8e23e189)
878
+ Thanks [@benjie](https://github.com/benjie)! -
879
+ `PgCodec.extensions.pg.serviceName` is now nullable to indicate natively
880
+ supported PG types.
881
+ - Updated dependencies
882
+ [[`555d65cce`](https://github.com/graphile/crystal/commit/555d65ccecb875f1e34cb40108176f0ddc11df64),
883
+ [`69ab227b5`](https://github.com/graphile/crystal/commit/69ab227b5e1c057a6fc8ebba87bde80d5aa7f3c8),
884
+ [`efa25d97d`](https://github.com/graphile/crystal/commit/efa25d97df2e00f13bc29806d396a8366a121031),
885
+ [`d13b76f0f`](https://github.com/graphile/crystal/commit/d13b76f0fef2a58466ecb44880af62d25910e83e),
886
+ [`b167bd849`](https://github.com/graphile/crystal/commit/b167bd8499be5866b71bac6594d55bd768fda1d0),
887
+ [`dc5746594`](https://github.com/graphile/crystal/commit/dc5746594d7870a13296f405f4327f89d17dac1e),
888
+ [`7bf045282`](https://github.com/graphile/crystal/commit/7bf04528264c3b9c509f148253fed96d3394141d),
889
+ [`2a37fb99a`](https://github.com/graphile/crystal/commit/2a37fb99a04784647dff6ab8c5bfffb072cc6e8a),
890
+ [`5d9f2de85`](https://github.com/graphile/crystal/commit/5d9f2de8519b216732b17464d0b326ec8d7c58de),
891
+ [`6a13ecbd4`](https://github.com/graphile/crystal/commit/6a13ecbd45534c39c846c1d8bc58242108426dd1),
892
+ [`86e228299`](https://github.com/graphile/crystal/commit/86e22829996a745dc1f8cbaf32e709b1bd346e79),
893
+ [`cba6ee06d`](https://github.com/graphile/crystal/commit/cba6ee06d38ec5ae4ef4dafa58569fad61f239ac)]:
894
+ - graphile-build@5.0.0-beta.29
895
+ - grafast@0.1.1-beta.17
896
+ - graphile-config@0.0.1-beta.12
897
+ - pg-introspection@0.0.1-beta.10
898
+ - pg-sql2@5.0.0-beta.7
899
+ - @dataplan/pg@0.0.1-beta.28
900
+
901
+ ## 5.0.0-beta.32
902
+
903
+ ### Patch Changes
904
+
905
+ - [#2229](https://github.com/graphile/crystal/pull/2229)
906
+ [`87bdf9730`](https://github.com/graphile/crystal/commit/87bdf973036a3801e44b22cfc9f0feb639de4aa9)
907
+ Thanks [@benjie](https://github.com/benjie)! - Fixes bug handling optional
908
+ arguments to computed column functions.
909
+
910
+ - [#2230](https://github.com/graphile/crystal/pull/2230)
911
+ [`aa480f6a3`](https://github.com/graphile/crystal/commit/aa480f6a3db8b545ff113e7a3a4b479be42a0eab)
912
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug recognizing the
913
+ required-ness of arguments to functions using `out` args or `returns table` -
914
+ this particularly affects people using `pgStrictFunctions` and should result
915
+ in a couple of required arguments becoming nullable.
916
+ - Updated dependencies
917
+ [[`5626c7d36`](https://github.com/graphile/crystal/commit/5626c7d3649285e11fe9857dfa319d2883d027eb),
918
+ [`76c7340b7`](https://github.com/graphile/crystal/commit/76c7340b74d257c454beec883384d19ef078b21e)]:
919
+ - graphile-config@0.0.1-beta.11
920
+ - grafast@0.1.1-beta.16
921
+ - @dataplan/pg@0.0.1-beta.27
922
+ - graphile-build@5.0.0-beta.28
923
+
924
+ ## 5.0.0-beta.31
925
+
926
+ ### Patch Changes
927
+
928
+ - [#2208](https://github.com/graphile/crystal/pull/2208)
929
+ [`632691409`](https://github.com/graphile/crystal/commit/6326914098af55f20ac85ccf3537e75910a7dafa)
930
+ Thanks [@benjie](https://github.com/benjie)! - Behaviors can now be registered
931
+ by more than one plugin. Apply behaviors to more entities. Don't log so much.
932
+ - Updated dependencies
933
+ [[`632691409`](https://github.com/graphile/crystal/commit/6326914098af55f20ac85ccf3537e75910a7dafa)]:
934
+ - graphile-build@5.0.0-beta.27
935
+
936
+ ## 5.0.0-beta.30
937
+
938
+ ### Patch Changes
939
+
940
+ - [#2207](https://github.com/graphile/crystal/pull/2207)
941
+ [`0b1f7b577`](https://github.com/graphile/crystal/commit/0b1f7b577114a49b8e3283823845ec6e37484240)
942
+ Thanks [@benjie](https://github.com/benjie)! - Fix overwhelming logs and
943
+ errors being output by the new behavior system
944
+
945
+ - Updated dependencies
946
+ [[`0b1f7b577`](https://github.com/graphile/crystal/commit/0b1f7b577114a49b8e3283823845ec6e37484240)]:
947
+ - graphile-build@5.0.0-beta.26
948
+
949
+ ## 5.0.0-beta.29
950
+
951
+ ### Patch Changes
952
+
953
+ - [#2197](https://github.com/graphile/crystal/pull/2197)
954
+ [`d7e6e714f`](https://github.com/graphile/crystal/commit/d7e6e714f0cc5656112703484298b77538b2dccc)
955
+ Thanks [@benjie](https://github.com/benjie)! - Amber preset now supports
956
+ `@resultFieldName` on mutation functions, like V4 preset does.
957
+
958
+ - [#2187](https://github.com/graphile/crystal/pull/2187)
959
+ [`bb006ec7b`](https://github.com/graphile/crystal/commit/bb006ec7bdab24192c84f093ce3f92969aeb7279)
960
+ Thanks [@benjie](https://github.com/benjie)! - Fix behavior inheritance
961
+ especially around functions incorrectly inheriting from their underlying
962
+ codecs, bugs in unlogged/temp table behavior, and incorrect skipping of
963
+ generating table types. You may find after this change you have fields
964
+ appearing in your schema that were not present before, typically these will
965
+ represent database functions where you `@omit`'d the underlying table -
966
+ omitting the table should not prevent a function from accessing it. Further,
967
+ fix behavior of `@omit read` emulation to add
968
+ `-connection -list -array -single`.
969
+
970
+ - [#2156](https://github.com/graphile/crystal/pull/2156)
971
+ [`6fdc6cad8`](https://github.com/graphile/crystal/commit/6fdc6cad8f8d1230202df533d05cc2bd80538f09)
972
+ Thanks [@benjie](https://github.com/benjie)! - Added `pgRegistry.pgExecutors`
973
+ so executors don't need to be looked up from a resource (this causes
974
+ confusion) - instead they can be referenced directly. By default there's one
975
+ executor called `main`, i.e. `build.input.pgRegistry.pgExecutors.main`.
976
+
977
+ - [#2189](https://github.com/graphile/crystal/pull/2189)
978
+ [`0df171123`](https://github.com/graphile/crystal/commit/0df17112300a8ea391dfd220c5f05d362ceaa58a)
979
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue with manyToMany
980
+ behavior warnings
981
+
982
+ - [#2158](https://github.com/graphile/crystal/pull/2158)
983
+ [`dfac43992`](https://github.com/graphile/crystal/commit/dfac43992019b0b6c1d113d2490a87eb03d103d7)
984
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 Amber preset no longer
985
+ enables backward pagination options (`before`, `last`) on functions by
986
+ default - add `+backwards` behavior to these functions to enable. If you're
987
+ using the V4 preset you should be unaffected by this change because it enables
988
+ `+backwards` by default.
989
+
990
+ - [#2160](https://github.com/graphile/crystal/pull/2160)
991
+ [`426e9320e`](https://github.com/graphile/crystal/commit/426e9320e76ef95927eebb6fe4072050b6208771)
992
+ Thanks [@benjie](https://github.com/benjie)! - Massive overhaul of the
993
+ behavior system which now has a centralized registry of known behaviors and
994
+ applies behaviors in a more careful and nuanced way, removing many hacks and
995
+ workarounds, and ultimately meaning that `defaultBehavior: "-*"` should now
996
+ operate correctly. Importantly, `addBehaviorToTags()` has been removed - you
997
+ should use `plugin.schema.entityBehaviors` to indicate behaviors as shown in
998
+ this PR - do not mod the tags directly unless they're explicitly meant to be
999
+ overrides.
1000
+
1001
+ Technically this is a significant breaking change (besides the removal of the
1002
+ `addBehaviorToTags()` helper) because the order in which behaviors are applied
1003
+ has changed, and so a different behavior might ultimately "win". This shows up
1004
+ in places where there is ambiguity, for example if you add `@filterable` to a
1005
+ function that you don't have execute permissions on, that function will now
1006
+ show up in the schema since user overrides (smart tags) "win" versus inferred
1007
+ behaviors such as introspected permissions; this wasn't the case before.
1008
+ Hopefully most users will not notice any difference, and for those who do, the
1009
+ `graphile behavior debug` CLI may be able to help you figure out what's going
1010
+ on.
1011
+
1012
+ Be sure to print your schema before and after this update and look for
1013
+ changes; if there are changes then you likely need to fix the relevant
1014
+ behaviors/smart tags. (Hopefully there's no changes for you!)
1015
+
1016
+ You'll also need to change any places where you're specifying behaviors that
1017
+ will be type checked; you can either cast your existing strings e.g.
1018
+ `defaultBehavior: "+connection -list" as GraphileBuild.BehaviorString`, or
1019
+ preferably you can specify your behaviors as an array, which should give you
1020
+ auto-complete on each entry; e.g. `defaultBehavior: ["connection", "-list"]`.
1021
+
1022
+ - [#2188](https://github.com/graphile/crystal/pull/2188)
1023
+ [`cc0941731`](https://github.com/graphile/crystal/commit/cc0941731a1679bc04ce7b7fd4254009bb5f1f62)
1024
+ Thanks [@benjie](https://github.com/benjie)! - Overhaul the way in which
1025
+ `graphile-config` presets work such that including a preset at two different
1026
+ layers shouldn't result in unexpected behavior.
1027
+
1028
+ - [#2157](https://github.com/graphile/crystal/pull/2157)
1029
+ [`50f6ce456`](https://github.com/graphile/crystal/commit/50f6ce456de3edd084869b54ee9f2eaf51a7fa0c)
1030
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 PostGraphile now ignores
1031
+ unlogged database tables by default.
1032
+
1033
+ - [#2199](https://github.com/graphile/crystal/pull/2199)
1034
+ [`3b09b414f`](https://github.com/graphile/crystal/commit/3b09b414ff43c34593373fa1f242481b0c7ada70)
1035
+ Thanks [@benjie](https://github.com/benjie)! - Database enum comments are now
1036
+ reflected in the schema.
1037
+
1038
+ - [#2196](https://github.com/graphile/crystal/pull/2196)
1039
+ [`b7b6dd64f`](https://github.com/graphile/crystal/commit/b7b6dd64fcc07f2ca15528fd39d61297d743dcc6)
1040
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `@notNull` on a volatile
1041
+ function now results in the field on the payload becoming non-null, not the
1042
+ mutation field itself.
1043
+
1044
+ - [#2155](https://github.com/graphile/crystal/pull/2155)
1045
+ [`8b472cd51`](https://github.com/graphile/crystal/commit/8b472cd51cd66d8227f9f2722d09c0a774792b0f)
1046
+ Thanks [@benjie](https://github.com/benjie)! - `disablePlugins` now supports
1047
+ TypeScript auto-completion of known plugin names. Other names are still
1048
+ accepted without error, so this is just a minor DX improvement rather than
1049
+ type safety.
1050
+
1051
+ - [#2198](https://github.com/graphile/crystal/pull/2198)
1052
+ [`ba637b56d`](https://github.com/graphile/crystal/commit/ba637b56d79a14f82fe555739921724eab0c07f7)
1053
+ Thanks [@benjie](https://github.com/benjie)! - Ensure that interface subtypes
1054
+ are added to schema even if not referenced directly.
1055
+ - Updated dependencies
1056
+ [[`d5834def1`](https://github.com/graphile/crystal/commit/d5834def1fb84f3e2c0c0a6f146f8249a6df890a),
1057
+ [`653929af0`](https://github.com/graphile/crystal/commit/653929af0a99a8a4d52b66e66c736be668b8700a),
1058
+ [`6fdc6cad8`](https://github.com/graphile/crystal/commit/6fdc6cad8f8d1230202df533d05cc2bd80538f09),
1059
+ [`42b982463`](https://github.com/graphile/crystal/commit/42b9824637a6c05e02935f2b05b5e8e0c61965a6),
1060
+ [`eb69c7361`](https://github.com/graphile/crystal/commit/eb69c7361fc7bf8c5b1ce342eeb698bd28c9e013),
1061
+ [`54054b873`](https://github.com/graphile/crystal/commit/54054b8733236ba7b2f2fa47d84e085f7196e3f9),
1062
+ [`884a4b429`](https://github.com/graphile/crystal/commit/884a4b4297af90fdadaf73addd524f1fbbcfdcce),
1063
+ [`1eac03ec2`](https://github.com/graphile/crystal/commit/1eac03ec2e9da65c64b7754c04292f43da82c40b),
1064
+ [`38835313a`](https://github.com/graphile/crystal/commit/38835313ad93445206dccdd4cf07b90c5a6e4377),
1065
+ [`426e9320e`](https://github.com/graphile/crystal/commit/426e9320e76ef95927eebb6fe4072050b6208771),
1066
+ [`2efadc0f8`](https://github.com/graphile/crystal/commit/2efadc0f80c3a0c172fb94c770afecc5447e832b),
1067
+ [`e8a9fd424`](https://github.com/graphile/crystal/commit/e8a9fd4243981b892364148eca1df66620ddeb87),
1068
+ [`cc0941731`](https://github.com/graphile/crystal/commit/cc0941731a1679bc04ce7b7fd4254009bb5f1f62),
1069
+ [`50f6ce456`](https://github.com/graphile/crystal/commit/50f6ce456de3edd084869b54ee9f2eaf51a7fa0c),
1070
+ [`b0865d169`](https://github.com/graphile/crystal/commit/b0865d1691105b5419009954c98c8109a27a5d81),
1071
+ [`3b09b414f`](https://github.com/graphile/crystal/commit/3b09b414ff43c34593373fa1f242481b0c7ada70),
1072
+ [`8b472cd51`](https://github.com/graphile/crystal/commit/8b472cd51cd66d8227f9f2722d09c0a774792b0f),
1073
+ [`ba637b56d`](https://github.com/graphile/crystal/commit/ba637b56d79a14f82fe555739921724eab0c07f7),
1074
+ [`9cd9bb522`](https://github.com/graphile/crystal/commit/9cd9bb5222a9f0398ee4b8bfa4f741b6de2a2192)]:
1075
+ - grafast@0.1.1-beta.15
1076
+ - graphile-build@5.0.0-beta.25
1077
+ - @dataplan/pg@0.0.1-beta.26
1078
+ - pg-introspection@0.0.1-beta.9
1079
+ - graphile-config@0.0.1-beta.10
1080
+
1081
+ ## 5.0.0-beta.28
1082
+
1083
+ ### Patch Changes
1084
+
1085
+ - [#2149](https://github.com/graphile/crystal/pull/2149)
1086
+ [`52ef49ca9`](https://github.com/graphile/crystal/commit/52ef49ca9357e63d0aa5c06ac089bf57ee991c73)
1087
+ Thanks [@benjie](https://github.com/benjie)! - Fixed a bug in 'relational'
1088
+ polymorphism where relations to each of the concrete types would
1089
+ non-sensically be added to each of the concrete types.
1090
+
1091
+ - [#2149](https://github.com/graphile/crystal/pull/2149)
1092
+ [`d9d07b97b`](https://github.com/graphile/crystal/commit/d9d07b97b41c928033b9a920931ae0ccccf88e82)
1093
+ Thanks [@benjie](https://github.com/benjie)! - 🚨 `pgCodecRef` behaviors are
1094
+ now presented a `[codec, refName]` tuple rather than the ref object directly.
1095
+ You can get the old `ref` object via `codec.refs?.[refName]`
1096
+ - Updated dependencies
1097
+ [[`82ce02cd9`](https://github.com/graphile/crystal/commit/82ce02cd93df3df3c9570c3528483c4f720ff9bb),
1098
+ [`871d32b2a`](https://github.com/graphile/crystal/commit/871d32b2a18df0d257880fc54a61d9e68c4607d6),
1099
+ [`e8a0c4441`](https://github.com/graphile/crystal/commit/e8a0c4441cd04402974cd0af6b80816c9cda91e7),
1100
+ [`a26e3a30c`](https://github.com/graphile/crystal/commit/a26e3a30c02f963f8f5e9c9d021e871f33689e1b),
1101
+ [`eca7e62e2`](https://github.com/graphile/crystal/commit/eca7e62e2a09af77f4f166a281dab81d009d9ec1),
1102
+ [`02c11a4d4`](https://github.com/graphile/crystal/commit/02c11a4d42bf434dffc9354b300e8d791c4eeb2d)]:
1103
+ - @dataplan/pg@0.0.1-beta.25
1104
+ - grafast@0.1.1-beta.14
1105
+ - graphile-build@5.0.0-beta.24
1106
+
1107
+ ## 5.0.0-beta.27
1108
+
1109
+ ### Patch Changes
1110
+
1111
+ - Updated dependencies
1112
+ [[`807650035`](https://github.com/graphile/crystal/commit/8076500354a3e2bc2de1b6c4e947bd710cc5bddc)]:
1113
+ - @dataplan/pg@0.0.1-beta.24
1114
+ - grafast@0.1.1-beta.13
1115
+ - graphile-build@5.0.0-beta.23
1116
+
1117
+ ## 5.0.0-beta.26
1118
+
1119
+ ### Patch Changes
1120
+
1121
+ - [#2129](https://github.com/graphile/crystal/pull/2129)
1122
+ [`1f67999eb`](https://github.com/graphile/crystal/commit/1f67999eb11435562ca76e8e7349aaadc28390f6)
1123
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug in orderBy planning
1124
+ that caused a new plan to be required for every request.
1125
+
1126
+ - [#1985](https://github.com/graphile/crystal/pull/1985)
1127
+ [`d6102714e`](https://github.com/graphile/crystal/commit/d6102714e4fec35952784c988c1617c789eee0cd)
1128
+ Thanks [@hannesj](https://github.com/hannesj)! - 🚨 PostgreSQL adaptor is no
1129
+ longer loaded via string value; instead you must pass the adaptor instance
1130
+ directly. If you have `adaptor: "@dataplan/pg/adaptors/pg"` then replace it
1131
+ with `adaptor: await import("@dataplan/pg/adaptors/pg")`. (This shouldn't
1132
+ cause you issues because you _should_ be using `makePgService` to construct
1133
+ your `pgServices` rather than building raw objects.)
1134
+
1135
+ 🚨 If you've implemented a custom PgAdaptor, talk to Benjie about how to port
1136
+ it. (Should be straightforward, but no point me figuring it out if no-one has
1137
+ done it yet 🤷)
1138
+
1139
+ This change improves bundle-ability by reducing the number of dynamic imports.
1140
+
1141
+ Also: `PgAdaptorOptions` has been renamed to `PgAdaptorSettings`, so please do
1142
+ a global find and replace for that.
1143
+
1144
+ - Updated dependencies
1145
+ [[`1bd50b61e`](https://github.com/graphile/crystal/commit/1bd50b61ebb10b7d09b3612c2e2767c41cca3b78),
1146
+ [`8bdc553b7`](https://github.com/graphile/crystal/commit/8bdc553b79aae21a27d22a4e1f1e57ee2e5d1d3f),
1147
+ [`4e102b1a1`](https://github.com/graphile/crystal/commit/4e102b1a1cd232e6f6703df0706415f01831dab2),
1148
+ [`1cabbd311`](https://github.com/graphile/crystal/commit/1cabbd311bdefd7ce78f8dacbf61a42237a6c73c),
1149
+ [`7bb1573ba`](https://github.com/graphile/crystal/commit/7bb1573ba45a4d8b7fa9ad53cdd79686d2641383),
1150
+ [`590b6fdf5`](https://github.com/graphile/crystal/commit/590b6fdf5d04a392c4cc9e8bdad83278377c547b),
1151
+ [`18addb385`](https://github.com/graphile/crystal/commit/18addb3852525aa91019a36d58fa2fecd8b5b443),
1152
+ [`d6102714e`](https://github.com/graphile/crystal/commit/d6102714e4fec35952784c988c1617c789eee0cd),
1153
+ [`6ed615e55`](https://github.com/graphile/crystal/commit/6ed615e557b2ab1fb57f1e68c06730a8e3da7175),
1154
+ [`b25cc539c`](https://github.com/graphile/crystal/commit/b25cc539c00aeda7a943c37509aaae4dc7812317),
1155
+ [`867f33136`](https://github.com/graphile/crystal/commit/867f331365346fc46ed1e0d23c79719846e398f4),
1156
+ [`925123497`](https://github.com/graphile/crystal/commit/925123497cf17b5e145ab80f62fa9de768a977ae),
1157
+ [`cf535c210`](https://github.com/graphile/crystal/commit/cf535c21078da06c14dd12f30e9b4378da4ded03),
1158
+ [`acf99b190`](https://github.com/graphile/crystal/commit/acf99b190954e3c5926e820daed68dfe8eb3ee1f),
1159
+ [`4967a197f`](https://github.com/graphile/crystal/commit/4967a197fd2c71ee2a581fe29470ee9f30e74de5),
1160
+ [`1908e1ba1`](https://github.com/graphile/crystal/commit/1908e1ba11883a34dac66f985fc20ab160e572b1),
1161
+ [`084d80be6`](https://github.com/graphile/crystal/commit/084d80be6e17187c9a9932bcf079e3f460368782),
1162
+ [`aa0474755`](https://github.com/graphile/crystal/commit/aa0474755142a758fc58c5c1a30b8c754bc84e7c)]:
1163
+ - grafast@0.1.1-beta.12
1164
+ - @dataplan/pg@0.0.1-beta.23
1165
+ - graphile-build@5.0.0-beta.22
1166
+
1167
+ ## 5.0.0-beta.25
1168
+
1169
+ ### Patch Changes
1170
+
1171
+ - Updated dependencies
1172
+ [[`582bd768f`](https://github.com/graphile/crystal/commit/582bd768fec403ce3284f293b85b9fd86e4d3f40)]:
1173
+ - graphile-build@5.0.0-beta.21
1174
+ - graphile-config@0.0.1-beta.9
1175
+ - @dataplan/pg@0.0.1-beta.22
1176
+ - grafast@0.1.1-beta.11
1177
+
1178
+ ## 5.0.0-beta.24
1179
+
1180
+ ### Patch Changes
1181
+
1182
+ - Updated dependencies
1183
+ [[`3c161f7e1`](https://github.com/graphile/crystal/commit/3c161f7e13375105b1035a7d5d1c0f2b507ca5c7),
1184
+ [`a674a9923`](https://github.com/graphile/crystal/commit/a674a9923bc908c9315afa40e0cb256ee0953d16),
1185
+ [`b7cfeffd1`](https://github.com/graphile/crystal/commit/b7cfeffd1019d61c713a5054c4f5929960a2a6ab)]:
1186
+ - grafast@0.1.1-beta.10
1187
+ - @dataplan/pg@0.0.1-beta.21
1188
+ - graphile-build@5.0.0-beta.20
1189
+
1190
+ ## 5.0.0-beta.23
1191
+
1192
+ ### Patch Changes
1193
+
1194
+ - [#2064](https://github.com/graphile/crystal/pull/2064)
1195
+ [`437570f97`](https://github.com/graphile/crystal/commit/437570f97e8520afaf3d0d0b514d1f4c31546b76)
1196
+ Thanks [@benjie](https://github.com/benjie)! - Fix a bug relating to Global
1197
+ Object Identifiers (specifically in update mutations, but probably elsewhere
1198
+ too) related to early exit.
1199
+ - Updated dependencies
1200
+ [[`437570f97`](https://github.com/graphile/crystal/commit/437570f97e8520afaf3d0d0b514d1f4c31546b76)]:
1201
+ - grafast@0.1.1-beta.9
1202
+ - @dataplan/pg@0.0.1-beta.20
1203
+ - graphile-build@5.0.0-beta.19
1204
+
1205
+ ## 5.0.0-beta.22
1206
+
1207
+ ### Patch Changes
1208
+
1209
+ - [#2056](https://github.com/graphile/crystal/pull/2056)
1210
+ [`1842af661`](https://github.com/graphile/crystal/commit/1842af661950d5f962b65f6362a45a3b9c8f15e8)
1211
+ Thanks [@benjie](https://github.com/benjie)! - Improve exporting of resource
1212
+ options (neater export code)
1213
+
1214
+ - Updated dependencies
1215
+ [[`1842af661`](https://github.com/graphile/crystal/commit/1842af661950d5f962b65f6362a45a3b9c8f15e8),
1216
+ [`bd5a908a4`](https://github.com/graphile/crystal/commit/bd5a908a4d04310f90dfb46ad87398ffa993af3b)]:
1217
+ - graphile-build@5.0.0-beta.18
1218
+ - grafast@0.1.1-beta.8
1219
+ - @dataplan/pg@0.0.1-beta.19
1220
+
1221
+ ## 5.0.0-beta.21
1222
+
1223
+ ### Patch Changes
1224
+
1225
+ - [#2015](https://github.com/graphile/crystal/pull/2015)
1226
+ [`5eca6d65a`](https://github.com/graphile/crystal/commit/5eca6d65a816bac3d0ceaa6cafa7df1a79c2be47)
1227
+ Thanks [@benjie](https://github.com/benjie)! - Use `inhibitOnNull` when
1228
+ decoding a spec ID to prevent it being consumed if invalid (e.g. don't allow
1229
+ using a 'Post' node ID to fetch a 'Person' record).
1230
+
1231
+ - [#1994](https://github.com/graphile/crystal/pull/1994)
1232
+ [`ab08cbf9c`](https://github.com/graphile/crystal/commit/ab08cbf9c504c3cc22495a99a965e7634c18a6a3)
1233
+ Thanks [@benjie](https://github.com/benjie)! - Introduce
1234
+ `interface SQLable {[$toSQL](): SQL}` to `pg-sql2` and use it to simplify SQL
1235
+ fragments in various places.
1236
+
1237
+ - [#1978](https://github.com/graphile/crystal/pull/1978)
1238
+ [`a287a57c2`](https://github.com/graphile/crystal/commit/a287a57c2765da0fb6a132ea0953f64453210ceb)
1239
+ Thanks [@benjie](https://github.com/benjie)! - Breaking: `connection()` step
1240
+ now accepts configuration object in place of 2nd argument onwards:
1241
+
1242
+ ```diff
1243
+ -return connection($list, nodePlan, cursorPlan);
1244
+ +return connection($list, { nodePlan, cursorPlan });
1245
+ ```
1246
+
1247
+ Feature: `edgeDataPlan` can be specified as part of this configuration object,
1248
+ allowing you to associate edge data with your connection edges:
1249
+
1250
+ ```ts
1251
+ return connection($list, {
1252
+ edgeDataPlan($item) {
1253
+ return object({ item: $item, otherThing: $otherThing });
1254
+ },
1255
+ });
1256
+
1257
+ // ...
1258
+
1259
+ const plans = {
1260
+ FooEdge: {
1261
+ otherThing($edge) {
1262
+ return $edge.data().get("otherThing");
1263
+ },
1264
+ },
1265
+ };
1266
+ ```
1267
+
1268
+ Feature: `ConnectionStep` and `EdgeStep` gain `get()` methods, so
1269
+ `*Connection.edges`, `*Connection.nodes`, `*Connection.pageInfo`, `*Edge.node`
1270
+ and `*Edge.cursor` no longer need plans to be defined.
1271
+
1272
+ - [#2051](https://github.com/graphile/crystal/pull/2051)
1273
+ [`45e10950b`](https://github.com/graphile/crystal/commit/45e10950b533f97cdd986e5442e2e160a8e431a2)
1274
+ Thanks [@benjie](https://github.com/benjie)! - Resource options now marked
1275
+ EXPORTABLE _after_ hooks called, enabling more plugins to be exportable.
1276
+
1277
+ - [#2050](https://github.com/graphile/crystal/pull/2050)
1278
+ [`272608c13`](https://github.com/graphile/crystal/commit/272608c135e4ef0f76b8b5a9f764494a3f3ad779)
1279
+ Thanks [@benjie](https://github.com/benjie)! - Add missing EXPORTABLE (and
1280
+ remove excessive EXPORTABLE) to fix schema exports.
1281
+
1282
+ - [#2006](https://github.com/graphile/crystal/pull/2006)
1283
+ [`bee0a0a68`](https://github.com/graphile/crystal/commit/bee0a0a68d48816f84b1a7f5ec69bd6069211426)
1284
+ Thanks [@benjie](https://github.com/benjie)! - Adopt improved inflection
1285
+ typings.
1286
+
1287
+ - [#2019](https://github.com/graphile/crystal/pull/2019)
1288
+ [`51a94417f`](https://github.com/graphile/crystal/commit/51a94417fb62b54d309be184f4be479bc267c2b7)
1289
+ Thanks [@benjie](https://github.com/benjie)! - Now possible to filter by relay
1290
+ node identifiers without weird results if you pass an incompatible node id
1291
+ (e.g. a 'Post' ID where a 'User' ID was expected) - significantly improves the
1292
+ Relay preset.
1293
+ - Updated dependencies
1294
+ [[`357d475f5`](https://github.com/graphile/crystal/commit/357d475f54fecc8c51892e0346d6872b34132430),
1295
+ [`30bcd6c12`](https://github.com/graphile/crystal/commit/30bcd6c12e59f878617ea987c35a2f589ce05cb8),
1296
+ [`3551725e7`](https://github.com/graphile/crystal/commit/3551725e71c3ed876554e19e5ab2c1dcb0fb1143),
1297
+ [`80836471e`](https://github.com/graphile/crystal/commit/80836471e5cedb29dee63bc5002550c4f1713cfd),
1298
+ [`b788dd868`](https://github.com/graphile/crystal/commit/b788dd86849e703cc3aa863fd9190c36a087b865),
1299
+ [`a5c20fefb`](https://github.com/graphile/crystal/commit/a5c20fefb571dea6d1187515dc48dd547e9e6204),
1300
+ [`1ce08980e`](https://github.com/graphile/crystal/commit/1ce08980e2a52ed9bc81564d248c19648ecd3616),
1301
+ [`ab08cbf9c`](https://github.com/graphile/crystal/commit/ab08cbf9c504c3cc22495a99a965e7634c18a6a3),
1302
+ [`dff4f2535`](https://github.com/graphile/crystal/commit/dff4f2535ac6ce893089b312fcd5fffcd98573a5),
1303
+ [`a287a57c2`](https://github.com/graphile/crystal/commit/a287a57c2765da0fb6a132ea0953f64453210ceb),
1304
+ [`2fe56f9a6`](https://github.com/graphile/crystal/commit/2fe56f9a6dac03484ace45c29c2223a65f9ca1db),
1305
+ [`fed603d71`](https://github.com/graphile/crystal/commit/fed603d719c02f33e12190f925c9e3b06c581fac),
1306
+ [`ed6e0d278`](https://github.com/graphile/crystal/commit/ed6e0d2788217a1c419634837f4208013eaf2923),
1307
+ [`86168b740`](https://github.com/graphile/crystal/commit/86168b740510aef17bde7ae21f1d0eebb0c5c9b3),
1308
+ [`7ad35fe4d`](https://github.com/graphile/crystal/commit/7ad35fe4d9b20f6ec82dc95c362390a87e25b42c),
1309
+ [`e82e4911e`](https://github.com/graphile/crystal/commit/e82e4911e32138df1b90ec0fde555ea963018d21),
1310
+ [`94a05064e`](https://github.com/graphile/crystal/commit/94a05064ea05108685ff71174a9f871ab5b4c147),
1311
+ [`272608c13`](https://github.com/graphile/crystal/commit/272608c135e4ef0f76b8b5a9f764494a3f3ad779),
1312
+ [`7606a5b87`](https://github.com/graphile/crystal/commit/7606a5b87aed747fad4eb11744ef7b01cfa3b879),
1313
+ [`42ece5aa6`](https://github.com/graphile/crystal/commit/42ece5aa6ca05345ebc17fb5c7d55df3b79b7612),
1314
+ [`e0d69e518`](https://github.com/graphile/crystal/commit/e0d69e518a98c70f9b90f59d243ce33978c1b5a1),
1315
+ [`db8ceed0f`](https://github.com/graphile/crystal/commit/db8ceed0f17923eb78ff09c9f3f28800a5c7e3b6),
1316
+ [`6699388ec`](https://github.com/graphile/crystal/commit/6699388ec167d35c71220ce5d9113cac578da6cb),
1317
+ [`966203504`](https://github.com/graphile/crystal/commit/96620350467ab8c65b56adf2f055e19450f8e772),
1318
+ [`c1645b249`](https://github.com/graphile/crystal/commit/c1645b249aae949a548cd916e536ccfb63e5ab35),
1319
+ [`ed8bbaa3c`](https://github.com/graphile/crystal/commit/ed8bbaa3cd1563a7601ca8c6b0412633b0ea4ce9),
1320
+ [`a0e82b9c5`](https://github.com/graphile/crystal/commit/a0e82b9c5f4e585f1af1e147299cd07944ece6f8),
1321
+ [`14e2412ee`](https://github.com/graphile/crystal/commit/14e2412ee368e8d53abf6774c7f0069f32d4e8a3),
1322
+ [`c48d3da7f`](https://github.com/graphile/crystal/commit/c48d3da7fe4fac2562fab5f085d252a0bfb6f0b6),
1323
+ [`57ab0e1e7`](https://github.com/graphile/crystal/commit/57ab0e1e72c01213b21d3efc539cd655d83d993a),
1324
+ [`8442242e4`](https://github.com/graphile/crystal/commit/8442242e43cac7d89ca0c413cf42c9fabf6f247f),
1325
+ [`bee0a0a68`](https://github.com/graphile/crystal/commit/bee0a0a68d48816f84b1a7f5ec69bd6069211426),
1326
+ [`51a94417f`](https://github.com/graphile/crystal/commit/51a94417fb62b54d309be184f4be479bc267c2b7),
1327
+ [`64ce7b765`](https://github.com/graphile/crystal/commit/64ce7b7650530251aec38a51089da66f914c19b4),
1328
+ [`cba842357`](https://github.com/graphile/crystal/commit/cba84235786acbd77ade53bae7a3fba4a9be1eb7),
1329
+ [`2fa77d0f2`](https://github.com/graphile/crystal/commit/2fa77d0f237cdb98d3dafb6b5e4083a2c6c38673),
1330
+ [`81d17460c`](https://github.com/graphile/crystal/commit/81d17460ced08608814635779c5cf997c19c101d)]:
1331
+ - @dataplan/pg@0.0.1-beta.18
1332
+ - grafast@0.1.1-beta.7
1333
+ - tamedevil@0.0.0-beta.7
1334
+ - pg-sql2@5.0.0-beta.6
1335
+ - graphile-build@5.0.0-beta.17
1336
+ - pg-introspection@0.0.1-beta.8
1337
+ - graphile-config@0.0.1-beta.8
1338
+
1339
+ ## 5.0.0-beta.20
1340
+
1341
+ ### Patch Changes
1342
+
1343
+ - [#1955](https://github.com/graphile/crystal/pull/1955)
1344
+ [`6c6be29f1`](https://github.com/graphile/crystal/commit/6c6be29f12b24782c926b2bc62ed2ede09ac05de)
1345
+ Thanks [@benjie](https://github.com/benjie)! - Steps are now prevented from
1346
+ calling other steps' lifecycle methods. GRAPHILE_ENV is actively encouraged,
1347
+ and falls back to NODE_ENV.
1348
+
1349
+ - [#1949](https://github.com/graphile/crystal/pull/1949)
1350
+ [`179d25b09`](https://github.com/graphile/crystal/commit/179d25b09bb3272eeef564067b8e512d8de0112f)
1351
+ Thanks [@benjie](https://github.com/benjie)! - Add support for registering
1352
+ PgCodecs via plugins, add support for ltree type, improve error messages, no
1353
+ longer need to set a gather namespace to use cache/state.
1354
+
1355
+ - [#1958](https://github.com/graphile/crystal/pull/1958)
1356
+ [`8315e8d01`](https://github.com/graphile/crystal/commit/8315e8d01c118cebc4ebbc53a2f264b958b252ad)
1357
+ Thanks [@benjie](https://github.com/benjie)! - EXPORTABLE now accepts a third
1358
+ argument, `nameHint`, which is used to hint what variable name to use for the
1359
+ given value. Used this in `graphile-export` along with some fixes and
1360
+ optimizations to improve the exports further.
1361
+ - Updated dependencies
1362
+ [[`9f85c614d`](https://github.com/graphile/crystal/commit/9f85c614d48dc745c5fed15333dbb75af7fddc88),
1363
+ [`6c6be29f1`](https://github.com/graphile/crystal/commit/6c6be29f12b24782c926b2bc62ed2ede09ac05de),
1364
+ [`6c80c44b7`](https://github.com/graphile/crystal/commit/6c80c44b76a5eb30cc2b1555ba81a4b6236f4300),
1365
+ [`179d25b09`](https://github.com/graphile/crystal/commit/179d25b09bb3272eeef564067b8e512d8de0112f),
1366
+ [`8315e8d01`](https://github.com/graphile/crystal/commit/8315e8d01c118cebc4ebbc53a2f264b958b252ad),
1367
+ [`9d53dde72`](https://github.com/graphile/crystal/commit/9d53dde726b7304962e921b88a159649e49156e5),
1368
+ [`46d8289b4`](https://github.com/graphile/crystal/commit/46d8289b44ab10aea1ff3d2915184650d6896b81)]:
1369
+ - @dataplan/pg@0.0.1-beta.17
1370
+ - grafast@0.1.1-beta.6
1371
+ - graphile-build@5.0.0-beta.16
1372
+ - tamedevil@0.0.0-beta.6
1373
+ - pg-introspection@0.0.1-beta.7
1374
+
1375
+ ## 5.0.0-beta.19
1376
+
1377
+ ### Patch Changes
1378
+
1379
+ - [#1933](https://github.com/graphile/crystal/pull/1933)
1380
+ [`3a2ea80ee`](https://github.com/graphile/crystal/commit/3a2ea80ee470b2aef91366727d7d60a0c65067f5)
1381
+ Thanks [@mattiarossi](https://github.com/mattiarossi)! -
1382
+ `eslint-plugin-graphile-export` now spots instances of `inputPlan`,
1383
+ `applyPlan` and `assertStep` so they can be checked - thanks @mattiarossi!
1384
+
1385
+ - [#1935](https://github.com/graphile/crystal/pull/1935)
1386
+ [`8ea67f891`](https://github.com/graphile/crystal/commit/8ea67f8910693edaf70daa9952e35d8396166f38)
1387
+ Thanks [@benjie](https://github.com/benjie)! - Fix lots of things related to
1388
+ exporting a schema with `graphile-export`.
1389
+
1390
+ - [#1935](https://github.com/graphile/crystal/pull/1935)
1391
+ [`e20e66ed7`](https://github.com/graphile/crystal/commit/e20e66ed71b499ee5bbf05105f981809fd302212)
1392
+ Thanks [@benjie](https://github.com/benjie)! - Make even more of the schema
1393
+ exportable, including handling scalars with no parseLiteral definition.
1394
+ - Updated dependencies
1395
+ [[`49fd8afed`](https://github.com/graphile/crystal/commit/49fd8afed1afe573ea76a2a7a821dfa5d6288e2d),
1396
+ [`00d32d887`](https://github.com/graphile/crystal/commit/00d32d887a6ae01374a4fda1babab7c8f14832c0),
1397
+ [`63dd7ea99`](https://github.com/graphile/crystal/commit/63dd7ea992d30ad711dd85a73a127484a0e35479),
1398
+ [`c62eee10b`](https://github.com/graphile/crystal/commit/c62eee10b445f9455bf2a0524ad2b828bdf4ffa6),
1399
+ [`d801c9778`](https://github.com/graphile/crystal/commit/d801c9778a86d61e060896460af9fe62a733534a),
1400
+ [`3a2ea80ee`](https://github.com/graphile/crystal/commit/3a2ea80ee470b2aef91366727d7d60a0c65067f5),
1401
+ [`ef44c29b2`](https://github.com/graphile/crystal/commit/ef44c29b24a1ad5a042ae1536a4546dd64b17195),
1402
+ [`8ea67f891`](https://github.com/graphile/crystal/commit/8ea67f8910693edaf70daa9952e35d8396166f38),
1403
+ [`5de3e86eb`](https://github.com/graphile/crystal/commit/5de3e86eba1ddfe5e07732d0325c63e5d72d4b5b),
1404
+ [`e20e66ed7`](https://github.com/graphile/crystal/commit/e20e66ed71b499ee5bbf05105f981809fd302212)]:
1405
+ - tamedevil@0.0.0-beta.5
1406
+ - pg-introspection@0.0.1-beta.6
1407
+ - grafast@0.1.1-beta.5
1408
+ - graphile-build@5.0.0-beta.15
1409
+ - @dataplan/pg@0.0.1-beta.16
1410
+ - pg-sql2@5.0.0-beta.5
1411
+ - graphile-config@0.0.1-beta.7
1412
+
1413
+ ## 5.0.0-beta.18
1414
+
1415
+ ### Patch Changes
1416
+
1417
+ - [#1904](https://github.com/graphile/crystal/pull/1904)
1418
+ [`5b2db0c75`](https://github.com/graphile/crystal/commit/5b2db0c7586182523015f8f79fa4d43f98679c1e)
1419
+ Thanks [@benjie](https://github.com/benjie)! - Add pgRefDetails to scope for
1420
+ some ref-generated fields, to enable plugins to hook them.
1421
+
1422
+ - [#1905](https://github.com/graphile/crystal/pull/1905)
1423
+ [`184773382`](https://github.com/graphile/crystal/commit/184773382f074a3b5339e4cfabec55173cd4f1e1)
1424
+ Thanks [@benjie](https://github.com/benjie)! - Enable specifying the
1425
+ polymorphic subtype a function returns via `@returnType MyType` smart tag.
1426
+ - Updated dependencies
1427
+ [[`555a2be03`](https://github.com/graphile/crystal/commit/555a2be037f49bd599abbaafe6e5d5ab190c96d6),
1428
+ [`1b6c2f636`](https://github.com/graphile/crystal/commit/1b6c2f6360a316a8dc550c60e28c61deea538f19),
1429
+ [`a2176ea32`](https://github.com/graphile/crystal/commit/a2176ea324db0801249661b30e9c9d314c6fb159),
1430
+ [`886833e2e`](https://github.com/graphile/crystal/commit/886833e2e319f23d905d7184ca88fca701b94044),
1431
+ [`f97d7976a`](https://github.com/graphile/crystal/commit/f97d7976a683a1e2cb0fed1ce0e30aeff8cc1886)]:
1432
+ - @dataplan/pg@0.0.1-beta.15
1433
+ - tamedevil@0.0.0-beta.4
1434
+ - grafast@0.1.1-beta.4
1435
+ - graphile-build@5.0.0-beta.14
1436
+
1437
+ ## 5.0.0-beta.17
1438
+
1439
+ ### Patch Changes
1440
+
1441
+ - Updated dependencies
1442
+ [[`0df5511ac`](https://github.com/graphile/crystal/commit/0df5511ac8b79ea34f8d12ebf8feeb421f8fe971),
1443
+ [`7851d89ab`](https://github.com/graphile/crystal/commit/7851d89ab4216b0252583f0068a69900fa2ddc88),
1444
+ [`470ee4000`](https://github.com/graphile/crystal/commit/470ee40008689de7cf6f206a9897abbe4891ff9b)]:
1445
+ - graphile-config@0.0.1-beta.6
1446
+ - pg-introspection@0.0.1-beta.5
1447
+ - @dataplan/pg@0.0.1-beta.14
1448
+ - grafast@0.1.1-beta.3
1449
+ - graphile-build@5.0.0-beta.13
1450
+
1451
+ ## 5.0.0-beta.16
1452
+
1453
+ ### Patch Changes
1454
+
1455
+ - [#1884](https://github.com/graphile/crystal/pull/1884)
1456
+ [`bce0636d4`](https://github.com/graphile/crystal/commit/bce0636d424476664672166193a181c83476423a)
1457
+ Thanks [@benjie](https://github.com/benjie)! - Fixes multiple pgServices codec
1458
+ name conflicts by prepending the service name if it's not 'main'.
1459
+
1460
+ - [#1817](https://github.com/graphile/crystal/pull/1817)
1461
+ [`f305c3278`](https://github.com/graphile/crystal/commit/f305c327848eb7baef46c5384a7cc5af6f79db8d)
1462
+ Thanks [@benjie](https://github.com/benjie)! - Add support for limiting
1463
+ polymorphic plans (only some of them, specifically `pgUnionAll()` right now)
1464
+ to limit the types of their results; exposed via an experimental 'only'
1465
+ argument on fields, for example
1466
+ `allApplications(only: [GcpApplication, AwsApplication])` would limit the type
1467
+ of applications returned to only be the two specified.
1468
+
1469
+ - [#1875](https://github.com/graphile/crystal/pull/1875)
1470
+ [`3b558e0c1`](https://github.com/graphile/crystal/commit/3b558e0c110dd49e5d51e49a5ad6463a9ed68ecb)
1471
+ Thanks [@enisdenjo](https://github.com/enisdenjo)! - Consider attribute's
1472
+ `isNotNull` flag for polymorphic types
1473
+
1474
+ - [#1884](https://github.com/graphile/crystal/pull/1884)
1475
+ [`2ae8d33aa`](https://github.com/graphile/crystal/commit/2ae8d33aa83955649dcd6e7489604b059ed2daf4)
1476
+ Thanks [@benjie](https://github.com/benjie)! - Fixes missing await which might
1477
+ cause process to exit when something goes wrong during schema building.
1478
+
1479
+ - [#1885](https://github.com/graphile/crystal/pull/1885)
1480
+ [`9e1df08b7`](https://github.com/graphile/crystal/commit/9e1df08b702ae32870a8f1324bab37f447cba868)
1481
+ Thanks [@benjie](https://github.com/benjie)! - Fix `orderBy:null` regression
1482
+
1483
+ - [#1877](https://github.com/graphile/crystal/pull/1877)
1484
+ [`8a0cdb95f`](https://github.com/graphile/crystal/commit/8a0cdb95f200b28b0ea1ab5caa12b23dce5f374f)
1485
+ Thanks [@benjie](https://github.com/benjie)! - Move 'declare global' out of
1486
+ 'interfaces.ts' and into 'index.ts' or equivalent. Should make TypeScript more
1487
+ aware of these types.
1488
+
1489
+ - [#1879](https://github.com/graphile/crystal/pull/1879)
1490
+ [`dbd91fdd8`](https://github.com/graphile/crystal/commit/dbd91fdd836f041b6e2ff9d358c6a6f521f43914)
1491
+ Thanks [@benjie](https://github.com/benjie)! - Move PgContextPlugin from
1492
+ graphile-build-pg into @dataplan/pg so it can be used after schema export
1493
+ without needing dependency on graphile-build-pg
1494
+
1495
+ - [#1841](https://github.com/graphile/crystal/pull/1841)
1496
+ [`f1d5ad18e`](https://github.com/graphile/crystal/commit/f1d5ad18e1cd0d59b9e74f619ec6b0de57f07b17)
1497
+ Thanks [@benjie](https://github.com/benjie)! - Make smart tags parser more
1498
+ forgiving (track parenthesis)
1499
+
1500
+ - [#1884](https://github.com/graphile/crystal/pull/1884)
1501
+ [`c66c3527c`](https://github.com/graphile/crystal/commit/c66c3527ce2bb38afa37242ecb5a22247efd6db9)
1502
+ Thanks [@benjie](https://github.com/benjie)! - List codecs can now have names.
1503
+
1504
+ - [#1876](https://github.com/graphile/crystal/pull/1876)
1505
+ [`9fb5cc06e`](https://github.com/graphile/crystal/commit/9fb5cc06ee52165378392969172e6ee8128833f6)
1506
+ Thanks [@enisdenjo](https://github.com/enisdenjo)! - Specify `from` in `@ref`
1507
+ to apply refs to a single type
1508
+
1509
+ - Updated dependencies
1510
+ [[`3fdc2bce4`](https://github.com/graphile/crystal/commit/3fdc2bce42418773f808c5b8309dfb361cd95ce9),
1511
+ [`aeef362b5`](https://github.com/graphile/crystal/commit/aeef362b5744816f01e4a6f714bbd77f92332bc5),
1512
+ [`8a76db07f`](https://github.com/graphile/crystal/commit/8a76db07f4c110cecc6225504f9a05ccbcbc7b92),
1513
+ [`f305c3278`](https://github.com/graphile/crystal/commit/f305c327848eb7baef46c5384a7cc5af6f79db8d),
1514
+ [`8a0cdb95f`](https://github.com/graphile/crystal/commit/8a0cdb95f200b28b0ea1ab5caa12b23dce5f374f),
1515
+ [`dbd91fdd8`](https://github.com/graphile/crystal/commit/dbd91fdd836f041b6e2ff9d358c6a6f521f43914),
1516
+ [`c66c3527c`](https://github.com/graphile/crystal/commit/c66c3527ce2bb38afa37242ecb5a22247efd6db9),
1517
+ [`f66cc40b3`](https://github.com/graphile/crystal/commit/f66cc40b3bc5bf2e7f92fe5a6bd5638e2a51ac2b),
1518
+ [`f18635a5c`](https://github.com/graphile/crystal/commit/f18635a5cf55845c9534d82bb483e5fbb9ed179e),
1519
+ [`1c9f1c0ed`](https://github.com/graphile/crystal/commit/1c9f1c0edf4e621a5b6345d3a41527a18143c6ae)]:
1520
+ - grafast@0.1.1-beta.2
1521
+ - @dataplan/pg@0.0.1-beta.13
1522
+ - graphile-build@5.0.0-beta.12
1523
+ - graphile-config@0.0.1-beta.5
1524
+
1525
+ ## 5.0.0-beta.15
1526
+
1527
+ ### Patch Changes
1528
+
1529
+ - [#1834](https://github.com/graphile/crystal/pull/1834)
1530
+ [`2e7fc6449`](https://github.com/graphile/crystal/commit/2e7fc6449c2d08c44c32985811bb2e233a04056b)
1531
+ Thanks [@benjie](https://github.com/benjie)! - Fix issue with watch mode where
1532
+ schema omits database resources in some situations.
1533
+ - Updated dependencies
1534
+ [[`49fcb0d58`](https://github.com/graphile/crystal/commit/49fcb0d585b31b291c9072c339d6f5b550eefc9f),
1535
+ [`7aef73319`](https://github.com/graphile/crystal/commit/7aef73319a8a147c700727be62427e1eefdefbf8)]:
1536
+ - grafast@0.1.1-beta.1
1537
+ - graphile-config@0.0.1-beta.4
1538
+ - @dataplan/pg@0.0.1-beta.12
1539
+ - graphile-build@5.0.0-beta.11
1540
+
1541
+ ## 5.0.0-beta.14
1542
+
1543
+ ### Patch Changes
1544
+
1545
+ - [#1801](https://github.com/graphile/crystal/pull/1801)
1546
+ [`2d447a6b4`](https://github.com/graphile/crystal/commit/2d447a6b45d7db2813bd957f412cd959e2185759)
1547
+ Thanks [@benjie](https://github.com/benjie)! - Fix bug where the owner of a
1548
+ database object wasn't seen as having any privileges.
1549
+ - Updated dependencies
1550
+ [[`2d447a6b4`](https://github.com/graphile/crystal/commit/2d447a6b45d7db2813bd957f412cd959e2185759)]:
1551
+ - pg-introspection@0.0.1-beta.4
1552
+ - @dataplan/pg@0.0.1-beta.11
1553
+
1554
+ ## 5.0.0-beta.13
1555
+
1556
+ ### Patch Changes
1557
+
1558
+ - [#1797](https://github.com/graphile/crystal/pull/1797)
1559
+ [`26e0bc726`](https://github.com/graphile/crystal/commit/26e0bc72653cd8dcef4b6cfb3c76876a5e620a12)
1560
+ Thanks [@benjie](https://github.com/benjie)! - Fix that smart tags were not
1561
+ copied onto enum codecs.
1562
+
1563
+ - Updated dependencies
1564
+ [[`26e0bc726`](https://github.com/graphile/crystal/commit/26e0bc72653cd8dcef4b6cfb3c76876a5e620a12)]:
1565
+ - @dataplan/pg@0.0.1-beta.11
1566
+
1567
+ ## 5.0.0-beta.12
1568
+
1569
+ ### Patch Changes
1570
+
1571
+ - Updated dependencies
1572
+ [[`2805edc68`](https://github.com/graphile/crystal/commit/2805edc68b90546bf71ffd293af4d87a79345825)]:
1573
+ - pg-sql2@5.0.0-beta.4
1574
+ - @dataplan/pg@0.0.1-beta.10
1575
+ - grafast@0.1.1-beta.0
1576
+
1577
+ ## 5.0.0-beta.11
1578
+
1579
+ ### Patch Changes
1580
+
1581
+ - [#1770](https://github.com/graphile/crystal/pull/1770)
1582
+ [`9a84bc6dd`](https://github.com/graphile/crystal/commit/9a84bc6dd5b33c1919f75f867df1f61c78686695)
1583
+ Thanks [@benjie](https://github.com/benjie)! - Fix issues around enum tables:
1584
+ indicate when an enum table codec replaces a regular attribute codec, expose
1585
+ helpers for working with enum tables, and don't exclude enum table references
1586
+ when using the Relay preset.
1587
+
1588
+ - [#1769](https://github.com/graphile/crystal/pull/1769)
1589
+ [`b728d7fb9`](https://github.com/graphile/crystal/commit/b728d7fb91eb29fbb21d955af5fd9cb4278f6222)
1590
+ Thanks [@benjie](https://github.com/benjie)! - Fix error message when ref is
1591
+ used with no foreign key.
1592
+
1593
+ - [#1774](https://github.com/graphile/crystal/pull/1774)
1594
+ [`7d55d2c34`](https://github.com/graphile/crystal/commit/7d55d2c343880d7e665f9743f6ae7e39343c22cc)
1595
+ Thanks [@benjie](https://github.com/benjie)! - Add
1596
+ `preset.gather.pgIdentifiers` setting (values: 'qualified' or 'unqualified');
1597
+ if set to 'unqualified' then we will not add the schema name to table or
1598
+ function identifiers - it's up to you to ensure they're present in the
1599
+ `search_path` (which you can set via `pgSettings` on a per-request basis).
1600
+ - Updated dependencies
1601
+ [[`4a4d26d87`](https://github.com/graphile/crystal/commit/4a4d26d87ce74589429b8ca5126a7bfdf30351b8),
1602
+ [`b2bce88da`](https://github.com/graphile/crystal/commit/b2bce88da26c7a8965468be16fc2d935eadd3434),
1603
+ [`861a8a306`](https://github.com/graphile/crystal/commit/861a8a306ef42a821da19e77903ddd7e8130bfb3),
1604
+ [`9a84bc6dd`](https://github.com/graphile/crystal/commit/9a84bc6dd5b33c1919f75f867df1f61c78686695),
1605
+ [`b728d7fb9`](https://github.com/graphile/crystal/commit/b728d7fb91eb29fbb21d955af5fd9cb4278f6222)]:
1606
+ - grafast@0.1.1-beta.0
1607
+ - @dataplan/pg@0.0.1-beta.9
1608
+ - graphile-build@5.0.0-beta.10
1609
+
1610
+ ## 5.0.0-beta.10
1611
+
1612
+ ### Patch Changes
1613
+
1614
+ - [#514](https://github.com/graphile/crystal-pre-merge/pull/514)
1615
+ [`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b)
1616
+ Thanks [@benjie](https://github.com/benjie)! - Update package.json repository
1617
+ information
1618
+
1619
+ - Updated dependencies
1620
+ [[`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b),
1621
+ [`ede1092fe`](https://github.com/graphile/crystal-pre-merge/commit/ede1092fe197719b6fa786f4cfa75f6a1f4c56c1),
1622
+ [`566983fbd`](https://github.com/graphile/crystal-pre-merge/commit/566983fbd99c4b2df8c4ebd6260521670a2b7dfc),
1623
+ [`409bf6071`](https://github.com/graphile/crystal-pre-merge/commit/409bf607180d4d8faec658c803e5ec4d1a00c451)]:
1624
+ - graphile-build@5.0.0-beta.9
1625
+ - pg-introspection@0.0.1-beta.3
1626
+ - graphile-config@0.0.1-beta.3
1627
+ - @dataplan/pg@0.0.1-beta.8
1628
+ - grafast@0.0.1-beta.8
1629
+ - tamedevil@0.0.0-beta.3
1630
+ - pg-sql2@5.0.0-beta.3
1631
+
1632
+ ## 5.0.0-beta.9
1633
+
1634
+ ### Patch Changes
1635
+
1636
+ - Updated dependencies
1637
+ [[`3700e204f`](https://github.com/benjie/crystal/commit/3700e204f430db182c92ca7abc82017c81fa1f9b)]:
1638
+ - grafast@0.0.1-beta.7
1639
+ - @dataplan/pg@0.0.1-beta.7
1640
+ - graphile-build@5.0.0-beta.8
1641
+
3
1642
  ## 5.0.0-beta.8
4
1643
 
5
1644
  ### Patch Changes
@@ -446,7 +2085,6 @@
446
2085
  [`ff91a5660`](https://github.com/benjie/crystal/commit/ff91a5660c5a33ab32555ab3da12f880179d9892)
447
2086
  Thanks [@benjie](https://github.com/benjie)! - Added
448
2087
  `postgraphile/presets/relay` preset:
449
-
450
2088
  - Hides primary key columns from output schema, and includes `id: ID` instead
451
2089
  - Hides foreign key columns from output schema, expecting you to use the
452
2090
  relation instead
@@ -1033,7 +2671,6 @@
1033
2671
  resources, and more. So, we've renamed lots of things as part of the API
1034
2672
  stabilization work. You're probably only affected by the first 2 bullet
1035
2673
  points.
1036
-
1037
2674
  - `pgConfigs` -> `pgServices` (also applies to related `pgConfig` terms such
1038
2675
  as `makePgConfig` -> `makePgService`, `MakePgConfigOptions` ->
1039
2676
  `MakePgServiceOptions`, etc) - see your `graphile.config.ts` or equivalent
@@ -1342,7 +2979,6 @@
1342
2979
  [`652cf1073`](https://github.com/benjie/crystal/commit/652cf107316ea5832f69c6a55574632187f5c876)
1343
2980
  Thanks [@benjie](https://github.com/benjie)! - 🚨 Breaking changes around
1344
2981
  types and postgres configuration:
1345
-
1346
2982
  - `GraphileBuild.GraphileResolverContext` renamed to `Grafast.Context`
1347
2983
  - `GraphileConfig.GraphQLRequestContext` renamed to `Grafast.RequestContext`
1348
2984
  - `Grafast.PgDatabaseAdaptorOptions` renaed to
@@ -1394,7 +3030,6 @@
1394
3030
 
1395
3031
  - [`72bf5f535`](undefined) - Overhaul the behavior system (see
1396
3032
  https://postgraphile.org/postgraphile/next/behavior).
1397
-
1398
3033
  - Adds `schema.defaultBehavior` configuration option to save having to write a
1399
3034
  plugin for such a simple task
1400
3035
  - Changes a bunch of behavior strings: