Socket
Socket
Sign inDemoInstall

@aws-amplify/graphql-transformer-core

Package Overview
Dependencies
Maintainers
9
Versions
410
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-amplify/graphql-transformer-core - npm Package Compare versions

Comparing version 3.0.1 to 3.1.0

lib/utils/ai/graphql-scalar-json-schema-definitions.d.ts

54

API.md

@@ -16,2 +16,3 @@ ## API Report File for "@aws-amplify/graphql-transformer-core"

import { CfnApiKey } from 'aws-cdk-lib/aws-appsync';
import { CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { CfnGraphQLSchema } from 'aws-cdk-lib/aws-appsync';

@@ -146,2 +147,5 @@ import { CfnParameter } from 'aws-cdk-lib';

// @public (undocumented)
export const convertNamedTypeToJSONSchema: (namedType: NamedTypeNode) => JSONSchema;
// @public (undocumented)
function createSyncLambdaIAMPolicy(context: TransformerContextProvider, scope: Construct, name: string, region?: string): iam.Policy;

@@ -301,2 +305,20 @@

// @public (undocumented)
export const GraphQLScalarJSONSchemaDefinition: {
Boolean: JSONSchema;
Int: JSONSchema;
Float: JSONSchema;
String: JSONSchema;
AWSDateTime: JSONSchema;
ID: JSONSchema;
AWSJSON: JSONSchema;
AWSEmail: JSONSchema;
AWSDate: JSONSchema;
AWSTime: JSONSchema;
AWSTimestamp: JSONSchema;
AWSPhone: JSONSchema;
AWSURL: JSONSchema;
AWSIPAddress: JSONSchema;
};
// @public (undocumented)
export class GraphQLTransform {

@@ -440,2 +462,5 @@ constructor(options: GraphQLTransformOptions);

// @public (undocumented)
export const isDisallowedScalarType: (type: string) => boolean;
// @public (undocumented)
export const isDynamoDbModel: (ctx: DataSourceStrategiesProvider, typename: string) => boolean;

@@ -470,2 +495,5 @@

// @public (undocumented)
export const isQueryType: (typeName: string) => typeName is "Query";
// @public (undocumented)
export const isSqlDbType: (dbType: ModelDataSourceStrategyDbType) => dbType is ModelDataSourceStrategySqlDbType;

@@ -480,2 +508,20 @@

// @public (undocumented)
export type JSONSchema = {
type: string;
properties?: Record<string, JSONSchema>;
required?: string[];
items?: JSONSchema;
enum?: (string | number | boolean | null)[];
minimum?: number;
maximum?: number;
minLength?: number;
maxLength?: number;
pattern?: string;
format?: string;
description?: string;
default?: JSONLike;
additionalProperties?: boolean | JSONSchema;
};
// @public (undocumented)
export class MappingTemplate {

@@ -622,2 +668,5 @@ // Warning: (ae-forgotten-export) The symbol "InlineTemplate" needs to be exported by the entry point index.d.ts

// @public (undocumented)
export const supportedScalarTypes: string[];
// @public (undocumented)
export type SyncConfig = SyncConfigOptimistic | SyncConfigServer | SyncConfigLambda;

@@ -778,5 +827,5 @@

export class TransformerResolver implements TransformerResolverProvider {
constructor(typeName: string, fieldName: string, resolverLogicalId: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, requestSlots: string[], responseSlots: string[], datasource?: DataSourceProvider | undefined);
constructor(typeName: string, fieldName: string, resolverLogicalId: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, requestSlots: string[], responseSlots: string[], datasource?: DataSourceProvider | undefined, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty | undefined);
// (undocumented)
addToSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider, dataSource?: DataSourceProvider) => void;
addToSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider, dataSource?: DataSourceProvider, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => void;
// Warning: (ae-forgotten-export) The symbol "Slot" needs to be exported by the entry point index.d.ts

@@ -829,2 +878,3 @@ //

// src/config/transformer-config.ts:26:3 - (ae-forgotten-export) The symbol "LambdaConflictHandler" needs to be exported by the entry point index.d.ts
// src/utils/ai/json-schema.ts:14:3 - (ae-forgotten-export) The symbol "JSONLike" needs to be exported by the entry point index.d.ts

@@ -831,0 +881,0 @@ // (No @packageDocumentation comment for this package)

3

lib/appsync-function.d.ts
import { MappingTemplateProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { BaseDataSource } from 'aws-cdk-lib/aws-appsync';
import { BaseDataSource, CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { Construct } from 'constructs';

@@ -13,2 +13,3 @@ import { GraphQLApi } from './graphql-api';

readonly dataSource: BaseDataSource | string;
readonly runtime: CfnFunctionConfiguration.AppSyncRuntimeProperty | undefined;
}

@@ -15,0 +16,0 @@ export declare class AppSyncFunctionConfiguration extends Construct {

@@ -6,4 +6,4 @@ "use strict";

const constructs_1 = require("constructs");
const template_asset_1 = require("./cdk-compat/template-asset");
const utils_1 = require("./utils");
const function_runtime_1 = require("./utils/function-runtime");
class AppSyncFunctionConfiguration extends constructs_1.Construct {

@@ -13,4 +13,3 @@ constructor(scope, id, props) {

super(scope, id);
const requestTemplate = props.requestMappingTemplate.bind(this, props.api.assetProvider);
const responseTemplate = props.responseMappingTemplate.bind(this, props.api.assetProvider);
const runtimeSpecificProps = (0, function_runtime_1.getRuntimeSpecificFunctionProps)(this, props);
this.function = new aws_appsync_1.CfnFunctionConfiguration(this, `${id}.AppSyncFunction`, {

@@ -22,8 +21,3 @@ name: id,

dataSourceName: props.dataSource instanceof aws_appsync_1.BaseDataSource ? props.dataSource.ds.attrName : props.dataSource,
...(props.requestMappingTemplate instanceof template_asset_1.InlineTemplate
? { requestMappingTemplate: requestTemplate }
: { requestMappingTemplateS3Location: requestTemplate }),
...(props.responseMappingTemplate instanceof template_asset_1.InlineTemplate
? { responseMappingTemplate: responseTemplate }
: { responseMappingTemplateS3Location: responseTemplate }),
...runtimeSpecificProps,
});

@@ -30,0 +24,0 @@ (0, utils_1.setResourceName)(this.function, { name: id });

@@ -5,4 +5,5 @@ export { constructDataSourceStrategies, constructSqlDirectiveDataSourceStrategies, getModelTypeNames, GraphQLTransform, GraphQLTransformOptions, SyncUtils, } from './transformation';

export { ConflictDetectionType, ConflictHandlerType, ResolverConfig, SyncConfig, SyncConfigOptimistic, SyncConfigServer, SyncConfigLambda, TransformConfig, } from './config/index';
export { APICategory, collectDirectives, collectDirectivesByTypeNames, constructArrayFieldsStatement, constructAuthFilterStatement, constructFieldMappingInput, constructNonScalarFieldsStatement, DirectiveWrapper, fieldsWithSqlDirective, generateGetArgumentsInput, GetArgumentsOptions, getArrayFields, getConditionInputName, getConnectionName, getDefaultStrategyNameForDbType, getField, getFilterInputName, getImportedRDSTypeFromStrategyDbType, getKeySchema, getModelDataSourceNameForTypeName, getModelDataSourceStrategy, getNonScalarFields, getParameterStoreSecretPath, getPrimaryKeyFieldNodes, getPrimaryKeyFields, getResourceName, getResourceNamesForStrategy, getResourceNamesForStrategyName, getSortKeyFieldNames, getStrategyDbTypeFromModel, getStrategyDbTypeFromTypeNode, getSubscriptionFilterInputName, getTable, getType, isAmplifyDynamoDbModelDataSourceStrategy, isBuiltInGraphqlNode, isDefaultDynamoDbModelDataSourceStrategy, isDynamoDbModel, isDynamoDbType, isModelType, isMutationNode, isObjectTypeDefinitionNode, isQueryNode, isSqlDbType, isSqlModel, isSqlStrategy, normalizeDbType, setResourceName, SQLLambdaResourceNames, } from './utils';
export { APICategory, collectDirectives, collectDirectivesByTypeNames, constructArrayFieldsStatement, constructAuthFilterStatement, constructFieldMappingInput, constructNonScalarFieldsStatement, DirectiveWrapper, fieldsWithSqlDirective, generateGetArgumentsInput, GetArgumentsOptions, getArrayFields, getConditionInputName, getConnectionName, getDefaultStrategyNameForDbType, getField, getFilterInputName, getImportedRDSTypeFromStrategyDbType, getKeySchema, getModelDataSourceNameForTypeName, getModelDataSourceStrategy, getNonScalarFields, getParameterStoreSecretPath, getPrimaryKeyFieldNodes, getPrimaryKeyFields, getResourceName, getResourceNamesForStrategy, getResourceNamesForStrategyName, getSortKeyFieldNames, getStrategyDbTypeFromModel, getStrategyDbTypeFromTypeNode, getSubscriptionFilterInputName, getTable, getType, isAmplifyDynamoDbModelDataSourceStrategy, isBuiltInGraphqlNode, isDefaultDynamoDbModelDataSourceStrategy, isDynamoDbModel, isDynamoDbType, isModelType, isMutationNode, isObjectTypeDefinitionNode, isQueryNode, isQueryType, isSqlDbType, isSqlModel, isSqlStrategy, normalizeDbType, setResourceName, SQLLambdaResourceNames, } from './utils';
export type { SetResourceNameProps } from './utils';
export { type JSONSchema, isDisallowedScalarType, supportedScalarTypes, GraphQLScalarJSONSchemaDefinition, convertNamedTypeToJSONSchema, } from './utils/ai';
export * from './utils/operation-names';

@@ -9,0 +10,0 @@ export * from './errors';

@@ -17,4 +17,4 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.isSqlDbType = exports.isQueryNode = exports.isObjectTypeDefinitionNode = exports.isMutationNode = exports.isModelType = exports.isDynamoDbType = exports.isDynamoDbModel = exports.isDefaultDynamoDbModelDataSourceStrategy = exports.isBuiltInGraphqlNode = exports.isAmplifyDynamoDbModelDataSourceStrategy = exports.getType = exports.getTable = exports.getSubscriptionFilterInputName = exports.getStrategyDbTypeFromTypeNode = exports.getStrategyDbTypeFromModel = exports.getSortKeyFieldNames = exports.getResourceNamesForStrategyName = exports.getResourceNamesForStrategy = exports.getResourceName = exports.getPrimaryKeyFields = exports.getPrimaryKeyFieldNodes = exports.getParameterStoreSecretPath = exports.getNonScalarFields = exports.getModelDataSourceStrategy = exports.getModelDataSourceNameForTypeName = exports.getKeySchema = exports.getImportedRDSTypeFromStrategyDbType = exports.getFilterInputName = exports.getField = exports.getDefaultStrategyNameForDbType = exports.getConnectionName = exports.getConditionInputName = exports.getArrayFields = exports.generateGetArgumentsInput = exports.fieldsWithSqlDirective = exports.DirectiveWrapper = exports.constructNonScalarFieldsStatement = exports.constructFieldMappingInput = exports.constructAuthFilterStatement = exports.constructArrayFieldsStatement = exports.collectDirectivesByTypeNames = exports.collectDirectives = exports.APICategory = exports.ConflictHandlerType = exports.validateModelSchema = exports.SyncUtils = exports.GraphQLTransform = exports.getModelTypeNames = exports.constructSqlDirectiveDataSourceStrategies = exports.constructDataSourceStrategies = void 0;
exports.ObjectDefinitionWrapper = exports.InputObjectDefinitionWrapper = exports.InputFieldWrapper = exports.FieldWrapper = exports.EnumWrapper = exports.MappingTemplate = exports.getAppSyncServiceExtraDirectives = exports.SQL_SCHEMA_FILE_NAME = exports.POSTGRES_DB_TYPE = exports.MYSQL_DB_TYPE = exports.ImportedRDSType = exports.DDB_DEFAULT_DATASOURCE_STRATEGY = exports.DDB_DB_TYPE = exports.DDB_AMPLIFY_MANAGED_DATASOURCE_STRATEGY = exports.StackManager = exports.TransformerResolver = exports.TransformerAuthBase = exports.TransformerPluginBase = exports.TransformerModelEnhancerBase = exports.TransformerModelBase = exports.setResourceName = exports.normalizeDbType = exports.isSqlStrategy = exports.isSqlModel = void 0;
exports.isQueryType = exports.isQueryNode = exports.isObjectTypeDefinitionNode = exports.isMutationNode = exports.isModelType = exports.isDynamoDbType = exports.isDynamoDbModel = exports.isDefaultDynamoDbModelDataSourceStrategy = exports.isBuiltInGraphqlNode = exports.isAmplifyDynamoDbModelDataSourceStrategy = exports.getType = exports.getTable = exports.getSubscriptionFilterInputName = exports.getStrategyDbTypeFromTypeNode = exports.getStrategyDbTypeFromModel = exports.getSortKeyFieldNames = exports.getResourceNamesForStrategyName = exports.getResourceNamesForStrategy = exports.getResourceName = exports.getPrimaryKeyFields = exports.getPrimaryKeyFieldNodes = exports.getParameterStoreSecretPath = exports.getNonScalarFields = exports.getModelDataSourceStrategy = exports.getModelDataSourceNameForTypeName = exports.getKeySchema = exports.getImportedRDSTypeFromStrategyDbType = exports.getFilterInputName = exports.getField = exports.getDefaultStrategyNameForDbType = exports.getConnectionName = exports.getConditionInputName = exports.getArrayFields = exports.generateGetArgumentsInput = exports.fieldsWithSqlDirective = exports.DirectiveWrapper = exports.constructNonScalarFieldsStatement = exports.constructFieldMappingInput = exports.constructAuthFilterStatement = exports.constructArrayFieldsStatement = exports.collectDirectivesByTypeNames = exports.collectDirectives = exports.APICategory = exports.ConflictHandlerType = exports.validateModelSchema = exports.SyncUtils = exports.GraphQLTransform = exports.getModelTypeNames = exports.constructSqlDirectiveDataSourceStrategies = exports.constructDataSourceStrategies = void 0;
exports.ObjectDefinitionWrapper = exports.InputObjectDefinitionWrapper = exports.InputFieldWrapper = exports.FieldWrapper = exports.EnumWrapper = exports.MappingTemplate = exports.getAppSyncServiceExtraDirectives = exports.SQL_SCHEMA_FILE_NAME = exports.POSTGRES_DB_TYPE = exports.MYSQL_DB_TYPE = exports.ImportedRDSType = exports.DDB_DEFAULT_DATASOURCE_STRATEGY = exports.DDB_DB_TYPE = exports.DDB_AMPLIFY_MANAGED_DATASOURCE_STRATEGY = exports.StackManager = exports.TransformerResolver = exports.TransformerAuthBase = exports.TransformerPluginBase = exports.TransformerModelEnhancerBase = exports.TransformerModelBase = exports.convertNamedTypeToJSONSchema = exports.GraphQLScalarJSONSchemaDefinition = exports.supportedScalarTypes = exports.isDisallowedScalarType = exports.setResourceName = exports.normalizeDbType = exports.isSqlStrategy = exports.isSqlModel = exports.isSqlDbType = void 0;
const graphql_1 = require("graphql");

@@ -75,2 +75,3 @@ const validation_1 = require("./transformation/validation");

Object.defineProperty(exports, "isQueryNode", { enumerable: true, get: function () { return utils_1.isQueryNode; } });
Object.defineProperty(exports, "isQueryType", { enumerable: true, get: function () { return utils_1.isQueryType; } });
Object.defineProperty(exports, "isSqlDbType", { enumerable: true, get: function () { return utils_1.isSqlDbType; } });

@@ -81,2 +82,7 @@ Object.defineProperty(exports, "isSqlModel", { enumerable: true, get: function () { return utils_1.isSqlModel; } });

Object.defineProperty(exports, "setResourceName", { enumerable: true, get: function () { return utils_1.setResourceName; } });
var ai_1 = require("./utils/ai");
Object.defineProperty(exports, "isDisallowedScalarType", { enumerable: true, get: function () { return ai_1.isDisallowedScalarType; } });
Object.defineProperty(exports, "supportedScalarTypes", { enumerable: true, get: function () { return ai_1.supportedScalarTypes; } });
Object.defineProperty(exports, "GraphQLScalarJSONSchemaDefinition", { enumerable: true, get: function () { return ai_1.GraphQLScalarJSONSchemaDefinition; } });
Object.defineProperty(exports, "convertNamedTypeToJSONSchema", { enumerable: true, get: function () { return ai_1.convertNamedTypeToJSONSchema; } });
__exportStar(require("./utils/operation-names"), exports);

@@ -83,0 +89,0 @@ __exportStar(require("./errors"), exports);

import { DynamoDbDataSourceOptions, MappingTemplateProvider, SearchableDataSourceOptions, TransformHostProvider, VpcConfig } from '@aws-amplify/graphql-transformer-interfaces';
import { BaseDataSource, DataSourceOptions, DynamoDbDataSource, HttpDataSource, HttpDataSourceOptions, LambdaDataSource, NoneDataSource, CfnResolver } from 'aws-cdk-lib/aws-appsync';
import { BaseDataSource, DataSourceOptions, DynamoDbDataSource, HttpDataSource, HttpDataSourceOptions, LambdaDataSource, NoneDataSource, CfnResolver, CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { ITable } from 'aws-cdk-lib/aws-dynamodb';

@@ -30,4 +30,4 @@ import { IRole } from 'aws-cdk-lib/aws-iam';

addLambdaDataSource: (name: string, lambdaFunction: IFunction, options?: DataSourceOptions, scope?: Construct) => LambdaDataSource;
addAppSyncFunction: (name: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, dataSourceName: string, scope?: Construct) => AppSyncFunctionConfiguration;
addResolver: (typeName: string, fieldName: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, resolverLogicalId?: string, dataSourceName?: string, pipelineConfig?: string[], scope?: Construct) => CfnResolver;
addAppSyncFunction: (name: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, dataSourceName: string, scope?: Construct, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => AppSyncFunctionConfiguration;
addResolver: (typeName: string, fieldName: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, resolverLogicalId?: string, dataSourceName?: string, pipelineConfig?: string[], scope?: Construct, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => CfnResolver;
addLambdaFunction: (functionName: string, functionKey: string, handlerName: string, filePath: string, runtime: Runtime, layers?: ILayerVersion[], role?: IRole, environment?: {

@@ -34,0 +34,0 @@ [key: string]: string;

@@ -16,2 +16,3 @@ "use strict";

const utils_1 = require("./utils");
const function_runtime_1 = require("./utils/function-runtime");
class DefaultTransformHost {

@@ -62,3 +63,3 @@ constructor(options) {

};
this.addAppSyncFunction = (name, requestMappingTemplate, responseMappingTemplate, dataSourceName, scope) => {
this.addAppSyncFunction = (name, requestMappingTemplate, responseMappingTemplate, dataSourceName, scope, runtime) => {
if (dataSourceName && !aws_cdk_lib_1.Token.isUnresolved(dataSourceName) && !this.dataSources.has(dataSourceName)) {

@@ -85,2 +86,3 @@ throw new Error(`DataSource ${dataSourceName} is missing in the API`);

responseMappingTemplate,
runtime,
});

@@ -90,10 +92,14 @@ this.appsyncFunctions.set(slotHash, fn);

};
this.addResolver = (typeName, fieldName, requestMappingTemplate, responseMappingTemplate, resolverLogicalId, dataSourceName, pipelineConfig, scope) => {
this.addResolver = (typeName, fieldName, requestMappingTemplate, responseMappingTemplate, resolverLogicalId, dataSourceName, pipelineConfig, scope, runtime) => {
if (dataSourceName && !aws_cdk_lib_1.Token.isUnresolved(dataSourceName) && !this.dataSources.has(dataSourceName)) {
throw new Error(`DataSource ${dataSourceName} is missing in the API`);
}
const requestTemplateLocation = requestMappingTemplate.bind(this.api, this.api.assetProvider);
const responseTemplateLocation = responseMappingTemplate.bind(this.api, this.api.assetProvider);
const resolverName = (0, graphql_transformer_common_1.toCamelCase)([(0, graphql_transformer_common_1.resourceName)(typeName), (0, graphql_transformer_common_1.resourceName)(fieldName), 'Resolver']);
const resourceId = resolverLogicalId !== null && resolverLogicalId !== void 0 ? resolverLogicalId : graphql_transformer_common_1.ResolverResourceIDs.ResolverResourceID(typeName, fieldName);
const runtimeSpecificProps = (0, function_runtime_1.getRuntimeSpecificFunctionProps)(this.api, {
requestMappingTemplate,
responseMappingTemplate,
runtime,
api: this.api,
});
if (dataSourceName) {

@@ -107,8 +113,3 @@ const dataSource = this.dataSources.get(dataSourceName);

dataSourceName: (dataSource === null || dataSource === void 0 ? void 0 : dataSource.ds.attrName) || dataSourceName,
...(requestMappingTemplate instanceof template_asset_1.InlineTemplate
? { requestMappingTemplate: requestTemplateLocation }
: { requestMappingTemplateS3Location: requestTemplateLocation }),
...(responseMappingTemplate instanceof template_asset_1.InlineTemplate
? { responseMappingTemplate: responseTemplateLocation }
: { responseMappingTemplateS3Location: responseTemplateLocation }),
...runtimeSpecificProps,
});

@@ -126,11 +127,6 @@ resolver.overrideLogicalId(resourceId);

kind: 'PIPELINE',
...(requestMappingTemplate instanceof template_asset_1.InlineTemplate
? { requestMappingTemplate: requestTemplateLocation }
: { requestMappingTemplateS3Location: requestTemplateLocation }),
...(responseMappingTemplate instanceof template_asset_1.InlineTemplate
? { responseMappingTemplate: responseTemplateLocation }
: { responseMappingTemplateS3Location: responseTemplateLocation }),
pipelineConfig: {
functions: pipelineConfig,
},
...runtimeSpecificProps,
});

@@ -137,0 +133,0 @@ resolver.overrideLogicalId(resourceId);

import { AppSyncFunctionConfigurationProvider, DataSourceProvider, GraphQLAPIProvider, MappingTemplateProvider, TransformerContextProvider, TransformerResolverProvider, TransformerResolversManagerProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { Stack } from 'aws-cdk-lib';

@@ -8,2 +9,3 @@ import { Construct } from 'constructs';

dataSource?: DataSourceProvider;
runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty;
};

@@ -31,9 +33,10 @@ export declare const NONE_DATA_SOURCE_NAME = "NONE_DS";

private datasource?;
private runtime?;
private readonly slotMap;
private readonly slotNames;
private scope?;
constructor(typeName: string, fieldName: string, resolverLogicalId: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, requestSlots: string[], responseSlots: string[], datasource?: DataSourceProvider | undefined);
constructor(typeName: string, fieldName: string, resolverLogicalId: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, requestSlots: string[], responseSlots: string[], datasource?: DataSourceProvider | undefined, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty | undefined);
mapToStack: (stack: Stack) => void;
setScope: (scope: Construct) => void;
addToSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider, dataSource?: DataSourceProvider) => void;
addToSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider, dataSource?: DataSourceProvider, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => void;
slotExists: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider) => boolean;

@@ -46,4 +49,5 @@ findSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider) => Slot | undefined;

private ensureNoneDataSource;
private createStashStatementGenerator;
}
export {};
//# sourceMappingURL=resolver.d.ts.map

@@ -33,2 +33,3 @@ "use strict";

const SyncUtils = __importStar(require("../transformation/sync-utils"));
const function_runtime_1 = require("../utils/function-runtime");
exports.NONE_DATA_SOURCE_NAME = 'NONE_DS';

@@ -73,3 +74,3 @@ class ResolverManager {

class TransformerResolver {
constructor(typeName, fieldName, resolverLogicalId, requestMappingTemplate, responseMappingTemplate, requestSlots, responseSlots, datasource) {
constructor(typeName, fieldName, resolverLogicalId, requestMappingTemplate, responseMappingTemplate, requestSlots, responseSlots, datasource, runtime) {
this.typeName = typeName;

@@ -83,2 +84,3 @@ this.fieldName = fieldName;

this.datasource = datasource;
this.runtime = runtime;
this.slotMap = new Map();

@@ -91,3 +93,3 @@ this.mapToStack = (stack) => {

};
this.addToSlot = (slotName, requestMappingTemplate, responseMappingTemplate, dataSource) => {
this.addToSlot = (slotName, requestMappingTemplate, responseMappingTemplate, dataSource, runtime) => {
if (!this.slotNames.has(slotName)) {

@@ -111,2 +113,3 @@ throw new Error(`Resolver is missing slot ${slotName}`);

dataSource,
runtime,
});

@@ -155,3 +158,4 @@ }

[this.requestMappingTemplate, this.requestMappingTemplate].map((template) => this.substituteSlotInfo(template, 'main', 0));
const dataSourceProviderFn = api.host.addAppSyncFunction((0, graphql_transformer_common_1.toPascalCase)([this.typeName, this.fieldName, 'DataResolverFn']), this.requestMappingTemplate, this.responseMappingTemplate, ((_a = this.datasource) === null || _a === void 0 ? void 0 : _a.name) || exports.NONE_DATA_SOURCE_NAME, scope);
const dataSourceProviderFn = api.host.addAppSyncFunction((0, graphql_transformer_common_1.toPascalCase)([this.typeName, this.fieldName, 'DataResolverFn']), this.requestMappingTemplate, this.responseMappingTemplate, ((_a = this.datasource) === null || _a === void 0 ? void 0 : _a.name) || exports.NONE_DATA_SOURCE_NAME, scope, this.runtime);
const { stashString, stashExpression } = this.createStashStatementGenerator(this.runtime);
let dataSourceType = 'NONE';

@@ -165,3 +169,3 @@ let dataSource = '';

const tableName = (_b = this.datasource.ds.dynamoDbConfig) === null || _b === void 0 ? void 0 : _b.tableName;
dataSource = `$util.qr($ctx.stash.put("tableName", "${tableName}"))`;
dataSource = stashString({ name: 'tableName', value: tableName });
if (((_c = this.datasource.ds.dynamoDbConfig) === null || _c === void 0 ? void 0 : _c.deltaSyncConfig) &&

@@ -182,3 +186,3 @@ !(0, aws_cdk_lib_1.isResolvableObject)((_d = this.datasource.ds.dynamoDbConfig) === null || _d === void 0 ? void 0 : _d.deltaSyncConfig)) {

});
dataSource += `\n$util.qr($ctx.stash.put("deltaSyncTableTtl", ${deltaSyncTableTtl}))`;
dataSource += '\n' + stashString({ name: 'deltaSyncTableTtl', value: deltaSyncTableTtl });
}

@@ -208,3 +212,3 @@ }

const endpoint = (_e = this.datasource.ds.elasticsearchConfig) === null || _e === void 0 ? void 0 : _e.endpoint;
dataSource = `$util.qr($ctx.stash.put("endpoint", "${endpoint}"))`;
dataSource = stashString({ name: 'endpoint', value: endpoint });
}

@@ -215,3 +219,3 @@ break;

const lambdaFunctionArn = (_f = this.datasource.ds.lambdaConfig) === null || _f === void 0 ? void 0 : _f.lambdaFunctionArn;
dataSource = `$util.qr($ctx.stash.put("lambdaFunctionArn", "${lambdaFunctionArn}"))`;
dataSource = stashString({ name: 'lambdaFunctionArn', value: lambdaFunctionArn });
}

@@ -222,3 +226,3 @@ break;

const endpoint = (_g = this.datasource.ds.httpConfig) === null || _g === void 0 ? void 0 : _g.endpoint;
dataSource = `$util.qr($ctx.stash.put("endpoint", "${endpoint}"))`;
dataSource = stashString({ name: 'endpoint', value: endpoint });
}

@@ -231,3 +235,3 @@ break;

const databaseName = (_j = this.datasource.ds.relationalDatabaseConfig) === null || _j === void 0 ? void 0 : _j.rdsHttpEndpointConfig.databaseName;
dataSource = `$util.qr($ctx.stash.metadata.put("databaseName", "${databaseName}"))`;
dataSource = stashString({ name: 'databaseName', value: databaseName });
}

@@ -240,9 +244,9 @@ break;

let initResolver = (0, ts_dedent_1.dedent) `
$util.qr($ctx.stash.put("typeName", "${this.typeName}"))
$util.qr($ctx.stash.put("fieldName", "${this.fieldName}"))
$util.qr($ctx.stash.put("conditions", []))
$util.qr($ctx.stash.put("metadata", {}))
$util.qr($ctx.stash.metadata.put("dataSourceType", "${dataSourceType}"))
$util.qr($ctx.stash.metadata.put("apiId", "${api.apiId}"))
$util.qr($ctx.stash.put("connectionAttributes", {}))
${stashString({ name: 'typeName', value: this.typeName })}
${stashString({ name: 'fieldName', value: this.fieldName })}
${stashExpression({ name: 'conditions', value: '[]' })}
${stashExpression({ name: 'metadata', value: '{}' })}
${stashString({ name: 'dataSourceType', value: dataSourceType, object: 'metadata' })}
${stashString({ name: 'apiId', value: api.apiId, object: 'metadata' })}
${stashExpression({ name: 'connectionAttributes', value: '{}' })}
${dataSource}

@@ -253,4 +257,6 @@ `;

if (authRole) {
const authRoleArn = `arn:aws:sts::${account}:assumed-role/${authRole}/CognitoIdentityCredentials`;
const authRoleStatement = stashString({ name: 'authRole', value: authRoleArn });
initResolver += (0, ts_dedent_1.dedent) `\n
$util.qr($ctx.stash.put("authRole", "arn:aws:sts::${account}:assumed-role/${authRole}/CognitoIdentityCredentials"))
${authRoleStatement}
`;

@@ -260,4 +266,6 @@ }

if (unauthRole) {
const unauthRoleArn = `arn:aws:sts::${account}:assumed-role/${unauthRole}/CognitoIdentityCredentials`;
const unauthRoleStatement = stashString({ name: 'unauthRole', value: unauthRoleArn });
initResolver += (0, ts_dedent_1.dedent) `\n
$util.qr($ctx.stash.put("unauthRole", "arn:aws:sts::${account}:assumed-role/${unauthRole}/CognitoIdentityCredentials"))
${unauthRoleStatement}
`;

@@ -267,13 +275,32 @@ }

if (identityPoolId) {
const identityPoolStatement = stashString({ name: 'identityPoolId', value: identityPoolId });
initResolver += (0, ts_dedent_1.dedent) `\n
$util.qr($ctx.stash.put("identityPoolId", "${identityPoolId}"))
${identityPoolStatement}
`;
}
const adminRoles = (_k = context.synthParameters.adminRoles) !== null && _k !== void 0 ? _k : [];
const adminRolesStatement = stashExpression({ name: 'adminRoles', value: JSON.stringify(adminRoles) });
initResolver += (0, ts_dedent_1.dedent) `\n
$util.qr($ctx.stash.put("adminRoles", ${JSON.stringify(adminRoles)}))
${adminRolesStatement}
`;
initResolver += '\n$util.toJson({})';
api.host.addResolver(this.typeName, this.fieldName, cdk_compat_1.MappingTemplate.inlineTemplateFromString(initResolver), cdk_compat_1.MappingTemplate.inlineTemplateFromString('$util.toJson($ctx.prev.result)'), this.resolverLogicalId, undefined, [...requestFns, dataSourceProviderFn, ...responseFns].map((fn) => fn.functionId), scope);
if ((0, function_runtime_1.isJsResolverFnRuntime)(this.runtime)) {
initResolver = (0, ts_dedent_1.dedent) `
export const request = (ctx) => {
${initResolver}
return {};
}
`;
}
else {
initResolver += '\n$util.toJson({})';
}
const initResponseResolver = (0, function_runtime_1.isJsResolverFnRuntime)(this.runtime)
? (0, ts_dedent_1.dedent) `
export const response = (ctx) => {
return ctx.prev.result;
};
`
: '$util.toJson($ctx.prev.result)';
api.host.addResolver(this.typeName, this.fieldName, cdk_compat_1.MappingTemplate.inlineTemplateFromString(initResolver), cdk_compat_1.MappingTemplate.inlineTemplateFromString(initResponseResolver), this.resolverLogicalId, undefined, [...requestFns, dataSourceProviderFn, ...responseFns].map((fn) => fn.functionId), scope, this.runtime);
};
this.synthesizeResolvers = (scope, api, slotsNames) => {

@@ -290,3 +317,3 @@ const appSyncFunctions = [];

responseMappingTemplate && this.substituteSlotInfo(responseMappingTemplate, slotName, index);
const fn = api.host.addAppSyncFunction(name, requestMappingTemplate || cdk_compat_1.MappingTemplate.inlineTemplateFromString('$util.toJson({})'), responseMappingTemplate || cdk_compat_1.MappingTemplate.inlineTemplateFromString('$util.toJson({})'), (dataSource === null || dataSource === void 0 ? void 0 : dataSource.name) || exports.NONE_DATA_SOURCE_NAME, scope);
const fn = api.host.addAppSyncFunction(name, requestMappingTemplate || cdk_compat_1.MappingTemplate.inlineTemplateFromString('$util.toJson({})'), responseMappingTemplate || cdk_compat_1.MappingTemplate.inlineTemplateFromString('$util.toJson({})'), (dataSource === null || dataSource === void 0 ? void 0 : dataSource.name) || exports.NONE_DATA_SOURCE_NAME, scope, slotItem.runtime);
appSyncFunctions.push(fn);

@@ -333,4 +360,25 @@ }

}
createStashStatementGenerator(runtime) {
const jsStash = (props) => {
const { name, value, object } = props;
const objectPrefix = object ? `.${object}` : '';
return `ctx.stash${objectPrefix}.${name} = ${value};`;
};
const generateJsStashStatement = {
stashExpression: (props) => jsStash(props),
stashString: (props) => jsStash({ ...props, value: `"${props.value}"` }),
};
const vtlStash = (props) => {
const { name, value, object } = props;
const objectPrefix = object ? `.${object}` : '';
return `$util.qr($ctx.stash${objectPrefix}.put("${name}", ${value}))`;
};
const generateVtlStashStatement = {
stashExpression: (props) => vtlStash(props),
stashString: (props) => vtlStash({ ...props, value: `"${props.value}"` }),
};
return (0, function_runtime_1.isJsResolverFnRuntime)(runtime) ? generateJsStashStatement : generateVtlStashStatement;
}
}
exports.TransformerResolver = TransformerResolver;
//# sourceMappingURL=resolver.js.map
{
"name": "@aws-amplify/graphql-transformer-core",
"version": "3.0.1",
"version": "3.1.0",
"description": "A framework to transform from GraphQL SDL to AWS CloudFormation.",

@@ -32,8 +32,8 @@ "repository": {

"dependencies": {
"@aws-amplify/graphql-directives": "2.0.0",
"@aws-amplify/graphql-transformer-interfaces": "4.0.1",
"@aws-amplify/graphql-directives": "2.1.0",
"@aws-amplify/graphql-transformer-interfaces": "4.1.0",
"fs-extra": "^8.1.0",
"graphql": "^15.5.0",
"graphql-mapping-template": "5.0.0",
"graphql-transformer-common": "5.0.0",
"graphql-mapping-template": "5.0.1",
"graphql-transformer-common": "5.0.1",
"hjson": "^3.2.2",

@@ -53,3 +53,3 @@ "lodash": "^4.17.21",

"@types/md5": "^2.3.1",
"@types/node": "^12.12.6",
"@types/node": "^18.0.0",
"@types/object-hash": "^2.2.1",

@@ -62,3 +62,5 @@ "@types/uuid": "^9.0.1"

},
"testURL": "http://localhost",
"testEnvironmentOptions": {
"url": "http://localhost"
},
"testRegex": "(src/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",

@@ -86,3 +88,2 @@ "moduleFileExtensions": [

],
"testEnvironment": "../../FixJestEnvironment.js",
"collectCoverageFrom": [

@@ -93,5 +94,9 @@ "src/**/*.ts"

"/__tests__/"
]
],
"snapshotFormat": {
"escapeString": true,
"printBasicPrototype": true
}
},
"gitHead": "ff03cb41e09b3a91d1095efe0fb20f3520a5d671"
"gitHead": "47cbcc39b5c28486ff5759d29efee07725bb8b55"
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc