@simulacrum/github-api-simulator
Version:
Provides common functionality to frontend app and plugins.
60 lines • 3.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createResolvers = createResolvers;
const relay_ts_1 = require("./relay.js");
const to_graphql_ts_1 = require("./to-graphql.js");
const assert_ts_1 = require("assert-ts");
function createResolvers(simulationStore) {
return {
Query: {
// @ts-expect-error not a fully qualified return per type, TODO fill it out
viewer() {
let user = simulationStore.schema.users.selectById(simulationStore.store.getState(), { id: "user:1" });
(0, assert_ts_1.assert)(!!user, `no logged in user`);
return (0, to_graphql_ts_1.toGraphql)(simulationStore, "User", user);
},
// @ts-expect-error not a fully qualified return per type, TODO fill it out
organization(_, { login }) {
var _a, _b;
let orgs = simulationStore.schema.organizations.selectTableAsList(simulationStore.store.getState());
let [org] = orgs.filter((o) => o.login === login);
(0, assert_ts_1.assert)(!!org, `no organization found for ${login}`);
let __typename = ((_b = (_a = org === null || org === void 0 ? void 0 : org.id) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ":").split(":")[0];
(0, assert_ts_1.assert)(__typename === "githuborganization", `incorrectly structured GitHubOrganization id ${org.id}`);
let shaped = (0, to_graphql_ts_1.toGraphql)(simulationStore, "Organization", org);
return shaped;
},
// @ts-expect-error not a fully qualified return per type, TODO fill it out
organizations(pageArgs) {
let orgs = simulationStore.schema.organizations.selectTableAsList(simulationStore.store.getState());
return (0, relay_ts_1.applyRelayPagination)(orgs, pageArgs, (org) => (0, to_graphql_ts_1.toGraphql)(simulationStore, "Organization", org));
},
// @ts-expect-error not a fully qualified return per type, TODO fill it out
repository(_, { owner, name }) {
let repo = simulationStore.schema.repositories
.selectTableAsList(simulationStore.store.getState())
.find((r) => r.name.toLowerCase() === name &&
r.full_name.toLowerCase() === `${owner}/${name}`.toLowerCase());
(0, assert_ts_1.assert)(!!repo, `no repository found for ${name}`);
return (0, to_graphql_ts_1.toGraphql)(simulationStore, "Repository", repo);
},
// @ts-expect-error not a fully qualified return per type, TODO fill it out
repositoryOwner(_, { login }) {
let [org] = simulationStore.schema.organizations
.selectTableAsList(simulationStore.store.getState())
.filter((o) => o.login === login);
// let [org] = [...githubOrganizations].filter((o) => o.login === login);
if (org)
return (0, to_graphql_ts_1.toGraphql)(simulationStore, "Organization", org);
let [userAccount] = simulationStore.schema.users
.selectTableAsList(simulationStore.store.getState())
// TODO should we use u?.githubAccount?.login here?
.filter((u) => (u === null || u === void 0 ? void 0 : u.login) === login);
(0, assert_ts_1.assert)(!!userAccount, `no github organization or account found for ${login}`);
if (userAccount)
return (0, to_graphql_ts_1.toGraphql)(simulationStore, "User", userAccount);
},
},
};
}
//# sourceMappingURL=resolvers.js.map
;