@aws-amplify/graphql-generator
Version:
GraphQL API code generator
98 lines • 4.56 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateModelsSync = exports.generateModels = void 0;
const path = __importStar(require("path"));
const graphql_1 = require("graphql");
const appSyncDataStoreCodeGen = __importStar(require("@aws-amplify/appsync-modelgen-plugin"));
const graphql_directives_1 = require("@aws-amplify/graphql-directives");
const core_1 = require("@graphql-codegen/core");
const core_2 = require("./vendor/@graphql-codegen/core");
const { version: packageVersion } = require('../package.json');
const directiveDefinitions = graphql_directives_1.DefaultDirectives.map(directive => directive.definition).join('\n');
function mapBuilderOptions(options) {
const { schema, target, directives = directiveDefinitions, isDataStoreEnabled, generateIndexRules = true, emitAuthProvider = true, useExperimentalPipelinedTransformer = true, transformerVersion = 2, respectPrimaryKeyAttributesOnConnectionField = true, improvePluralization = false, generateModelsForLazyLoadAndCustomSelectionSet = true, addTimestampFields = true, handleListNullabilityTransparently = true, } = options;
const parsedSchema = (0, graphql_1.parse)(schema);
const overrideOutputDir = '';
return {
schema: parsedSchema,
baseOutputDir: '',
config: {
target,
directives,
isDataStoreEnabled,
isTimestampFieldsAdded: addTimestampFields,
emitAuthProvider,
generateIndexRules,
handleListNullabilityTransparently,
usePipelinedTransformer: useExperimentalPipelinedTransformer,
transformerVersion,
respectPrimaryKeyAttributesOnConnectionField,
improvePluralization,
generateModelsForLazyLoadAndCustomSelectionSet,
codegenVersion: packageVersion,
overrideOutputDir,
},
presetConfig: {
overrideOutputDir,
target,
},
plugins: [
{
appSyncLocalCodeGen: {},
},
],
documents: [],
};
}
async function generateModels(options) {
const appsyncLocalConfig = await appSyncDataStoreCodeGen.preset.buildGeneratesSection({
...mapBuilderOptions(options),
pluginMap: {
appSyncLocalCodeGen: appSyncDataStoreCodeGen,
},
});
return Promise.all(appsyncLocalConfig.map(async (config) => {
var _a;
const content = await (0, core_1.codegen)(config);
return { [config.filename.split(((_a = path.win32) === null || _a === void 0 ? void 0 : _a.sep) || '\\').join(path.posix.sep)]: content };
})).then((outputs) => outputs.reduce((curr, next) => ({ ...curr, ...next }), {}));
}
exports.generateModels = generateModels;
function generateModelsSync(options) {
const appsyncLocalConfig = appSyncDataStoreCodeGen.presetSync.buildGeneratesSection({
...mapBuilderOptions(options),
pluginMap: {
appSyncLocalCodeGen: { ...appSyncDataStoreCodeGen, plugin: appSyncDataStoreCodeGen.pluginSync },
},
});
return appsyncLocalConfig.map(config => {
var _a;
const content = (0, core_2.codegen)(config);
return { [config.filename.split(((_a = path.win32) === null || _a === void 0 ? void 0 : _a.sep) || '\\').join(path.posix.sep)]: content };
}).reduce((curr, next) => ({ ...curr, ...next }), {});
}
exports.generateModelsSync = generateModelsSync;
//# sourceMappingURL=models.js.map