@livestore/graphql 0.4.0-dev.22 → 0.4.0-dev.24
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/dist/.tsbuildinfo +1 -1
- package/dist/graphql.d.ts +3 -3
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +10 -10
- package/dist/graphql.js.map +1 -1
- package/package.json +53 -12
- package/src/graphql.ts +13 -12
package/dist/graphql.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
2
|
-
import type { RefreshReason, SqliteDbWrapper, Store } from '@livestore/livestore';
|
|
3
|
-
import { LiveQueries, ReactiveGraph } from '@livestore/livestore/internal';
|
|
4
|
-
import { Schema } from '@livestore/utils/effect';
|
|
5
2
|
import * as otel from '@opentelemetry/api';
|
|
6
3
|
import type { GraphQLSchema } from 'graphql';
|
|
7
4
|
import * as graphql from 'graphql';
|
|
5
|
+
import type { RefreshReason, SqliteDbWrapper, Store } from '@livestore/livestore';
|
|
6
|
+
import { LiveQueries, ReactiveGraph } from '@livestore/livestore/internal';
|
|
7
|
+
import { Schema } from '@livestore/utils/effect';
|
|
8
8
|
export type BaseGraphQLContext = {
|
|
9
9
|
queriedTables: Set<string>;
|
|
10
10
|
/** Needed by Pothos Otel plugin for resolver tracing to work */
|
package/dist/graphql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
|
package/dist/graphql.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import * as otel from '@opentelemetry/api';
|
|
2
|
+
import * as graphql from 'graphql';
|
|
1
3
|
import { getDurationMsFromSpan } from '@livestore/common';
|
|
2
4
|
import { StoreInternalsSymbol } from '@livestore/livestore';
|
|
3
5
|
import { LiveQueries, ReactiveGraph } from '@livestore/livestore/internal';
|
|
4
|
-
import { omitUndefineds, shouldNeverHappen } from '@livestore/utils';
|
|
6
|
+
import { objectToString, omitUndefineds, shouldNeverHappen } from '@livestore/utils';
|
|
5
7
|
import { Equal, Hash, Predicate, Schema, TreeFormatter } from '@livestore/utils/effect';
|
|
6
|
-
import * as otel from '@opentelemetry/api';
|
|
7
|
-
import * as graphql from 'graphql';
|
|
8
8
|
export const queryGraphQL = (document, genVariableValues, options = {}) => {
|
|
9
9
|
const documentName = graphql.getOperationAST(document)?.name?.value;
|
|
10
|
-
const hash = options.deps
|
|
10
|
+
const hash = options.deps !== undefined
|
|
11
11
|
? LiveQueries.depsToString(options.deps)
|
|
12
12
|
: (documentName ?? shouldNeverHappen('No document name found and no deps provided'));
|
|
13
13
|
const label = options.label ?? documentName ?? 'graphql';
|
|
@@ -56,12 +56,12 @@ export class LiveStoreGraphQLQuery extends LiveQueries.LiveStoreQueryBase {
|
|
|
56
56
|
this.mapResult =
|
|
57
57
|
map === undefined
|
|
58
58
|
? (res) => res
|
|
59
|
-
: Schema.isSchema(map)
|
|
59
|
+
: Schema.isSchema(map) === true
|
|
60
60
|
? (res) => {
|
|
61
61
|
const parseResult = Schema.decodeEither(map)(res);
|
|
62
62
|
if (parseResult._tag === 'Left') {
|
|
63
63
|
console.error(`Error parsing GraphQL query result: ${TreeFormatter.formatErrorSync(parseResult.left)}`);
|
|
64
|
-
return shouldNeverHappen(`Error parsing SQL query result: ${parseResult.left}`);
|
|
64
|
+
return shouldNeverHappen(`Error parsing SQL query result: ${String(parseResult.left)}`);
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
67
|
return parseResult.right;
|
|
@@ -69,7 +69,7 @@ export class LiveStoreGraphQLQuery extends LiveQueries.LiveStoreQueryBase {
|
|
|
69
69
|
}
|
|
70
70
|
: typeof map === 'function'
|
|
71
71
|
? map
|
|
72
|
-
: shouldNeverHappen(`Invalid map function ${map}`);
|
|
72
|
+
: shouldNeverHappen(`Invalid map function ${objectToString(map)}`);
|
|
73
73
|
// TODO don't even create a thunk if variables are static
|
|
74
74
|
let variableValues$OrvariableValues;
|
|
75
75
|
if (typeof genVariableValues === 'function') {
|
|
@@ -84,7 +84,7 @@ export class LiveStoreGraphQLQuery extends LiveQueries.LiveStoreQueryBase {
|
|
|
84
84
|
const resultsLabel = `${labelWithDefault}:results`;
|
|
85
85
|
this.results$ = this.reactivityGraph.makeThunk((get, setDebugInfo, ctx, otelContext, debugRefreshReason) => {
|
|
86
86
|
const { store, otelTracer, rootOtelContext } = ctx;
|
|
87
|
-
const variableValues = ReactiveGraph.isThunk(variableValues$OrvariableValues)
|
|
87
|
+
const variableValues = ReactiveGraph.isThunk(variableValues$OrvariableValues) === true
|
|
88
88
|
? get(variableValues$OrvariableValues, otelContext, debugRefreshReason)
|
|
89
89
|
: variableValues$OrvariableValues;
|
|
90
90
|
const { result, queriedTables, durationMs } = this.queryOnce({
|
|
@@ -119,7 +119,7 @@ export class LiveStoreGraphQLQuery extends LiveQueries.LiveStoreQueryBase {
|
|
|
119
119
|
variableValues,
|
|
120
120
|
});
|
|
121
121
|
// TODO track number of nested SQL queries via Otel + debug info
|
|
122
|
-
if (res.errors) {
|
|
122
|
+
if (res.errors !== undefined) {
|
|
123
123
|
span.setStatus({ code: otel.SpanStatusCode.ERROR, message: 'GraphQL error' });
|
|
124
124
|
span.setAttribute('graphql.error', res.errors.join('\n'));
|
|
125
125
|
span.setAttribute('graphql.error-detail', JSON.stringify(res.errors));
|
|
@@ -127,7 +127,7 @@ export class LiveStoreGraphQLQuery extends LiveQueries.LiveStoreQueryBase {
|
|
|
127
127
|
for (const error of res.errors) {
|
|
128
128
|
console.error(error);
|
|
129
129
|
}
|
|
130
|
-
//
|
|
130
|
+
// oxlint-disable-next-line eslint(no-debugger) -- intentional breakpoint for GraphQL errors
|
|
131
131
|
debugger;
|
|
132
132
|
shouldNeverHappen(`GraphQL error: ${res.errors.join('\n')}`);
|
|
133
133
|
}
|
package/dist/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,31 +1,72 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/graphql",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.24",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/livestorejs/livestore.git"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"package.json",
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
4
14
|
"type": "module",
|
|
15
|
+
"sideEffects": false,
|
|
5
16
|
"exports": {
|
|
6
17
|
".": "./dist/index.js"
|
|
7
18
|
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
8
22
|
"dependencies": {
|
|
9
23
|
"@graphql-typed-document-node/core": "3.2.0",
|
|
10
24
|
"@opentelemetry/api": "1.9.0",
|
|
11
|
-
"@livestore/
|
|
12
|
-
"@livestore/
|
|
13
|
-
"@livestore/
|
|
25
|
+
"@livestore/livestore": "^0.4.0-dev.24",
|
|
26
|
+
"@livestore/utils": "^0.4.0-dev.24",
|
|
27
|
+
"@livestore/common": "^0.4.0-dev.24"
|
|
14
28
|
},
|
|
15
29
|
"devDependencies": {
|
|
16
30
|
"graphql": "16.11.0"
|
|
17
31
|
},
|
|
18
|
-
"files": [
|
|
19
|
-
"package.json",
|
|
20
|
-
"src",
|
|
21
|
-
"dist"
|
|
22
|
-
],
|
|
23
|
-
"license": "Apache-2.0",
|
|
24
32
|
"peerDependencies": {
|
|
33
|
+
"@effect/ai": "^0.35.0",
|
|
34
|
+
"@effect/cli": "^0.75.1",
|
|
35
|
+
"@effect/cluster": "^0.58.2",
|
|
36
|
+
"@effect/experimental": "^0.60.0",
|
|
37
|
+
"@effect/opentelemetry": "^0.63.0",
|
|
38
|
+
"@effect/platform": "^0.96.1",
|
|
39
|
+
"@effect/platform-browser": "^0.76.0",
|
|
40
|
+
"@effect/platform-bun": "^0.89.0",
|
|
41
|
+
"@effect/platform-node": "^0.106.0",
|
|
42
|
+
"@effect/printer": "^0.49.0",
|
|
43
|
+
"@effect/printer-ansi": "^0.49.0",
|
|
44
|
+
"@effect/rpc": "^0.75.1",
|
|
45
|
+
"@effect/sql": "^0.51.1",
|
|
46
|
+
"@effect/typeclass": "^0.40.0",
|
|
47
|
+
"@effect/vitest": "^0.29.0",
|
|
48
|
+
"@opentelemetry/api": "^1.9.0",
|
|
49
|
+
"@opentelemetry/resources": "^2.2.0",
|
|
50
|
+
"@standard-schema/spec": "^1.1.0",
|
|
51
|
+
"effect": "^3.21.2",
|
|
25
52
|
"graphql": "^16.11.0"
|
|
26
53
|
},
|
|
27
|
-
"
|
|
28
|
-
"
|
|
54
|
+
"$genie": {
|
|
55
|
+
"source": "package.json.genie.ts",
|
|
56
|
+
"warning": "DO NOT EDIT - changes will be overwritten",
|
|
57
|
+
"workspaceClosureDirs": [
|
|
58
|
+
"packages/@livestore/adapter-web",
|
|
59
|
+
"packages/@livestore/common",
|
|
60
|
+
"packages/@livestore/common-cf",
|
|
61
|
+
"packages/@livestore/devtools-web-common",
|
|
62
|
+
"packages/@livestore/graphql",
|
|
63
|
+
"packages/@livestore/livestore",
|
|
64
|
+
"packages/@livestore/sqlite-wasm",
|
|
65
|
+
"packages/@livestore/utils",
|
|
66
|
+
"packages/@livestore/utils-dev",
|
|
67
|
+
"packages/@livestore/wa-sqlite",
|
|
68
|
+
"packages/@livestore/webmesh"
|
|
69
|
+
]
|
|
29
70
|
},
|
|
30
71
|
"scripts": {
|
|
31
72
|
"test": "echo 'No tests'"
|
package/src/graphql.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'
|
|
2
|
+
import * as otel from '@opentelemetry/api'
|
|
3
|
+
import type { GraphQLSchema } from 'graphql'
|
|
4
|
+
import * as graphql from 'graphql'
|
|
5
|
+
|
|
2
6
|
import { getDurationMsFromSpan } from '@livestore/common'
|
|
3
7
|
import type { RefreshReason, SqliteDbWrapper, Store } from '@livestore/livestore'
|
|
4
8
|
import { StoreInternalsSymbol } from '@livestore/livestore'
|
|
5
9
|
import { LiveQueries, ReactiveGraph } from '@livestore/livestore/internal'
|
|
6
|
-
import { omitUndefineds, shouldNeverHappen } from '@livestore/utils'
|
|
10
|
+
import { objectToString, omitUndefineds, shouldNeverHappen } from '@livestore/utils'
|
|
7
11
|
import { Equal, Hash, Predicate, Schema, TreeFormatter } from '@livestore/utils/effect'
|
|
8
|
-
import * as otel from '@opentelemetry/api'
|
|
9
|
-
import type { GraphQLSchema } from 'graphql'
|
|
10
|
-
import * as graphql from 'graphql'
|
|
11
12
|
|
|
12
13
|
export type BaseGraphQLContext = {
|
|
13
14
|
queriedTables: Set<string>
|
|
@@ -49,7 +50,7 @@ export const queryGraphQL = <
|
|
|
49
50
|
} = {},
|
|
50
51
|
): LiveQueries.LiveQueryDef<TResultMapped> => {
|
|
51
52
|
const documentName = graphql.getOperationAST(document)?.name?.value
|
|
52
|
-
const hash = options.deps
|
|
53
|
+
const hash = options.deps !== undefined
|
|
53
54
|
? LiveQueries.depsToString(options.deps)
|
|
54
55
|
: (documentName ?? shouldNeverHappen('No document name found and no deps provided'))
|
|
55
56
|
const label = options.label ?? documentName ?? 'graphql'
|
|
@@ -131,19 +132,19 @@ export class LiveStoreGraphQLQuery<
|
|
|
131
132
|
this.mapResult =
|
|
132
133
|
map === undefined
|
|
133
134
|
? (res: TResult) => res as any as TResultMapped
|
|
134
|
-
: Schema.isSchema(map)
|
|
135
|
+
: Schema.isSchema(map) === true
|
|
135
136
|
? (res: TResult) => {
|
|
136
137
|
const parseResult = Schema.decodeEither(map as Schema.Schema<TResultMapped, TResult>)(res)
|
|
137
138
|
if (parseResult._tag === 'Left') {
|
|
138
139
|
console.error(`Error parsing GraphQL query result: ${TreeFormatter.formatErrorSync(parseResult.left)}`)
|
|
139
|
-
return shouldNeverHappen(`Error parsing SQL query result: ${parseResult.left}`)
|
|
140
|
+
return shouldNeverHappen(`Error parsing SQL query result: ${String(parseResult.left)}`)
|
|
140
141
|
} else {
|
|
141
|
-
return parseResult.right
|
|
142
|
+
return parseResult.right
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
: typeof map === 'function'
|
|
145
146
|
? map
|
|
146
|
-
|
|
147
|
+
: shouldNeverHappen(`Invalid map function ${objectToString(map)}`)
|
|
147
148
|
|
|
148
149
|
// TODO don't even create a thunk if variables are static
|
|
149
150
|
let variableValues$OrvariableValues:
|
|
@@ -168,7 +169,7 @@ export class LiveStoreGraphQLQuery<
|
|
|
168
169
|
this.results$ = this.reactivityGraph.makeThunk<TResultMapped>(
|
|
169
170
|
(get, setDebugInfo, ctx, otelContext, debugRefreshReason) => {
|
|
170
171
|
const { store, otelTracer, rootOtelContext } = ctx
|
|
171
|
-
const variableValues = ReactiveGraph.isThunk(variableValues$OrvariableValues)
|
|
172
|
+
const variableValues = ReactiveGraph.isThunk(variableValues$OrvariableValues) === true
|
|
172
173
|
? (get(variableValues$OrvariableValues, otelContext, debugRefreshReason) as TVariableValues)
|
|
173
174
|
: (variableValues$OrvariableValues as TVariableValues)
|
|
174
175
|
const { result, queriedTables, durationMs } = this.queryOnce({
|
|
@@ -232,7 +233,7 @@ export class LiveStoreGraphQLQuery<
|
|
|
232
233
|
|
|
233
234
|
// TODO track number of nested SQL queries via Otel + debug info
|
|
234
235
|
|
|
235
|
-
if (res.errors) {
|
|
236
|
+
if (res.errors !== undefined) {
|
|
236
237
|
span.setStatus({ code: otel.SpanStatusCode.ERROR, message: 'GraphQL error' })
|
|
237
238
|
span.setAttribute('graphql.error', res.errors.join('\n'))
|
|
238
239
|
span.setAttribute('graphql.error-detail', JSON.stringify(res.errors))
|
|
@@ -240,7 +241,7 @@ export class LiveStoreGraphQLQuery<
|
|
|
240
241
|
for (const error of res.errors) {
|
|
241
242
|
console.error(error)
|
|
242
243
|
}
|
|
243
|
-
//
|
|
244
|
+
// oxlint-disable-next-line eslint(no-debugger) -- intentional breakpoint for GraphQL errors
|
|
244
245
|
debugger
|
|
245
246
|
shouldNeverHappen(`GraphQL error: ${res.errors.join('\n')}`)
|
|
246
247
|
}
|