UNPKG

@kazekyo/nau-graphql-codegen-preset

Version:

A GraphQL Code Generator preset for Nau

105 lines (100 loc) 16.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeCustomizer = exports.getUniqueFragmentName = exports.getArgumentDefinitionDataList = exports.existsFragmentDefinitionInChangedFragments = exports.addFragmentToChangedFragment = exports.FRAGMENT_NAME_INFO_ID_3 = exports.FRAGMENT_NAME_INFO_ID_2 = exports.FRAGMENT_NAME_INFO_ID_1 = void 0; var _nau = require("@kazekyo/nau"); var _graphql = require("graphql"); var _jsBase = require("js-base64"); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } var mergeCustomizer = function mergeCustomizer(objValue, srcValue) { if (Array.isArray(objValue) && Array.isArray(srcValue)) { return objValue.concat(srcValue); } }; exports.mergeCustomizer = mergeCustomizer; var FRAGMENT_NAME_INFO_ID_1 = '1'; exports.FRAGMENT_NAME_INFO_ID_1 = FRAGMENT_NAME_INFO_ID_1; var FRAGMENT_NAME_INFO_ID_2 = '2'; exports.FRAGMENT_NAME_INFO_ID_2 = FRAGMENT_NAME_INFO_ID_2; var FRAGMENT_NAME_INFO_ID_3 = '3'; exports.FRAGMENT_NAME_INFO_ID_3 = FRAGMENT_NAME_INFO_ID_3; var getUniqueFragmentName = function getUniqueFragmentName(name, info) { var splitName = name.split('_'); var endStr = splitName.pop(); if (splitName.length === 1 || !endStr) return "".concat(name, "_").concat((0, _jsBase.encode)('n/' + info, true)); var decodedInfo = (0, _jsBase.decode)(endStr); var isAlreadyUniqueName = decodedInfo.startsWith('n/'); if (!isAlreadyUniqueName) return "".concat(name, "_").concat((0, _jsBase.encode)('n/' + info, true)); return "".concat(splitName.join('_'), "_").concat((0, _jsBase.encode)(decodedInfo + '/' + info, true)); }; exports.getUniqueFragmentName = getUniqueFragmentName; var getArgumentDefinitionDataList = function getArgumentDefinitionDataList(node) { if (node.name.value !== _nau.ARGUMENT_DEFINITIONS_DIRECTIVE_NAME) return []; if (!node.arguments || node.arguments.length === 0) return []; var list = []; // Example: node is @argumentDefinitions(arg1: { type: "Int", defaultValue: 10 }) node.arguments.forEach(function (argument) { if (argument.value.kind !== 'ObjectValue') return; var name = argument.name; // Example: name is arg1 var typeField = argument.value.fields.find(function (field) { return field.name.value === 'type'; }); var typeString; if (typeField && typeField.value.kind === _graphql.Kind.STRING) { typeString = typeField.value.value; // Example: typeString is "Int" } if (!typeString) return; var defaultValueField = argument.value.fields.find(function (field) { return field.name.value === 'defaultValue'; }); var defaultValue = defaultValueField === null || defaultValueField === void 0 ? void 0 : defaultValueField.value; // Example: defaultValue is 10 var defaultConstValue = undefined; if (defaultValue && defaultValue.kind !== _graphql.Kind.VARIABLE) { defaultConstValue = defaultValue; } list.push({ name: name, type: (0, _graphql.parseType)(typeString), defaultValue: defaultConstValue }); }); return list; }; // TODO : Delete exports.getArgumentDefinitionDataList = getArgumentDefinitionDataList; var addFragmentToChangedFragment = function addFragmentToChangedFragment(_ref) { var originalFragmentName = _ref.originalFragmentName, changedFragments = _ref.changedFragments, changedFragmentDefinition = _ref.changedFragmentDefinition; var definitions = changedFragments[originalFragmentName] || []; if (definitions.find(function (definition) { return definition.name.value === changedFragmentDefinition.name.value; })) { return changedFragments; } definitions.push(changedFragmentDefinition); changedFragments[originalFragmentName] = definitions; return changedFragments; }; exports.addFragmentToChangedFragment = addFragmentToChangedFragment; var existsFragmentDefinitionInChangedFragments = function existsFragmentDefinitionInChangedFragments(_ref2) { var changedFragments = _ref2.changedFragments, newFragmentName = _ref2.newFragmentName; var fragmentDefinitions = Object.entries(changedFragments).map(function (_ref3) { var _ref4 = _slicedToArray(_ref3, 2), _ = _ref4[0], fragments = _ref4[1]; return fragments; }).flat(); return !!fragmentDefinitions.find(function (definition) { return definition.name.value === newFragmentName; }); }; exports.existsFragmentDefinitionInChangedFragments = existsFragmentDefinitionInChangedFragments; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZXJnZUN1c3RvbWl6ZXIiLCJvYmpWYWx1ZSIsInNyY1ZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiY29uY2F0IiwiRlJBR01FTlRfTkFNRV9JTkZPX0lEXzEiLCJGUkFHTUVOVF9OQU1FX0lORk9fSURfMiIsIkZSQUdNRU5UX05BTUVfSU5GT19JRF8zIiwiZ2V0VW5pcXVlRnJhZ21lbnROYW1lIiwibmFtZSIsImluZm8iLCJzcGxpdE5hbWUiLCJzcGxpdCIsImVuZFN0ciIsInBvcCIsImxlbmd0aCIsImVuY29kZSIsImRlY29kZWRJbmZvIiwiZGVjb2RlIiwiaXNBbHJlYWR5VW5pcXVlTmFtZSIsInN0YXJ0c1dpdGgiLCJqb2luIiwiZ2V0QXJndW1lbnREZWZpbml0aW9uRGF0YUxpc3QiLCJub2RlIiwidmFsdWUiLCJBUkdVTUVOVF9ERUZJTklUSU9OU19ESVJFQ1RJVkVfTkFNRSIsImFyZ3VtZW50cyIsImxpc3QiLCJmb3JFYWNoIiwiYXJndW1lbnQiLCJraW5kIiwidHlwZUZpZWxkIiwiZmllbGRzIiwiZmluZCIsImZpZWxkIiwidHlwZVN0cmluZyIsIktpbmQiLCJTVFJJTkciLCJkZWZhdWx0VmFsdWVGaWVsZCIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRDb25zdFZhbHVlIiwidW5kZWZpbmVkIiwiVkFSSUFCTEUiLCJwdXNoIiwidHlwZSIsInBhcnNlVHlwZSIsImFkZEZyYWdtZW50VG9DaGFuZ2VkRnJhZ21lbnQiLCJvcmlnaW5hbEZyYWdtZW50TmFtZSIsImNoYW5nZWRGcmFnbWVudHMiLCJjaGFuZ2VkRnJhZ21lbnREZWZpbml0aW9uIiwiZGVmaW5pdGlvbnMiLCJkZWZpbml0aW9uIiwiZXhpc3RzRnJhZ21lbnREZWZpbml0aW9uSW5DaGFuZ2VkRnJhZ21lbnRzIiwibmV3RnJhZ21lbnROYW1lIiwiZnJhZ21lbnREZWZpbml0aW9ucyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJfIiwiZnJhZ21lbnRzIiwiZmxhdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2Zvcm1zL3V0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVJHVU1FTlRfREVGSU5JVElPTlNfRElSRUNUSVZFX05BTUUgfSBmcm9tICdAa2F6ZWt5by9uYXUnO1xuaW1wb3J0IHsgQ29uc3RWYWx1ZU5vZGUsIERpcmVjdGl2ZU5vZGUsIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsIEtpbmQsIE5hbWVOb2RlLCBwYXJzZVR5cGUsIFR5cGVOb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gJ2pzLWJhc2U2NCc7XG5cbmV4cG9ydCBjb25zdCBtZXJnZUN1c3RvbWl6ZXIgPSAob2JqVmFsdWU6IHVua25vd24sIHNyY1ZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9ialZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpIGFzIHVua25vd25bXTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZSQUdNRU5UX05BTUVfSU5GT19JRF8xID0gJzEnO1xuZXhwb3J0IGNvbnN0IEZSQUdNRU5UX05BTUVfSU5GT19JRF8yID0gJzInO1xuZXhwb3J0IGNvbnN0IEZSQUdNRU5UX05BTUVfSU5GT19JRF8zID0gJzMnO1xuXG5leHBvcnQgY29uc3QgZ2V0VW5pcXVlRnJhZ21lbnROYW1lID0gKG5hbWU6IHN0cmluZywgaW5mbzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc3BsaXROYW1lID0gbmFtZS5zcGxpdCgnXycpO1xuICBjb25zdCBlbmRTdHIgPSBzcGxpdE5hbWUucG9wKCk7XG4gIGlmIChzcGxpdE5hbWUubGVuZ3RoID09PSAxIHx8ICFlbmRTdHIpIHJldHVybiBgJHtuYW1lfV8ke2VuY29kZSgnbi8nICsgaW5mbywgdHJ1ZSl9YDtcblxuICBjb25zdCBkZWNvZGVkSW5mbyA9IGRlY29kZShlbmRTdHIpO1xuICBjb25zdCBpc0FscmVhZHlVbmlxdWVOYW1lID0gZGVjb2RlZEluZm8uc3RhcnRzV2l0aCgnbi8nKTtcbiAgaWYgKCFpc0FscmVhZHlVbmlxdWVOYW1lKSByZXR1cm4gYCR7bmFtZX1fJHtlbmNvZGUoJ24vJyArIGluZm8sIHRydWUpfWA7XG5cbiAgcmV0dXJuIGAke3NwbGl0TmFtZS5qb2luKCdfJyl9XyR7ZW5jb2RlKGRlY29kZWRJbmZvICsgJy8nICsgaW5mbywgdHJ1ZSl9YDtcbn07XG5cbmV4cG9ydCB0eXBlIEFyZ3VtZW50RGVmaW5pdGlvbkRhdGEgPSB7IG5hbWU6IE5hbWVOb2RlOyB0eXBlOiBUeXBlTm9kZTsgZGVmYXVsdFZhbHVlPzogQ29uc3RWYWx1ZU5vZGUgfTtcbmV4cG9ydCBjb25zdCBnZXRBcmd1bWVudERlZmluaXRpb25EYXRhTGlzdCA9IChub2RlOiBEaXJlY3RpdmVOb2RlKTogQXJndW1lbnREZWZpbml0aW9uRGF0YVtdID0+IHtcbiAgaWYgKG5vZGUubmFtZS52YWx1ZSAhPT0gQVJHVU1FTlRfREVGSU5JVElPTlNfRElSRUNUSVZFX05BTUUpIHJldHVybiBbXTtcbiAgaWYgKCFub2RlLmFyZ3VtZW50cyB8fCBub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICBjb25zdCBsaXN0OiBBcmd1bWVudERlZmluaXRpb25EYXRhW10gPSBbXTtcblxuICAvLyBFeGFtcGxlOiBub2RlIGlzIEBhcmd1bWVudERlZmluaXRpb25zKGFyZzE6IHsgdHlwZTogXCJJbnRcIiwgZGVmYXVsdFZhbHVlOiAxMCB9KVxuICBub2RlLmFyZ3VtZW50cy5mb3JFYWNoKChhcmd1bWVudCkgPT4ge1xuICAgIGlmIChhcmd1bWVudC52YWx1ZS5raW5kICE9PSAnT2JqZWN0VmFsdWUnKSByZXR1cm47XG4gICAgY29uc3QgbmFtZSA9IGFyZ3VtZW50Lm5hbWU7IC8vIEV4YW1wbGU6IG5hbWUgaXMgYXJnMVxuXG4gICAgY29uc3QgdHlwZUZpZWxkID0gYXJndW1lbnQudmFsdWUuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAndHlwZScpO1xuICAgIGxldCB0eXBlU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVGaWVsZCAmJiB0eXBlRmllbGQudmFsdWUua2luZCA9PT0gS2luZC5TVFJJTkcpIHtcbiAgICAgIHR5cGVTdHJpbmcgPSB0eXBlRmllbGQudmFsdWUudmFsdWU7IC8vIEV4YW1wbGU6IHR5cGVTdHJpbmcgaXMgXCJJbnRcIlxuICAgIH1cbiAgICBpZiAoIXR5cGVTdHJpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZpZWxkID0gYXJndW1lbnQudmFsdWUuZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lLnZhbHVlID09PSAnZGVmYXVsdFZhbHVlJyk7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlRmllbGQ/LnZhbHVlOyAvLyBFeGFtcGxlOiBkZWZhdWx0VmFsdWUgaXMgMTBcbiAgICBsZXQgZGVmYXVsdENvbnN0VmFsdWU6IENvbnN0VmFsdWVOb2RlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlLmtpbmQgIT09IEtpbmQuVkFSSUFCTEUpIHtcbiAgICAgIGRlZmF1bHRDb25zdFZhbHVlID0gZGVmYXVsdFZhbHVlIGFzIENvbnN0VmFsdWVOb2RlO1xuICAgIH1cblxuICAgIGxpc3QucHVzaCh7IG5hbWUsIHR5cGU6IHBhcnNlVHlwZSh0eXBlU3RyaW5nKSwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0Q29uc3RWYWx1ZSB9KTtcbiAgfSk7XG4gIHJldHVybiBsaXN0O1xufTtcblxuLy8gVE9ETyA6IERlbGV0ZVxuZXhwb3J0IHR5cGUgQ2hhbmdlZEZyYWdtZW50cyA9IHsgW29yaWdpbmFsRnJhZ21lbnROYW1lOiBzdHJpbmddOiBGcmFnbWVudERlZmluaXRpb25Ob2RlW10gfTtcbmV4cG9ydCBjb25zdCBhZGRGcmFnbWVudFRvQ2hhbmdlZEZyYWdtZW50ID0gKHtcbiAgb3JpZ2luYWxGcmFnbWVudE5hbWUsXG4gIGNoYW5nZWRGcmFnbWVudHMsXG4gIGNoYW5nZWRGcmFnbWVudERlZmluaXRpb24sXG59OiB7XG4gIG9yaWdpbmFsRnJhZ21lbnROYW1lOiBzdHJpbmc7XG4gIGNoYW5nZWRGcmFnbWVudHM6IENoYW5nZWRGcmFnbWVudHM7XG4gIGNoYW5nZWRGcmFnbWVudERlZmluaXRpb246IEZyYWdtZW50RGVmaW5pdGlvbk5vZGU7XG59KTogQ2hhbmdlZEZyYWdtZW50cyA9PiB7XG4gIGNvbnN0IGRlZmluaXRpb25zID0gY2hhbmdlZEZyYWdtZW50c1tvcmlnaW5hbEZyYWdtZW50TmFtZV0gfHwgW107XG4gIGlmIChkZWZpbml0aW9ucy5maW5kKChkZWZpbml0aW9uKSA9PiBkZWZpbml0aW9uLm5hbWUudmFsdWUgPT09IGNoYW5nZWRGcmFnbWVudERlZmluaXRpb24ubmFtZS52YWx1ZSkpIHtcbiAgICByZXR1cm4gY2hhbmdlZEZyYWdtZW50cztcbiAgfVxuICBkZWZpbml0aW9ucy5wdXNoKGNoYW5nZWRGcmFnbWVudERlZmluaXRpb24pO1xuICBjaGFuZ2VkRnJhZ21lbnRzW29yaWdpbmFsRnJhZ21lbnROYW1lXSA9IGRlZmluaXRpb25zO1xuICByZXR1cm4gY2hhbmdlZEZyYWdtZW50cztcbn07XG5cbmV4cG9ydCBjb25zdCBleGlzdHNGcmFnbWVudERlZmluaXRpb25JbkNoYW5nZWRGcmFnbWVudHMgPSAoe1xuICBjaGFuZ2VkRnJhZ21lbnRzLFxuICBuZXdGcmFnbWVudE5hbWUsXG59OiB7XG4gIGNoYW5nZWRGcmFnbWVudHM6IENoYW5nZWRGcmFnbWVudHM7XG4gIG5ld0ZyYWdtZW50TmFtZTogc3RyaW5nO1xufSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBmcmFnbWVudERlZmluaXRpb25zID0gT2JqZWN0LmVudHJpZXMoY2hhbmdlZEZyYWdtZW50cylcbiAgICAubWFwKChbXywgZnJhZ21lbnRzXSkgPT4gZnJhZ21lbnRzKVxuICAgIC5mbGF0KCk7XG4gIHJldHVybiAhIWZyYWdtZW50RGVmaW5pdGlvbnMuZmluZCgoZGVmaW5pdGlvbikgPT4gZGVmaW5pdGlvbi5uYW1lLnZhbHVlID09PSBuZXdGcmFnbWVudE5hbWUpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQTJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVwQyxJQUFNQSxlQUFlLEdBQUcsU0FBbEJBLGVBQWUsQ0FBSUMsUUFBaUIsRUFBRUMsUUFBaUIsRUFBYztFQUNoRixJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsUUFBUSxDQUFDLElBQUlFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixRQUFRLENBQUMsRUFBRTtJQUN0RCxPQUFPRCxRQUFRLENBQUNJLE1BQU0sQ0FBQ0gsUUFBUSxDQUFDO0VBQ2xDO0FBQ0YsQ0FBQztBQUFDO0FBRUssSUFBTUksdUJBQXVCLEdBQUcsR0FBRztBQUFDO0FBQ3BDLElBQU1DLHVCQUF1QixHQUFHLEdBQUc7QUFBQztBQUNwQyxJQUFNQyx1QkFBdUIsR0FBRyxHQUFHO0FBQUM7QUFFcEMsSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQixDQUFJQyxJQUFZLEVBQUVDLElBQVksRUFBYTtFQUMzRSxJQUFNQyxTQUFTLEdBQUdGLElBQUksQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUNqQyxJQUFNQyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0csR0FBRyxFQUFFO0VBQzlCLElBQUlILFNBQVMsQ0FBQ0ksTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDRixNQUFNLEVBQUUsaUJBQVVKLElBQUksY0FBSSxJQUFBTyxjQUFNLEVBQUMsSUFBSSxHQUFHTixJQUFJLEVBQUUsSUFBSSxDQUFDO0VBRWxGLElBQU1PLFdBQVcsR0FBRyxJQUFBQyxjQUFNLEVBQUNMLE1BQU0sQ0FBQztFQUNsQyxJQUFNTSxtQkFBbUIsR0FBR0YsV0FBVyxD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