diff --git a/package-lock.json b/package-lock.json index 6001042..239e5a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@urql/core": "^3.0.4", "@urql/devtools": "^2.0.3", + "dequal": "^2.0.3", "make-fetch-happen": "^13.0.0" }, "devDependencies": { @@ -4312,6 +4313,15 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", diff --git a/package.json b/package.json index d15d189..c5c6d00 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "dependencies": { "@urql/core": "^3.0.4", "@urql/devtools": "^2.0.3", + "dequal": "^2.0.3", "make-fetch-happen": "^13.0.0" }, "devDependencies": { diff --git a/src/node_modules/@internal/gql-query/components/gql-query-client/index.marko b/src/node_modules/@internal/gql-query/components/gql-query-client/index.marko index 808301f..b241262 100644 --- a/src/node_modules/@internal/gql-query/components/gql-query-client/index.marko +++ b/src/node_modules/@internal/gql-query/components/gql-query-client/index.marko @@ -1,3 +1,4 @@ +import { dequal } from 'dequal'; import { pipe, subscribe } from "wonka"; import { readyLookup, getClient, hydrateQuery } from "@internal/client"; class { @@ -37,8 +38,21 @@ class { this.state = state; } - onInput() { - this.shouldQuery = true; + onInput(input) { + let { name, query, variables, requestPolicy } = input; + + if ( + this.name !== name || + this.query !== query || + this.requestPolicy !== requestPolicy || + !dequal(this.variables, variables) + ) { + this.name = name; + this.query = query; + this.variables = variables; + this.requestPolicy = requestPolicy; + this.shouldQuery = true; + } } onUpdate() {