Skip to content
This repository has been archived by the owner on Jul 23, 2023. It is now read-only.

Commit

Permalink
removed compat layer from the equation
Browse files Browse the repository at this point in the history
  • Loading branch information
ematipico committed Oct 2, 2019
1 parent a60b7b9 commit 82f8277
Show file tree
Hide file tree
Showing 11 changed files with 68 additions and 191 deletions.
9 changes: 2 additions & 7 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,7 @@
"node": true,
"jest": true
},
"extends": [
"eslint:recommended",
"plugin:node/recommended",
"plugin:unicorn/recommended",
"prettier",
"prettier/unicorn"
],
"extends": ["eslint:recommended", "plugin:node/recommended", "plugin:unicorn/recommended", "prettier", "prettier/unicorn"],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
Expand All @@ -22,6 +16,7 @@
},
"rules": {
"unicorn/filename-case": ["error", { "case": "camelCase" }],
"unicorn/prevent-abbreviations": "off",
"prettier/prettier": "error",
"indent": ["error", "tab"],
"unicorn/no-process-exit": "off",
Expand Down
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
"react": "16.10.1",
"react-dom": "16.10.1",
"standard-version": "7.0.0",
"tsd": "0.9.0"
"tsd": "0.9.0",
"typescript": "^3.6.3"
},
"dependencies": {
"cosmiconfig": "5.2.1",
Expand All @@ -61,7 +62,7 @@
"node": ">= 8.5.x"
},
"peerDependencies": {
"next": ">=8.0.0 || < 9.0.0"
"next": ">=8.0.0"
},
"files": [
"bin/*",
Expand Down
121 changes: 0 additions & 121 deletions src/compatLayer.js

This file was deleted.

3 changes: 0 additions & 3 deletions src/constants.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
const path = require("path");
const PROVIDERS = {
AWS: "AWS"
};
Expand All @@ -8,12 +7,10 @@ const FILE_NAMES = {
GATEWAY: "gateway.terraform.tf.json"
};

const COMPAT_LAYER_PATH = path.resolve(__dirname);
const NEXT_CONFIG = "next.config.js";

module.exports = {
PROVIDERS,
COMPAT_LAYER_PATH,
FILE_NAMES,
NEXT_CONFIG
};
34 changes: 17 additions & 17 deletions src/providers/aws/generateApiGatewayConfiguration.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const apiGatewayMethod = {};
*/
const apiGatewayIntegration = {};

const getParamsFromPath = pathname => {
const getParametersFromPath = pathname => {
return pathname
.split("/")
.map(pathPart => {
Expand All @@ -45,11 +45,11 @@ const getParamsFromPath = pathname => {
.filter(Boolean);
};

const parseParams = params => {
return Object.keys(params).map(paramKey => {
const parseParameters = parameters => {
return Object.keys(parameters).map(parameterKey => {
return {
name: paramKey,
mandatory: params[paramKey]
name: parameterKey,
mandatory: parameters[parameterKey]
};
});
};
Expand All @@ -62,7 +62,7 @@ let uniqueName;
* @param {import("./declarations").HandleResource} payload
*/
const handleResource = ({ pathPart, index, parts, pathname, lambdaName, params }) => {
const isUrlParam = pathPart.includes(":");
const isUrlParameter = pathPart.includes(":");
const currentPathName = pathPart.replace(":", "");
// Generation of the gateway resource
// we don't generate a gateway resource if the path part is a query string
Expand All @@ -76,15 +76,15 @@ const handleResource = ({ pathPart, index, parts, pathname, lambdaName, params }
id: uniqueName,
pathname: currentPathName,
parentId,
isUrlParam
isUrlParam: isUrlParameter
});
gatewayResourceId = uniqueId;
apiGatewayResource[uniqueId] = resource;
} else {
const { uniqueId, resource } = generateGatewayResource({
id: uniqueName,
pathname: uniqueName,
isUrlParam
isUrlParam: isUrlParameter
});
gatewayResourceId = uniqueId;
apiGatewayResource[uniqueId] = resource;
Expand All @@ -94,19 +94,19 @@ const handleResource = ({ pathPart, index, parts, pathname, lambdaName, params }
// also, we have to enter when we have a query string parameter.
// In this last case, the gateway resource will belong to the father because hasn't been set
if (index === parts.length - 1) {
let urlParams = [];
let queryStringParams = [];
if (isUrlParam) {
urlParams = getParamsFromPath(pathname);
let urlParameters = [];
let queryStringParameters = [];
if (isUrlParameter) {
urlParameters = getParametersFromPath(pathname);
}
if (params) {
queryStringParams = parseParams(params);
queryStringParameters = parseParameters(params);
}
const method = generateGatewayMethod({
uniqueName,
gatewayResourceId: gatewayResourceId,
params: urlParams,
queryStringParams
params: urlParameters,
queryStringParams: queryStringParameters
});

apiGatewayMethod[method.uniqueId] = method.resource;
Expand All @@ -115,8 +115,8 @@ const handleResource = ({ pathPart, index, parts, pathname, lambdaName, params }
id: uniqueName,
gatewayResourceId: gatewayResourceId,
lambdaName,
params: urlParams,
queryStringParams
params: urlParameters,
queryStringParams: queryStringParameters
});
apiGatewayIntegration[integration.uniqueId] = integration.resource;
}
Expand Down
22 changes: 8 additions & 14 deletions src/providers/aws/generateLambdas.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ const prettier = require("prettier");
const { generateLambdaResource } = require("./resources/terraFormLambda");
const { generateZipResource } = require("./resources/terraFormZip.js");
const { getBuildPath, getServerlessBuildPath } = require("../../configuration");
const { COMPAT_LAYER_PATH, FILE_NAMES } = require("../../constants");
const { FILE_NAMES } = require("../../constants");
const { getLambdaFiles } = require("../../shared");
const FolderNotFoundError = require("../../errors/folderNotFoundError");

function generateLambda(filename, thePath) {
const lambdaTemplate = `
const compatLayer = require('./compatLayer.js');
const page = require('./${filename}.original.js');
const http = require('http')
exports.render = (event, context, callback) => {
const { req, res } = compatLayer(event, callback);
page.render(req, res);
const server = new http.Server((req, res) => page.render(req, res));
server.listen(3000);
};
Expand Down Expand Up @@ -71,9 +71,8 @@ function generateLambdas(write = false) {
* 1. create a folder with name of the file
* 2. copy the next file with a suffix .original.js
* 3. create the lambda from the template
* 4. copy the compatLayer file
* 5. generate the lambda resource
* 6. generate the zip file resource
* 4. generate the lambda resource
* 5. generate the zip file resource
*/
// 1.
const lambdaName = file.replace(".js", "");
Expand All @@ -85,18 +84,13 @@ function generateLambdas(write = false) {
fs.copyFileSync(path.resolve(serverlessBuildPath, file), path.resolve(buildPath, "lambdas", lambdaName, newFilename));
// 3.
generateLambda(lambdaName, buildPath);
// 4.
fs.copyFileSync(
path.resolve(COMPAT_LAYER_PATH, "./compatLayer.js"),
path.resolve(buildPath, "lambdas", lambdaName, "compatLayer.js")
);

// 5.
// 4.
const lambdaResource = generateLambdaResource({ id: lambdaName });
lambdasResources[lambdaResource.resourceUniqueId] = lambdaResource.resource;
lambdasPermissions[lambdaResource.permissionUniqueId] = lambdaResource.permission;

// 6.
// 5.
const zipResource = generateZipResource({
id: lambdaName,
directoryName: lambdaName
Expand Down
24 changes: 15 additions & 9 deletions src/providers/aws/resources/terraFormGatewayIntegration.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,16 @@ const { getLambdaPrefix } = require("../shared");
* @param {import('../declarations').GenerateGatewayIntegrationPayload} options
* @returns {ReturnResult}
*/
function generateGatewayIntegration({ id, gatewayResourceId, lambdaName, params = [], queryStringParams = [] }) {
function generateGatewayIntegration({
id,
gatewayResourceId,
lambdaName,
params: parameters = [],
queryStringParams: queryStringParameters = []
}) {
return {
uniqueId: `${getGatewayKey()}-${id}`,
resource: _generateResource(gatewayResourceId, lambdaName, params, queryStringParams)
resource: _generateResource(gatewayResourceId, lambdaName, parameters, queryStringParameters)
};
}

Expand All @@ -27,7 +33,7 @@ function generateGatewayIntegration({ id, gatewayResourceId, lambdaName, params
* @param {Param[]} queryStringParams
* @returns {GatewayIntegration}
*/
function _generateResource(gatewayResourceId, lambdaName, params, queryStringParams) {
function _generateResource(gatewayResourceId, lambdaName, parameters, queryStringParameters) {
const resource = {
rest_api_id: "${aws_api_gateway_rest_api." + getGatewayKey() + ".id}",
resource_id: "${aws_api_gateway_resource." + gatewayResourceId + ".id}",
Expand All @@ -42,17 +48,17 @@ function _generateResource(gatewayResourceId, lambdaName, params, queryStringPar
".arn}/invocations"
};

if (params.length > 0) {
resource.request_parameters = params.reduce((result, param) => {
result[`integration.request.path.${param.name}`] = `method.request.path.${param.name}`;
if (parameters.length > 0) {
resource.request_parameters = parameters.reduce((result, parameter) => {
result[`integration.request.path.${parameter.name}`] = `method.request.path.${parameter.name}`;

return result;
}, resource.request_parameters || {});
}

if (queryStringParams.length > 0) {
resource.request_parameters = queryStringParams.reduce((result, param) => {
result[`integration.request.querystring.${param.name}`] = `method.request.querystring.${param.name}`;
if (queryStringParameters.length > 0) {
resource.request_parameters = queryStringParameters.reduce((result, parameter) => {
result[`integration.request.querystring.${parameter.name}`] = `method.request.querystring.${parameter.name}`;

return result;
}, resource.request_parameters || {});
Expand Down
Loading

0 comments on commit 82f8277

Please sign in to comment.