From e442693cdcd10693acbd4d3f15cda08a469b7832 Mon Sep 17 00:00:00 2001 From: Scott Tolinski Date: Tue, 14 Dec 2021 09:20:26 -0700 Subject: [PATCH] cleans up repo a bit --- codegen/codegen.js | 17 ++------------- codegen/codegen.js.map | 2 +- codegen/codegen.ts | 18 ++-------------- codegen/plugin.js | 14 +++++++++--- codegen/plugin.js.map | 2 +- codegen/plugin.ts | 22 +++++++++++++++---- dist/gFetch.d.ts | 17 +++------------ dist/gFetch.js | 29 ++++--------------------- dist/gFetch.js.map | 2 +- dist/index.d.ts | 13 ----------- dist/index.js | 33 ---------------------------- dist/index.js.map | 2 +- package.json | 1 + src/gFetch.ts | 45 ++++++-------------------------------- src/index.ts | 49 ------------------------------------------ 15 files changed, 51 insertions(+), 215 deletions(-) diff --git a/codegen/codegen.js b/codegen/codegen.js index a95fc23..6397cea 100644 --- a/codegen/codegen.js +++ b/codegen/codegen.js @@ -3,7 +3,6 @@ import "@graphql-codegen/plugin-helpers"; import { ClientSideBaseVisitor, } from "@graphql-codegen/visitor-plugin-common"; import pascalCase from "just-pascal-case"; export const plugin = (schema, documents, config) => { - console.log("๐Ÿ› ๏ธ Codegen Starting"); const allAst = concatAST(documents.map((d) => d.document)); const allFragments = [ ...allAst.definitions.filter((d) => d.kind === Kind.FRAGMENT_DEFINITION).map((fragmentDef) => ({ @@ -28,17 +27,14 @@ type SubscribeWrapperArgs = { variables?: T, } - interface CacheFunctionOptions { update?: boolean } - `; const ops = operations .map((o) => { var _a; if (o) { - console.log("o", o); const name = ((_a = o === null || o === void 0 ? void 0 : o.name) === null || _a === void 0 ? void 0 : _a.value) || ""; const op = `${pascalCase(name)}${pascalCase(o.operation)}`; const pascalName = pascalCase(name); @@ -46,15 +42,7 @@ interface CacheFunctionOptions { let operations = ""; if (o.operation === "query") { operations += ` -export const ${name} = writable<${op}>() - -export const fetch${pascalName} = ({ variables, fetch}: FetchWrapperArgs<${opv}>): - Promise> => - g.fetch<${op}>({ - queries: [{ query: ${pascalName}Doc, variables }], - fetch - }) - +export const ${name} = writable>() // Cached export async function get${pascalName}({ fetch, variables }: GGetParameters<${opv}>, options?: CacheFunctionOptions) { @@ -62,7 +50,7 @@ export async function get${pascalName}({ fetch, variables }: GGetParameters<${op queries: [{ query: ${pascalName}Doc, variables }], fetch }) - await ${name}.set({ ...data, error: data?.error, gQueryStatus: 'LOADED' }) + await ${name}.set({ ...data, errors: data?.errors, gQueryStatus: 'LOADED' }) return data } @@ -84,7 +72,6 @@ Promise> => .join("\n"); const imports = [ `import { writable } from "svelte/store"`, - `import type { Writable } from "svelte/store"`, `import { g } from '${config.gPath}'`, `import type { GFetchReturnWithErrors, GGetParameters } from '@leveluptuts/g-query'`, ]; diff --git a/codegen/codegen.js.map b/codegen/codegen.js.map index c121709..4083989 100644 --- a/codegen/codegen.js.map +++ b/codegen/codegen.js.map @@ -1 +1 @@ -{"version":3,"file":"codegen.js","sourceRoot":"","sources":["codegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"codegen.js","sourceRoot":"","sources":["codegen.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/codegen/codegen.ts b/codegen/codegen.ts index 01e9ca5..699ef16 100644 --- a/codegen/codegen.ts +++ b/codegen/codegen.ts @@ -18,8 +18,6 @@ export const plugin: PluginFunction = ( documents: Types.DocumentFile[], config ) => { - console.log("๐Ÿ› ๏ธ Codegen Starting"); - const allAst = concatAST(documents.map((d) => d.document)); const allFragments: LoadedFragment[] = [ @@ -60,17 +58,14 @@ type SubscribeWrapperArgs = { variables?: T, } - interface CacheFunctionOptions { update?: boolean } - `; const ops = operations .map((o) => { if (o) { - console.log("o", o); const name = o?.name?.value || ""; const op = `${pascalCase(name)}${pascalCase(o.operation)}`; const pascalName = pascalCase(name); @@ -79,15 +74,7 @@ interface CacheFunctionOptions { if (o.operation === "query") { operations += ` -export const ${name} = writable<${op}>() - -export const fetch${pascalName} = ({ variables, fetch}: FetchWrapperArgs<${opv}>): - Promise> => - g.fetch<${op}>({ - queries: [{ query: ${pascalName}Doc, variables }], - fetch - }) - +export const ${name} = writable>() // Cached export async function get${pascalName}({ fetch, variables }: GGetParameters<${opv}>, options?: CacheFunctionOptions) { @@ -95,7 +82,7 @@ export async function get${pascalName}({ fetch, variables }: GGetParameters<${op queries: [{ query: ${pascalName}Doc, variables }], fetch }) - await ${name}.set({ ...data, error: data?.error, gQueryStatus: 'LOADED' }) + await ${name}.set({ ...data, errors: data?.errors, gQueryStatus: 'LOADED' }) return data } @@ -118,7 +105,6 @@ Promise> => const imports = [ `import { writable } from "svelte/store"`, - `import type { Writable } from "svelte/store"`, `import { g } from '${config.gPath}'`, `import type { GFetchReturnWithErrors, GGetParameters } from '@leveluptuts/g-query'`, ]; diff --git a/codegen/plugin.js b/codegen/plugin.js index ff915b2..52c1107 100644 --- a/codegen/plugin.js +++ b/codegen/plugin.js @@ -1,11 +1,12 @@ import { generate } from "@graphql-codegen/cli"; +import { execaCommand } from "execa"; const fileRegex = /\.(graphql)$/; // not used, will be for the vite rerun export default function levelupViteCodegen(options) { if (!options.schema) { throw new Error("No schema provided"); } if (!options.output) { - throw new Error("No output directory specified"); + throw new Error("No output directory specified for types."); } if (!options.gPath) { throw new Error("No gPath directory specified. gPath is where you've initialized the 'g' client"); @@ -17,8 +18,14 @@ export default function levelupViteCodegen(options) { async buildStart() { try { // *1. Remove all .gq files - // TODO: Find and remove all .gq files + console.log("๐Ÿงน removing all .gq files"); + // Find and remove all .gq files + await execaCommand("find ./ -path '*.gq.ts' -type f -prune -print -exec rm -f '{}' +; ", { + stdio: "inherit", + shell: true, + }); // *2. Generate + console.log("๐Ÿค– starting codegen"); await generate({ schema, documents: "./src/**/*.graphql", @@ -50,7 +57,8 @@ export default function levelupViteCodegen(options) { }, true); } catch (e) { - console.log("โ“ gFetch Warning - No `.graphql` files found."); + console.log("โ“ gFetch Error - Something Happened - Here is the error and some things to consider.", e); + console.log("โ“ gFetch Error - Make sure `.graphql` are files found."); console.log("โ“ gFetch Warning - If you would like the gQuery generator to work (we reccomend you do)."); console.log("โ“ gFetch Warning - If you would like to add them, you will need to restart SvelteKit."); } diff --git a/codegen/plugin.js.map b/codegen/plugin.js.map index fce0aa5..67edeaf 100644 --- a/codegen/plugin.js.map +++ b/codegen/plugin.js.map @@ -1 +1 @@ -{"version":3,"file":"plugin.js","sourceRoot":"","sources":["plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,uCAAuC;AAEzE,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO;IAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAClB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;KACH;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,UAAU;YACd,IAAI;gBACF,6BAA6B;gBAC7B,sCAAsC;gBACtC,iBAAiB;gBAEjB,MAAM,QAAQ,CACZ;oBACE,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,SAAS,EAAE;wBACT,wCAAwC;wBACxC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,cAAc,CAAC,EAAE;4BAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;yBACxB;wBACD,2DAA2D;wBAC3D,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE;4BAC9B,MAAM,EAAE;gCACN,cAAc,EAAE,IAAI;gCACpB,KAAK;gCACL,gCAAgC,EAAE,qBAAqB;gCACvD,mBAAmB,EAAE,SAAS;6BAC/B;4BACD,MAAM,EAAE,qBAAqB;4BAC7B,YAAY,EAAE;gCACZ,SAAS,EAAE,QAAQ;gCACnB,MAAM,EAAE,IAAI;gCACZ,aAAa,EAAE,aAAa;6BAC7B;4BACD,OAAO,EAAE;gCACP,uBAAuB;gCACvB,qCAAqC,EAAE,0BAA0B;6BAClE;yBACF;qBACF;iBACF,EACD,IAAI,CACL,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CACT,0FAA0F,CAC3F,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;aACH;YACD,OAAO;QACT,CAAC;QAED,SAAS,CAAC,GAAG,EAAE,EAAE,IAAG,CAAC;KACtB,CAAC;AACJ,CAAC"} \ No newline at end of file +{"version":3,"file":"plugin.js","sourceRoot":"","sources":["plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,uCAAuC;AAEzE,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO;IAChD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC7D;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAClB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;KACH;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,UAAU;YACd,IAAI;gBACF,6BAA6B;gBAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,gCAAgC;gBAChC,MAAM,YAAY,CAChB,oEAAoE,EACpE;oBACE,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,IAAI;iBACZ,CACF,CAAC;gBAEF,iBAAiB;gBACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,MAAM,QAAQ,CACZ;oBACE,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,SAAS,EAAE;wBACT,wCAAwC;wBACxC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,cAAc,CAAC,EAAE;4BAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;yBACxB;wBACD,2DAA2D;wBAC3D,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE;4BAC9B,MAAM,EAAE;gCACN,cAAc,EAAE,IAAI;gCACpB,KAAK;gCACL,gCAAgC,EAAE,qBAAqB;gCACvD,mBAAmB,EAAE,SAAS;6BAC/B;4BACD,MAAM,EAAE,qBAAqB;4BAC7B,YAAY,EAAE;gCACZ,SAAS,EAAE,QAAQ;gCACnB,MAAM,EAAE,IAAI;gCACZ,aAAa,EAAE,aAAa;6BAC7B;4BACD,OAAO,EAAE;gCACP,uBAAuB;gCACvB,qCAAqC,EAAE,0BAA0B;6BAClE;yBACF;qBACF;iBACF,EACD,IAAI,CACL,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,GAAG,CACT,sFAAsF,EACtF,CAAC,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,OAAO,CAAC,GAAG,CACT,0FAA0F,CAC3F,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;aACH;YACD,OAAO;QACT,CAAC;QAED,SAAS,CAAC,GAAG,EAAE,EAAE,IAAG,CAAC;KACtB,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/codegen/plugin.ts b/codegen/plugin.ts index d769dc4..836c95a 100644 --- a/codegen/plugin.ts +++ b/codegen/plugin.ts @@ -1,4 +1,5 @@ import { generate } from "@graphql-codegen/cli"; +import { execaCommand } from "execa"; const fileRegex = /\.(graphql)$/; // not used, will be for the vite rerun export default function levelupViteCodegen(options) { @@ -6,7 +7,7 @@ export default function levelupViteCodegen(options) { throw new Error("No schema provided"); } if (!options.output) { - throw new Error("No output directory specified"); + throw new Error("No output directory specified for types."); } if (!options.gPath) { throw new Error( @@ -22,9 +23,18 @@ export default function levelupViteCodegen(options) { async buildStart() { try { // *1. Remove all .gq files - // TODO: Find and remove all .gq files - // *2. Generate + console.log("๐Ÿงน removing all .gq files"); + // Find and remove all .gq files + await execaCommand( + "find ./ -path '*.gq.ts' -type f -prune -print -exec rm -f '{}' +; ", + { + stdio: "inherit", + shell: true, + } + ); + // *2. Generate + console.log("๐Ÿค– starting codegen"); await generate( { schema, @@ -58,7 +68,11 @@ export default function levelupViteCodegen(options) { true ); } catch (e) { - console.log("โ“ gFetch Warning - No `.graphql` files found."); + console.log( + "โ“ gFetch Error - Something Happened - Here is the error and some things to consider.", + e + ); + console.log("โ“ gFetch Error - Make sure `.graphql` are files found."); console.log( "โ“ gFetch Warning - If you would like the gQuery generator to work (we reccomend you do)." ); diff --git a/dist/gFetch.d.ts b/dist/gFetch.d.ts index b7705c8..d176aec 100644 --- a/dist/gFetch.d.ts +++ b/dist/gFetch.d.ts @@ -1,6 +1,7 @@ import { DefinitionNode, DocumentNode } from "graphql"; export declare type GFetchQueryDefault = { - errors?: string[]; + errors?: Error[]; + gQueryStatus: "LOADED"; }; declare type OptionalPropertyNames = { [K in keyof T]-?: {} extends { @@ -15,18 +16,10 @@ declare type Id = T extends infer U ? { } : never; declare type SpreadTwo = Id> & Pick>> & Pick, keyof L>> & SpreadProperties & keyof L>>; declare type Spread = A extends [infer L, ...infer R] ? SpreadTwo> : unknown; -export declare type GFetchQueryResult = { - [k: string]: F; -}; export declare type GFetchQueries = { query: DocumentNode; variables?: Record; }; -export declare function gqlToString(tag: DocumentNode): string; -/** - * Finds the Name value from the OperationDefinition of a Document - */ -export declare const getOperationName: (query: DocumentNode) => string | undefined; export declare const stringifyDocument: (node: string | DefinitionNode | DocumentNode) => string; declare type gFetchProperties = { queries: GFetchQueries[]; @@ -35,10 +28,6 @@ declare type gFetchProperties = { export declare type GClientOptions = { path?: string; }; -export declare type GReturn = { - data: T; - errors?: Error; -}; export declare type GGetParameters = { variables?: Variables; fetch: typeof fetch; @@ -47,6 +36,6 @@ export declare type GFetchReturnWithErrors = Spread<[T, GFetchQueryDefault]>; export declare class GFetch extends Object { path: string; constructor(options: GClientOptions); - fetch({ queries, fetch, }?: gFetchProperties | {}): Promise>; + fetch({ queries, fetch, }: gFetchProperties | undefined): Promise>; } export {}; diff --git a/dist/gFetch.js b/dist/gFetch.js index a8c9819..ce033b7 100644 --- a/dist/gFetch.js +++ b/dist/gFetch.js @@ -1,21 +1,4 @@ -import { Kind, print } from "graphql"; -import { formatDocument as addTypenameToDocument } from "./utils/format"; -// This function accepts a graphql document and returns a string to be used -// in fetch calls -export function gqlToString(tag) { - return tag.loc.source.body; -} -/** - * Finds the Name value from the OperationDefinition of a Document - */ -export const getOperationName = (query) => { - for (let i = 0, l = query.definitions.length; i < l; i++) { - const node = query.definitions[i]; - if (node.kind === Kind.OPERATION_DEFINITION && node.name) { - return node.name.value; - } - } -}; +import { print } from "graphql"; export const stringifyDocument = (node) => { let str = (typeof node !== "string" ? print(node) : node) .replace(/([\s,]|#[^\n\r]+)+/g, " ") @@ -31,9 +14,9 @@ export class GFetch extends Object { } // * gFetch // This is a fetcher that returns a promise that resolves to a graphql response - async fetch({ queries, fetch, } = {}) { - let document = addTypenameToDocument(queries[0].query); - let documentString = stringifyDocument(document); + async fetch({ queries, fetch, }) { + // let document: DocumentNode = addTypenameToDocument(queries[0].query); + let documentString = stringifyDocument(queries[0].query); const newQueries = { ...queries[0], query: documentString, @@ -53,10 +36,6 @@ export class GFetch extends Object { ...data.data, errors: data.errors, }; - // } as GFetchReturnWithErrors; } } -// ! IDEAS -// Mutations should take care of updating a generated writeable. -// $tutorial is auto updated site wide //# sourceMappingURL=gFetch.js.map \ No newline at end of file diff --git a/dist/gFetch.js.map b/dist/gFetch.js.map index 4fb1aa4..e6b3ff1 100644 --- a/dist/gFetch.js.map +++ b/dist/gFetch.js.map @@ -1 +1 @@ -{"version":3,"file":"gFetch.js","sourceRoot":"","sources":["../src/gFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAkDzE,2EAA2E;AAC3E,iBAAiB;AACjB,MAAM,UAAU,WAAW,CAAC,GAAiB;IAC3C,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAmB,EAAsB,EAAE;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,EAAE;YACxD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACxB;KACF;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4C,EACpC,EAAE;IACV,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACtD,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,IAAI,EAAE,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAuBF,MAAM,OAAO,MAAO,SAAQ,MAAM;IAGhC,YAAY,OAAuB;QACjC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;IACX,+EAA+E;IACxE,KAAK,CAAC,KAAK,CAAI,EACpB,OAAO,EACP,KAAK,MACoB,EAAE;QAC3B,IAAI,QAAQ,GAAiB,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,cAAc,GAAW,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO,CAAC,CAAC,CAAC;YACb,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,2DAA2D;QAC3D,gCAAgC;QAChC,wCAAwC;QACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,OAAO;YACL,GAAG,IAAI,CAAC,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QACF,kCAAkC;IACpC,CAAC;CACF;AAED,UAAU;AACV,gEAAgE;AAChE,sCAAsC"} \ No newline at end of file +{"version":3,"file":"gFetch.js","sourceRoot":"","sources":["../src/gFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,EAAE,MAAM,SAAS,CAAC;AA+C9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4C,EACpC,EAAE;IACV,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACtD,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,IAAI,EAAE,CAAC;IACV,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAkBF,MAAM,OAAO,MAAO,SAAQ,MAAM;IAGhC,YAAY,OAAuB;QACjC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;IACX,+EAA+E;IACxE,KAAK,CAAC,KAAK,CAAI,EACpB,OAAO,EACP,KAAK,GACwB;QAC7B,wEAAwE;QACxE,IAAI,cAAc,GAAW,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO,CAAC,CAAC,CAAC;YACb,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,2DAA2D;QAC3D,gCAAgC;QAChC,wCAAwC;QACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,qCAAqC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,OAAO;YACL,GAAG,IAAI,CAAC,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index b47f574..02a6b0d 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,14 +1 @@ -export declare const gCache: { - subscribe: (this: void, run: import("svelte/store").Subscriber<{}>, invalidate?: (value?: {}) => void) => import("svelte/store").Unsubscriber; - set: (this: void, value: {}) => void; - update: (this: void, updater: import("svelte/store").Updater<{}>) => void; - hydrate: (newData: any) => Promise; -}; -interface CacheFunctionOptions { - update?: boolean; -} -export declare function gQuery(typename: any, { query, variables }: { - query: any; - variables: any; -}, { update }?: CacheFunctionOptions): Promise; export * from "./gFetch"; diff --git a/dist/index.js b/dist/index.js index dc7b58d..3f25371 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,35 +1,2 @@ -import { writable, get } from "svelte/store"; -const newGCache = () => { - const { subscribe, update, set } = writable({}); - async function hydrate(newData) { - update((old) => { - return { - ...old, - ...newData, - }; - }); - } - return { - subscribe, - set, - update, - hydrate, - }; -}; -export const gCache = newGCache(); -export async function gQuery(typename, { query, variables }, { update } = {}) { - const current = get(gCache); - // Extremely Naive cache - // Just checks to see if the data is there based on the query, if it is, don't - // Hit the network again - // if update option is present, then we want to update the cache - if (!current?.[typename] || update) { - const newData = await query({ - variables, - fetch, - }); - await gCache.hydrate(newData); - } -} export * from "./gFetch"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index ff84ce7..cd0094d 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhD,KAAK,UAAU,OAAO,CAAC,OAAO;QAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO;gBACL,GAAG,GAAG;gBACN,GAAG,OAAO;aACX,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,SAAS;QACT,GAAG;QACH,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAMlC,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAQ,EACR,EAAE,KAAK,EAAE,SAAS,EAAE,EACpB,EAAE,MAAM,KAA2B,EAAE;IAErC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5B,wBAAwB;IACxB,8EAA8E;IAC9E,wBAAwB;IACxB,gEAAgE;IAChE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;QAClC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC;YAC1B,SAAS;YACT,KAAK;SACN,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/B;AACH,CAAC;AAED,cAAc,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index 0fb486b..db62380 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ }, "dependencies": { "camel-case": "^4.1.2", + "execa": "^6.0.0", "pascal-case": "^3.1.2", "svelte": "^3.44.0", "vite": "^2.6.10" diff --git a/src/gFetch.ts b/src/gFetch.ts index e4d40ff..7eed946 100644 --- a/src/gFetch.ts +++ b/src/gFetch.ts @@ -1,6 +1,4 @@ -import { DefinitionNode, DocumentNode, Kind, print } from "graphql"; - -import { formatDocument as addTypenameToDocument } from "./utils/format"; +import { DefinitionNode, DocumentNode, print } from "graphql"; // What's the deal with *gFetch*? // gFetch is a 0 dependency fetcher for graphql that accepts a custom fetch function @@ -17,7 +15,8 @@ import { formatDocument as addTypenameToDocument } from "./utils/format"; // 3. Plays nice with custom fetch functions // 4. Doesn't use it's own cache, ie, would rely on Svelte's stores export declare type GFetchQueryDefault = { - errors?: string[]; + errors?: Error[]; + gQueryStatus: "LOADED"; }; type OptionalPropertyNames = { @@ -41,33 +40,11 @@ type Spread = A extends [infer L, ...infer R] ? SpreadTwo> : unknown; -export declare type GFetchQueryResult = { - [k: string]: F; -}; - export declare type GFetchQueries = { query: DocumentNode; variables?: Record; }; -// This function accepts a graphql document and returns a string to be used -// in fetch calls -export function gqlToString(tag: DocumentNode): string { - return tag.loc.source.body; -} - -/** - * Finds the Name value from the OperationDefinition of a Document - */ -export const getOperationName = (query: DocumentNode): string | undefined => { - for (let i = 0, l = query.definitions.length; i < l; i++) { - const node = query.definitions[i]; - if (node.kind === Kind.OPERATION_DEFINITION && node.name) { - return node.name.value; - } - } -}; - export const stringifyDocument = ( node: string | DefinitionNode | DocumentNode ): string => { @@ -86,11 +63,6 @@ export type GClientOptions = { path?: string; }; -export type GReturn = { - data: T; - errors?: Error; -}; - export type GGetParameters = { variables?: Variables; fetch: typeof fetch; @@ -113,9 +85,9 @@ export class GFetch extends Object { public async fetch({ queries, fetch, - }: gFetchProperties | {} = {}): Promise> { - let document: DocumentNode = addTypenameToDocument(queries[0].query); - let documentString: string = stringifyDocument(document); + }: gFetchProperties | undefined): Promise> { + // let document: DocumentNode = addTypenameToDocument(queries[0].query); + let documentString: string = stringifyDocument(queries[0].query); const newQueries = { ...queries[0], query: documentString, @@ -138,10 +110,5 @@ export class GFetch extends Object { ...data.data, errors: data.errors, }; - // } as GFetchReturnWithErrors; } } - -// ! IDEAS -// Mutations should take care of updating a generated writeable. -// $tutorial is auto updated site wide diff --git a/src/index.ts b/src/index.ts index 131f45b..02a6b0d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,50 +1 @@ -import { writable, get } from "svelte/store"; - -const newGCache = () => { - const { subscribe, update, set } = writable({}); - - async function hydrate(newData) { - update((old) => { - return { - ...old, - ...newData, - }; - }); - } - - return { - subscribe, - set, - update, - hydrate, - }; -}; - -export const gCache = newGCache(); - -interface CacheFunctionOptions { - update?: boolean; -} - -export async function gQuery( - typename, - { query, variables }, - { update }: CacheFunctionOptions = {} -) { - const current = get(gCache); - - // Extremely Naive cache - // Just checks to see if the data is there based on the query, if it is, don't - // Hit the network again - // if update option is present, then we want to update the cache - if (!current?.[typename] || update) { - const newData = await query({ - variables, - fetch, - }); - - await gCache.hydrate(newData); - } -} - export * from "./gFetch";