@ultimabase/graphql 0.1.2 → 0.3.0-canary.20261031104207

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @ultimabase/graphql
2
2
 
3
+ ## 0.3.0-canary.20261031104207
4
+
5
+ ### Minor Changes
6
+
7
+ - 2eb7b9d: `httpPlugin({ upgrade })` refuses WebSocket upgrades with a response, as
8
+ during maintenance, and `closeUpgrades({ code, reason })` closes the sockets
9
+ open: GraphQL's with that code, those of a plugin without `close` cut (D-166).
10
+
11
+ ### Patch Changes
12
+
13
+ - 8fdf30a: The error for a schema with no query tells an application without models, a plugin's own being never exposed, apart from one whose models all have `.with({ graphql: false })`.
14
+ - Updated dependencies [41cfff6]
15
+ - Updated dependencies [6e8ebf6]
16
+ - Updated dependencies [9cd2dd4]
17
+ - Updated dependencies [353c2bf]
18
+ - Updated dependencies [2eb7b9d]
19
+ - ultimabase@0.3.0-canary.20261031104207
20
+ - @ultimabase/http@0.3.0-canary.20261031104207
21
+ - @ultimabase/realtime@0.3.0-canary.20261031104207
22
+
23
+ ## 0.2.0
24
+
25
+ ### Patch Changes
26
+
27
+ - Updated dependencies [2c3bf4e]
28
+ - Updated dependencies [fd1263e]
29
+ - Updated dependencies [c0c5a21]
30
+ - ultimabase@0.2.0
31
+ - @ultimabase/realtime@0.2.0
32
+ - @ultimabase/http@0.2.0
33
+
3
34
  ## 0.1.2
4
35
 
5
36
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAIN,aAAa,EACb,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,KAAK,MAAM,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;CAAE,CAAA;AAwF7E,+DAA+D;AAC/D,wBAAgB,QAAQ,CACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;IACP,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAA;IAC9D,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC9B,GACC,aAAa,CAsEf"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACnE,OAAO,EAIN,aAAa,EACb,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAS,QAAQ,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,KAAK,MAAM,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;CAAE,CAAA;AAwF7E,+DAA+D;AAC/D,wBAAgB,QAAQ,CACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE;IACP,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAA;IAC9D,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC9B,GACC,aAAa,CAwEf"}
package/dist/schema.js CHANGED
@@ -113,7 +113,9 @@ export function schemaOf(registry, called) {
113
113
  add(into, owners, owner, 'name', { [name]: field });
114
114
  }
115
115
  if (Object.keys(fields).length === 0) {
116
- throw new Refused('graphqlPlugin: no query to expose; each model has .with({ graphql: false }) and no function is a query.');
116
+ throw new Refused(registry.entries.size === 0
117
+ ? "graphqlPlugin: no query to expose; the application lists no model, a plugin's own models are never exposed, and no function is a query."
118
+ : 'graphqlPlugin: no query to expose; each model has .with({ graphql: false }) and no function is a query.');
117
119
  }
