UNPKG

@aws-amplify/graphql-transformer-core

Version:

A framework to transform from GraphQL SDL to AWS CloudFormation.

126 lines 4.97 kB
"use strict"; 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.MappingTemplate = exports.InlineTemplate = exports.S3MappingTemplate = exports.S3MappingJSResolverFunctionCode = exports.S3MappingFunctionCode = void 0; const crypto = __importStar(require("crypto")); const graphql_transformer_interfaces_1 = require("@aws-amplify/graphql-transformer-interfaces"); class S3MappingFunctionCode { constructor(fileName, filePath) { this.type = graphql_transformer_interfaces_1.MappingTemplateType.S3_LOCATION; this.fileName = fileName; this.filePath = filePath; } bind(scope, assetProvider) { if (!this.asset) { this.asset = assetProvider.provide(scope, `Code${this.fileName}`, { fileContent: this.filePath, fileName: this.fileName, }); } return this.asset; } } exports.S3MappingFunctionCode = S3MappingFunctionCode; class S3MappingJSResolverFunctionCode { constructor(content, name) { this.type = graphql_transformer_interfaces_1.MappingTemplateType.S3_LOCATION; this.content = content; const assetHash = crypto.createHash('sha256').update(content).digest('hex'); this.name = name || `function-code-${assetHash}.js`; } bind(scope, assetProvider) { if (!this.asset) { this.asset = assetProvider.provide(scope, `Code${this.name}`, { fileContent: this.content, fileName: this.name, }); } return this.asset.s3ObjectUrl; } getTemplateHash() { return crypto.createHash('sha256').update(this.content).digest('base64'); } } exports.S3MappingJSResolverFunctionCode = S3MappingJSResolverFunctionCode; class S3MappingTemplate { static fromInlineTemplate(code, templateName) { return new S3MappingTemplate(code, templateName); } constructor(content, name) { this.type = graphql_transformer_interfaces_1.MappingTemplateType.S3_LOCATION; this.content = content; const assetHash = crypto.createHash('sha256').update(content).digest('hex'); this.name = name || `mapping-template-${assetHash}.vtl`; } bind(scope, assetProvider) { if (!this.asset) { this.asset = assetProvider.provide(scope, `Template${this.name}`, { fileContent: this.content, fileName: this.name, }); } return this.asset.s3ObjectUrl; } getTemplateHash() { return crypto.createHash('sha256').update(this.content).digest('base64'); } substituteValues(values) { let { name } = this; Object.entries(values).forEach(([key, value]) => { const regex = new RegExp(`({${key}})`, 'g'); name = name.replace(regex, `${value}`); }); this.name = name; } } exports.S3MappingTemplate = S3MappingTemplate; class InlineTemplate { constructor(content) { this.content = content; this.type = graphql_transformer_interfaces_1.MappingTemplateType.INLINE; } bind() { return this.content; } getTemplateHash() { return crypto.createHash('sha256').update(this.content).digest('base64'); } } exports.InlineTemplate = InlineTemplate; class MappingTemplate { static inlineTemplateFromString(template) { return new InlineTemplate(template); } static s3MappingTemplateFromString(template, templateName) { const templatePrefix = 'resolvers'; return new S3MappingTemplate(template, `${templatePrefix}/${templateName}`); } static s3MappingFunctionCodeFromString(template, templateName) { const templatePrefix = 'resolvers'; return new S3MappingJSResolverFunctionCode(template, `${templatePrefix}/${templateName}`); } } exports.MappingTemplate = MappingTemplate; //# sourceMappingURL=template-asset.js.map