@aws-amplify/graphql-transformer-core
Version:
A framework to transform from GraphQL SDL to AWS CloudFormation.
126 lines • 4.97 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.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