From 2f03054514a7013bc60d489c419791a294e1a357 Mon Sep 17 00:00:00 2001 From: Andrea Child Date: Tue, 4 Feb 2025 17:33:49 -0800 Subject: [PATCH] Changed lambda template to use ECMAScripts modules which is the official standard instead of CommonJS. --- templates/JSResolverOCHTTPSTemplate.js | 19 +++++++---------- templates/Lambda4AppSyncGraphSDK/package.json | 1 + templates/Lambda4AppSyncHTTP/package.json | 1 + templates/Lambda4AppSyncSDK/package.json | 1 + test/TestCases/Case01/Case01.03.test.js | 2 +- test/TestCases/Case01/Case01.04.test.js | 2 +- test/TestCases/Case01/Case01.05.test.js | 2 +- test/TestCases/Case01/case.json | 4 ++-- ...aphql.cjs => output.jsresolver.graphql.js} | 21 ++++++++----------- .../output.resolver.graphql.js | 21 ++++++++----------- test/TestCases/Case02/case.json | 2 +- .../output.resolver.graphql.js | 21 ++++++++----------- 12 files changed, 44 insertions(+), 53 deletions(-) rename test/TestCases/Case01/outputReference/{output.resolver.graphql.cjs => output.jsresolver.graphql.js} (99%) diff --git a/templates/JSResolverOCHTTPSTemplate.js b/templates/JSResolverOCHTTPSTemplate.js index 4da30e1..4fbf220 100644 --- a/templates/JSResolverOCHTTPSTemplate.js +++ b/templates/JSResolverOCHTTPSTemplate.js @@ -10,8 +10,8 @@ express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const { astFromValue, buildASTSchema, typeFromAST } = require('graphql'); -const gql = require('graphql-tag'); // GraphQL library to parse the GraphQL query +import { astFromValue, buildASTSchema, typeFromAST } from 'graphql'; +import { gql } from 'graphql-tag'; // GraphQL library to parse the GraphQL query const useCallSubquery = false; @@ -24,7 +24,7 @@ const schemaDataModel = JSON.parse(schemaDataModelJSON); const schema = buildASTSchema(schemaDataModel, { assumeValidSDL: true }); -function resolveGraphDBQueryFromAppSyncEvent(event) { +export function resolveGraphDBQueryFromAppSyncEvent(event) { const fieldDef = getFieldDef(event.field); const args = []; @@ -67,9 +67,9 @@ function resolveGraphDBQueryFromAppSyncEvent(event) { const graphQuery = resolveGraphDBQuery(obj); return graphQuery; } - - -function resolveGraphDBQueryFromApolloQueryEvent(event) { + + +export function resolveGraphDBQueryFromApolloQueryEvent(event) { // TODO } @@ -977,7 +977,7 @@ function gremlinElementToJson(o, fieldsAlias) { } -function refactorGremlinqueryOutput(queryResult, fieldsAlias) { +export function refactorGremlinqueryOutput(queryResult, fieldsAlias) { //const r = JSON.parse(queryResult).result.data; const r = queryResult; @@ -1082,7 +1082,7 @@ function parseQueryInput(queryObjOrStr) { * @param {(Object|string)} queryObjOrStr the GraphQL document containing an operation to resolve * @returns {string} */ -function resolveGraphDBQuery(queryObjOrStr) { +export function resolveGraphDBQuery(queryObjOrStr) { let executeQuery = { query:'', parameters: {}, language: 'opencypher', refactorOutput: null }; const obj = parseQueryInput(queryObjOrStr); @@ -1106,6 +1106,3 @@ function resolveGraphDBQuery(queryObjOrStr) { return executeQuery; } - - -module.exports = { resolveGraphDBQueryFromAppSyncEvent, resolveGraphDBQueryFromApolloQueryEvent, resolveGraphDBQuery, refactorGremlinqueryOutput }; diff --git a/templates/Lambda4AppSyncGraphSDK/package.json b/templates/Lambda4AppSyncGraphSDK/package.json index 463e282..bdbd953 100644 --- a/templates/Lambda4AppSyncGraphSDK/package.json +++ b/templates/Lambda4AppSyncGraphSDK/package.json @@ -3,6 +3,7 @@ "version": "1.1.1", "description": "AWS Lambda function to bridge AppSync to Neptune Analytics", "main": "index.mjs", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/templates/Lambda4AppSyncHTTP/package.json b/templates/Lambda4AppSyncHTTP/package.json index ead998c..8626f9a 100644 --- a/templates/Lambda4AppSyncHTTP/package.json +++ b/templates/Lambda4AppSyncHTTP/package.json @@ -3,6 +3,7 @@ "version": "1.1.1", "description": "AWS Lambda function to bridge AppSync to Neptune or Neptune Analytics", "main": "index.mjs", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/templates/Lambda4AppSyncSDK/package.json b/templates/Lambda4AppSyncSDK/package.json index f420d99..2e13162 100644 --- a/templates/Lambda4AppSyncSDK/package.json +++ b/templates/Lambda4AppSyncSDK/package.json @@ -3,6 +3,7 @@ "version": "1.1.1", "description": "AWS Lambda function to bridge AppSync to Neptune", "main": "index.mjs", + "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/test/TestCases/Case01/Case01.03.test.js b/test/TestCases/Case01/Case01.03.test.js index 69b12c7..fb603bd 100644 --- a/test/TestCases/Case01/Case01.03.test.js +++ b/test/TestCases/Case01/Case01.03.test.js @@ -3,4 +3,4 @@ import { jest } from '@jest/globals'; import { testResolverQueries } from '../../testLib'; -await testResolverQueries('./TestCases/Case01/output/output.resolver.graphql.cjs', './test/TestCases/Case01/queries'); \ No newline at end of file +await testResolverQueries('./TestCases/Case01/output/output.resolver.graphql.js', './test/TestCases/Case01/queries'); \ No newline at end of file diff --git a/test/TestCases/Case01/Case01.04.test.js b/test/TestCases/Case01/Case01.04.test.js index cc6cebf..ae10316 100644 --- a/test/TestCases/Case01/Case01.04.test.js +++ b/test/TestCases/Case01/Case01.04.test.js @@ -4,7 +4,7 @@ import { readJSONFile, testResolverQueriesResults } from '../../testLib'; const casetest = readJSONFile('./test/TestCases/Case01/case.json'); -await testResolverQueriesResults( './TestCases/Case01/output/output.resolver.graphql.cjs', +await testResolverQueriesResults( './TestCases/Case01/output/output.resolver.graphql.js', './test/TestCases/Case01/queries', casetest.host, casetest.port); \ No newline at end of file diff --git a/test/TestCases/Case01/Case01.05.test.js b/test/TestCases/Case01/Case01.05.test.js index 267b2d5..a029088 100644 --- a/test/TestCases/Case01/Case01.05.test.js +++ b/test/TestCases/Case01/Case01.05.test.js @@ -6,7 +6,7 @@ describe('AppSync resolver', () => { let resolverModule; beforeAll(async () => { - resolverModule = await loadResolver('./TestCases/Case01/output/output.resolver.graphql.cjs'); + resolverModule = await loadResolver('./TestCases/Case01/output/output.resolver.graphql.js'); }); test('should resolve queries with a filter', () => { diff --git a/test/TestCases/Case01/case.json b/test/TestCases/Case01/case.json index 89d95ef..3a639a2 100644 --- a/test/TestCases/Case01/case.json +++ b/test/TestCases/Case01/case.json @@ -4,11 +4,11 @@ "argv":["--quiet", "--input-schema-file", "./test/TestCases/airports.source.schema.graphql", "--input-schema-changes-file", "./test/TestCases/Case01/input/changesAirport.json", - "--output-js-resolver-file", "./test/TestCases/Case01/output/output.resolver.graphql.cjs", + "--output-js-resolver-file", "./test/TestCases/Case01/output/output.jsresolver.graphql.js", "--output-folder-path", "./test/TestCases/Case01/output", "--output-no-lambda-zip"], "host": "", "port": "", - "testOutputFilesSize": ["output.resolver.graphql.cjs", "output.resolver.graphql.js", "output.schema.graphql", "output.source.schema.graphql"], + "testOutputFilesSize": ["output.jsresolver.graphql.js", "output.resolver.graphql.js", "output.schema.graphql", "output.source.schema.graphql"], "testOutputFilesContent": ["output.schema.graphql", "output.source.schema.graphql"] } \ No newline at end of file diff --git a/test/TestCases/Case01/outputReference/output.resolver.graphql.cjs b/test/TestCases/Case01/outputReference/output.jsresolver.graphql.js similarity index 99% rename from test/TestCases/Case01/outputReference/output.resolver.graphql.cjs rename to test/TestCases/Case01/outputReference/output.jsresolver.graphql.js index 63b890d..fa9bd8b 100644 --- a/test/TestCases/Case01/outputReference/output.resolver.graphql.cjs +++ b/test/TestCases/Case01/outputReference/output.jsresolver.graphql.js @@ -10,12 +10,12 @@ express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const { astFromValue, buildASTSchema, typeFromAST } = require('graphql'); -const gql = require('graphql-tag'); // GraphQL library to parse the GraphQL query +import { astFromValue, buildASTSchema, typeFromAST } from 'graphql'; +import { gql } from 'graphql-tag'; // GraphQL library to parse the GraphQL query const useCallSubquery = false; -// 2025-02-04T20:17:38.303Z +// 2025-02-05T01:35:32.969Z const schemaDataModelJSON = `{ "kind": "Document", @@ -3475,7 +3475,7 @@ const schemaDataModel = JSON.parse(schemaDataModelJSON); const schema = buildASTSchema(schemaDataModel, { assumeValidSDL: true }); -function resolveGraphDBQueryFromAppSyncEvent(event) { +export function resolveGraphDBQueryFromAppSyncEvent(event) { const fieldDef = getFieldDef(event.field); const args = []; @@ -3518,9 +3518,9 @@ function resolveGraphDBQueryFromAppSyncEvent(event) { const graphQuery = resolveGraphDBQuery(obj); return graphQuery; } - - -function resolveGraphDBQueryFromApolloQueryEvent(event) { + + +export function resolveGraphDBQueryFromApolloQueryEvent(event) { // TODO } @@ -4428,7 +4428,7 @@ function gremlinElementToJson(o, fieldsAlias) { } -function refactorGremlinqueryOutput(queryResult, fieldsAlias) { +export function refactorGremlinqueryOutput(queryResult, fieldsAlias) { //const r = JSON.parse(queryResult).result.data; const r = queryResult; @@ -4533,7 +4533,7 @@ function parseQueryInput(queryObjOrStr) { * @param {(Object|string)} queryObjOrStr the GraphQL document containing an operation to resolve * @returns {string} */ -function resolveGraphDBQuery(queryObjOrStr) { +export function resolveGraphDBQuery(queryObjOrStr) { let executeQuery = { query:'', parameters: {}, language: 'opencypher', refactorOutput: null }; const obj = parseQueryInput(queryObjOrStr); @@ -4557,6 +4557,3 @@ function resolveGraphDBQuery(queryObjOrStr) { return executeQuery; } - - -module.exports = { resolveGraphDBQueryFromAppSyncEvent, resolveGraphDBQueryFromApolloQueryEvent, resolveGraphDBQuery, refactorGremlinqueryOutput }; diff --git a/test/TestCases/Case01/outputReference/output.resolver.graphql.js b/test/TestCases/Case01/outputReference/output.resolver.graphql.js index 7aa430c..fa9bd8b 100644 --- a/test/TestCases/Case01/outputReference/output.resolver.graphql.js +++ b/test/TestCases/Case01/outputReference/output.resolver.graphql.js @@ -10,12 +10,12 @@ express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const { astFromValue, buildASTSchema, typeFromAST } = require('graphql'); -const gql = require('graphql-tag'); // GraphQL library to parse the GraphQL query +import { astFromValue, buildASTSchema, typeFromAST } from 'graphql'; +import { gql } from 'graphql-tag'; // GraphQL library to parse the GraphQL query const useCallSubquery = false; -// 2025-02-04T20:17:38.302Z +// 2025-02-05T01:35:32.969Z const schemaDataModelJSON = `{ "kind": "Document", @@ -3475,7 +3475,7 @@ const schemaDataModel = JSON.parse(schemaDataModelJSON); const schema = buildASTSchema(schemaDataModel, { assumeValidSDL: true }); -function resolveGraphDBQueryFromAppSyncEvent(event) { +export function resolveGraphDBQueryFromAppSyncEvent(event) { const fieldDef = getFieldDef(event.field); const args = []; @@ -3518,9 +3518,9 @@ function resolveGraphDBQueryFromAppSyncEvent(event) { const graphQuery = resolveGraphDBQuery(obj); return graphQuery; } - - -function resolveGraphDBQueryFromApolloQueryEvent(event) { + + +export function resolveGraphDBQueryFromApolloQueryEvent(event) { // TODO } @@ -4428,7 +4428,7 @@ function gremlinElementToJson(o, fieldsAlias) { } -function refactorGremlinqueryOutput(queryResult, fieldsAlias) { +export function refactorGremlinqueryOutput(queryResult, fieldsAlias) { //const r = JSON.parse(queryResult).result.data; const r = queryResult; @@ -4533,7 +4533,7 @@ function parseQueryInput(queryObjOrStr) { * @param {(Object|string)} queryObjOrStr the GraphQL document containing an operation to resolve * @returns {string} */ -function resolveGraphDBQuery(queryObjOrStr) { +export function resolveGraphDBQuery(queryObjOrStr) { let executeQuery = { query:'', parameters: {}, language: 'opencypher', refactorOutput: null }; const obj = parseQueryInput(queryObjOrStr); @@ -4557,6 +4557,3 @@ function resolveGraphDBQuery(queryObjOrStr) { return executeQuery; } - - -module.exports = { resolveGraphDBQueryFromAppSyncEvent, resolveGraphDBQueryFromApolloQueryEvent, resolveGraphDBQuery, refactorGremlinqueryOutput }; diff --git a/test/TestCases/Case02/case.json b/test/TestCases/Case02/case.json index 7c06259..2540852 100644 --- a/test/TestCases/Case02/case.json +++ b/test/TestCases/Case02/case.json @@ -3,7 +3,7 @@ "description":"Start from graph db json, from Air Routes db", "argv":[ "--quiet", "--input-graphdb-schema-file", "./test/TestCases/Case02/input/airports.graphdb.json", - "--output-js-resolver-file", "./test/TestCases/Case02/output/output.resolver.graphql.cjs", + "--output-js-resolver-file", "./test/TestCases/Case02/output/output.jsresolver.graphql.js", "--output-folder-path", "./test/TestCases/Case02/output", "--output-no-lambda-zip"], "host": "", diff --git a/test/TestCases/Case07/outputReference/output.resolver.graphql.js b/test/TestCases/Case07/outputReference/output.resolver.graphql.js index 61fb8fc..e052f5d 100644 --- a/test/TestCases/Case07/outputReference/output.resolver.graphql.js +++ b/test/TestCases/Case07/outputReference/output.resolver.graphql.js @@ -10,12 +10,12 @@ express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const { astFromValue, buildASTSchema, typeFromAST } = require('graphql'); -const gql = require('graphql-tag'); // GraphQL library to parse the GraphQL query +import { astFromValue, buildASTSchema, typeFromAST } from 'graphql'; +import { gql } from 'graphql-tag'; // GraphQL library to parse the GraphQL query const useCallSubquery = false; -// 2025-02-04T20:38:45.966Z +// 2025-02-05T01:37:03.182Z const schemaDataModelJSON = `{ "kind": "Document", @@ -3507,7 +3507,7 @@ const schemaDataModel = JSON.parse(schemaDataModelJSON); const schema = buildASTSchema(schemaDataModel, { assumeValidSDL: true }); -function resolveGraphDBQueryFromAppSyncEvent(event) { +export function resolveGraphDBQueryFromAppSyncEvent(event) { const fieldDef = getFieldDef(event.field); const args = []; @@ -3550,9 +3550,9 @@ function resolveGraphDBQueryFromAppSyncEvent(event) { const graphQuery = resolveGraphDBQuery(obj); return graphQuery; } - - -function resolveGraphDBQueryFromApolloQueryEvent(event) { + + +export function resolveGraphDBQueryFromApolloQueryEvent(event) { // TODO } @@ -4460,7 +4460,7 @@ function gremlinElementToJson(o, fieldsAlias) { } -function refactorGremlinqueryOutput(queryResult, fieldsAlias) { +export function refactorGremlinqueryOutput(queryResult, fieldsAlias) { //const r = JSON.parse(queryResult).result.data; const r = queryResult; @@ -4565,7 +4565,7 @@ function parseQueryInput(queryObjOrStr) { * @param {(Object|string)} queryObjOrStr the GraphQL document containing an operation to resolve * @returns {string} */ -function resolveGraphDBQuery(queryObjOrStr) { +export function resolveGraphDBQuery(queryObjOrStr) { let executeQuery = { query:'', parameters: {}, language: 'opencypher', refactorOutput: null }; const obj = parseQueryInput(queryObjOrStr); @@ -4589,6 +4589,3 @@ function resolveGraphDBQuery(queryObjOrStr) { return executeQuery; } - - -module.exports = { resolveGraphDBQueryFromAppSyncEvent, resolveGraphDBQueryFromApolloQueryEvent, resolveGraphDBQuery, refactorGremlinqueryOutput };