@anvilco/anvil
Version:
Anvil API Client
44 lines (28 loc) • 1.26 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.graphQLUploadSchemaIsValid = graphQLUploadSchemaIsValid;exports.isFile = isFile;var _fs = _interopRequireDefault(require("fs"));
var _UploadWithOptions = _interopRequireDefault(require("./UploadWithOptions"));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
function isFile(value) {
return value instanceof _UploadWithOptions.default || value instanceof _fs.default.ReadStream || value instanceof Buffer;
}
function graphQLUploadSchemaIsValid(schema, parent, key) {
if (schema == null) {
return true;
}
if (key !== 'file') {
if (schema instanceof Array) {
return schema.every((subSchema) => graphQLUploadSchemaIsValid(subSchema, schema));
}
if (schema.constructor.name === 'Object') {
return Object.entries(schema).every(([key, subSchema]) => graphQLUploadSchemaIsValid(subSchema, schema, key));
}
return !isFile(schema);
}
if (!(parent && parent.file === schema)) {
return false;
}
if (schema.data) {
return (
typeof schema.data === 'string' &&
['filename', 'mimetype'].every((requiredKey) => schema[requiredKey]));
}
return isFile(schema);
}