118
120
  return new GraphQLSchema({
119
121
  query: new GraphQLObjectType({ name: 'Query', fields }),
@@ -1 +1 @@
1
- {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../src/sockets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,MAAM,EACN,cAAc,EACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAGN,YAAY,EAGZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,YAAY,CAAA;IACzD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,cAAc,EAAE,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAClB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,KAC7B,SAAS,YAAY,EAAE,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACnE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB,CAAA;AAqFD;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,UAAU,GACpB,MAAM,OAAO,CAAC,IAAI,CAAC,CAwJrB"}
1
+ {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../src/sockets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,kBAAkB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,MAAM,EACN,cAAc,EACd,MAAM,SAAS,CAAA;AAChB,OAAO,EAGN,YAAY,EAGZ,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,YAAY,CAAA;IACzD,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,cAAc,EAAE,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAClB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,KAC7B,SAAS,YAAY,EAAE,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACnE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB,CAAA;AAqFD;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,UAAU,GACpB,MAAM,OAAO,CAAC,IAAI,CAAC,CAiKrB"}
package/dist/sockets.js CHANGED
@@ -222,6 +222,13 @@ export function serveSockets(http, path, realtime, operations) {
222
222
  beating.unref();
223
223
  http.upgrade(path, (upgrade) => {
224
224
  sockets.handleUpgrade(upgrade.incoming, upgrade.socket, upgrade.head, (socket) => opened(socket, upgrade));
225
+ },
226
+ // As `closeUpgrades` asks, as during maintenance (D-166).
227
+ {
228
+ close: (code, reason) => {
229
+ for (const socket of sockets.clients)
230
+ socket.close(code, reason);
231
+ },
225
232
  });
226
233
  return async () => {
227
234
  clearInterval(beating);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultimabase/graphql",
3
- "version": "0.1.2",
3
+ "version": "0.3.0-canary.20261031104207",
4
4
  "description": "GraphQL for UltimaBase: a Relay schema generated from the models, served by the HTTP plugin.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -36,20 +36,20 @@
36
36
  "ws": "8.22.0"
37
37
  },
38
38
  "peerDependencies": {
39
- "@ultimabase/http": "^0.1.2",
40
- "@ultimabase/realtime": "^0.1.2",
39
+ "@ultimabase/http": "0.3.0-canary.20261031104207",
40
+ "@ultimabase/realtime": "0.3.0-canary.20261031104207",
41
41
  "graphql": "^17.0.2",
42
- "ultimabase": "^0.1.2"
42
+ "ultimabase": "0.3.0-canary.20261031104207"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/pg": "8.23.1",
46
46
  "@types/ws": "8.18.2",
47
- "@ultimabase/http": "0.1.2",
48
- "@ultimabase/postgres": "0.1.2",
49
- "@ultimabase/realtime": "0.1.2",
47
+ "@ultimabase/http": "0.3.0-canary.20261031104207",
48
+ "@ultimabase/postgres": "0.3.0-canary.20261031104207",
49
+ "@ultimabase/realtime": "0.3.0-canary.20261031104207",
50
50
  "graphql": "17.0.2",
51
51
  "pg": "8.23.1",
52
- "ultimabase": "0.1.2",
52
+ "ultimabase": "0.3.0-canary.20261031104207",
53
53
  "vite": "8.3.4",
54
54
  "vitest": "5.0.5"
55
55
  }
package/src/schema.ts CHANGED
@@ -169,7 +169,9 @@ export function schemaOf(
169
169
  }
170
170
  if (Object.keys(fields).length === 0) {
171
171
  throw new Refused(
172
- 'graphqlPlugin: no query to expose; each model has .with({ graphql: false }) and no function is a query.',
172
+ registry.entries.size === 0
173
+ ? "graphqlPlugin: no query to expose; the application lists no model, a plugin's own models are never exposed, and no function is a query."
174
+ : 'graphqlPlugin: no query to expose; each model has .with({ graphql: false }) and no function is a query.',
173
175
  )
174
176
  }
175
177
  return new GraphQLSchema({
package/src/sockets.ts CHANGED
@@ -273,14 +273,23 @@ export function serveSockets(
273
273
  for (const socket of sockets.clients) beats.get(socket)?.()
274
274
  }, keepAlive)
275
275
  beating.unref()
276
- http.upgrade(path, (upgrade) => {
277
- sockets.handleUpgrade(
278
- upgrade.incoming,
279
- upgrade.socket,
280
- upgrade.head,
281
- (socket) => opened(socket, upgrade),
282
- )
283
- })
276
+ http.upgrade(
277
+ path,
278
+ (upgrade) => {
279
+ sockets.handleUpgrade(
280
+ upgrade.incoming,
281
+ upgrade.socket,
282
+ upgrade.head,
283
+ (socket) => opened(socket, upgrade),
284
+ )
285
+ },
286
+ // As `closeUpgrades` asks, as during maintenance (D-166).
287
+ {
288
+ close: (code, reason) => {
289
+ for (const socket of sockets.clients) socket.close(code, reason)
290
+ },
291
+ },
292
+ )
284
293
  return async () => {
285
294
  clearInterval(beating)
286
295
  for (const socket of sockets.clients) socket.close(1001, 'Going away')