This commit is contained in:
Hamcha 2019-10-02 17:15:20 +02:00
commit dedce8e438
Signed by: hamcha
GPG key ID: 44AD3571EB09A39E
7 changed files with 3573 additions and 0 deletions

9
.gitignore vendored Normal file
View file

@ -0,0 +1,9 @@
# package directories
node_modules
jspm_packages
# Serverless directories
.serverless
# Webpack directories
.webpack

28
handler.ts Normal file
View file

@ -0,0 +1,28 @@
import { APIGatewayProxyHandler } from "aws-lambda";
import axios from "axios";
import "source-map-support/register";
import { JSDOM } from "jsdom";
export const promiseList: APIGatewayProxyHandler = async (_, _context) => {
const page = await axios({
url: "https://tracciailgoverno.pagellapolitica.it/it/promesse/",
responseType: "document"
});
const { window } = new JSDOM(page.data);
const promises = window.document.querySelectorAll(".promise");
const promiseList = Array.prototype.slice.call(promises, 0);
return {
statusCode: 200,
body: JSON.stringify(
promiseList.map(
prom => ({
name: prom.querySelector("h2.heading span").innerHTML,
url: prom.querySelector("a[href]").href,
status: prom.querySelector(".promise-status-text").innerHTML
}),
null,
2
)
)
};
};

25
package.json Normal file
View file

@ -0,0 +1,25 @@
{
"name": "promessegoverno",
"version": "1.0.0",
"description": "Serverless webpack example using Typescript",
"main": "handler.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"axios": "^0.19.0",
"jsdom": "^15.1.1",
"source-map-support": "^0.5.10"
},
"devDependencies": {
"@types/aws-lambda": "^8.10.17",
"@types/jsdom": "^12.2.4",
"@types/node": "^10.12.18",
"serverless-webpack": "^5.2.0",
"ts-loader": "^5.3.3",
"typescript": "^3.2.4",
"webpack": "^4.29.0"
},
"author": "The serverless webpack authors (https://github.com/elastic-coders/serverless-webpack)",
"license": "MIT"
}

20
serverless.yml Normal file
View file

@ -0,0 +1,20 @@
service:
name: promessegoverno
app: promessegoverno-app
org: hamcha
# Add the serverless-webpack plugin
plugins:
- serverless-webpack
provider:
name: aws
runtime: nodejs10.x
functions:
promiseList:
handler: handler.promiseList
events:
- http:
method: get
path: promiseList

12
tsconfig.json Normal file
View file

@ -0,0 +1,12 @@
{
"compilerOptions": {
"lib": ["es2017"],
"moduleResolution": "node",
"noUnusedLocals": true,
"noUnusedParameters": true,
"sourceMap": true,
"target": "es2017",
"outDir": "lib"
},
"exclude": ["node_modules"]
}

25
webpack.config.js Normal file
View file

@ -0,0 +1,25 @@
const path = require("path");
const slsw = require("serverless-webpack");
const webpack = require("webpack");
module.exports = {
mode: slsw.lib.webpack.isLocal ? "development" : "production",
entry: slsw.lib.entries,
devtool: "source-map",
resolve: {
extensions: [".js", ".jsx", ".json", ".ts", ".tsx"]
},
output: {
libraryTarget: "commonjs",
path: path.join(__dirname, ".webpack"),
filename: "[name].js"
},
target: "node",
module: {
rules: [
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{ test: /\.tsx?$/, loader: "ts-loader" }
]
},
plugins: [new webpack.IgnorePlugin(/canvas$/)]
};

3454
yarn.lock Normal file

File diff suppressed because it is too large Load diff