@vercel/go 2.1.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyze.go +4 -2
- package/dist/index.js +24 -16
- package/dist/main.go +22 -1
- package/package.json +3 -3
- package/dist/main__mod__.go +0 -12
package/dist/analyze.go
CHANGED
|
@@ -197,7 +197,9 @@ func main() {
|
|
|
197
197
|
// find a valid `http.HandlerFunc` handler function
|
|
198
198
|
params := rf[fn.Type.Params.Pos()-offset : fn.Type.Params.End()-offset]
|
|
199
199
|
validHandlerFunc := (strings.Contains(string(params), "http.ResponseWriter") &&
|
|
200
|
-
strings.Contains(string(params), "*http.Request") &&
|
|
200
|
+
strings.Contains(string(params), "*http.Request") &&
|
|
201
|
+
len(fn.Type.Params.List) == 2 &&
|
|
202
|
+
(fn.Recv == nil || len(fn.Recv.List) == 0))
|
|
201
203
|
|
|
202
204
|
if validHandlerFunc {
|
|
203
205
|
// we found the first exported function with `http.HandlerFunc`
|
|
@@ -223,7 +225,7 @@ func main() {
|
|
|
223
225
|
if fn.Name.IsExported() == true {
|
|
224
226
|
for _, param := range fn.Type.Params.List {
|
|
225
227
|
paramStr := fmt.Sprintf("%s", param.Type)
|
|
226
|
-
if strings.Contains(string(paramStr), "http ResponseWriter") && len(fn.Type.Params.List) == 2 {
|
|
228
|
+
if strings.Contains(string(paramStr), "http ResponseWriter") && len(fn.Type.Params.List) == 2 && (fn.Recv == nil || len(fn.Recv.List) == 0) {
|
|
227
229
|
analyzed := analyze{
|
|
228
230
|
PackageName: parsed.Name.Name,
|
|
229
231
|
FuncName: fn.Name.Name,
|
package/dist/index.js
CHANGED
|
@@ -17875,6 +17875,9 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
17875
17875
|
throw new Error('Please change `package main` to `package handler`');
|
|
17876
17876
|
}
|
|
17877
17877
|
const outDir = await build_utils_1.getWriteableDirectory();
|
|
17878
|
+
// in order to allow the user to have `main.go`,
|
|
17879
|
+
// we need our `main.go` to be called something else
|
|
17880
|
+
const mainGoFileName = 'main__vc__go__.go';
|
|
17878
17881
|
if (packageName !== 'main') {
|
|
17879
17882
|
const go = await go_helpers_1.createGo(workPath, goPath, process.platform, process.arch, {
|
|
17880
17883
|
cwd: entrypointDirname,
|
|
@@ -17898,8 +17901,7 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
17898
17901
|
throw err;
|
|
17899
17902
|
}
|
|
17900
17903
|
}
|
|
17901
|
-
const
|
|
17902
|
-
const modMainGoContents = await fs_extra_1.readFile(__webpack_require__.ab + "main__mod__.go", 'utf8');
|
|
17904
|
+
const modMainGoContents = await fs_extra_1.readFile(__webpack_require__.ab + "main.go", 'utf8');
|
|
17903
17905
|
let goPackageName = `${packageName}/${packageName}`;
|
|
17904
17906
|
const goFuncName = `${packageName}.${handlerFunctionName}`;
|
|
17905
17907
|
if (isGoModExist) {
|
|
@@ -17919,26 +17921,26 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
17919
17921
|
.replace('__VC_HANDLER_FUNC_NAME', goFuncName);
|
|
17920
17922
|
if (isGoModExist && isGoModInRootDir) {
|
|
17921
17923
|
build_utils_1.debug('[mod-root] Write main file to ' + downloadPath);
|
|
17922
|
-
await fs_extra_1.writeFile(path_1.join(downloadPath,
|
|
17924
|
+
await fs_extra_1.writeFile(path_1.join(downloadPath, mainGoFileName), mainModGoContents);
|
|
17923
17925
|
undoFileActions.push({
|
|
17924
17926
|
to: undefined,
|
|
17925
|
-
from: path_1.join(downloadPath,
|
|
17927
|
+
from: path_1.join(downloadPath, mainGoFileName),
|
|
17926
17928
|
});
|
|
17927
17929
|
}
|
|
17928
17930
|
else if (isGoModExist && !isGoModInRootDir) {
|
|
17929
17931
|
build_utils_1.debug('[mod-other] Write main file to ' + goModPath);
|
|
17930
|
-
await fs_extra_1.writeFile(path_1.join(goModPath,
|
|
17932
|
+
await fs_extra_1.writeFile(path_1.join(goModPath, mainGoFileName), mainModGoContents);
|
|
17931
17933
|
undoFileActions.push({
|
|
17932
17934
|
to: undefined,
|
|
17933
|
-
from: path_1.join(goModPath,
|
|
17935
|
+
from: path_1.join(goModPath, mainGoFileName),
|
|
17934
17936
|
});
|
|
17935
17937
|
}
|
|
17936
17938
|
else {
|
|
17937
17939
|
build_utils_1.debug('[entrypoint] Write main file to ' + entrypointDirname);
|
|
17938
|
-
await fs_extra_1.writeFile(path_1.join(entrypointDirname,
|
|
17940
|
+
await fs_extra_1.writeFile(path_1.join(entrypointDirname, mainGoFileName), mainModGoContents);
|
|
17939
17941
|
undoFileActions.push({
|
|
17940
17942
|
to: undefined,
|
|
17941
|
-
from: path_1.join(entrypointDirname,
|
|
17943
|
+
from: path_1.join(entrypointDirname, mainGoFileName),
|
|
17942
17944
|
});
|
|
17943
17945
|
}
|
|
17944
17946
|
// move user go file to folder
|
|
@@ -17985,7 +17987,7 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
17985
17987
|
build_utils_1.debug('Running `go build`...');
|
|
17986
17988
|
const destPath = path_1.join(outDir, handlerFileName);
|
|
17987
17989
|
try {
|
|
17988
|
-
const src = [path_1.join(baseGoModPath,
|
|
17990
|
+
const src = [path_1.join(baseGoModPath, mainGoFileName)];
|
|
17989
17991
|
await go.build(src, destPath);
|
|
17990
17992
|
}
|
|
17991
17993
|
catch (err) {
|
|
@@ -18000,11 +18002,10 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
18000
18002
|
const go = await go_helpers_1.createGo(workPath, goPath, process.platform, process.arch, {
|
|
18001
18003
|
cwd: entrypointDirname,
|
|
18002
18004
|
}, false);
|
|
18003
|
-
const
|
|
18004
|
-
const mainGoContents =
|
|
18005
|
-
|
|
18006
|
-
|
|
18007
|
-
const mainGoFileName = 'main__vc__go__.go';
|
|
18005
|
+
const originalMainGoContents = await fs_extra_1.readFile(__webpack_require__.ab + "main.go", 'utf8');
|
|
18006
|
+
const mainGoContents = originalMainGoContents
|
|
18007
|
+
.replace('"__VC_HANDLER_PACKAGE_NAME"', '')
|
|
18008
|
+
.replace('__VC_HANDLER_FUNC_NAME', handlerFunctionName);
|
|
18008
18009
|
// Go doesn't like to build files in different directories,
|
|
18009
18010
|
// so now we place `main.go` together with the user code
|
|
18010
18011
|
await fs_extra_1.writeFile(path_1.join(entrypointDirname, mainGoFileName), mainGoContents);
|
|
@@ -18040,6 +18041,7 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
18040
18041
|
files: { ...(await build_utils_1.glob('**', outDir)), ...includedFiles },
|
|
18041
18042
|
handler: handlerFileName,
|
|
18042
18043
|
runtime: 'go1.x',
|
|
18044
|
+
supportsWrapper: true,
|
|
18043
18045
|
environment: {},
|
|
18044
18046
|
});
|
|
18045
18047
|
const watch = parsedAnalyzed.watch;
|
|
@@ -18072,8 +18074,14 @@ async function build({ files, entrypoint, config, workPath, meta = {}, }) {
|
|
|
18072
18074
|
exports.build = build;
|
|
18073
18075
|
async function renameHandlerFunction(fsPath, from, to) {
|
|
18074
18076
|
let fileContents = await fs_extra_1.readFile(fsPath, 'utf8');
|
|
18075
|
-
|
|
18076
|
-
|
|
18077
|
+
// This regex has to walk a fine line where it replaces the most-likely occurrences
|
|
18078
|
+
// of the handler's identifier without clobbering other syntax.
|
|
18079
|
+
// Left-hand Side: A single space was chosen because it can catch `func Handler`
|
|
18080
|
+
// as well as `var _ http.HandlerFunc = Index`.
|
|
18081
|
+
// Right-hand Side: a word boundary was chosen because this can be an end of line
|
|
18082
|
+
// or an open paren (as in `func Handler(`).
|
|
18083
|
+
const fromRegex = new RegExp(String.raw ` ${from}\b`, 'g');
|
|
18084
|
+
fileContents = fileContents.replace(fromRegex, ` ${to}`);
|
|
18077
18085
|
await fs_extra_1.writeFile(fsPath, fileContents);
|
|
18078
18086
|
}
|
|
18079
18087
|
function getNewHandlerFunctionName(originalFunctionName, entrypoint) {
|
package/dist/main.go
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
package main
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
|
-
vc "github.com/vercel/go-bridge/go/bridge"
|
|
5
4
|
"net/http"
|
|
5
|
+
"os"
|
|
6
|
+
"syscall"
|
|
7
|
+
|
|
8
|
+
"__VC_HANDLER_PACKAGE_NAME"
|
|
9
|
+
vc "github.com/vercel/go-bridge/go/bridge"
|
|
6
10
|
)
|
|
7
11
|
|
|
12
|
+
func checkForLambdaWrapper() {
|
|
13
|
+
wrapper := os.Getenv("AWS_LAMBDA_EXEC_WRAPPER")
|
|
14
|
+
if wrapper == "" {
|
|
15
|
+
return
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Removing the env var doesn't work
|
|
19
|
+
// Set it to empty string to override the previous value
|
|
20
|
+
os.Setenv("AWS_LAMBDA_EXEC_WRAPPER", "")
|
|
21
|
+
argv := append([]string{wrapper}, os.Args...)
|
|
22
|
+
err := syscall.Exec(wrapper, argv, os.Environ())
|
|
23
|
+
if err != nil {
|
|
24
|
+
panic(err)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
8
28
|
func main() {
|
|
29
|
+
checkForLambdaWrapper()
|
|
9
30
|
vc.Start(http.HandlerFunc(__VC_HANDLER_FUNC_NAME))
|
|
10
31
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vercel/go",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index",
|
|
6
6
|
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/go",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@types/jest": "28.1.6",
|
|
36
36
|
"@types/node-fetch": "^2.3.0",
|
|
37
37
|
"@types/tar": "^4.0.0",
|
|
38
|
-
"@vercel/build-utils": "5.3.
|
|
38
|
+
"@vercel/build-utils": "5.3.2",
|
|
39
39
|
"@vercel/ncc": "0.24.0",
|
|
40
40
|
"async-retry": "1.3.1",
|
|
41
41
|
"execa": "^1.0.0",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"tar": "4.4.6",
|
|
46
46
|
"typescript": "4.3.4"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "6700630feb23bdb4e94ea727911a9e10aa546361"
|
|
49
49
|
}
|