Skip to content

Commit c6b11e2

Browse files
committed
feat: add templates
1 parent b17e93e commit c6b11e2

File tree

18 files changed

+541
-4
lines changed

18 files changed

+541
-4
lines changed

index.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {resolve, join} from 'node:path'
22
import {cwd} from 'node:process'
3+
import {existsSync} from 'node:fs'
34

45
export default class ServerlessOfflineLambdaFunctionUrls {
56
constructor(serverless) {
@@ -45,16 +46,26 @@ export default class ServerlessOfflineLambdaFunctionUrls {
4546
}
4647
mergeServerlessOfflineOptions(options) {
4748
const stage = this.serverless.variables.options?.stage ?? this.configuration.provider?.stage
48-
const serverlessOfflineOptions = this.configuration.custom['serverless-offline']
49+
const serverlessOfflineOptions = this.configuration?.custom?.['serverless-offline'] ?? {}
4950
return {
5051
...serverlessOfflineOptions,
5152
stage,
53+
host: serverlessOfflineOptions['host'] ?? '127.0.0.1',
5254
httpPort: serverlessOfflineOptions['urlLambdaFunctionsHttpPort'] ?? 3003,
5355
...options,
5456
}
5557
}
5658
getTranspiledHandlerFilepath(handler) {
57-
return join('.esbuild', '.build', handler)
59+
const webpackDir = existsSync(this.getFullPath('.webpack'))
60+
if (webpackDir) {
61+
return join('.webpack', 'service', handler)
62+
}
63+
const esbuildDir = existsSync(this.getFullPath('.esbuild'))
64+
if (esbuildDir) {
65+
return join('.esbuild', '.build', handler)
66+
}
67+
68+
return handler
5869
}
5970
getFullPath(...args) {
6071
return resolve(cwd(), ...args)

package.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "serverless-offline-lambda-function-urls",
3-
"version": "0.1.0",
3+
"version": "1.0.0",
44
"license": "ISC",
55
"description": "An extension off serverless-offline that adds support to lambda function urls",
66
"type": "module",
@@ -35,5 +35,8 @@
3535
"url": "https://www.mariossimou.dev",
3636
"author": true
3737
}
38-
]
38+
],
39+
"devDependencies": {
40+
"serverless-offline": "^12.0.4"
41+
}
3942
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
;(function (e, a) {
2+
for (var i in a) e[i] = a[i]
3+
})(
4+
exports,
5+
/******/ (function (modules) {
6+
// webpackBootstrap
7+
/******/ // The module cache
8+
/******/ var installedModules = {}
9+
/******/
10+
/******/ // The require function
11+
/******/ function __webpack_require__(moduleId) {
12+
/******/
13+
/******/ // Check if module is in cache
14+
/******/ if (installedModules[moduleId]) {
15+
/******/ return installedModules[moduleId].exports
16+
/******/
17+
}
18+
/******/ // Create a new module (and put it into the cache)
19+
/******/ var module = (installedModules[moduleId] = {
20+
/******/ i: moduleId,
21+
/******/ l: false,
22+
/******/ exports: {},
23+
/******/
24+
})
25+
/******/
26+
/******/ // Execute the module function
27+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)
28+
/******/
29+
/******/ // Flag the module as loaded
30+
/******/ module.l = true
31+
/******/
32+
/******/ // Return the exports of the module
33+
/******/ return module.exports
34+
/******/
35+
}
36+
/******/
37+
/******/
38+
/******/ // expose the modules object (__webpack_modules__)
39+
/******/ __webpack_require__.m = modules
40+
/******/
41+
/******/ // expose the module cache
42+
/******/ __webpack_require__.c = installedModules
43+
/******/
44+
/******/ // define getter function for harmony exports
45+
/******/ __webpack_require__.d = function (exports, name, getter) {
46+
/******/ if (!__webpack_require__.o(exports, name)) {
47+
/******/ Object.defineProperty(exports, name, {enumerable: true, get: getter})
48+
/******/
49+
}
50+
/******/
51+
}
52+
/******/
53+
/******/ // define __esModule on exports
54+
/******/ __webpack_require__.r = function (exports) {
55+
/******/ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56+
/******/ Object.defineProperty(exports, Symbol.toStringTag, {value: 'Module'})
57+
/******/
58+
}
59+
/******/ Object.defineProperty(exports, '__esModule', {value: true})
60+
/******/
61+
}
62+
/******/
63+
/******/ // create a fake namespace object
64+
/******/ // mode & 1: value is a module id, require it
65+
/******/ // mode & 2: merge all properties of value into the ns
66+
/******/ // mode & 4: return value when already ns object
67+
/******/ // mode & 8|1: behave like require
68+
/******/ __webpack_require__.t = function (value, mode) {
69+
/******/ if (mode & 1) value = __webpack_require__(value)
70+
/******/ if (mode & 8) return value
71+
/******/ if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value
72+
/******/ var ns = Object.create(null)
73+
/******/ __webpack_require__.r(ns)
74+
/******/ Object.defineProperty(ns, 'default', {enumerable: true, value: value})
75+
/******/ if (mode & 2 && typeof value != 'string')
76+
for (var key in value)
77+
__webpack_require__.d(
78+
ns,
79+
key,
80+
function (key) {
81+
return value[key]
82+
}.bind(null, key)
83+
)
84+
/******/ return ns
85+
/******/
86+
}
87+
/******/
88+
/******/ // getDefaultExport function for compatibility with non-harmony modules
89+
/******/ __webpack_require__.n = function (module) {
90+
/******/ var getter =
91+
module && module.__esModule
92+
? /******/ function getDefault() {
93+
return module['default']
94+
}
95+
: /******/ function getModuleExports() {
96+
return module
97+
}
98+
/******/ __webpack_require__.d(getter, 'a', getter)
99+
/******/ return getter
100+
/******/
101+
}
102+
/******/
103+
/******/ // Object.prototype.hasOwnProperty.call
104+
/******/ __webpack_require__.o = function (object, property) {
105+
return Object.prototype.hasOwnProperty.call(object, property)
106+
}
107+
/******/
108+
/******/ // __webpack_public_path__
109+
/******/ __webpack_require__.p = ''
110+
/******/
111+
/******/
112+
/******/ // Load entry module and return exports
113+
/******/ return __webpack_require__((__webpack_require__.s = './index.js'))
114+
/******/
115+
})(
116+
/************************************************************************/
117+
/******/ {
118+
/***/ './index.js':
119+
/*!******************!*\
120+
!*** ./index.js ***!
121+
\******************/
122+
/*! exports provided: ping */
123+
/***/ function (module, __webpack_exports__, __webpack_require__) {
124+
'use strict'
125+
eval(
126+
'__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ping", function() { return ping; });\nconst wait = sec => new Promise(resolve => setTimeout(resolve, sec * 1000));\nconst ping = async event => {\n await wait(45);\n return {\n statusCode: 200,\n body: JSON.stringify({\n message: \'Go Serverless v1.0! Your function executed successfully!\',\n input: event\n }, null, 2)\n };\n};\n\n//# sourceURL=webpack:///./index.js?'
127+
)
128+
129+
/***/
130+
},
131+
132+
/******/
133+
}
134+
)
135+
)
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const wait = sec => new Promise(resolve => setTimeout(resolve, sec * 1000))
2+
3+
export const ping = async event => {
4+
await wait(45)
5+
6+
return {
7+
statusCode: 200,
8+
body: JSON.stringify(
9+
{
10+
message: 'Go Serverless v1.0! Your function executed successfully!',
11+
input: event,
12+
},
13+
null,
14+
2
15+
),
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "aws-nodejs-ecma-script",
3+
"version": "1.0.0",
4+
"description": "Serverless webpack example using ecma script",
5+
"scripts": {
6+
"start": "NODE_OPTIONS=--openssl-legacy-provider sls offline start"
7+
},
8+
"devDependencies": {
9+
"@babel/core": "^7.11.1",
10+
"@babel/preset-env": "^7.11.0",
11+
"babel-loader": "^8.1.0",
12+
"babel-plugin-transform-runtime": "^6.23.0",
13+
"babel-polyfill": "^6.23.0",
14+
"babel-preset-env": "^1.6.0",
15+
"serverless-offline": "^12.0.4",
16+
"serverless-webpack": "^5.3.1",
17+
"webpack": "^4.35.2"
18+
},
19+
"author": "The serverless webpack authors (https://github.com/elastic-coders/serverless-webpack)",
20+
"license": "MIT"
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
service: aws-nodejs-ecma-script
2+
frameworkVersion: '3'
3+
4+
plugins:
5+
- serverless-webpack
6+
- serverless-offline
7+
- ../../index.js
8+
9+
provider:
10+
name: aws
11+
runtime: nodejs18.x
12+
13+
functions:
14+
ping:
15+
handler: ./index.ping
16+
url: true
17+
timeout: 120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const path = require('path')
2+
const slsw = require('serverless-webpack')
3+
4+
module.exports = {
5+
entry: slsw.lib.entries,
6+
output: {
7+
libraryTarget: 'commonjs',
8+
filename: '[name].js',
9+
path: path.join(__dirname, '.webpack'),
10+
},
11+
mode: 'development',
12+
target: 'node',
13+
module: {
14+
rules: [
15+
{
16+
test: /\.js$/, // include .js files
17+
enforce: 'pre', // preload the jshint loader
18+
exclude: /node_modules/, // exclude any and all files in the node_modules folder
19+
include: __dirname,
20+
use: [
21+
{
22+
loader: 'babel-loader',
23+
options: {
24+
presets: [
25+
[
26+
'@babel/preset-env',
27+
{
28+
targets: {
29+
node: 'current',
30+
},
31+
},
32+
],
33+
],
34+
},
35+
},
36+
],
37+
},
38+
],
39+
},
40+
}

templates/aws-nodejs-typescript/.esbuild/.build/src/functions/index.js

+44
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/aws-nodejs-typescript/.esbuild/.build/src/functions/index.js.map

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
lts/hydrogen

0 commit comments

Comments
 (0)