@graphiql/toolkit
Advanced tools
Comparing version 0.11.0-canary-35904daa.0 to 0.11.0-canary-3bb4b14b.0
# @graphiql/toolkit | ||
## 0.11.0-canary-35904daa.0 | ||
## 0.11.0-canary-3bb4b14b.0 | ||
### Minor Changes | ||
- [#3746](https://github.com/graphql/graphiql/pull/3746) [`9da88f3`](https://github.com/graphql/graphiql/commit/9da88f310f33efeb4012ca1f038c7f449a1ccdec) Thanks [@dimaMachina](https://github.com/dimaMachina)! - compile with `tsup` instead of `tsc` | ||
- [#3747](https://github.com/graphql/graphiql/pull/3747) [`2b175f5`](https://github.com/graphql/graphiql/commit/2b175f5f17a8424f72c2fbb26ad4bc50244e677c) Thanks [@dimaMachina](https://github.com/dimaMachina)! - do not include `require` statements in ESM build, include `import` in esm and `require` in cjs builds | ||
make `getWsFetcher`, `createWebsocketsFetcherFromUrl` async | ||
## 0.10.0 | ||
@@ -10,0 +12,0 @@ |
@@ -8,33 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __async = (__this, __arguments, generator) => { | ||
return new Promise((resolve, reject) => { | ||
var fulfilled = (value) => { | ||
try { | ||
step(generator.next(value)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}; | ||
var rejected = (value) => { | ||
try { | ||
step(generator.throw(value)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}; | ||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); | ||
step((generator = generator.apply(__this, __arguments)).next()); | ||
}); | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var async_helpers_exports = {}; | ||
@@ -49,3 +26,3 @@ __export(async_helpers_exports, { | ||
function isPromise(value) { | ||
return typeof value === "object" && value !== null && typeof value.then === "function"; | ||
return typeof value == "object" && value !== null && typeof value.then == "function"; | ||
} | ||
@@ -56,4 +33,3 @@ function observableToPromise(observable) { | ||
next(v) { | ||
resolve(v); | ||
subscription.unsubscribe(); | ||
resolve(v), subscription.unsubscribe(); | ||
}, | ||
@@ -68,30 +44,17 @@ error: reject, | ||
function isObservable(value) { | ||
return typeof value === "object" && value !== null && "subscribe" in value && typeof value.subscribe === "function"; | ||
return typeof value == "object" && value !== null && "subscribe" in value && typeof value.subscribe == "function"; | ||
} | ||
function isAsyncIterable(input) { | ||
return typeof input === "object" && input !== null && // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari) | ||
return typeof input == "object" && input !== null && // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari) | ||
// That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {}) | ||
(input[Symbol.toStringTag] === "AsyncGenerator" || Symbol.asyncIterator in input); | ||
} | ||
function asyncIterableToPromise(input) { | ||
return __async(this, null, function* () { | ||
var _a; | ||
const iteratorReturn = (_a = ("return" in input ? input : input[Symbol.asyncIterator]()).return) == null ? void 0 : _a.bind(input); | ||
const iteratorNext = ("next" in input ? input : input[Symbol.asyncIterator]()).next.bind(input); | ||
const result = yield iteratorNext(); | ||
void (iteratorReturn == null ? void 0 : iteratorReturn()); | ||
return result.value; | ||
}); | ||
async function asyncIterableToPromise(input) { | ||
var _a; | ||
const iteratorReturn = (_a = ("return" in input ? input : input[Symbol.asyncIterator]()).return) == null ? void 0 : _a.bind(input), result = await ("next" in input ? input : input[Symbol.asyncIterator]()).next.bind(input)(); | ||
return iteratorReturn == null || iteratorReturn(), result.value; | ||
} | ||
function fetcherReturnToPromise(fetcherResult) { | ||
return __async(this, null, function* () { | ||
const result = yield fetcherResult; | ||
if (isAsyncIterable(result)) { | ||
return asyncIterableToPromise(result); | ||
} | ||
if (isObservable(result)) { | ||
return observableToPromise(result); | ||
} | ||
return result; | ||
}); | ||
async function fetcherReturnToPromise(fetcherResult) { | ||
const result = await fetcherResult; | ||
return isAsyncIterable(result) ? asyncIterableToPromise(result) : isObservable(result) ? observableToPromise(result) : result; | ||
} | ||
@@ -98,0 +61,0 @@ // Annotate the CommonJS export names for ESM import in node: |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var createFetcher_exports = {}; | ||
@@ -27,11 +24,9 @@ __export(createFetcher_exports, { | ||
function createGraphiQLFetcher(options) { | ||
const httpFetch = options.fetch || typeof window !== "undefined" && window.fetch; | ||
if (!httpFetch) { | ||
const httpFetch = options.fetch || typeof window != "undefined" && window.fetch; | ||
if (!httpFetch) | ||
throw new Error("No valid fetcher implementation available"); | ||
} | ||
options.enableIncrementalDelivery = options.enableIncrementalDelivery !== false; | ||
const simpleFetcher = (0, import_lib.createSimpleFetcher)(options, httpFetch); | ||
const httpFetcher = options.enableIncrementalDelivery ? (0, import_lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher; | ||
return (graphQLParams, fetcherOpts) => { | ||
if (graphQLParams.operationName === "IntrospectionQuery") { | ||
options.enableIncrementalDelivery = options.enableIncrementalDelivery !== !1; | ||
const simpleFetcher = (0, import_lib.createSimpleFetcher)(options, httpFetch), httpFetcher = options.enableIncrementalDelivery ? (0, import_lib.createMultipartFetcher)(options, httpFetch) : simpleFetcher; | ||
return async (graphQLParams, fetcherOpts) => { | ||
if (graphQLParams.operationName === "IntrospectionQuery") | ||
return (options.schemaFetcher || simpleFetcher)( | ||
@@ -41,14 +36,11 @@ graphQLParams, | ||
); | ||
} | ||
const isSubscription = (fetcherOpts == null ? void 0 : fetcherOpts.documentAST) ? (0, import_lib.isSubscriptionWithName)( | ||
if (fetcherOpts != null && fetcherOpts.documentAST ? (0, import_lib.isSubscriptionWithName)( | ||
fetcherOpts.documentAST, | ||
graphQLParams.operationName || void 0 | ||
) : false; | ||
if (isSubscription) { | ||
const wsFetcher = (0, import_lib.getWsFetcher)(options, fetcherOpts); | ||
if (!wsFetcher) { | ||
) : !1) { | ||
const wsFetcher = await (0, import_lib.getWsFetcher)(options, fetcherOpts); | ||
if (!wsFetcher) | ||
throw new Error( | ||
`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : "Please provide subscriptionUrl, wsClient or legacyClient option first."}` | ||
); | ||
} | ||
return wsFetcher(graphQLParams); | ||
@@ -55,0 +47,0 @@ } |
@@ -8,14 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
}, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var create_fetcher_exports = {}; | ||
@@ -22,0 +18,0 @@ __export(create_fetcher_exports, { |
@@ -22,3 +22,3 @@ import { DocumentNode } from 'graphql'; | ||
declare const createSimpleFetcher: (options: CreateFetcherOptions, httpFetch: typeof fetch) => Fetcher; | ||
declare const createWebsocketsFetcherFromUrl: (url: string, connectionParams?: ClientOptions['connectionParams']) => Fetcher | undefined; | ||
declare function createWebsocketsFetcherFromUrl(url: string, connectionParams?: ClientOptions['connectionParams']): Promise<Fetcher | void>; | ||
/** | ||
@@ -43,4 +43,4 @@ * Create ws/s fetcher using provided wsClient implementation | ||
*/ | ||
declare const getWsFetcher: (options: CreateFetcherOptions, fetcherOpts?: FetcherOpts) => Fetcher | void; | ||
declare function getWsFetcher(options: CreateFetcherOptions, fetcherOpts?: FetcherOpts): Promise<Fetcher | void>; | ||
export { createLegacyWebsocketsFetcher, createMultipartFetcher, createSimpleFetcher, createWebsocketsFetcherFromClient, createWebsocketsFetcherFromUrl, getWsFetcher, isSubscriptionWithName }; |
"use strict"; | ||
var __defProp = Object.defineProperty; | ||
var __defProps = Object.defineProperties; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defProp = Object.defineProperty, __defProps = Object.defineProperties, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropDescs = Object.getOwnPropertyDescriptors, __getOwnPropNames = Object.getOwnPropertyNames, __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a, b) => { | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => { | ||
for (var prop in b || (b = {})) | ||
if (__hasOwnProp.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
__hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b)) { | ||
if (__propIsEnum.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
} | ||
for (var prop of __getOwnPropSymbols(b)) | ||
__propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
return a; | ||
}; | ||
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __async = (__this, __arguments, generator) => { | ||
return new Promise((resolve, reject) => { | ||
var fulfilled = (value) => { | ||
try { | ||
step(generator.next(value)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}; | ||
var rejected = (value) => { | ||
try { | ||
step(generator.throw(value)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}; | ||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); | ||
step((generator = generator.apply(__this, __arguments)).next()); | ||
}); | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var __await = function(promise, isYieldStar) { | ||
this[0] = promise; | ||
this[1] = isYieldStar; | ||
}; | ||
var __asyncGenerator = (__this, __arguments, generator) => { | ||
this[0] = promise, this[1] = isYieldStar; | ||
}, __asyncGenerator = (__this, __arguments, generator) => { | ||
var resume = (k, v, yes, no) => { | ||
@@ -84,61 +48,42 @@ try { | ||
module.exports = __toCommonJS(lib_exports); | ||
var import_graphql = require("graphql"); | ||
var import_meros = require("meros"); | ||
var import_push_pull_async_iterable_iterator = require("@n1ru4l/push-pull-async-iterable-iterator"); | ||
const errorHasCode = (err) => { | ||
return typeof err === "object" && err !== null && "code" in err; | ||
}; | ||
const isSubscriptionWithName = (document, name) => { | ||
let isSubscription = false; | ||
(0, import_graphql.visit)(document, { | ||
var import_graphql = require("graphql"), import_meros = require("meros"), import_push_pull_async_iterable_iterator = require("@n1ru4l/push-pull-async-iterable-iterator"); | ||
const errorHasCode = (err) => typeof err == "object" && err !== null && "code" in err, isSubscriptionWithName = (document, name) => { | ||
let isSubscription = !1; | ||
return (0, import_graphql.visit)(document, { | ||
OperationDefinition(node) { | ||
var _a; | ||
if (name === ((_a = node.name) == null ? void 0 : _a.value) && node.operation === "subscription") { | ||
isSubscription = true; | ||
} | ||
name === ((_a = node.name) == null ? void 0 : _a.value) && node.operation === "subscription" && (isSubscription = !0); | ||
} | ||
}); | ||
return isSubscription; | ||
}; | ||
const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __async(void 0, null, function* () { | ||
const data = yield httpFetch(options.url, { | ||
method: "POST", | ||
body: JSON.stringify(graphQLParams), | ||
headers: __spreadValues(__spreadValues({ | ||
"content-type": "application/json" | ||
}, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers) | ||
}); | ||
return data.json(); | ||
}); | ||
const createWebsocketsFetcherFromUrl = (url, connectionParams) => { | ||
}), isSubscription; | ||
}, createSimpleFetcher = (options, httpFetch) => async (graphQLParams, fetcherOpts) => (await httpFetch(options.url, { | ||
method: "POST", | ||
body: JSON.stringify(graphQLParams), | ||
headers: __spreadValues(__spreadValues({ | ||
"content-type": "application/json" | ||
}, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers) | ||
})).json(); | ||
async function createWebsocketsFetcherFromUrl(url, connectionParams) { | ||
let wsClient; | ||
try { | ||
const { createClient } = require("graphql-ws"); | ||
wsClient = createClient({ url, connectionParams }); | ||
return createWebsocketsFetcherFromClient(wsClient); | ||
return wsClient = createClient({ url, connectionParams }), createWebsocketsFetcherFromClient(wsClient); | ||
} catch (err) { | ||
if (errorHasCode(err) && err.code === "MODULE_NOT_FOUND") { | ||
if (errorHasCode(err) && err.code === "MODULE_NOT_FOUND") | ||
throw new Error( | ||
"You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'" | ||
); | ||
} | ||
console.error(`Error creating websocket client for ${url}`, err); | ||
} | ||
}; | ||
} | ||
const createWebsocketsFetcherFromClient = (wsClient) => (graphQLParams) => (0, import_push_pull_async_iterable_iterator.makeAsyncIterableIteratorFromSink)( | ||
(sink) => wsClient.subscribe(graphQLParams, __spreadProps(__spreadValues({}, sink), { | ||
error(err) { | ||
if (err instanceof CloseEvent) { | ||
sink.error( | ||
new Error( | ||
`Socket closed with event ${err.code} ${err.reason || ""}`.trim() | ||
) | ||
); | ||
} else { | ||
sink.error(err); | ||
} | ||
err instanceof CloseEvent ? sink.error( | ||
new Error( | ||
`Socket closed with event ${err.code} ${err.reason || ""}`.trim() | ||
) | ||
) : sink.error(err); | ||
} | ||
})) | ||
); | ||
const createLegacyWebsocketsFetcher = (legacyWsClient) => (graphQLParams) => { | ||
), createLegacyWebsocketsFetcher = (legacyWsClient) => (graphQLParams) => { | ||
const observable = legacyWsClient.request(graphQLParams); | ||
@@ -149,4 +94,3 @@ return (0, import_push_pull_async_iterable_iterator.makeAsyncIterableIteratorFromSink)( | ||
); | ||
}; | ||
const createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) { | ||
}, createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) { | ||
return __asyncGenerator(this, null, function* () { | ||
@@ -162,10 +106,9 @@ const response = yield new __await(httpFetch(options.url, { | ||
(r) => (0, import_meros.meros)(r, { | ||
multiple: true | ||
multiple: !0 | ||
}) | ||
)); | ||
if (!(0, import_push_pull_async_iterable_iterator.isAsyncIterable)(response)) { | ||
if (!(0, import_push_pull_async_iterable_iterator.isAsyncIterable)(response)) | ||
return yield response.json(); | ||
} | ||
try { | ||
for (var iter = __forAwait(response), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) { | ||
for (var iter = __forAwait(response), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = !1) { | ||
const chunk = temp.value; | ||
@@ -199,14 +142,11 @@ if (chunk.some((part) => !part.json)) { | ||
}; | ||
const getWsFetcher = (options, fetcherOpts) => { | ||
if (options.wsClient) { | ||
async function getWsFetcher(options, fetcherOpts) { | ||
if (options.wsClient) | ||
return createWebsocketsFetcherFromClient(options.wsClient); | ||
} | ||
if (options.subscriptionUrl) { | ||
if (options.subscriptionUrl) | ||
return createWebsocketsFetcherFromUrl(options.subscriptionUrl, __spreadValues(__spreadValues({}, options.wsConnectionParams), fetcherOpts == null ? void 0 : fetcherOpts.headers)); | ||
} | ||
const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient; | ||
if (legacyWebsocketsClient) { | ||
if (legacyWebsocketsClient) | ||
return createLegacyWebsocketsFetcher(legacyWebsocketsClient); | ||
} | ||
}; | ||
} | ||
// Annotate the CommonJS export names for ESM import in node: | ||
@@ -213,0 +153,0 @@ 0 && (module.exports = { |
@@ -7,11 +7,9 @@ "use strict"; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var types_exports = {}; | ||
module.exports = __toCommonJS(types_exports); |
"use strict"; | ||
var __defProp = Object.defineProperty; | ||
var __defProps = Object.defineProperties; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a, b) => { | ||
var __defProp = Object.defineProperty, __defProps = Object.defineProperties, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropDescs = Object.getOwnPropertyDescriptors, __getOwnPropNames = Object.getOwnPropertyNames, __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => { | ||
for (var prop in b || (b = {})) | ||
if (__hasOwnProp.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
__hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b)) { | ||
if (__propIsEnum.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
} | ||
for (var prop of __getOwnPropSymbols(b)) | ||
__propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
return a; | ||
}; | ||
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var format_exports = {}; | ||
@@ -53,14 +39,8 @@ __export(format_exports, { | ||
function handleSingleError(error) { | ||
if (error instanceof Error) { | ||
return formatSingleError(error); | ||
} | ||
return error; | ||
return error instanceof Error ? formatSingleError(error) : error; | ||
} | ||
function formatError(error) { | ||
if (Array.isArray(error)) { | ||
return stringify({ | ||
errors: error.map((e) => handleSingleError(e)) | ||
}); | ||
} | ||
return stringify({ errors: [handleSingleError(error)] }); | ||
return Array.isArray(error) ? stringify({ | ||
errors: error.map((e) => handleSingleError(e)) | ||
}) : stringify({ errors: [handleSingleError(error)] }); | ||
} | ||
@@ -67,0 +47,0 @@ function formatResult(result) { |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var auto_complete_exports = {}; | ||
@@ -28,5 +25,4 @@ __export(auto_complete_exports, { | ||
const insertions = []; | ||
if (!schema || !docString) { | ||
if (!schema || !docString) | ||
return { insertions, result: docString }; | ||
} | ||
let ast; | ||
@@ -38,5 +34,4 @@ try { | ||
} | ||
const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames; | ||
const typeInfo = new import_graphql.TypeInfo(schema); | ||
(0, import_graphql.visit)(ast, { | ||
const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames, typeInfo = new import_graphql.TypeInfo(schema); | ||
return (0, import_graphql.visit)(ast, { | ||
leave(node) { | ||
@@ -46,6 +41,4 @@ typeInfo.leave(node); | ||
enter(node) { | ||
typeInfo.enter(node); | ||
if (node.kind === "Field" && !node.selectionSet) { | ||
const fieldType = typeInfo.getType(); | ||
const selectionSet = buildSelectionSet( | ||
if (typeInfo.enter(node), node.kind === "Field" && !node.selectionSet) { | ||
const fieldType = typeInfo.getType(), selectionSet = buildSelectionSet( | ||
isFieldType(fieldType), | ||
@@ -58,3 +51,5 @@ fieldNameFn | ||
index: node.loc.end, | ||
string: " " + (0, import_graphql.print)(selectionSet).replaceAll("\n", "\n" + indent) | ||
string: " " + (0, import_graphql.print)(selectionSet).replaceAll(` | ||
`, ` | ||
` + indent) | ||
}); | ||
@@ -64,4 +59,3 @@ } | ||
} | ||
}); | ||
return { | ||
}), { | ||
insertions, | ||
@@ -72,21 +66,14 @@ result: withInsertions(docString, insertions) | ||
function defaultGetDefaultFieldNames(type) { | ||
if (!("getFields" in type)) { | ||
if (!("getFields" in type)) | ||
return []; | ||
} | ||
const fields = type.getFields(); | ||
if (fields.id) { | ||
if (fields.id) | ||
return ["id"]; | ||
} | ||
if (fields.edges) { | ||
if (fields.edges) | ||
return ["edges"]; | ||
} | ||
if (fields.node) { | ||
if (fields.node) | ||
return ["node"]; | ||
} | ||
const leafFieldNames = []; | ||
for (const fieldName of Object.keys(fields)) { | ||
if ((0, import_graphql.isLeafType)(fields[fieldName].type)) { | ||
leafFieldNames.push(fieldName); | ||
} | ||
} | ||
for (const fieldName of Object.keys(fields)) | ||
(0, import_graphql.isLeafType)(fields[fieldName].type) && leafFieldNames.push(fieldName); | ||
return leafFieldNames; | ||
@@ -96,52 +83,38 @@ } | ||
const namedType = (0, import_graphql.getNamedType)(type); | ||
if (!type || (0, import_graphql.isLeafType)(type)) { | ||
if (!type || (0, import_graphql.isLeafType)(type)) | ||
return; | ||
} | ||
const fieldNames = getDefaultFieldNames(namedType); | ||
if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !("getFields" in namedType)) { | ||
return; | ||
} | ||
return { | ||
kind: import_graphql.Kind.SELECTION_SET, | ||
selections: fieldNames.map((fieldName) => { | ||
const fieldDef = namedType.getFields()[fieldName]; | ||
const fieldType = fieldDef ? fieldDef.type : null; | ||
return { | ||
kind: import_graphql.Kind.FIELD, | ||
name: { | ||
kind: import_graphql.Kind.NAME, | ||
value: fieldName | ||
}, | ||
// we can use as here, because we already know that fieldType | ||
// comes from an origin parameter | ||
selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) | ||
}; | ||
}) | ||
}; | ||
if (!(!Array.isArray(fieldNames) || fieldNames.length === 0 || !("getFields" in namedType))) | ||
return { | ||
kind: import_graphql.Kind.SELECTION_SET, | ||
selections: fieldNames.map((fieldName) => { | ||
const fieldDef = namedType.getFields()[fieldName], fieldType = fieldDef ? fieldDef.type : null; | ||
return { | ||
kind: import_graphql.Kind.FIELD, | ||
name: { | ||
kind: import_graphql.Kind.NAME, | ||
value: fieldName | ||
}, | ||
// we can use as here, because we already know that fieldType | ||
// comes from an origin parameter | ||
selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) | ||
}; | ||
}) | ||
}; | ||
} | ||
function withInsertions(initial, insertions) { | ||
if (insertions.length === 0) { | ||
if (insertions.length === 0) | ||
return initial; | ||
} | ||
let edited = ""; | ||
let prevIndex = 0; | ||
for (const { index, string } of insertions) { | ||
edited += initial.slice(prevIndex, index) + string; | ||
prevIndex = index; | ||
} | ||
edited += initial.slice(prevIndex); | ||
return edited; | ||
let edited = "", prevIndex = 0; | ||
for (const { index, string } of insertions) | ||
edited += initial.slice(prevIndex, index) + string, prevIndex = index; | ||
return edited += initial.slice(prevIndex), edited; | ||
} | ||
function getIndentation(str, index) { | ||
let indentStart = index; | ||
let indentEnd = index; | ||
while (indentStart) { | ||
let indentStart = index, indentEnd = index; | ||
for (; indentStart; ) { | ||
const c = str.charCodeAt(indentStart - 1); | ||
if (c === 10 || c === 13 || c === 8232 || c === 8233) { | ||
if (c === 10 || c === 13 || c === 8232 || c === 8233) | ||
break; | ||
} | ||
indentStart--; | ||
if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) { | ||
indentEnd = indentStart; | ||
} | ||
indentStart--, c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160 && (indentEnd = indentStart); | ||
} | ||
@@ -151,5 +124,4 @@ return str.slice(indentStart, indentEnd); | ||
function isFieldType(fieldType) { | ||
if (fieldType) { | ||
if (fieldType) | ||
return fieldType; | ||
} | ||
} | ||
@@ -156,0 +128,0 @@ // Annotate the CommonJS export names for ESM import in node: |
@@ -7,11 +7,8 @@ "use strict"; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
}, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var graphql_helpers_exports = {}; | ||
@@ -18,0 +15,0 @@ module.exports = __toCommonJS(graphql_helpers_exports); |
"use strict"; | ||
var __defProp = Object.defineProperty; | ||
var __defProps = Object.defineProperties; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a, b) => { | ||
var __defProp = Object.defineProperty, __defProps = Object.defineProperties, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropDescs = Object.getOwnPropertyDescriptors, __getOwnPropNames = Object.getOwnPropertyNames, __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => { | ||
for (var prop in b || (b = {})) | ||
if (__hasOwnProp.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
__hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b)) { | ||
if (__propIsEnum.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
} | ||
for (var prop of __getOwnPropSymbols(b)) | ||
__propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
return a; | ||
}; | ||
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var merge_ast_exports = {}; | ||
@@ -44,12 +30,10 @@ __export(merge_ast_exports, { | ||
var _a; | ||
const FilteredMap = /* @__PURE__ */ new Map(); | ||
const result = []; | ||
for (const item of array) { | ||
const FilteredMap = /* @__PURE__ */ new Map(), result = []; | ||
for (const item of array) | ||
if (item.kind === "Field") { | ||
const uniqueValue = iteratee(item); | ||
const existing = FilteredMap.get(uniqueValue); | ||
if ((_a = item.directives) == null ? void 0 : _a.length) { | ||
const uniqueValue = iteratee(item), existing = FilteredMap.get(uniqueValue); | ||
if ((_a = item.directives) != null && _a.length) { | ||
const itemClone = __spreadValues({}, item); | ||
result.push(itemClone); | ||
} else if ((existing == null ? void 0 : existing.selectionSet) && item.selectionSet) { | ||
} else if (existing != null && existing.selectionSet && item.selectionSet) | ||
existing.selectionSet.selections = [ | ||
@@ -59,11 +43,8 @@ ...existing.selectionSet.selections, | ||
]; | ||
} else if (!existing) { | ||
else if (!existing) { | ||
const itemClone = __spreadValues({}, item); | ||
FilteredMap.set(uniqueValue, itemClone); | ||
result.push(itemClone); | ||
FilteredMap.set(uniqueValue, itemClone), result.push(itemClone); | ||
} | ||
} else { | ||
} else | ||
result.push(item); | ||
} | ||
} | ||
return result; | ||
@@ -73,5 +54,3 @@ } | ||
var _a; | ||
const selectionSetTypeName = selectionSetType ? (0, import_graphql.getNamedType)(selectionSetType).name : null; | ||
const outputSelections = []; | ||
const seenSpreads = []; | ||
const selectionSetTypeName = selectionSetType ? (0, import_graphql.getNamedType)(selectionSetType).name : null, outputSelections = [], seenSpreads = []; | ||
for (let selection of selections) { | ||
@@ -81,7 +60,5 @@ if (selection.kind === "FragmentSpread") { | ||
if (!selection.directives || selection.directives.length === 0) { | ||
if (seenSpreads.includes(fragmentName)) { | ||
if (seenSpreads.includes(fragmentName)) | ||
continue; | ||
} else { | ||
seenSpreads.push(fragmentName); | ||
} | ||
seenSpreads.push(fragmentName); | ||
} | ||
@@ -118,9 +95,5 @@ const fragmentDefinition = fragmentDefinitions[selection.name.value]; | ||
function mergeAst(documentAST, schema) { | ||
const typeInfo = schema ? new import_graphql.TypeInfo(schema) : null; | ||
const fragmentDefinitions = /* @__PURE__ */ Object.create(null); | ||
for (const definition of documentAST.definitions) { | ||
if (definition.kind === import_graphql.Kind.FRAGMENT_DEFINITION) { | ||
fragmentDefinitions[definition.name.value] = definition; | ||
} | ||
} | ||
const typeInfo = schema ? new import_graphql.TypeInfo(schema) : null, fragmentDefinitions = /* @__PURE__ */ Object.create(null); | ||
for (const definition of documentAST.definitions) | ||
definition.kind === import_graphql.Kind.FRAGMENT_DEFINITION && (fragmentDefinitions[definition.name.value] = definition); | ||
const flattenVisitors = { | ||
@@ -130,8 +103,7 @@ SelectionSet(node) { | ||
let { selections } = node; | ||
selections = inlineRelevantFragmentSpreads( | ||
return selections = inlineRelevantFragmentSpreads( | ||
fragmentDefinitions, | ||
selections, | ||
selectionSetType | ||
); | ||
return __spreadProps(__spreadValues({}, node), { | ||
), __spreadProps(__spreadValues({}, node), { | ||
selections | ||
@@ -143,15 +115,13 @@ }); | ||
} | ||
}; | ||
const flattenedAST = (0, import_graphql.visit)( | ||
}, flattenedAST = (0, import_graphql.visit)( | ||
documentAST, | ||
typeInfo ? (0, import_graphql.visitWithTypeInfo)(typeInfo, flattenVisitors) : flattenVisitors | ||
); | ||
const deduplicateVisitors = { | ||
return (0, import_graphql.visit)(flattenedAST, { | ||
SelectionSet(node) { | ||
let { selections } = node; | ||
selections = uniqueBy( | ||
return selections = uniqueBy( | ||
selections, | ||
(selection) => selection.alias ? selection.alias.value : selection.name.value | ||
); | ||
return __spreadProps(__spreadValues({}, node), { | ||
), __spreadProps(__spreadValues({}, node), { | ||
selections | ||
@@ -163,4 +133,3 @@ }); | ||
} | ||
}; | ||
return (0, import_graphql.visit)(flattenedAST, deduplicateVisitors); | ||
}); | ||
} | ||
@@ -167,0 +136,0 @@ // Annotate the CommonJS export names for ESM import in node: |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var operation_name_exports = {}; | ||
@@ -26,5 +23,4 @@ __export(operation_name_exports, { | ||
function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) { | ||
if (!operations || operations.length < 1) { | ||
if (!operations || operations.length < 1) | ||
return; | ||
} | ||
const names = operations.map((op) => { | ||
@@ -34,14 +30,11 @@ var _a; | ||
}); | ||
if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) { | ||
if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) | ||
return prevSelectedOperationName; | ||
} | ||
if (prevSelectedOperationName && prevOperations) { | ||
const prevNames = prevOperations.map((op) => { | ||
const prevIndex = prevOperations.map((op) => { | ||
var _a; | ||
return (_a = op.name) == null ? void 0 : _a.value; | ||
}); | ||
const prevIndex = prevNames.indexOf(prevSelectedOperationName); | ||
if (prevIndex !== -1 && prevIndex < names.length) { | ||
}).indexOf(prevSelectedOperationName); | ||
if (prevIndex !== -1 && prevIndex < names.length) | ||
return names[prevIndex]; | ||
} | ||
} | ||
@@ -48,0 +41,0 @@ return names[0]; |
@@ -7,11 +7,8 @@ "use strict"; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
}, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var src_exports = {}; | ||
@@ -18,0 +15,0 @@ module.exports = __toCommonJS(src_exports); |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var base_exports = {}; | ||
@@ -36,59 +33,36 @@ __export(base_exports, { | ||
constructor(storage) { | ||
if (storage) { | ||
this.storage = storage; | ||
} else if (storage === null) { | ||
this.storage = null; | ||
} else if (typeof window === "undefined") { | ||
this.storage = null; | ||
} else { | ||
this.storage = { | ||
getItem: localStorage.getItem.bind(localStorage), | ||
setItem: localStorage.setItem.bind(localStorage), | ||
removeItem: localStorage.removeItem.bind(localStorage), | ||
get length() { | ||
let keys = 0; | ||
for (const key in localStorage) { | ||
if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { | ||
keys += 1; | ||
} | ||
} | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) { | ||
if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { | ||
localStorage.removeItem(key); | ||
} | ||
} | ||
} | ||
}; | ||
} | ||
storage ? this.storage = storage : storage === null ? this.storage = null : typeof window == "undefined" ? this.storage = null : this.storage = { | ||
getItem: localStorage.getItem.bind(localStorage), | ||
setItem: localStorage.setItem.bind(localStorage), | ||
removeItem: localStorage.removeItem.bind(localStorage), | ||
get length() { | ||
let keys = 0; | ||
for (const key in localStorage) | ||
key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && (keys += 1); | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) | ||
key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && localStorage.removeItem(key); | ||
} | ||
}; | ||
} | ||
get(name) { | ||
if (!this.storage) { | ||
if (!this.storage) | ||
return null; | ||
} | ||
const key = `${STORAGE_NAMESPACE}:${name}`; | ||
const value = this.storage.getItem(key); | ||
if (value === "null" || value === "undefined") { | ||
this.storage.removeItem(key); | ||
return null; | ||
} | ||
return value || null; | ||
const key = `${STORAGE_NAMESPACE}:${name}`, value = this.storage.getItem(key); | ||
return value === "null" || value === "undefined" ? (this.storage.removeItem(key), null) : value || null; | ||
} | ||
set(name, value) { | ||
let quotaError = false; | ||
let error = null; | ||
let quotaError = !1, error = null; | ||
if (this.storage) { | ||
const key = `${STORAGE_NAMESPACE}:${name}`; | ||
if (value) { | ||
if (value) | ||
try { | ||
this.storage.setItem(key, value); | ||
} catch (e) { | ||
error = e instanceof Error ? e : new Error(`${e}`); | ||
quotaError = isQuotaError(this.storage, e); | ||
error = e instanceof Error ? e : new Error(`${e}`), quotaError = isQuotaError(this.storage, e); | ||
} | ||
} else { | ||
else | ||
this.storage.removeItem(key); | ||
} | ||
} | ||
@@ -98,5 +72,3 @@ return { isQuotaError: quotaError, error }; | ||
clear() { | ||
if (this.storage) { | ||
this.storage.clear(); | ||
} | ||
this.storage && this.storage.clear(); | ||
} | ||
@@ -103,0 +75,0 @@ } |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var custom_exports = {}; | ||
@@ -28,5 +25,4 @@ __export(custom_exports, { | ||
}) { | ||
const storageKeyPrefix = `${namespace}:`; | ||
const getStorageKey = (key) => `${storageKeyPrefix}${key}`; | ||
const storage = { | ||
const storageKeyPrefix = `${namespace}:`, getStorageKey = (key) => `${storageKeyPrefix}${key}`; | ||
return { | ||
setItem: (key, value) => localStorage.setItem(getStorageKey(key), value), | ||
@@ -37,18 +33,11 @@ getItem: (key) => localStorage.getItem(getStorageKey(key)), | ||
let keys = 0; | ||
for (const key in localStorage) { | ||
if (key.indexOf(storageKeyPrefix) === 0) { | ||
keys += 1; | ||
} | ||
} | ||
for (const key in localStorage) | ||
key.indexOf(storageKeyPrefix) === 0 && (keys += 1); | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) { | ||
if (key.indexOf(storageKeyPrefix) === 0) { | ||
localStorage.removeItem(key); | ||
} | ||
} | ||
for (const key in localStorage) | ||
key.indexOf(storageKeyPrefix) === 0 && localStorage.removeItem(key); | ||
} | ||
}; | ||
return storage; | ||
} | ||
@@ -55,0 +44,0 @@ // Annotate the CommonJS export names for ESM import in node: |
"use strict"; | ||
var __defProp = Object.defineProperty; | ||
var __defProps = Object.defineProperties; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropDescs = Object.getOwnPropertyDescriptors; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
var __spreadValues = (a, b) => { | ||
var __defProp = Object.defineProperty, __defProps = Object.defineProperties, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropDescs = Object.getOwnPropertyDescriptors, __getOwnPropNames = Object.getOwnPropertyNames, __getOwnPropSymbols = Object.getOwnPropertySymbols; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty, __propIsEnum = Object.prototype.propertyIsEnumerable; | ||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value, __spreadValues = (a, b) => { | ||
for (var prop in b || (b = {})) | ||
if (__hasOwnProp.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
__hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
if (__getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(b)) { | ||
if (__propIsEnum.call(b, prop)) | ||
__defNormalProp(a, prop, b[prop]); | ||
} | ||
for (var prop of __getOwnPropSymbols(b)) | ||
__propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]); | ||
return a; | ||
}; | ||
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var history_exports = {}; | ||
@@ -41,4 +27,3 @@ __export(history_exports, { | ||
module.exports = __toCommonJS(history_exports); | ||
var import_graphql = require("graphql"); | ||
var import_query = require("./query"); | ||
var import_graphql = require("graphql"), import_query = require("./query"); | ||
const MAX_QUERY_SIZE = 1e5; | ||
@@ -60,5 +45,4 @@ class HistoryStore { | ||
this.history.fetchRecent() | ||
)) { | ||
)) | ||
return; | ||
} | ||
this.history.push({ | ||
@@ -70,7 +54,6 @@ query, | ||
}); | ||
const historyQueries = this.history.items; | ||
const favoriteQueries = this.favorite.items; | ||
const historyQueries = this.history.items, favoriteQueries = this.favorite.items; | ||
this.queries = historyQueries.concat(favoriteQueries); | ||
}; | ||
this.deleteHistory = ({ query, variables, headers, operationName, favorite }, clearFavorites = false) => { | ||
this.deleteHistory = ({ query, variables, headers, operationName, favorite }, clearFavorites = !1) => { | ||
function deleteFromStore(store) { | ||
@@ -80,13 +63,5 @@ const found = store.items.find( | ||
); | ||
if (found) { | ||
store.delete(found); | ||
} | ||
found && store.delete(found); | ||
} | ||
if (favorite || clearFavorites) { | ||
deleteFromStore(this.favorite); | ||
} | ||
if (!favorite || clearFavorites) { | ||
deleteFromStore(this.history); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
(favorite || clearFavorites) && deleteFromStore(this.favorite), (!favorite || clearFavorites) && deleteFromStore(this.history), this.queries = [...this.history.items, ...this.favorite.items]; | ||
}; | ||
@@ -97,35 +72,13 @@ this.history = new import_query.QueryStore( | ||
this.maxHistoryLength | ||
); | ||
this.favorite = new import_query.QueryStore("favorites", this.storage, null); | ||
this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; | ||
), this.favorite = new import_query.QueryStore("favorites", this.storage, null), this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; | ||
} | ||
shouldSaveQuery(query, variables, headers, lastQuerySaved) { | ||
if (!query) { | ||
return false; | ||
} | ||
if (!query) | ||
return !1; | ||
try { | ||
(0, import_graphql.parse)(query); | ||
} catch (e) { | ||
return false; | ||
return !1; | ||
} | ||
if (query.length > MAX_QUERY_SIZE) { | ||
return false; | ||
} | ||
if (!lastQuerySaved) { | ||
return true; | ||
} | ||
if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) { | ||
if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) { | ||
if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) { | ||
return false; | ||
} | ||
if (headers && !lastQuerySaved.headers) { | ||
return false; | ||
} | ||
} | ||
if (variables && !lastQuerySaved.variables) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
return query.length > MAX_QUERY_SIZE ? !1 : lastQuerySaved ? !(JSON.stringify(query) === JSON.stringify(lastQuerySaved.query) && (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables) && (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers) || headers && !lastQuerySaved.headers) || variables && !lastQuerySaved.variables)) : !0; | ||
} | ||
@@ -147,12 +100,3 @@ toggleFavorite({ | ||
}; | ||
if (favorite) { | ||
item.favorite = false; | ||
this.favorite.delete(item); | ||
this.history.push(item); | ||
} else { | ||
item.favorite = true; | ||
this.favorite.push(item); | ||
this.history.delete(item); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
favorite ? (item.favorite = !1, this.favorite.delete(item), this.history.push(item)) : (item.favorite = !0, this.favorite.push(item), this.history.delete(item)), this.queries = [...this.history.items, ...this.favorite.items]; | ||
} | ||
@@ -174,8 +118,3 @@ editLabel({ | ||
}; | ||
if (favorite) { | ||
this.favorite.edit(__spreadProps(__spreadValues({}, item), { favorite }), index); | ||
} else { | ||
this.history.edit(item, index); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
favorite ? this.favorite.edit(__spreadProps(__spreadValues({}, item), { favorite }), index) : this.history.edit(item, index), this.queries = [...this.history.items, ...this.favorite.items]; | ||
} | ||
@@ -182,0 +121,0 @@ } |
@@ -7,11 +7,8 @@ "use strict"; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
}, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var storage_exports = {}; | ||
@@ -18,0 +15,0 @@ module.exports = __toCommonJS(storage_exports); |
@@ -8,13 +8,10 @@ "use strict"; | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
__defProp(target, name, { get: all[name], enumerable: !0 }); | ||
}, __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from == "object" || typeof from == "function") | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); | ||
var query_exports = {}; | ||
@@ -41,7 +38,6 @@ __export(query_exports, { | ||
edit(item, index) { | ||
if (typeof index === "number" && this.items[index]) { | ||
if (typeof index == "number" && this.items[index]) { | ||
const found = this.items[index]; | ||
if (found.query === item.query && found.variables === item.variables && found.headers === item.headers && found.operationName === item.operationName) { | ||
this.items.splice(index, 1, item); | ||
this.save(); | ||
this.items.splice(index, 1, item), this.save(); | ||
return; | ||
@@ -53,6 +49,3 @@ } | ||
); | ||
if (itemIndex !== -1) { | ||
this.items.splice(itemIndex, 1, item); | ||
this.save(); | ||
} | ||
itemIndex !== -1 && (this.items.splice(itemIndex, 1, item), this.save()); | ||
} | ||
@@ -63,6 +56,3 @@ delete(item) { | ||
); | ||
if (itemIndex !== -1) { | ||
this.items.splice(itemIndex, 1); | ||
this.save(); | ||
} | ||
itemIndex !== -1 && (this.items.splice(itemIndex, 1), this.save()); | ||
} | ||
@@ -74,12 +64,7 @@ fetchRecent() { | ||
const raw = this.storage.get(this.key); | ||
if (raw) { | ||
return JSON.parse(raw)[this.key]; | ||
} | ||
return []; | ||
return raw ? JSON.parse(raw)[this.key] : []; | ||
} | ||
push(item) { | ||
const items = [...this.items, item]; | ||
if (this.maxSize && items.length > this.maxSize) { | ||
items.shift(); | ||
} | ||
this.maxSize && items.length > this.maxSize && items.shift(); | ||
for (let attempts = 0; attempts < 5; attempts++) { | ||
@@ -90,9 +75,8 @@ const response = this.storage.set( | ||
); | ||
if (!(response == null ? void 0 : response.error)) { | ||
if (!(response != null && response.error)) | ||
this.items = items; | ||
} else if (response.isQuotaError && this.maxSize) { | ||
else if (response.isQuotaError && this.maxSize) | ||
items.shift(); | ||
} else { | ||
else | ||
return; | ||
} | ||
} | ||
@@ -99,0 +83,0 @@ } |
@@ -1,6 +0,4 @@ | ||
import { | ||
__async | ||
} from "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
function isPromise(value) { | ||
return typeof value === "object" && value !== null && typeof value.then === "function"; | ||
return typeof value == "object" && value !== null && typeof value.then == "function"; | ||
} | ||
@@ -11,4 +9,3 @@ function observableToPromise(observable) { | ||
next(v) { | ||
resolve(v); | ||
subscription.unsubscribe(); | ||
resolve(v), subscription.unsubscribe(); | ||
}, | ||
@@ -23,30 +20,17 @@ error: reject, | ||
function isObservable(value) { | ||
return typeof value === "object" && value !== null && "subscribe" in value && typeof value.subscribe === "function"; | ||
return typeof value == "object" && value !== null && "subscribe" in value && typeof value.subscribe == "function"; | ||
} | ||
function isAsyncIterable(input) { | ||
return typeof input === "object" && input !== null && // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari) | ||
return typeof input == "object" && input !== null && // Some browsers still don't have Symbol.asyncIterator implemented (iOS Safari) | ||
// That means every custom AsyncIterable must be built using a AsyncGeneratorFunction (async function * () {}) | ||
(input[Symbol.toStringTag] === "AsyncGenerator" || Symbol.asyncIterator in input); | ||
} | ||
function asyncIterableToPromise(input) { | ||
return __async(this, null, function* () { | ||
var _a; | ||
const iteratorReturn = (_a = ("return" in input ? input : input[Symbol.asyncIterator]()).return) == null ? void 0 : _a.bind(input); | ||
const iteratorNext = ("next" in input ? input : input[Symbol.asyncIterator]()).next.bind(input); | ||
const result = yield iteratorNext(); | ||
void (iteratorReturn == null ? void 0 : iteratorReturn()); | ||
return result.value; | ||
}); | ||
async function asyncIterableToPromise(input) { | ||
var _a; | ||
const iteratorReturn = (_a = ("return" in input ? input : input[Symbol.asyncIterator]()).return) == null ? void 0 : _a.bind(input), result = await ("next" in input ? input : input[Symbol.asyncIterator]()).next.bind(input)(); | ||
return iteratorReturn == null || iteratorReturn(), result.value; | ||
} | ||
function fetcherReturnToPromise(fetcherResult) { | ||
return __async(this, null, function* () { | ||
const result = yield fetcherResult; | ||
if (isAsyncIterable(result)) { | ||
return asyncIterableToPromise(result); | ||
} | ||
if (isObservable(result)) { | ||
return observableToPromise(result); | ||
} | ||
return result; | ||
}); | ||
async function fetcherReturnToPromise(fetcherResult) { | ||
const result = await fetcherResult; | ||
return isAsyncIterable(result) ? asyncIterableToPromise(result) : isObservable(result) ? observableToPromise(result) : result; | ||
} | ||
@@ -53,0 +37,0 @@ export { |
@@ -1,2 +0,2 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
import { | ||
@@ -9,11 +9,9 @@ createMultipartFetcher, | ||
function createGraphiQLFetcher(options) { | ||
const httpFetch = options.fetch || typeof window !== "undefined" && window.fetch; | ||
if (!httpFetch) { | ||
const httpFetch = options.fetch || typeof window != "undefined" && window.fetch; | ||
if (!httpFetch) | ||
throw new Error("No valid fetcher implementation available"); | ||
} | ||
options.enableIncrementalDelivery = options.enableIncrementalDelivery !== false; | ||
const simpleFetcher = createSimpleFetcher(options, httpFetch); | ||
const httpFetcher = options.enableIncrementalDelivery ? createMultipartFetcher(options, httpFetch) : simpleFetcher; | ||
return (graphQLParams, fetcherOpts) => { | ||
if (graphQLParams.operationName === "IntrospectionQuery") { | ||
options.enableIncrementalDelivery = options.enableIncrementalDelivery !== !1; | ||
const simpleFetcher = createSimpleFetcher(options, httpFetch), httpFetcher = options.enableIncrementalDelivery ? createMultipartFetcher(options, httpFetch) : simpleFetcher; | ||
return async (graphQLParams, fetcherOpts) => { | ||
if (graphQLParams.operationName === "IntrospectionQuery") | ||
return (options.schemaFetcher || simpleFetcher)( | ||
@@ -23,14 +21,11 @@ graphQLParams, | ||
); | ||
} | ||
const isSubscription = (fetcherOpts == null ? void 0 : fetcherOpts.documentAST) ? isSubscriptionWithName( | ||
if (fetcherOpts != null && fetcherOpts.documentAST ? isSubscriptionWithName( | ||
fetcherOpts.documentAST, | ||
graphQLParams.operationName || void 0 | ||
) : false; | ||
if (isSubscription) { | ||
const wsFetcher = getWsFetcher(options, fetcherOpts); | ||
if (!wsFetcher) { | ||
) : !1) { | ||
const wsFetcher = await getWsFetcher(options, fetcherOpts); | ||
if (!wsFetcher) | ||
throw new Error( | ||
`Your GraphiQL createFetcher is not properly configured for websocket subscriptions yet. ${options.subscriptionUrl ? `Provided URL ${options.subscriptionUrl} failed` : "Please provide subscriptionUrl, wsClient or legacyClient option first."}` | ||
); | ||
} | ||
return wsFetcher(graphQLParams); | ||
@@ -37,0 +32,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
export * from "./types"; | ||
@@ -3,0 +3,0 @@ import { createGraphiQLFetcher } from "./createFetcher"; |
import { | ||
__async, | ||
__asyncGenerator, | ||
@@ -8,3 +7,3 @@ __await, | ||
__spreadValues | ||
} from "../chunk-P5H5YIIE.js"; | ||
} from "../chunk-LMOQIXV4.js"; | ||
import { visit } from "graphql"; | ||
@@ -16,58 +15,41 @@ import { meros } from "meros"; | ||
} from "@n1ru4l/push-pull-async-iterable-iterator"; | ||
const errorHasCode = (err) => { | ||
return typeof err === "object" && err !== null && "code" in err; | ||
}; | ||
const isSubscriptionWithName = (document, name) => { | ||
let isSubscription = false; | ||
visit(document, { | ||
const errorHasCode = (err) => typeof err == "object" && err !== null && "code" in err, isSubscriptionWithName = (document, name) => { | ||
let isSubscription = !1; | ||
return visit(document, { | ||
OperationDefinition(node) { | ||
var _a; | ||
if (name === ((_a = node.name) == null ? void 0 : _a.value) && node.operation === "subscription") { | ||
isSubscription = true; | ||
} | ||
name === ((_a = node.name) == null ? void 0 : _a.value) && node.operation === "subscription" && (isSubscription = !0); | ||
} | ||
}); | ||
return isSubscription; | ||
}; | ||
const createSimpleFetcher = (options, httpFetch) => (graphQLParams, fetcherOpts) => __async(void 0, null, function* () { | ||
const data = yield httpFetch(options.url, { | ||
method: "POST", | ||
body: JSON.stringify(graphQLParams), | ||
headers: __spreadValues(__spreadValues({ | ||
"content-type": "application/json" | ||
}, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers) | ||
}); | ||
return data.json(); | ||
}); | ||
const createWebsocketsFetcherFromUrl = (url, connectionParams) => { | ||
}), isSubscription; | ||
}, createSimpleFetcher = (options, httpFetch) => async (graphQLParams, fetcherOpts) => (await httpFetch(options.url, { | ||
method: "POST", | ||
body: JSON.stringify(graphQLParams), | ||
headers: __spreadValues(__spreadValues({ | ||
"content-type": "application/json" | ||
}, options.headers), fetcherOpts == null ? void 0 : fetcherOpts.headers) | ||
})).json(); | ||
async function createWebsocketsFetcherFromUrl(url, connectionParams) { | ||
let wsClient; | ||
try { | ||
const { createClient } = require("graphql-ws"); | ||
wsClient = createClient({ url, connectionParams }); | ||
return createWebsocketsFetcherFromClient(wsClient); | ||
const { createClient } = await import("graphql-ws"); | ||
return wsClient = createClient({ url, connectionParams }), createWebsocketsFetcherFromClient(wsClient); | ||
} catch (err) { | ||
if (errorHasCode(err) && err.code === "MODULE_NOT_FOUND") { | ||
if (errorHasCode(err) && err.code === "MODULE_NOT_FOUND") | ||
throw new Error( | ||
"You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'" | ||
); | ||
} | ||
console.error(`Error creating websocket client for ${url}`, err); | ||
} | ||
}; | ||
} | ||
const createWebsocketsFetcherFromClient = (wsClient) => (graphQLParams) => makeAsyncIterableIteratorFromSink( | ||
(sink) => wsClient.subscribe(graphQLParams, __spreadProps(__spreadValues({}, sink), { | ||
error(err) { | ||
if (err instanceof CloseEvent) { | ||
sink.error( | ||
new Error( | ||
`Socket closed with event ${err.code} ${err.reason || ""}`.trim() | ||
) | ||
); | ||
} else { | ||
sink.error(err); | ||
} | ||
err instanceof CloseEvent ? sink.error( | ||
new Error( | ||
`Socket closed with event ${err.code} ${err.reason || ""}`.trim() | ||
) | ||
) : sink.error(err); | ||
} | ||
})) | ||
); | ||
const createLegacyWebsocketsFetcher = (legacyWsClient) => (graphQLParams) => { | ||
), createLegacyWebsocketsFetcher = (legacyWsClient) => (graphQLParams) => { | ||
const observable = legacyWsClient.request(graphQLParams); | ||
@@ -78,4 +60,3 @@ return makeAsyncIterableIteratorFromSink( | ||
); | ||
}; | ||
const createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) { | ||
}, createMultipartFetcher = (options, httpFetch) => function(graphQLParams, fetcherOpts) { | ||
return __asyncGenerator(this, null, function* () { | ||
@@ -91,10 +72,9 @@ const response = yield new __await(httpFetch(options.url, { | ||
(r) => meros(r, { | ||
multiple: true | ||
multiple: !0 | ||
}) | ||
)); | ||
if (!isAsyncIterable(response)) { | ||
if (!isAsyncIterable(response)) | ||
return yield response.json(); | ||
} | ||
try { | ||
for (var iter = __forAwait(response), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) { | ||
for (var iter = __forAwait(response), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = !1) { | ||
const chunk = temp.value; | ||
@@ -128,14 +108,11 @@ if (chunk.some((part) => !part.json)) { | ||
}; | ||
const getWsFetcher = (options, fetcherOpts) => { | ||
if (options.wsClient) { | ||
async function getWsFetcher(options, fetcherOpts) { | ||
if (options.wsClient) | ||
return createWebsocketsFetcherFromClient(options.wsClient); | ||
} | ||
if (options.subscriptionUrl) { | ||
if (options.subscriptionUrl) | ||
return createWebsocketsFetcherFromUrl(options.subscriptionUrl, __spreadValues(__spreadValues({}, options.wsConnectionParams), fetcherOpts == null ? void 0 : fetcherOpts.headers)); | ||
} | ||
const legacyWebsocketsClient = options.legacyClient || options.legacyWsClient; | ||
if (legacyWebsocketsClient) { | ||
if (legacyWebsocketsClient) | ||
return createLegacyWebsocketsFetcher(legacyWebsocketsClient); | ||
} | ||
}; | ||
} | ||
export { | ||
@@ -142,0 +119,0 @@ createLegacyWebsocketsFetcher, |
import { | ||
__spreadProps, | ||
__spreadValues | ||
} from "../chunk-P5H5YIIE.js"; | ||
} from "../chunk-LMOQIXV4.js"; | ||
function stringify(obj) { | ||
@@ -16,14 +16,8 @@ return JSON.stringify(obj, null, 2); | ||
function handleSingleError(error) { | ||
if (error instanceof Error) { | ||
return formatSingleError(error); | ||
} | ||
return error; | ||
return error instanceof Error ? formatSingleError(error) : error; | ||
} | ||
function formatError(error) { | ||
if (Array.isArray(error)) { | ||
return stringify({ | ||
errors: error.map((e) => handleSingleError(e)) | ||
}); | ||
} | ||
return stringify({ errors: [handleSingleError(error)] }); | ||
return Array.isArray(error) ? stringify({ | ||
errors: error.map((e) => handleSingleError(e)) | ||
}) : stringify({ errors: [handleSingleError(error)] }); | ||
} | ||
@@ -30,0 +24,0 @@ function formatResult(result) { |
@@ -1,2 +0,2 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
import { | ||
@@ -13,5 +13,4 @@ getNamedType, | ||
const insertions = []; | ||
if (!schema || !docString) { | ||
if (!schema || !docString) | ||
return { insertions, result: docString }; | ||
} | ||
let ast; | ||
@@ -23,5 +22,4 @@ try { | ||
} | ||
const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames; | ||
const typeInfo = new TypeInfo(schema); | ||
visit(ast, { | ||
const fieldNameFn = getDefaultFieldNames || defaultGetDefaultFieldNames, typeInfo = new TypeInfo(schema); | ||
return visit(ast, { | ||
leave(node) { | ||
@@ -31,6 +29,4 @@ typeInfo.leave(node); | ||
enter(node) { | ||
typeInfo.enter(node); | ||
if (node.kind === "Field" && !node.selectionSet) { | ||
const fieldType = typeInfo.getType(); | ||
const selectionSet = buildSelectionSet( | ||
if (typeInfo.enter(node), node.kind === "Field" && !node.selectionSet) { | ||
const fieldType = typeInfo.getType(), selectionSet = buildSelectionSet( | ||
isFieldType(fieldType), | ||
@@ -43,3 +39,5 @@ fieldNameFn | ||
index: node.loc.end, | ||
string: " " + print(selectionSet).replaceAll("\n", "\n" + indent) | ||
string: " " + print(selectionSet).replaceAll(` | ||
`, ` | ||
` + indent) | ||
}); | ||
@@ -49,4 +47,3 @@ } | ||
} | ||
}); | ||
return { | ||
}), { | ||
insertions, | ||
@@ -57,21 +54,14 @@ result: withInsertions(docString, insertions) | ||
function defaultGetDefaultFieldNames(type) { | ||
if (!("getFields" in type)) { | ||
if (!("getFields" in type)) | ||
return []; | ||
} | ||
const fields = type.getFields(); | ||
if (fields.id) { | ||
if (fields.id) | ||
return ["id"]; | ||
} | ||
if (fields.edges) { | ||
if (fields.edges) | ||
return ["edges"]; | ||
} | ||
if (fields.node) { | ||
if (fields.node) | ||
return ["node"]; | ||
} | ||
const leafFieldNames = []; | ||
for (const fieldName of Object.keys(fields)) { | ||
if (isLeafType(fields[fieldName].type)) { | ||
leafFieldNames.push(fieldName); | ||
} | ||
} | ||
for (const fieldName of Object.keys(fields)) | ||
isLeafType(fields[fieldName].type) && leafFieldNames.push(fieldName); | ||
return leafFieldNames; | ||
@@ -81,52 +71,38 @@ } | ||
const namedType = getNamedType(type); | ||
if (!type || isLeafType(type)) { | ||
if (!type || isLeafType(type)) | ||
return; | ||
} | ||
const fieldNames = getDefaultFieldNames(namedType); | ||
if (!Array.isArray(fieldNames) || fieldNames.length === 0 || !("getFields" in namedType)) { | ||
return; | ||
} | ||
return { | ||
kind: Kind.SELECTION_SET, | ||
selections: fieldNames.map((fieldName) => { | ||
const fieldDef = namedType.getFields()[fieldName]; | ||
const fieldType = fieldDef ? fieldDef.type : null; | ||
return { | ||
kind: Kind.FIELD, | ||
name: { | ||
kind: Kind.NAME, | ||
value: fieldName | ||
}, | ||
// we can use as here, because we already know that fieldType | ||
// comes from an origin parameter | ||
selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) | ||
}; | ||
}) | ||
}; | ||
if (!(!Array.isArray(fieldNames) || fieldNames.length === 0 || !("getFields" in namedType))) | ||
return { | ||
kind: Kind.SELECTION_SET, | ||
selections: fieldNames.map((fieldName) => { | ||
const fieldDef = namedType.getFields()[fieldName], fieldType = fieldDef ? fieldDef.type : null; | ||
return { | ||
kind: Kind.FIELD, | ||
name: { | ||
kind: Kind.NAME, | ||
value: fieldName | ||
}, | ||
// we can use as here, because we already know that fieldType | ||
// comes from an origin parameter | ||
selectionSet: buildSelectionSet(fieldType, getDefaultFieldNames) | ||
}; | ||
}) | ||
}; | ||
} | ||
function withInsertions(initial, insertions) { | ||
if (insertions.length === 0) { | ||
if (insertions.length === 0) | ||
return initial; | ||
} | ||
let edited = ""; | ||
let prevIndex = 0; | ||
for (const { index, string } of insertions) { | ||
edited += initial.slice(prevIndex, index) + string; | ||
prevIndex = index; | ||
} | ||
edited += initial.slice(prevIndex); | ||
return edited; | ||
let edited = "", prevIndex = 0; | ||
for (const { index, string } of insertions) | ||
edited += initial.slice(prevIndex, index) + string, prevIndex = index; | ||
return edited += initial.slice(prevIndex), edited; | ||
} | ||
function getIndentation(str, index) { | ||
let indentStart = index; | ||
let indentEnd = index; | ||
while (indentStart) { | ||
let indentStart = index, indentEnd = index; | ||
for (; indentStart; ) { | ||
const c = str.charCodeAt(indentStart - 1); | ||
if (c === 10 || c === 13 || c === 8232 || c === 8233) { | ||
if (c === 10 || c === 13 || c === 8232 || c === 8233) | ||
break; | ||
} | ||
indentStart--; | ||
if (c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160) { | ||
indentEnd = indentStart; | ||
} | ||
indentStart--, c !== 9 && c !== 11 && c !== 12 && c !== 32 && c !== 160 && (indentEnd = indentStart); | ||
} | ||
@@ -136,5 +112,4 @@ return str.slice(indentStart, indentEnd); | ||
function isFieldType(fieldType) { | ||
if (fieldType) { | ||
if (fieldType) | ||
return fieldType; | ||
} | ||
} | ||
@@ -141,0 +116,0 @@ export { |
import { | ||
__spreadProps, | ||
__spreadValues | ||
} from "../chunk-P5H5YIIE.js"; | ||
} from "../chunk-LMOQIXV4.js"; | ||
import { | ||
@@ -14,12 +14,10 @@ TypeInfo, | ||
var _a; | ||
const FilteredMap = /* @__PURE__ */ new Map(); | ||
const result = []; | ||
for (const item of array) { | ||
const FilteredMap = /* @__PURE__ */ new Map(), result = []; | ||
for (const item of array) | ||
if (item.kind === "Field") { | ||
const uniqueValue = iteratee(item); | ||
const existing = FilteredMap.get(uniqueValue); | ||
if ((_a = item.directives) == null ? void 0 : _a.length) { | ||
const uniqueValue = iteratee(item), existing = FilteredMap.get(uniqueValue); | ||
if ((_a = item.directives) != null && _a.length) { | ||
const itemClone = __spreadValues({}, item); | ||
result.push(itemClone); | ||
} else if ((existing == null ? void 0 : existing.selectionSet) && item.selectionSet) { | ||
} else if (existing != null && existing.selectionSet && item.selectionSet) | ||
existing.selectionSet.selections = [ | ||
@@ -29,11 +27,8 @@ ...existing.selectionSet.selections, | ||
]; | ||
} else if (!existing) { | ||
else if (!existing) { | ||
const itemClone = __spreadValues({}, item); | ||
FilteredMap.set(uniqueValue, itemClone); | ||
result.push(itemClone); | ||
FilteredMap.set(uniqueValue, itemClone), result.push(itemClone); | ||
} | ||
} else { | ||
} else | ||
result.push(item); | ||
} | ||
} | ||
return result; | ||
@@ -43,5 +38,3 @@ } | ||
var _a; | ||
const selectionSetTypeName = selectionSetType ? getNamedType(selectionSetType).name : null; | ||
const outputSelections = []; | ||
const seenSpreads = []; | ||
const selectionSetTypeName = selectionSetType ? getNamedType(selectionSetType).name : null, outputSelections = [], seenSpreads = []; | ||
for (let selection of selections) { | ||
@@ -51,7 +44,5 @@ if (selection.kind === "FragmentSpread") { | ||
if (!selection.directives || selection.directives.length === 0) { | ||
if (seenSpreads.includes(fragmentName)) { | ||
if (seenSpreads.includes(fragmentName)) | ||
continue; | ||
} else { | ||
seenSpreads.push(fragmentName); | ||
} | ||
seenSpreads.push(fragmentName); | ||
} | ||
@@ -88,9 +79,5 @@ const fragmentDefinition = fragmentDefinitions[selection.name.value]; | ||
function mergeAst(documentAST, schema) { | ||
const typeInfo = schema ? new TypeInfo(schema) : null; | ||
const fragmentDefinitions = /* @__PURE__ */ Object.create(null); | ||
for (const definition of documentAST.definitions) { | ||
if (definition.kind === Kind.FRAGMENT_DEFINITION) { | ||
fragmentDefinitions[definition.name.value] = definition; | ||
} | ||
} | ||
const typeInfo = schema ? new TypeInfo(schema) : null, fragmentDefinitions = /* @__PURE__ */ Object.create(null); | ||
for (const definition of documentAST.definitions) | ||
definition.kind === Kind.FRAGMENT_DEFINITION && (fragmentDefinitions[definition.name.value] = definition); | ||
const flattenVisitors = { | ||
@@ -100,8 +87,7 @@ SelectionSet(node) { | ||
let { selections } = node; | ||
selections = inlineRelevantFragmentSpreads( | ||
return selections = inlineRelevantFragmentSpreads( | ||
fragmentDefinitions, | ||
selections, | ||
selectionSetType | ||
); | ||
return __spreadProps(__spreadValues({}, node), { | ||
), __spreadProps(__spreadValues({}, node), { | ||
selections | ||
@@ -113,15 +99,13 @@ }); | ||
} | ||
}; | ||
const flattenedAST = visit( | ||
}, flattenedAST = visit( | ||
documentAST, | ||
typeInfo ? visitWithTypeInfo(typeInfo, flattenVisitors) : flattenVisitors | ||
); | ||
const deduplicateVisitors = { | ||
return visit(flattenedAST, { | ||
SelectionSet(node) { | ||
let { selections } = node; | ||
selections = uniqueBy( | ||
return selections = uniqueBy( | ||
selections, | ||
(selection) => selection.alias ? selection.alias.value : selection.name.value | ||
); | ||
return __spreadProps(__spreadValues({}, node), { | ||
), __spreadProps(__spreadValues({}, node), { | ||
selections | ||
@@ -133,4 +117,3 @@ }); | ||
} | ||
}; | ||
return visit(flattenedAST, deduplicateVisitors); | ||
}); | ||
} | ||
@@ -137,0 +120,0 @@ export { |
@@ -1,6 +0,5 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
function getSelectedOperationName(prevOperations, prevSelectedOperationName, operations) { | ||
if (!operations || operations.length < 1) { | ||
if (!operations || operations.length < 1) | ||
return; | ||
} | ||
const names = operations.map((op) => { | ||
@@ -10,14 +9,11 @@ var _a; | ||
}); | ||
if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) { | ||
if (prevSelectedOperationName && names.includes(prevSelectedOperationName)) | ||
return prevSelectedOperationName; | ||
} | ||
if (prevSelectedOperationName && prevOperations) { | ||
const prevNames = prevOperations.map((op) => { | ||
const prevIndex = prevOperations.map((op) => { | ||
var _a; | ||
return (_a = op.name) == null ? void 0 : _a.value; | ||
}); | ||
const prevIndex = prevNames.indexOf(prevSelectedOperationName); | ||
if (prevIndex !== -1 && prevIndex < names.length) { | ||
}).indexOf(prevSelectedOperationName); | ||
if (prevIndex !== -1 && prevIndex < names.length) | ||
return names[prevIndex]; | ||
} | ||
} | ||
@@ -24,0 +20,0 @@ return names[0]; |
@@ -1,2 +0,2 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
function isQuotaError(storage, e) { | ||
@@ -13,59 +13,36 @@ return e instanceof DOMException && // everything except Firefox | ||
constructor(storage) { | ||
if (storage) { | ||
this.storage = storage; | ||
} else if (storage === null) { | ||
this.storage = null; | ||
} else if (typeof window === "undefined") { | ||
this.storage = null; | ||
} else { | ||
this.storage = { | ||
getItem: localStorage.getItem.bind(localStorage), | ||
setItem: localStorage.setItem.bind(localStorage), | ||
removeItem: localStorage.removeItem.bind(localStorage), | ||
get length() { | ||
let keys = 0; | ||
for (const key in localStorage) { | ||
if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { | ||
keys += 1; | ||
} | ||
} | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) { | ||
if (key.indexOf(`${STORAGE_NAMESPACE}:`) === 0) { | ||
localStorage.removeItem(key); | ||
} | ||
} | ||
} | ||
}; | ||
} | ||
storage ? this.storage = storage : storage === null ? this.storage = null : typeof window == "undefined" ? this.storage = null : this.storage = { | ||
getItem: localStorage.getItem.bind(localStorage), | ||
setItem: localStorage.setItem.bind(localStorage), | ||
removeItem: localStorage.removeItem.bind(localStorage), | ||
get length() { | ||
let keys = 0; | ||
for (const key in localStorage) | ||
key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && (keys += 1); | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) | ||
key.indexOf(`${STORAGE_NAMESPACE}:`) === 0 && localStorage.removeItem(key); | ||
} | ||
}; | ||
} | ||
get(name) { | ||
if (!this.storage) { | ||
if (!this.storage) | ||
return null; | ||
} | ||
const key = `${STORAGE_NAMESPACE}:${name}`; | ||
const value = this.storage.getItem(key); | ||
if (value === "null" || value === "undefined") { | ||
this.storage.removeItem(key); | ||
return null; | ||
} | ||
return value || null; | ||
const key = `${STORAGE_NAMESPACE}:${name}`, value = this.storage.getItem(key); | ||
return value === "null" || value === "undefined" ? (this.storage.removeItem(key), null) : value || null; | ||
} | ||
set(name, value) { | ||
let quotaError = false; | ||
let error = null; | ||
let quotaError = !1, error = null; | ||
if (this.storage) { | ||
const key = `${STORAGE_NAMESPACE}:${name}`; | ||
if (value) { | ||
if (value) | ||
try { | ||
this.storage.setItem(key, value); | ||
} catch (e) { | ||
error = e instanceof Error ? e : new Error(`${e}`); | ||
quotaError = isQuotaError(this.storage, e); | ||
error = e instanceof Error ? e : new Error(`${e}`), quotaError = isQuotaError(this.storage, e); | ||
} | ||
} else { | ||
else | ||
this.storage.removeItem(key); | ||
} | ||
} | ||
@@ -75,5 +52,3 @@ return { isQuotaError: quotaError, error }; | ||
clear() { | ||
if (this.storage) { | ||
this.storage.clear(); | ||
} | ||
this.storage && this.storage.clear(); | ||
} | ||
@@ -80,0 +55,0 @@ } |
@@ -1,8 +0,7 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
function createLocalStorage({ | ||
namespace | ||
}) { | ||
const storageKeyPrefix = `${namespace}:`; | ||
const getStorageKey = (key) => `${storageKeyPrefix}${key}`; | ||
const storage = { | ||
const storageKeyPrefix = `${namespace}:`, getStorageKey = (key) => `${storageKeyPrefix}${key}`; | ||
return { | ||
setItem: (key, value) => localStorage.setItem(getStorageKey(key), value), | ||
@@ -13,18 +12,11 @@ getItem: (key) => localStorage.getItem(getStorageKey(key)), | ||
let keys = 0; | ||
for (const key in localStorage) { | ||
if (key.indexOf(storageKeyPrefix) === 0) { | ||
keys += 1; | ||
} | ||
} | ||
for (const key in localStorage) | ||
key.indexOf(storageKeyPrefix) === 0 && (keys += 1); | ||
return keys; | ||
}, | ||
clear() { | ||
for (const key in localStorage) { | ||
if (key.indexOf(storageKeyPrefix) === 0) { | ||
localStorage.removeItem(key); | ||
} | ||
} | ||
for (const key in localStorage) | ||
key.indexOf(storageKeyPrefix) === 0 && localStorage.removeItem(key); | ||
} | ||
}; | ||
return storage; | ||
} | ||
@@ -31,0 +23,0 @@ export { |
import { | ||
__spreadProps, | ||
__spreadValues | ||
} from "../chunk-P5H5YIIE.js"; | ||
} from "../chunk-LMOQIXV4.js"; | ||
import { parse } from "graphql"; | ||
@@ -23,5 +23,4 @@ import { QueryStore } from "./query"; | ||
this.history.fetchRecent() | ||
)) { | ||
)) | ||
return; | ||
} | ||
this.history.push({ | ||
@@ -33,7 +32,6 @@ query, | ||
}); | ||
const historyQueries = this.history.items; | ||
const favoriteQueries = this.favorite.items; | ||
const historyQueries = this.history.items, favoriteQueries = this.favorite.items; | ||
this.queries = historyQueries.concat(favoriteQueries); | ||
}; | ||
this.deleteHistory = ({ query, variables, headers, operationName, favorite }, clearFavorites = false) => { | ||
this.deleteHistory = ({ query, variables, headers, operationName, favorite }, clearFavorites = !1) => { | ||
function deleteFromStore(store) { | ||
@@ -43,13 +41,5 @@ const found = store.items.find( | ||
); | ||
if (found) { | ||
store.delete(found); | ||
} | ||
found && store.delete(found); | ||
} | ||
if (favorite || clearFavorites) { | ||
deleteFromStore(this.favorite); | ||
} | ||
if (!favorite || clearFavorites) { | ||
deleteFromStore(this.history); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
(favorite || clearFavorites) && deleteFromStore(this.favorite), (!favorite || clearFavorites) && deleteFromStore(this.history), this.queries = [...this.history.items, ...this.favorite.items]; | ||
}; | ||
@@ -60,35 +50,13 @@ this.history = new QueryStore( | ||
this.maxHistoryLength | ||
); | ||
this.favorite = new QueryStore("favorites", this.storage, null); | ||
this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; | ||
), this.favorite = new QueryStore("favorites", this.storage, null), this.queries = [...this.history.fetchAll(), ...this.favorite.fetchAll()]; | ||
} | ||
shouldSaveQuery(query, variables, headers, lastQuerySaved) { | ||
if (!query) { | ||
return false; | ||
} | ||
if (!query) | ||
return !1; | ||
try { | ||
parse(query); | ||
} catch (e) { | ||
return false; | ||
return !1; | ||
} | ||
if (query.length > MAX_QUERY_SIZE) { | ||
return false; | ||
} | ||
if (!lastQuerySaved) { | ||
return true; | ||
} | ||
if (JSON.stringify(query) === JSON.stringify(lastQuerySaved.query)) { | ||
if (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables)) { | ||
if (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers)) { | ||
return false; | ||
} | ||
if (headers && !lastQuerySaved.headers) { | ||
return false; | ||
} | ||
} | ||
if (variables && !lastQuerySaved.variables) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
return query.length > MAX_QUERY_SIZE ? !1 : lastQuerySaved ? !(JSON.stringify(query) === JSON.stringify(lastQuerySaved.query) && (JSON.stringify(variables) === JSON.stringify(lastQuerySaved.variables) && (JSON.stringify(headers) === JSON.stringify(lastQuerySaved.headers) || headers && !lastQuerySaved.headers) || variables && !lastQuerySaved.variables)) : !0; | ||
} | ||
@@ -110,12 +78,3 @@ toggleFavorite({ | ||
}; | ||
if (favorite) { | ||
item.favorite = false; | ||
this.favorite.delete(item); | ||
this.history.push(item); | ||
} else { | ||
item.favorite = true; | ||
this.favorite.push(item); | ||
this.history.delete(item); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
favorite ? (item.favorite = !1, this.favorite.delete(item), this.history.push(item)) : (item.favorite = !0, this.favorite.push(item), this.history.delete(item)), this.queries = [...this.history.items, ...this.favorite.items]; | ||
} | ||
@@ -137,8 +96,3 @@ editLabel({ | ||
}; | ||
if (favorite) { | ||
this.favorite.edit(__spreadProps(__spreadValues({}, item), { favorite }), index); | ||
} else { | ||
this.history.edit(item, index); | ||
} | ||
this.queries = [...this.history.items, ...this.favorite.items]; | ||
favorite ? this.favorite.edit(__spreadProps(__spreadValues({}, item), { favorite }), index) : this.history.edit(item, index), this.queries = [...this.history.items, ...this.favorite.items]; | ||
} | ||
@@ -145,0 +99,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import "../chunk-P5H5YIIE.js"; | ||
import "../chunk-LMOQIXV4.js"; | ||
class QueryStore { | ||
@@ -18,7 +18,6 @@ constructor(key, storage, maxSize = null) { | ||
edit(item, index) { | ||
if (typeof index === "number" && this.items[index]) { | ||
if (typeof index == "number" && this.items[index]) { | ||
const found = this.items[index]; | ||
if (found.query === item.query && found.variables === item.variables && found.headers === item.headers && found.operationName === item.operationName) { | ||
this.items.splice(index, 1, item); | ||
this.save(); | ||
this.items.splice(index, 1, item), this.save(); | ||
return; | ||
@@ -30,6 +29,3 @@ } | ||
); | ||
if (itemIndex !== -1) { | ||
this.items.splice(itemIndex, 1, item); | ||
this.save(); | ||
} | ||
itemIndex !== -1 && (this.items.splice(itemIndex, 1, item), this.save()); | ||
} | ||
@@ -40,6 +36,3 @@ delete(item) { | ||
); | ||
if (itemIndex !== -1) { | ||
this.items.splice(itemIndex, 1); | ||
this.save(); | ||
} | ||
itemIndex !== -1 && (this.items.splice(itemIndex, 1), this.save()); | ||
} | ||
@@ -51,12 +44,7 @@ fetchRecent() { | ||
const raw = this.storage.get(this.key); | ||
if (raw) { | ||
return JSON.parse(raw)[this.key]; | ||
} | ||
return []; | ||
return raw ? JSON.parse(raw)[this.key] : []; | ||
} | ||
push(item) { | ||
const items = [...this.items, item]; | ||
if (this.maxSize && items.length > this.maxSize) { | ||
items.shift(); | ||
} | ||
this.maxSize && items.length > this.maxSize && items.shift(); | ||
for (let attempts = 0; attempts < 5; attempts++) { | ||
@@ -67,9 +55,8 @@ const response = this.storage.set( | ||
); | ||
if (!(response == null ? void 0 : response.error)) { | ||
if (!(response != null && response.error)) | ||
this.items = items; | ||
} else if (response.isQuotaError && this.maxSize) { | ||
else if (response.isQuotaError && this.maxSize) | ||
items.shift(); | ||
} else { | ||
else | ||
return; | ||
} | ||
} | ||
@@ -76,0 +63,0 @@ } |
{ | ||
"name": "@graphiql/toolkit", | ||
"version": "0.11.0-canary-35904daa.0", | ||
"version": "0.11.0-canary-3bb4b14b.0", | ||
"description": "Utility to build a fetcher for GraphiQL", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
@@ -18,3 +18,3 @@ import { parse } from 'graphql'; | ||
const exampleWithSubscription = /* GraphQL */ parse(` | ||
const exampleWithSubscription = parse(/* GraphQL */ ` | ||
subscription Example { | ||
@@ -51,5 +51,5 @@ example | ||
it('creates a websockets client using provided url', () => { | ||
it('creates a websockets client using provided url', async () => { | ||
createClient.mockReturnValue(true); | ||
createWebsocketsFetcherFromUrl('wss://example.com'); | ||
await createWebsocketsFetcherFromUrl('wss://example.com'); | ||
// @ts-ignore | ||
@@ -71,11 +71,11 @@ expect(createClient.mock.calls[0][0]).toEqual({ url: 'wss://example.com' }); | ||
}); | ||
it('provides an observable wsClient when custom wsClient option is provided', () => { | ||
it('provides an observable wsClient when custom wsClient option is provided', async () => { | ||
createClient.mockReturnValue(true); | ||
getWsFetcher({ url: '', wsClient: true }); | ||
await getWsFetcher({ url: '', wsClient: true }); | ||
// @ts-ignore | ||
expect(createClient.mock.calls).toHaveLength(0); | ||
}); | ||
it('creates a subscriptions-transports-ws observable when custom legacyClient option is provided', () => { | ||
it('creates a subscriptions-transports-ws observable when custom legacyClient option is provided', async () => { | ||
createClient.mockReturnValue(true); | ||
getWsFetcher({ url: '', legacyClient: true }); | ||
await getWsFetcher({ url: '', legacyClient: true }); | ||
// @ts-ignore | ||
@@ -86,5 +86,5 @@ expect(createClient.mock.calls).toHaveLength(0); | ||
it('if subscriptionsUrl is provided, create a client on the fly', () => { | ||
it('if subscriptionsUrl is provided, create a client on the fly', async () => { | ||
createClient.mockReturnValue(true); | ||
getWsFetcher({ url: '', subscriptionUrl: 'wss://example' }); | ||
await getWsFetcher({ url: '', subscriptionUrl: 'wss://example' }); | ||
expect(createClient.mock.calls[0]).toEqual([ | ||
@@ -97,4 +97,4 @@ { connectionParams: {}, url: 'wss://example' }, | ||
describe('missing graphql-ws dependency', () => { | ||
it('should throw a nice error', () => { | ||
describe('missing `graphql-ws` dependency', () => { | ||
it('should throw a nice error', async () => { | ||
jest.resetModules(); | ||
@@ -106,3 +106,5 @@ jest.doMock('graphql-ws', () => { | ||
expect(() => createWebsocketsFetcherFromUrl('wss://example.com')).toThrow( | ||
await expect( | ||
createWebsocketsFetcherFromUrl('wss://example.com'), | ||
).rejects.toThrow( | ||
/You need to install the 'graphql-ws' package to use websockets when passing a 'subscriptionUrl'/, | ||
@@ -109,0 +111,0 @@ ); |
@@ -30,3 +30,3 @@ import type { Fetcher, CreateFetcherOptions } from './types'; | ||
return (graphQLParams, fetcherOpts) => { | ||
return async (graphQLParams, fetcherOpts) => { | ||
if (graphQLParams.operationName === 'IntrospectionQuery') { | ||
@@ -45,3 +45,3 @@ return (options.schemaFetcher || simpleFetcher)( | ||
if (isSubscription) { | ||
const wsFetcher = getWsFetcher(options, fetcherOpts); | ||
const wsFetcher = await getWsFetcher(options, fetcherOpts); | ||
@@ -48,0 +48,0 @@ if (!wsFetcher) { |
@@ -71,11 +71,12 @@ import { DocumentNode, visit } from 'graphql'; | ||
export const createWebsocketsFetcherFromUrl = ( | ||
export async function createWebsocketsFetcherFromUrl( | ||
url: string, | ||
connectionParams?: ClientOptions['connectionParams'], | ||
) => { | ||
): Promise<Fetcher | void> { | ||
let wsClient; | ||
try { | ||
const { createClient } = require('graphql-ws') as { | ||
createClient: typeof createClientType; | ||
}; | ||
const { createClient } = | ||
process.env.USE_IMPORT === 'false' | ||
? (require('graphql-ws') as { createClient: typeof createClientType }) | ||
: await import('graphql-ws'); | ||
@@ -94,3 +95,3 @@ // TODO: defaults? | ||
} | ||
}; | ||
} | ||
@@ -182,6 +183,6 @@ /** | ||
*/ | ||
export const getWsFetcher = ( | ||
export async function getWsFetcher( | ||
options: CreateFetcherOptions, | ||
fetcherOpts?: FetcherOpts, | ||
): Fetcher | void => { | ||
): Promise<Fetcher | void> { | ||
if (options.wsClient) { | ||
@@ -200,2 +201,2 @@ return createWebsocketsFetcherFromClient(options.wsClient); | ||
} | ||
}; | ||
} |
{ | ||
"compilerOptions": { | ||
"target": "es2016", | ||
"target": "es2017", | ||
"module": "ESNext", | ||
@@ -5,0 +5,0 @@ "declaration": true, |
@@ -8,2 +8,3 @@ import { defineConfig, Options } from 'tsup'; | ||
dts: true, | ||
minifySyntax: true, | ||
}; | ||
@@ -17,2 +18,5 @@ | ||
outExtension: () => ({ js: '.js' }), | ||
env: { | ||
USE_IMPORT: 'true', | ||
}, | ||
}, | ||
@@ -23,3 +27,6 @@ { | ||
outDir: 'dist/cjs', | ||
env: { | ||
USE_IMPORT: 'false', | ||
}, | ||
}, | ||
]); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
0
304165
4082