UNPKG

@actonate/mirkwood

Version:

GraphQL based Rapid Server-side Development framework

185 lines (152 loc) 5.73 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _graphql = require('graphql'); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _gm = require('gm'); var _gm2 = _interopRequireDefault(_gm); var _types = require('../../lib/types'); var _types2 = _interopRequireDefault(_types); var _resolver = require('../../lib/resolver'); var _resolver2 = _interopRequireDefault(_resolver); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var ImageUtility = function () { function ImageUtility() { _classCallCheck(this, ImageUtility); this.resolvers = {}; } _createClass(ImageUtility, [{ key: 'editResolver', value: function editResolver(resolverName, type, model, inputSchema) { var args = inputSchema.args; args = _extends({ cwd: { type: _types2.default.String, defaultValue: 'tmp' }, src: { type: _types2.default.String, required: true }, dest: { type: _types2.default.String, required: true }, options: { name: 'ImageEdit_Options', type: { fields: { resize: { type: { name: 'ImageEdit_Options_Resize', fields: { height: { type: _types2.default.Int }, width: { type: _types2.default.Int } } } }, background: { type: _types2.default.String }, extent: { type: { name: 'ImageEdit_Options_Extent', fields: { height: { type: _types2.default.Int }, width: { type: _types2.default.Int } } } }, position: { type: _types2.default.Enum('ImageEdit_Options_Positions', { NORTH_WEST: { value: 'NorthWest' }, NORTH: { value: 'North' }, WEST: { value: 'West' }, CENTER: { value: 'Center' }, EAST: { value: 'East' }, SOUTH_WEST: { value: 'SouthWest' }, SOUTH: { value: 'South' }, SOUTH_EAST: { value: 'SouthEast' } }) } } } } }, args); var argsObjects = _types2.default.generateArgs(args, inputSchema.name); return { type: type || _types2.default.Boolean, args: argsObjects, resolve: new _resolver2.default(resolverName, function (_, args, ctx) { var srcPath = _path2.default.resolve(args.cwd, args.src); var destPath = _path2.default.resolve(args.cwd, args.dest); var options = args.options; var img = (0, _gm2.default)(srcPath); // resize image if (options.resize) { img = img.resize(options.resize.width, options.resize.height); } // add background if (options.background) { img = img.background(options.background); } // set gravity if (options.position) { img = img.gravity(options.position); } // extent image if (options.extent) { img = img.extent(options.extent.width, options.extent.height); } // remove no profile img.noProfile(); return new Promise(function (resolve, reject) { img.write(destPath, function (err, res) { if (err) { reject(err); return; } resolve(true); }); }); }) }; } }, { key: 'mutations', value: function mutations(type, inputType, model) { var schema = model.schema; var modelName = schema.name; return new _graphql.GraphQLObjectType({ name: [modelName, 'Image_Mutation'].join(''), fields: { edit: this.editResolver('image.edit', _types2.default.Boolean, model, { args: {} }) } }); } }, { key: 'queries', value: function queries(type, inputType, model) { var schema = model.schema; var modelName = schema.name; return false; } }]); return ImageUtility; }(); exports.default = ImageUtility;