mirror of
https://github.com/BradNut/gQuery
synced 2025-09-08 17:40:18 +00:00
moves to monorepo
This commit is contained in:
parent
3ccfa34843
commit
2de47b51a2
15 changed files with 537 additions and 178 deletions
20
codegen.tsconfig.json
Normal file
20
codegen.tsconfig.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowJs": true,
|
||||||
|
"baseUrl": ".",
|
||||||
|
"checkJs": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"importsNotUsedAsValues": "error",
|
||||||
|
"isolatedModules": true,
|
||||||
|
"lib": ["es2020", "DOM"],
|
||||||
|
"module": "es2020",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
|
||||||
|
"sourceMap": true,
|
||||||
|
"target": "es2019"
|
||||||
|
},
|
||||||
|
"include": ["codegen/*.ts"]
|
||||||
|
}
|
||||||
117
codegen/codegen.js
Normal file
117
codegen/codegen.js
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
import { ClientSideBaseVisitor, } from "@graphql-codegen/visitor-plugin-common";
|
||||||
|
import { concatAST, Kind, visit, } from "graphql";
|
||||||
|
import { pascalCase } from "pascal-case";
|
||||||
|
module.exports = {
|
||||||
|
plugin: (schema, documents, config) => {
|
||||||
|
const allAst = concatAST(documents.map((d) => d.document));
|
||||||
|
const allFragments = [
|
||||||
|
...allAst.definitions.filter((d) => d.kind === Kind.FRAGMENT_DEFINITION).map((fragmentDef) => ({
|
||||||
|
node: fragmentDef,
|
||||||
|
name: fragmentDef.name.value,
|
||||||
|
onType: fragmentDef.typeCondition.name.value,
|
||||||
|
isExternal: false,
|
||||||
|
})),
|
||||||
|
...(config.externalFragments || []),
|
||||||
|
];
|
||||||
|
const visitor = new ClientSideBaseVisitor(schema, allFragments, {}, { documentVariableSuffix: "Doc" }, documents);
|
||||||
|
const visitorResult = visit(allAst, { leave: visitor });
|
||||||
|
const operations = allAst.definitions.filter((d) => d.kind === Kind.OPERATION_DEFINITION);
|
||||||
|
const defaultTypes = `
|
||||||
|
|
||||||
|
type FetchWrapperArgs<T> = {
|
||||||
|
fetch: typeof fetch,
|
||||||
|
variables?: T,
|
||||||
|
}
|
||||||
|
|
||||||
|
type SubscribeWrapperArgs<T> = {
|
||||||
|
variables?: T,
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
const ops = operations
|
||||||
|
.map((o) => {
|
||||||
|
var _a;
|
||||||
|
if (o) {
|
||||||
|
const name = ((_a = o === null || o === void 0 ? void 0 : o.name) === null || _a === void 0 ? void 0 : _a.value) || "";
|
||||||
|
// const dsl = `export const ${pascalCase(op.name.value)}Doc = gql\`
|
||||||
|
// ${documents.find((d) => d.rawSDL.includes(`${op.operation} ${op.name.value}`)).rawSDL}\``
|
||||||
|
const op = `${pascalCase(name)}${pascalCase(o.operation)}`;
|
||||||
|
const opv = `${op}Variables`;
|
||||||
|
let operations = "";
|
||||||
|
if (o.operation === "query") {
|
||||||
|
operations += `
|
||||||
|
export const ${name} = ({ variables, fetch}: FetchWrapperArgs<${opv}>):
|
||||||
|
Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
|
g.fetch<${op}>({
|
||||||
|
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
||||||
|
fetch
|
||||||
|
})
|
||||||
|
`;
|
||||||
|
// If config is set to have subscription query, also write the
|
||||||
|
if (config.subscriptionQuery) {
|
||||||
|
operations += `
|
||||||
|
export const ${name}Subscribe = ({ variables }: SubscribeWrapperArgs<${opv}>):
|
||||||
|
Readable<GFetchReturnWithErrors<${op}>> =>
|
||||||
|
g.oFetch<${op}>({
|
||||||
|
queries: [{ query: ${pascalCase(name)}Doc, variables }]
|
||||||
|
})
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (o.operation === "mutation") {
|
||||||
|
operations += `
|
||||||
|
export const ${name} = ({ variables }: SubscribeWrapperArgs<${opv}>):
|
||||||
|
Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
|
g.fetch<${op}>({
|
||||||
|
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
||||||
|
fetch,
|
||||||
|
})
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
return operations;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.join("\n");
|
||||||
|
const imports = [
|
||||||
|
`import type { Readable } from "svelte/store"`,
|
||||||
|
`import { g } from '${config.gFetchPath}'`,
|
||||||
|
`import type { GFetchReturnWithErrors } from '$graphql/gfetchLib'`,
|
||||||
|
`import gql from "graphql-tag"`,
|
||||||
|
];
|
||||||
|
// let schemaInputs = getCachedDocumentNodeFromSchema(schema).definitions.filter((d) => {
|
||||||
|
// return d.kind === 'InputObjectTypeDefinition'
|
||||||
|
// })
|
||||||
|
// let inputs = schemaInputs
|
||||||
|
// .map((d) => {
|
||||||
|
// console.log('/* START */')
|
||||||
|
// // @ts-ignore
|
||||||
|
// console.log('NAME: ', d.fields[0].name.value)
|
||||||
|
// // @ts-ignore
|
||||||
|
// let isReq = d.fields[0]?.type?.kind === 'NonNullType'
|
||||||
|
// console.log('REQUIRED: ', isReq ? '✅' : '❌')
|
||||||
|
// // @ts-ignore
|
||||||
|
// console.log('TYPE: ', isReq ? d.fields[0]?.type?.type?.name?.value : d.fields[0]?.type?.name?.value)
|
||||||
|
// // @ts-ignore
|
||||||
|
// // @ts-ignore
|
||||||
|
// console.log('d.fields[0]', d.fields[0]?.type)
|
||||||
|
// console.log('/* END */')
|
||||||
|
// console.log('')
|
||||||
|
// return `
|
||||||
|
// const inputName = {
|
||||||
|
// ${d.fields[0].name.value}: ${isReq ? d.fields[0]?.type?.type?.name?.value : d.fields[0]?.type?.name?.value}
|
||||||
|
// }
|
||||||
|
// `
|
||||||
|
// })
|
||||||
|
// .join('\n')
|
||||||
|
// console.log('inputs', inputs)
|
||||||
|
return {
|
||||||
|
prepend: imports,
|
||||||
|
content: [
|
||||||
|
defaultTypes,
|
||||||
|
visitor.fragments,
|
||||||
|
...visitorResult.definitions.filter((t) => typeof t == "string"),
|
||||||
|
ops,
|
||||||
|
].join("\n"),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=codegen.js.map
|
||||||
1
codegen/codegen.js.map
Normal file
1
codegen/codegen.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["codegen.ts"],"names":[],"mappings":"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"}
|
||||||
|
|
@ -1,38 +1,47 @@
|
||||||
import { CodegenPlugin } from '@graphql-codegen/plugin-helpers'
|
import type { CodegenPlugin } from "@graphql-codegen/plugin-helpers";
|
||||||
import { LoadedFragment } from '@graphql-codegen/visitor-plugin-common'
|
import {
|
||||||
import { concatAST, FragmentDefinitionNode, Kind, OperationDefinitionNode, visit } from 'graphql'
|
LoadedFragment,
|
||||||
import { pascalCase } from 'pascal-case'
|
ClientSideBaseVisitor,
|
||||||
|
} from "@graphql-codegen/visitor-plugin-common";
|
||||||
const visitorPluginCommon = require('@graphql-codegen/visitor-plugin-common')
|
import {
|
||||||
|
concatAST,
|
||||||
|
FragmentDefinitionNode,
|
||||||
|
Kind,
|
||||||
|
OperationDefinitionNode,
|
||||||
|
visit,
|
||||||
|
} from "graphql";
|
||||||
|
import { pascalCase } from "pascal-case";
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
plugin: (schema, documents, config, info) => {
|
plugin: (schema, documents, config) => {
|
||||||
const allAst = concatAST(documents.map((d) => d.document))
|
const allAst = concatAST(documents.map((d) => d.document));
|
||||||
|
|
||||||
const allFragments: LoadedFragment[] = [
|
const allFragments: LoadedFragment[] = [
|
||||||
...(allAst.definitions.filter((d) => d.kind === Kind.FRAGMENT_DEFINITION) as FragmentDefinitionNode[]).map(
|
...(
|
||||||
(fragmentDef) => ({
|
allAst.definitions.filter(
|
||||||
node: fragmentDef,
|
(d) => d.kind === Kind.FRAGMENT_DEFINITION
|
||||||
name: fragmentDef.name.value,
|
) as FragmentDefinitionNode[]
|
||||||
onType: fragmentDef.typeCondition.name.value,
|
).map((fragmentDef) => ({
|
||||||
isExternal: false,
|
node: fragmentDef,
|
||||||
})
|
name: fragmentDef.name.value,
|
||||||
),
|
onType: fragmentDef.typeCondition.name.value,
|
||||||
|
isExternal: false,
|
||||||
|
})),
|
||||||
...(config.externalFragments || []),
|
...(config.externalFragments || []),
|
||||||
]
|
];
|
||||||
|
|
||||||
const visitor = new visitorPluginCommon.ClientSideBaseVisitor(
|
const visitor = new ClientSideBaseVisitor(
|
||||||
schema,
|
schema,
|
||||||
allFragments,
|
allFragments,
|
||||||
{},
|
{},
|
||||||
{ documentVariableSuffix: 'Doc' },
|
{ documentVariableSuffix: "Doc" },
|
||||||
documents
|
documents
|
||||||
)
|
);
|
||||||
const visitorResult = visit(allAst, { leave: visitor })
|
const visitorResult = visit(allAst, { leave: visitor });
|
||||||
|
|
||||||
const operations = allAst.definitions.filter(
|
const operations = allAst.definitions.filter(
|
||||||
(d) => d.kind === Kind.OPERATION_DEFINITION
|
(d) => d.kind === Kind.OPERATION_DEFINITION
|
||||||
) as OperationDefinitionNode[]
|
) as OperationDefinitionNode[];
|
||||||
const defaultTypes = `
|
const defaultTypes = `
|
||||||
|
|
||||||
type FetchWrapperArgs<T> = {
|
type FetchWrapperArgs<T> = {
|
||||||
|
|
@ -43,19 +52,19 @@ type FetchWrapperArgs<T> = {
|
||||||
type SubscribeWrapperArgs<T> = {
|
type SubscribeWrapperArgs<T> = {
|
||||||
variables?: T,
|
variables?: T,
|
||||||
}
|
}
|
||||||
`
|
`;
|
||||||
|
|
||||||
const ops = operations
|
const ops = operations
|
||||||
.map((o) => {
|
.map((o) => {
|
||||||
if (o) {
|
if (o) {
|
||||||
let name = o?.name?.value || ''
|
const name = o?.name?.value || "";
|
||||||
// const dsl = `export const ${pascalCase(op.name.value)}Doc = gql\`
|
// const dsl = `export const ${pascalCase(op.name.value)}Doc = gql\`
|
||||||
// ${documents.find((d) => d.rawSDL.includes(`${op.operation} ${op.name.value}`)).rawSDL}\``
|
// ${documents.find((d) => d.rawSDL.includes(`${op.operation} ${op.name.value}`)).rawSDL}\``
|
||||||
const op = `${pascalCase(name)}${pascalCase(o.operation)}`
|
const op = `${pascalCase(name)}${pascalCase(o.operation)}`;
|
||||||
const opv = `${op}Variables`
|
const opv = `${op}Variables`;
|
||||||
let operations = ''
|
let operations = "";
|
||||||
|
|
||||||
if (o.operation === 'query') {
|
if (o.operation === "query") {
|
||||||
operations += `
|
operations += `
|
||||||
export const ${name} = ({ variables, fetch}: FetchWrapperArgs<${opv}>):
|
export const ${name} = ({ variables, fetch}: FetchWrapperArgs<${opv}>):
|
||||||
Promise<GFetchReturnWithErrors<${op}>> =>
|
Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
|
|
@ -63,7 +72,7 @@ export const ${name} = ({ variables, fetch}: FetchWrapperArgs<${opv}>):
|
||||||
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
||||||
fetch
|
fetch
|
||||||
})
|
})
|
||||||
`
|
`;
|
||||||
// If config is set to have subscription query, also write the
|
// If config is set to have subscription query, also write the
|
||||||
if (config.subscriptionQuery) {
|
if (config.subscriptionQuery) {
|
||||||
operations += `
|
operations += `
|
||||||
|
|
@ -72,9 +81,9 @@ Readable<GFetchReturnWithErrors<${op}>> =>
|
||||||
g.oFetch<${op}>({
|
g.oFetch<${op}>({
|
||||||
queries: [{ query: ${pascalCase(name)}Doc, variables }]
|
queries: [{ query: ${pascalCase(name)}Doc, variables }]
|
||||||
})
|
})
|
||||||
`
|
`;
|
||||||
}
|
}
|
||||||
} else if (o.operation === 'mutation') {
|
} else if (o.operation === "mutation") {
|
||||||
operations += `
|
operations += `
|
||||||
export const ${name} = ({ variables }: SubscribeWrapperArgs<${opv}>):
|
export const ${name} = ({ variables }: SubscribeWrapperArgs<${opv}>):
|
||||||
Promise<GFetchReturnWithErrors<${op}>> =>
|
Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
|
|
@ -82,20 +91,20 @@ Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
queries: [{ query: ${pascalCase(name)}Doc, variables }],
|
||||||
fetch,
|
fetch,
|
||||||
})
|
})
|
||||||
`
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return operations
|
return operations;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.join('\n')
|
.join("\n");
|
||||||
|
|
||||||
let imports = [
|
const imports = [
|
||||||
`import type { Readable } from "svelte/store"`,
|
`import type { Readable } from "svelte/store"`,
|
||||||
`import { g } from '${config.gFetchPath}'`,
|
`import { g } from '${config.gFetchPath}'`,
|
||||||
`import type { GFetchReturnWithErrors } from '$graphql/gfetchLib'`,
|
`import type { GFetchReturnWithErrors } from '$graphql/gfetchLib'`,
|
||||||
`import gql from "graphql-tag"`,
|
`import gql from "graphql-tag"`,
|
||||||
]
|
];
|
||||||
|
|
||||||
// let schemaInputs = getCachedDocumentNodeFromSchema(schema).definitions.filter((d) => {
|
// let schemaInputs = getCachedDocumentNodeFromSchema(schema).definitions.filter((d) => {
|
||||||
// return d.kind === 'InputObjectTypeDefinition'
|
// return d.kind === 'InputObjectTypeDefinition'
|
||||||
|
|
@ -130,9 +139,9 @@ Promise<GFetchReturnWithErrors<${op}>> =>
|
||||||
content: [
|
content: [
|
||||||
defaultTypes,
|
defaultTypes,
|
||||||
visitor.fragments,
|
visitor.fragments,
|
||||||
...visitorResult.definitions.filter((t) => typeof t == 'string'),
|
...visitorResult.definitions.filter((t) => typeof t == "string"),
|
||||||
ops,
|
ops,
|
||||||
].join('\n'),
|
].join("\n"),
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
} as CodegenPlugin
|
} as CodegenPlugin;
|
||||||
77
codegen/plugin.js
Normal file
77
codegen/plugin.js
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
import { generate } from "@graphql-codegen/cli";
|
||||||
|
// import { fileURLToPath } from "url";
|
||||||
|
// import { buildSchema, printSchema, parse, GraphQLSchema } from "graphql";
|
||||||
|
// import * as fs from "fs";
|
||||||
|
// import * as path from "path";
|
||||||
|
// import * as typescriptPlugin from "@graphql-codegen/typescript";
|
||||||
|
// const __filename = fileURLToPath(import.meta.url);
|
||||||
|
// const __dirname = path.dirname(__filename);
|
||||||
|
// const schema: GraphQLSchema = buildSchema(`type A { name: String }`);
|
||||||
|
const outputFile = "gquery.generated.ts";
|
||||||
|
// const config = {
|
||||||
|
// documents: [],
|
||||||
|
// config: {}, // used by a plugin internally, although the 'typescript' plugin currently // returns the string output, rather than writing to a file
|
||||||
|
// filename: outputFile,
|
||||||
|
// schema: parse(printSchema(schema)),
|
||||||
|
// plugins: [
|
||||||
|
// // Each plugin should be an object
|
||||||
|
// {
|
||||||
|
// typescript: {}, // Here you can pass configuration to the plugin
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// pluginMap: {
|
||||||
|
// typescript: typescriptPlugin,
|
||||||
|
// },
|
||||||
|
// };
|
||||||
|
const fileRegex = /\.(graphql)$/;
|
||||||
|
export default function levelupViteCodegen(options) {
|
||||||
|
if (!options.schema) {
|
||||||
|
throw new Error("No schema provided");
|
||||||
|
}
|
||||||
|
if (!options.output) {
|
||||||
|
throw new Error("No output directory specified");
|
||||||
|
}
|
||||||
|
const { schema, output } = options;
|
||||||
|
console.log(`${process.cwd()}/${output}/${outputFile}`);
|
||||||
|
return {
|
||||||
|
name: "levelup-vite-codegen",
|
||||||
|
async buildStart() {
|
||||||
|
try {
|
||||||
|
const generatedFiles = await generate({
|
||||||
|
schema,
|
||||||
|
documents: "./src/**/*.graphql",
|
||||||
|
generates: {
|
||||||
|
[`${process.cwd()}/${output}/gquery-types.generated.ts`]: {
|
||||||
|
plugins: ["typescript"],
|
||||||
|
},
|
||||||
|
// [`${process.cwd()}/${output}/${outputFile}`]: {
|
||||||
|
// // preset: "import-types",
|
||||||
|
// // presetConfig: {
|
||||||
|
// // typesPath: `${output}/${outputFile}`,
|
||||||
|
// // },
|
||||||
|
// // preset: "near-operation-file",
|
||||||
|
// // presetConfig: {
|
||||||
|
// // extension: ".generated.ts",
|
||||||
|
// // folder: "./",
|
||||||
|
// // baseTypesPath: `${output}/${outputFile}`,
|
||||||
|
// // },
|
||||||
|
// plugins: [
|
||||||
|
// "typescript",
|
||||||
|
// // "typescript-operations",
|
||||||
|
// "../packages/gQueryCodegen/codegen.js",
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log("❓ gFetch Warning - No `.graphql` 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.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
transform(src, id) { },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
//# sourceMappingURL=plugin.js.map
|
||||||
1
codegen/plugin.js.map
Normal file
1
codegen/plugin.js.map
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,uCAAuC;AAEvC,4EAA4E;AAC5E,4BAA4B;AAC5B,gCAAgC;AAChC,mEAAmE;AAEnE,qDAAqD;AACrD,8CAA8C;AAE9C,wEAAwE;AACxE,MAAM,UAAU,GAAG,qBAAqB,CAAC;AACzC,mBAAmB;AACnB,mBAAmB;AACnB,wJAAwJ;AACxJ,0BAA0B;AAC1B,wCAAwC;AACxC,eAAe;AACf,yCAAyC;AACzC,QAAQ;AACR,yEAAyE;AACzE,SAAS;AACT,OAAO;AACP,iBAAiB;AACjB,oCAAoC;AACpC,OAAO;AACP,KAAK;AAEL,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,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;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;IACxD,OAAO;QACL,IAAI,EAAE,sBAAsB;QAE5B,KAAK,CAAC,UAAU;YACd,IAAI;gBACF,MAAM,cAAc,GAAG,MAAM,QAAQ,CACnC;oBACE,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,SAAS,EAAE;wBACT,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,4BAA4B,CAAC,EAAE;4BACxD,OAAO,EAAE,CAAC,YAAY,CAAC;yBACxB;wBACD,kDAAkD;wBAClD,+BAA+B;wBAC/B,uBAAuB;wBACvB,+CAA+C;wBAC/C,UAAU;wBACV,sCAAsC;wBACtC,uBAAuB;wBACvB,qCAAqC;wBACrC,uBAAuB;wBACvB,mDAAmD;wBACnD,UAAU;wBACV,eAAe;wBACf,oBAAoB;wBACpB,oCAAoC;wBACpC,8CAA8C;wBAC9C,OAAO;wBACP,KAAK;qBACN;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"}
|
||||||
90
codegen/plugin.ts
Normal file
90
codegen/plugin.ts
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
import { generate } from "@graphql-codegen/cli";
|
||||||
|
// import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
// import { buildSchema, printSchema, parse, GraphQLSchema } from "graphql";
|
||||||
|
// import * as fs from "fs";
|
||||||
|
// import * as path from "path";
|
||||||
|
// import * as typescriptPlugin from "@graphql-codegen/typescript";
|
||||||
|
|
||||||
|
// const __filename = fileURLToPath(import.meta.url);
|
||||||
|
// const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
// const schema: GraphQLSchema = buildSchema(`type A { name: String }`);
|
||||||
|
const outputFile = "gquery.generated.ts";
|
||||||
|
// const config = {
|
||||||
|
// documents: [],
|
||||||
|
// config: {}, // used by a plugin internally, although the 'typescript' plugin currently // returns the string output, rather than writing to a file
|
||||||
|
// filename: outputFile,
|
||||||
|
// schema: parse(printSchema(schema)),
|
||||||
|
// plugins: [
|
||||||
|
// // Each plugin should be an object
|
||||||
|
// {
|
||||||
|
// typescript: {}, // Here you can pass configuration to the plugin
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// pluginMap: {
|
||||||
|
// typescript: typescriptPlugin,
|
||||||
|
// },
|
||||||
|
// };
|
||||||
|
|
||||||
|
const fileRegex = /\.(graphql)$/;
|
||||||
|
|
||||||
|
export default function levelupViteCodegen(options) {
|
||||||
|
if (!options.schema) {
|
||||||
|
throw new Error("No schema provided");
|
||||||
|
}
|
||||||
|
if (!options.output) {
|
||||||
|
throw new Error("No output directory specified");
|
||||||
|
}
|
||||||
|
|
||||||
|
const { schema, output } = options;
|
||||||
|
console.log(`${process.cwd()}/${output}/${outputFile}`);
|
||||||
|
return {
|
||||||
|
name: "levelup-vite-codegen",
|
||||||
|
|
||||||
|
async buildStart() {
|
||||||
|
try {
|
||||||
|
const generatedFiles = await generate(
|
||||||
|
{
|
||||||
|
schema,
|
||||||
|
documents: "./src/**/*.graphql",
|
||||||
|
generates: {
|
||||||
|
[`${process.cwd()}/${output}/gquery-types.generated.ts`]: {
|
||||||
|
plugins: ["typescript"],
|
||||||
|
},
|
||||||
|
// [`${process.cwd()}/${output}/${outputFile}`]: {
|
||||||
|
// // preset: "import-types",
|
||||||
|
// // presetConfig: {
|
||||||
|
// // typesPath: `${output}/${outputFile}`,
|
||||||
|
// // },
|
||||||
|
// // preset: "near-operation-file",
|
||||||
|
// // presetConfig: {
|
||||||
|
// // extension: ".generated.ts",
|
||||||
|
// // folder: "./",
|
||||||
|
// // baseTypesPath: `${output}/${outputFile}`,
|
||||||
|
// // },
|
||||||
|
// plugins: [
|
||||||
|
// "typescript",
|
||||||
|
// // "typescript-operations",
|
||||||
|
// "../packages/gQueryCodegen/codegen.js",
|
||||||
|
// ],
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
true
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.log("❓ gFetch Warning - No `.graphql` 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."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
|
||||||
|
transform(src, id) {},
|
||||||
|
};
|
||||||
|
}
|
||||||
96
dist/gFetch.js
vendored
Normal file
96
dist/gFetch.js
vendored
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
import { readable, writable } from "svelte/store";
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
|
export class GFetch extends Object {
|
||||||
|
constructor(options) {
|
||||||
|
super();
|
||||||
|
const { path } = options;
|
||||||
|
this.path = path;
|
||||||
|
this.fetch = this.fetch.bind(this);
|
||||||
|
this.oFetch = this.oFetch.bind(this);
|
||||||
|
}
|
||||||
|
// * gFetch
|
||||||
|
// This is a fetcher that returns a promise that resolves to a graphql response
|
||||||
|
async fetch({ queries, fetch, }) {
|
||||||
|
// Get all the queries and transform the docs into strings
|
||||||
|
// Fetching gql require them to be strings.
|
||||||
|
if (!fetch && window) {
|
||||||
|
fetch = window.fetch;
|
||||||
|
}
|
||||||
|
const newQueries = {
|
||||||
|
...queries[0],
|
||||||
|
query: gqlToString(queries[0].query),
|
||||||
|
};
|
||||||
|
// This is generic fetch, that is polyfilled via svelte kit
|
||||||
|
// graph ql fetches must be POST
|
||||||
|
// credentials include for user ssr data
|
||||||
|
const res = await fetch(this.path, {
|
||||||
|
method: "POST",
|
||||||
|
credentials: "include",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify(newQueries),
|
||||||
|
});
|
||||||
|
// Gets the data back from the server
|
||||||
|
const data = await res.json();
|
||||||
|
return {
|
||||||
|
...data.data,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// * ogFetch
|
||||||
|
// This function is a fetcher that returns a svelte readable subscription
|
||||||
|
// This is to be used for client side fetching of data
|
||||||
|
oFetch({ queries, }) {
|
||||||
|
// 1. Build the store and initialize it as empty and error free
|
||||||
|
const initial = new Map();
|
||||||
|
// Creates a store that will be used to subscribe to the data
|
||||||
|
const store = readable(initial, this.makeSubscribe(initial, queries));
|
||||||
|
return store;
|
||||||
|
}
|
||||||
|
// A dummy function that is used to make subscribe happy.
|
||||||
|
unsubscribe() {
|
||||||
|
// Nothing to do in this case
|
||||||
|
}
|
||||||
|
// Part of ogFetch
|
||||||
|
// Designed this way to work will with Svelte's readable store
|
||||||
|
makeSubscribe(data, queries) {
|
||||||
|
// Create a closure with access to the
|
||||||
|
// initial data and initialization arguments
|
||||||
|
return (set) => {
|
||||||
|
// 3. This won't get executed until the store has
|
||||||
|
// its first subscriber. Kick off retrieval.
|
||||||
|
this.fetchDataForSubscription(data, set, queries);
|
||||||
|
// We're not waiting for the response.
|
||||||
|
// Return the unsubscribe function which doesn't do
|
||||||
|
// do anything here (but is part of the stores protocol).
|
||||||
|
return this.unsubscribe;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// Part of ogFetch
|
||||||
|
// Runs gFetch and updates subscription
|
||||||
|
async fetchDataForSubscription(data, set, queries) {
|
||||||
|
try {
|
||||||
|
// Dispatch the request for the users
|
||||||
|
// This code is ONLY run client side, so fetch comes globally from the browser
|
||||||
|
const response = await this.fetch({ queries, fetch });
|
||||||
|
set(response);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
// 6b. if there is a fetch error - deal with it
|
||||||
|
// and let observers know
|
||||||
|
data.error = error;
|
||||||
|
set(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export const data = writable();
|
||||||
|
// ! IDEAS
|
||||||
|
// Mutations should take care of updating a generated writeable.
|
||||||
|
// import { tutorial } from '$graphql/state'
|
||||||
|
// import { updateTutorial } from '$graphql/gfetch.generated'
|
||||||
|
// updateTutorial()
|
||||||
|
// $tutorial is auto updated site wide
|
||||||
|
// Devtools based on svelte toy
|
||||||
|
//# sourceMappingURL=gFetch.js.map
|
||||||
1
dist/gFetch.js.map
vendored
Normal file
1
dist/gFetch.js.map
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"gFetch.js","sourceRoot":"","sources":["../src/gFetch.ts"],"names":[],"mappings":"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"}
|
||||||
35
dist/index.js
vendored
Normal file
35
dist/index.js
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
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, 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
|
||||||
1
dist/index.js.map
vendored
Normal file
1
dist/index.js.map
vendored
Normal file
|
|
@ -0,0 +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,2DAA2D;IAC3D,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"}
|
||||||
127
package-lock.json
generated
127
package-lock.json
generated
|
|
@ -1,127 +0,0 @@
|
||||||
{
|
|
||||||
"name": "gquery",
|
|
||||||
"version": "0.0.1",
|
|
||||||
"lockfileVersion": 2,
|
|
||||||
"requires": true,
|
|
||||||
"packages": {
|
|
||||||
"": {
|
|
||||||
"name": "gquery",
|
|
||||||
"version": "0.0.1",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"camel-case": "^4.1.2",
|
|
||||||
"graphql": "^15.6.0",
|
|
||||||
"pascal-case": "^3.1.2",
|
|
||||||
"svelte": "^3.43.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/camel-case": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
|
|
||||||
"dependencies": {
|
|
||||||
"pascal-case": "^3.1.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/graphql": {
|
|
||||||
"version": "15.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/graphql/-/graphql-15.6.0.tgz",
|
|
||||||
"integrity": "sha512-WJR872Zlc9hckiEPhXgyUftXH48jp2EjO5tgBBOyNMRJZ9fviL2mJBD6CAysk6N5S0r9BTs09Qk39nnJBkvOXQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 10.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/lower-case": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
|
|
||||||
"dependencies": {
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/no-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
|
|
||||||
"dependencies": {
|
|
||||||
"lower-case": "^2.0.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/pascal-case": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
|
|
||||||
"dependencies": {
|
|
||||||
"no-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/svelte": {
|
|
||||||
"version": "3.43.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.43.0.tgz",
|
|
||||||
"integrity": "sha512-T2pMPHrxXp+SM8pLLUXLQgkdo+JhTls7aqj9cD7z8wT2ccP+OrCAmtQS7h6pvMjitaZhXFNnCK582NxDpy8HSw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tslib": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"camel-case": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
|
|
||||||
"requires": {
|
|
||||||
"pascal-case": "^3.1.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"graphql": {
|
|
||||||
"version": "15.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/graphql/-/graphql-15.6.0.tgz",
|
|
||||||
"integrity": "sha512-WJR872Zlc9hckiEPhXgyUftXH48jp2EjO5tgBBOyNMRJZ9fviL2mJBD6CAysk6N5S0r9BTs09Qk39nnJBkvOXQ=="
|
|
||||||
},
|
|
||||||
"lower-case": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
|
|
||||||
"requires": {
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"no-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
|
|
||||||
"requires": {
|
|
||||||
"lower-case": "^2.0.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pascal-case": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
|
|
||||||
"requires": {
|
|
||||||
"no-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"svelte": {
|
|
||||||
"version": "3.43.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.43.0.tgz",
|
|
||||||
"integrity": "sha512-T2pMPHrxXp+SM8pLLUXLQgkdo+JhTls7aqj9cD7z8wT2ccP+OrCAmtQS7h6pvMjitaZhXFNnCK582NxDpy8HSw=="
|
|
||||||
},
|
|
||||||
"tslib": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
20
package.json
20
package.json
|
|
@ -4,27 +4,37 @@
|
||||||
"url": "https://github.com/leveluptuts/gQuery/issues"
|
"url": "https://github.com/leveluptuts/gQuery/issues"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@graphql-codegen/cli": "^2.2.0",
|
||||||
"camel-case": "^4.1.2",
|
"camel-case": "^4.1.2",
|
||||||
"graphql": "^15.6.0",
|
|
||||||
"pascal-case": "^3.1.2",
|
"pascal-case": "^3.1.2",
|
||||||
"svelte": "^3.43.0"
|
"svelte": "^3.43.1",
|
||||||
|
"vite": "^2.6.2"
|
||||||
},
|
},
|
||||||
"description": "Not like jQuery. A GraphQL Fetcher & Cache for Svelte Kit",
|
"description": "Not like jQuery. A GraphQL Fetcher & Cache for Svelte Kit",
|
||||||
|
"devDependencies": {
|
||||||
|
"@graphql-codegen/plugin-helpers": "^2.1.1",
|
||||||
|
"@graphql-codegen/visitor-plugin-common": "^2.2.1",
|
||||||
|
"graphql": "^15.6.1",
|
||||||
|
"typescript": "^4.3.2"
|
||||||
|
},
|
||||||
"exports": {
|
"exports": {
|
||||||
"./gfetch": "src/gfetch.js"
|
".": "./dist/index.js",
|
||||||
|
"./codegen": "./codegen/plugin.js",
|
||||||
|
"./package.json": "./package.json"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/leveluptuts/gQuery#readme",
|
"homepage": "https://github.com/leveluptuts/gQuery#readme",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"graphql"
|
"graphql"
|
||||||
],
|
],
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"main": "src/index.js",
|
"name": "@leveluptuts/gQuery",
|
||||||
"name": "gquery",
|
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/leveluptuts/gQuery.git"
|
"url": "git+https://github.com/leveluptuts/gQuery.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"dev": "tsc --watch",
|
||||||
|
"dev:codegen": "tsc -w --project codegen.tsconfig.json",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|
|
||||||
|
|
@ -46,3 +46,5 @@ export async function gQuery(
|
||||||
await gCache.hydrate(newData);
|
await gCache.hydrate(newData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export * from "./gFetch";
|
||||||
|
|
|
||||||
26
tsconfig.json
Normal file
26
tsconfig.json
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"module": "es2020",
|
||||||
|
"lib": ["es2020", "DOM"],
|
||||||
|
"outDir": "./dist",
|
||||||
|
"target": "es2020",
|
||||||
|
/**
|
||||||
|
svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
|
||||||
|
to enforce using \`import type\` instead of \`import\` for Types.
|
||||||
|
*/
|
||||||
|
"importsNotUsedAsValues": "error",
|
||||||
|
"isolatedModules": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
/**
|
||||||
|
To have warnings/errors of the Svelte compiler at the correct position,
|
||||||
|
enable source maps by default.
|
||||||
|
*/
|
||||||
|
"sourceMap": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"exclude": ["node_modules"],
|
||||||
|
"include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/codegen.ts"]
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue