Skip to content

Commit

Permalink
added a simple project template
Browse files Browse the repository at this point in the history
  • Loading branch information
Inqnuam committed Aug 12, 2023
1 parent e2e48b7 commit 9281da7
Show file tree
Hide file tree
Showing 17 changed files with 292 additions and 145 deletions.
3 changes: 2 additions & 1 deletion .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ build.mjs
TODO.md
tsconfig.json
resources/invokeError.png
resources/invokeSuccess.png
resources/invokeSuccess.png
templates
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@
}
},
"dependencies": {
"@smithy/eventstream-codec": "^2.0.2",
"@smithy/eventstream-codec": "^2.0.3",
"@types/serverless": "^3.12.13",
"archiver": "^5.3.1",
"esbuild": "^0.19.0",
"esbuild": "^0.19.1",
"serve-static": "^1.15.0"
},
"devDependencies": {
Expand Down
5 changes: 5 additions & 0 deletions templates/simple/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules
.aws_lambda
.serverless
.DS_Store
/**/*/.DS_Store
9 changes: 9 additions & 0 deletions templates/simple/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": true,
"singleQuote": false,
"printWidth": 180,
"bracketSpacing": true,
"endOfLine": "lf"
}
2 changes: 2 additions & 0 deletions templates/simple/config/sls.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
declare const _default: any;
export default _default;
14 changes: 14 additions & 0 deletions templates/simple/config/sls.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { defineConfig } from "serverless-aws-lambda/defineConfig";
import { vitestPlugin } from "serverless-aws-lambda-vitest";

const test = process.argv.includes("vitest");
const oneshot = test && process.argv.includes("oneshot");
export default defineConfig({
esbuild: {
format: "esm",
},
offline: {
port: 7500,
},
plugins: [test && vitestPlugin({ configFile: "./vitest.e2e.config.mts", oneshot })],
});
20 changes: 20 additions & 0 deletions templates/simple/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "my-project",
"license": "UNLICENSED",
"type": "module",
"devDependencies": {
"prettier": "3.0.1",
"serverless": "^3.34.0",
"serverless-aws-lambda": "^4.6.2",
"serverless-aws-lambda-vitest": "^1.2.5",
"typescript": "^5.1.6"
},
"scripts": {
"sls": "sls",
"tsc": "tsc",
"start": "SLS_DEBUG=* sls aws-lambda -s dev",
"test": "sls aws-lambda -s dev vitest",
"deploy": "SLS_DEBUG=* sls deploy -s dev",
"format": "prettier --write ."
}
}
28 changes: 28 additions & 0 deletions templates/simple/serverless.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
service: my-project

plugins:
- serverless-aws-lambda

package:
individually: true

provider:
name: aws
stage: ${opt:stage, 'dev'}
region: eu-west-3
runtime: nodejs18.x
architecture: arm64
memorySize: 512
versionFunctions: false

custom:
serverless-aws-lambda:
configPath: config/sls.ts

functions:
helloWorld:
handler: src/lambda/helloWorld.default
events:
- httpApi:
method: GET
path: /sayhello
8 changes: 8 additions & 0 deletions templates/simple/src/lambda/helloWorld.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
declare const _default: (event: any, context: any) => Promise<{
statusCode: number;
header: {
"Content-Type": string;
};
body: string;
}>;
export default _default;
10 changes: 10 additions & 0 deletions templates/simple/src/lambda/helloWorld.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
export default async (event, context) => {
const name = event.queryStringParameters?.name ?? "World";
return {
statusCode: 200,
header: {
"Content-Type": "application/json",
},
body: JSON.stringify({ message: `Hello ${name}!` }),
};
};
1 change: 1 addition & 0 deletions templates/simple/test/e2e/lambda/helloWorld.test.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {};
17 changes: 17 additions & 0 deletions templates/simple/test/e2e/lambda/helloWorld.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const baseURL = `http://localhost:${LOCAL_PORT}`;

describe("Test HelloWorld Lambda", () => {
it("should say 'Hello John!'", async () => {
const res = await fetch(`${baseURL}/sayhello?name=John`);
const json = await res.json();

expect(json.message).toBe("Hello John!");
});

it("should say 'Hello World!'", async () => {
const res = await fetch(`${baseURL}/sayhello`);
const json = await res.json();

expect(json.message).toBe("Hello World!");
});
});
15 changes: 15 additions & 0 deletions templates/simple/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "Bundler",
"esModuleInterop": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"types": ["vitest/globals"]
}
}
2 changes: 2 additions & 0 deletions templates/simple/vitest.e2e.config.d.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
declare const _default: any;
export default _default;
8 changes: 8 additions & 0 deletions templates/simple/vitest.e2e.config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { defineConfig } from "vitest/config";

export default defineConfig({
test: {
include: ["./test/e2e/**/*.test.*"],
globals: true,
},
});
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"declarationDir": "./dist/",
"rootDir": "./src/"
},
"exclude": ["./dist/**/*"]
"exclude": ["./dist/**/*", "./templates/**/*"]
}
Loading

0 comments on commit 9281da7

Please sign in to comment.