naystack
Version:
A stack built with tight Next + Drizzle + GraphQL
183 lines (179 loc) • 5.71 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
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") {
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 });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __decorateClass = (decorators, target, key, kind) => {
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
for (var i = decorators.length - 1, decorator; i >= 0; i--)
if (decorator = decorators[i])
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
if (kind && result) __defProp(target, key, result);
return result;
};
// src/graphql/index.ts
var graphql_exports = {};
__export(graphql_exports, {
FieldLibrary: () => FieldLibrary,
QueryLibrary: () => QueryLibrary,
field: () => field,
initGraphQLServer: () => initGraphQLServer,
query: () => query
});
module.exports = __toCommonJS(graphql_exports);
// src/graphql/init.ts
var import_reflect_metadata = require("reflect-metadata");
var import_server = require("@apollo/server");
var import_default = require("@apollo/server/plugin/landingPage/default");
var import_next = require("@as-integrations/next");
var import_type_graphql = require("type-graphql");
async function initGraphQLServer({
authChecker,
resolvers,
plugins,
context
}) {
const { typeDefs, resolvers: builtResolvers } = await (0, import_type_graphql.buildTypeDefsAndResolvers)({
validate: true,
authChecker,
resolvers
});
const server = new import_server.ApolloServer({
typeDefs,
resolvers: builtResolvers,
plugins: [
process.env.NODE_ENV === "production" ? (0, import_default.ApolloServerPluginLandingPageProductionDefault)() : (0, import_default.ApolloServerPluginLandingPageLocalDefault)(),
{
async requestDidStart({ request, contextValue }) {
if (
// eslint-disable-next-line
contextValue.onlyQuery && !request.query?.startsWith("query")
)
contextValue.userId = null;
}
},
...plugins || []
],
introspection: process.env.NODE_ENV !== "production",
status400ForVariableCoercionErrors: true
});
const handler = (0, import_next.startServerAndCreateNextHandler)(server, {
context
});
return {
GET: (request) => handler(request),
POST: (request) => handler(request),
context
};
}
// src/graphql/utils.ts
var import_type_graphql2 = require("type-graphql");
function query(fn, options) {
return { ...options, fn };
}
function field(fn, options) {
return { ...options, fn };
}
function QueryLibrary(queries) {
let GeneratedResolver = class {
};
GeneratedResolver = __decorateClass([
(0, import_type_graphql2.Resolver)()
], GeneratedResolver);
for (const key in queries) {
const def = queries[key];
if (!def) continue;
Object.defineProperty(GeneratedResolver.prototype, key, {
value: async function(ctx, data) {
return def.fn(ctx, data);
},
writable: false
});
const descriptor = Object.getOwnPropertyDescriptor(
GeneratedResolver.prototype,
key
);
if (def.mutation) {
(0, import_type_graphql2.Mutation)(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
} else {
(0, import_type_graphql2.Query)(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
}
(0, import_type_graphql2.Ctx)()(GeneratedResolver.prototype, key, 0);
if (def.input) {
(0, import_type_graphql2.Arg)("input", () => def.input || String, def.inputOptions)(
GeneratedResolver.prototype,
key,
1
);
}
}
return GeneratedResolver;
}
function FieldLibrary(type, queries) {
let GeneratedResolver = class {
};
GeneratedResolver = __decorateClass([
(0, import_type_graphql2.Resolver)(() => type)
], GeneratedResolver);
for (const key in queries) {
const def = queries[key];
if (!def) continue;
Object.defineProperty(GeneratedResolver.prototype, key, {
value: async function(root, ctx, input) {
return def.fn(root, ctx, input);
},
writable: false
});
const descriptor = Object.getOwnPropertyDescriptor(
GeneratedResolver.prototype,
key
);
if (def.authorized) {
(0, import_type_graphql2.Authorized)()(GeneratedResolver, key);
}
(0, import_type_graphql2.Root)()(GeneratedResolver.prototype, key, 0);
(0, import_type_graphql2.FieldResolver)(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
(0, import_type_graphql2.Ctx)()(GeneratedResolver.prototype, key, 1);
if (def.input) {
(0, import_type_graphql2.Arg)("input", () => def.input || String, def.inputOptions)(
GeneratedResolver.prototype,
key,
2
);
}
}
return GeneratedResolver;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
FieldLibrary,
QueryLibrary,
field,
initGraphQLServer,
query
});