graphile-build-pg 5.0.0-beta.9 → 5.0.0-rc.2

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