shopify-storefront
Version:
Wrapper for the Shopify's Storefront API.
46 lines • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildMutation = exports.buildQuery = exports.buildGraphQLRequest = exports.gqlVariablesToBody = void 0;
function gqlVariablesToBody(vars, returns) {
const varTypes = [];
const varAssign = [];
// eslint-disable-next-line guard-for-in
for (const key in vars) {
const type = vars[key];
varTypes.push(`$${key}: ${type}`);
varAssign.push(`${key}: $${key}`);
}
if (varTypes.length === 0 || varAssign.length === 0) {
return `__OPERATION__ __NAME_CAP__ {
__NAME__ {
${returns.join(' ')}
}
}`;
}
return `__OPERATION__ __NAME_CAP__(${varTypes.join(',')}) {
__NAME__(${varAssign.join(',')}){
${returns.join(' ')}
}
}`;
}
exports.gqlVariablesToBody = gqlVariablesToBody;
function buildGraphQLRequest(operation, name, variables, returns) {
const nameCap = name.replace(name[0], name[0].toUpperCase());
const body = gqlVariablesToBody(variables, returns)
.replace(/__OPERATION__/g, operation)
.replace(/__NAME__/g, name)
.replace(/__NAME_CAP__/g, nameCap);
const req = {};
req[operation] = `${body}`;
return req;
}
exports.buildGraphQLRequest = buildGraphQLRequest;
function buildQuery(name, variables, returns) {
return buildGraphQLRequest('query', name, variables, returns);
}
exports.buildQuery = buildQuery;
function buildMutation(name, variables, returns) {
return buildGraphQLRequest('mutation', name, variables, returns);
}
exports.buildMutation = buildMutation;
//# sourceMappingURL=utils.js.map