Compare commits

..

14 Commits

Author SHA1 Message Date
Nathan Rajlich
0b89d30d6c Publish
- @now/build-utils@0.5.5
 - @now/cgi@0.1.4
 - @now/go@0.4.6
 - @now/mdx-deck@0.5.4
 - @now/next@0.3.2
 - @now/node-server@0.7.2
 - @now/node@0.7.2
 - @now/php@0.5.4
 - @now/python@0.2.2
 - @now/rust@0.2.4
2019-05-11 08:13:57 -07:00
Tim Neutkens
8a021c9417 [now-next] Add support for /api routes (#494) 2019-05-11 16:18:23 +02:00
Nathan Rajlich
f218771382 Publish
- @now/cgi@0.1.4-canary.0
 - @now/go@0.4.6-canary.0
 - @now/mdx-deck@0.5.4-canary.0
 - @now/node-server@0.7.2-canary.1
 - @now/node@0.7.2-canary.2
 - @now/php@0.5.4-canary.0
 - @now/python@0.2.2-canary.0
 - @now/rust@0.2.4-canary.1
2019-05-10 19:19:15 -07:00
Nathan Rajlich
17309291ed [now-node-server] Pass meta to download() function (#489) 2019-05-10 19:18:31 -07:00
Nathan Rajlich
86300577ae [now-rust] Pass meta to download() function 2019-05-10 17:14:22 -07:00
Nathan Rajlich
f9594e0d61 [now-python] Pass meta to download() function (#491) 2019-05-11 01:13:48 +02:00
Nathan Rajlich
20fd4b2e12 [now-php] Download files to workPath and pass meta (#490)
It's not clear to me why we were installing to `userfiles` directory,
so let me know if this breaks something.
2019-05-11 01:13:14 +02:00
Nathan Rajlich
718e4d0e0c [now-mdx-deck] Pass meta to download() function (#488) 2019-05-11 01:12:46 +02:00
Nathan Rajlich
dc3584cd08 [now-cgi] Download files to workPath and pass meta (#487) 2019-05-11 01:12:12 +02:00
Nathan Rajlich
b41788b241 Update yarn.lock 2019-05-10 13:17:05 -07:00
Nathan Rajlich
af9a2f9792 [now-node-server] Update @zeit/ncc to v0.18.5 2019-05-10 13:17:05 -07:00
Nathan Rajlich
f8b8e760de [now-node] Update @zeit/ncc to v0.18.5 2019-05-10 13:17:05 -07:00
Sophearak Tha
93d6ec8024 [now-go] Only use valid exported function with net/http interface (#477)
* Only use valid exported function with `net/http` interface

* Improve log, show link to docs if we coudn't parsed the entrypoint
2019-05-10 21:13:44 +07:00
Nathan Rajlich
7ed6b84056 Remove packages/now-rust/now-rust-0.2.3.tgz (#480)
It appears to have been accidentally committed in
bd2d05344e.
2019-05-08 14:50:57 -07:00
23 changed files with 98 additions and 46 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@now/build-utils",
"version": "0.5.5-canary.1",
"version": "0.5.5",
"license": "MIT",
"main": "./dist/index.js",
"types": "./dist/index.d.js",

View File

@@ -9,12 +9,13 @@ const { shouldServe } = require('@now/build-utils'); // eslint-disable-line impo
exports.analyze = ({ files, entrypoint }) => files[entrypoint].digest;
exports.build = async ({ files, entrypoint }) => {
exports.build = async ({
workPath, files, entrypoint, meta,
}) => {
console.log('downloading files...');
const srcDir = await getWritableDirectory();
const outDir = await getWritableDirectory();
await download(files, srcDir);
await download(files, workPath, meta);
const handlerPath = path.join(__dirname, 'handler');
await copyFile(handlerPath, path.join(outDir, 'handler'));
@@ -24,7 +25,7 @@ exports.build = async ({ files, entrypoint }) => {
// For now only the entrypoint file is copied into the lambda
await copyFile(
path.join(srcDir, entrypoint),
path.join(workPath, entrypoint),
path.join(outDir, entrypoint),
);

View File

@@ -1,6 +1,6 @@
{
"name": "@now/cgi",
"version": "0.1.3",
"version": "0.1.4",
"license": "MIT",
"repository": {
"type": "git",

View File

@@ -14,6 +14,7 @@ import {
import { createGo, getAnalyzedEntrypoint } from './go-helpers';
interface Analyzed {
found?: boolean;
packageName: string;
functionName: string;
watch: string[];
@@ -81,7 +82,9 @@ export async function build({
if (!analyzed) {
const err = new Error(
`Could not find an exported function in "${entrypoint}"`
`Could not find an exported function in "${entrypoint}"
Learn more: https://zeit.co/docs/v2/deployments/official-builders/go-now-go/#entrypoint
`
);
console.log(err.message);
throw err;

View File

@@ -1,6 +1,6 @@
{
"name": "@now/go",
"version": "0.4.5",
"version": "0.4.6",
"license": "MIT",
"repository": {
"type": "git",

View File

@@ -0,0 +1,22 @@
package function
import (
"fmt"
"net/http"
)
// Person struct
type Person struct {
name string
age int
}
// NewPerson struct method
func NewPerson(name string, age int) *Person {
return &Person{name: name, age: age}
}
// H func
func H(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "RANDOMNESS_PLACEHOLDER")
}

View File

@@ -0,0 +1,9 @@
{
"version": 2,
"builds": [
{ "src": "index.go", "use": "@now/go" }
],
"probes": [
{ "path": "/", "mustContain": "RANDOMNESS_PLACEHOLDER" }
]
}

View File

@@ -138,24 +138,32 @@ func main() {
}
parsed := parse(fileName)
offset := parsed.Pos()
reqRep := "*http.Request http.ResponseWriter"
for _, decl := range parsed.Decls {
fn, ok := decl.(*ast.FuncDecl)
if !ok {
// this declaraction is not a function
// this declaration is not a function
// so we're not interested
continue
}
if fn.Name.IsExported() == true {
// we found the first exported function
// we're done!
analyzed := analyze{
PackageName: parsed.Name.Name,
FuncName: fn.Name.Name,
Watch: unique(relatedFiles),
// find a valid `net/http` handler function
for _, param := range fn.Type.Params.List {
if strings.Contains(reqRep, string(rf[param.Type.Pos()-offset:param.Type.End()-offset])) {
// we found the first exported function with `net/http`
// we're done!
analyzed := analyze{
PackageName: parsed.Name.Name,
FuncName: fn.Name.Name,
Watch: unique(relatedFiles),
}
analyzedJSON, _ := json.Marshal(analyzed)
fmt.Print(string(analyzedJSON))
os.Exit(0)
}
}
json, _ := json.Marshal(analyzed)
fmt.Print(string(json))
os.Exit(0)
}
}
}

View File

@@ -8,9 +8,11 @@ const { runNpmInstall } = require('@now/build-utils/fs/run-user-scripts.js'); //
const writeFile = promisify(fs.writeFile);
exports.build = async ({ files, entrypoint, workPath }) => {
exports.build = async ({
files, entrypoint, workPath, meta,
}) => {
console.log('downloading user files...');
const downloadedFiles = await download(files, workPath);
const downloadedFiles = await download(files, workPath, meta);
console.log('writing package.json...');
const packageJson = { dependencies: { 'mdx-deck': '1.7.15' } };
const packageJsonPath = path.join(workPath, 'package.json');

View File

@@ -1,6 +1,6 @@
{
"name": "@now/mdx-deck",
"version": "0.5.3",
"version": "0.5.4",
"license": "MIT",
"repository": {
"type": "git",

View File

@@ -1,6 +1,6 @@
{
"name": "@now/next",
"version": "0.3.2-canary.1",
"version": "0.3.2",
"license": "MIT",
"main": "./dist/index",
"scripts": {

View File

@@ -1,12 +1,16 @@
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = process.env.NOW_REGION === 'dev1' ? 'development' : 'production';
process.env.NODE_ENV =
process.env.NOW_REGION === 'dev1' ? 'development' : 'production';
}
const { Server } = require('http');
const { Bridge } = require('./now__bridge');
const page = require('./page');
const server = new Server(page.render);
// page.render is for React rendering
// page.default is for /api rendering
// page is for module.exports in /api
const server = new Server(page.render || page.default || page);
const bridge = new Bridge(server);
bridge.listen();

View File

@@ -28,11 +28,13 @@ const { shouldServe } = require('@now/build-utils'); // eslint-disable-line impo
* @param {string[]} [options.npmArguments]
*/
async function downloadInstallAndBundle(
{ files, entrypoint, workPath },
{
files, entrypoint, workPath, meta,
},
{ npmArguments = [] } = {},
) {
console.log('downloading user files...');
const downloadedFiles = await download(files, workPath);
const downloadedFiles = await download(files, workPath, meta);
console.log("installing dependencies for user's code...");
const entrypointFsDirname = path.join(workPath, path.dirname(entrypoint));
@@ -99,10 +101,12 @@ exports.config = {
* @returns {Promise<Files>}
*/
exports.build = async ({
files, entrypoint, config, workPath,
files, entrypoint, config, workPath, meta,
}) => {
const [downloadedFiles, entrypointFsDirname] = await downloadInstallAndBundle(
{ files, entrypoint, workPath },
{
files, entrypoint, workPath, meta,
},
{ npmArguments: ['--prefer-offline'] },
);

View File

@@ -1,6 +1,6 @@
{
"name": "@now/node-server",
"version": "0.7.2-canary.0",
"version": "0.7.2",
"license": "MIT",
"repository": {
"type": "git",
@@ -9,7 +9,7 @@
},
"dependencies": {
"@now/node-bridge": "^1.1.2",
"@zeit/ncc": "0.18.3",
"@zeit/ncc": "0.18.5",
"fs-extra": "7.0.1"
},
"scripts": {

View File

@@ -1,6 +1,6 @@
{
"name": "@now/node",
"version": "0.7.2-canary.1",
"version": "0.7.2",
"license": "MIT",
"main": "./dist/index",
"repository": {
@@ -10,7 +10,7 @@
},
"dependencies": {
"@now/node-bridge": "^1.1.2",
"@zeit/ncc": "0.18.3",
"@zeit/ncc": "0.18.5",
"fs-extra": "7.0.1"
},
"scripts": {

View File

@@ -13,11 +13,10 @@ exports.config = {
};
exports.build = async ({
files, entrypoint, workPath, config,
files, entrypoint, workPath, config, meta,
}) => {
// Download all files to workPath
const fileDir = path.join(workPath, 'userfiles');
const downloadedFiles = await download(files, fileDir);
const downloadedFiles = await download(files, workPath, meta);
let includedFiles = {};
if (config && config.includeFiles) {
@@ -25,7 +24,7 @@ exports.build = async ({
// eslint-disable-next-line no-restricted-syntax
for (const pattern of config.includeFiles) {
// eslint-disable-next-line no-await-in-loop
const matchedFiles = await glob(pattern, fileDir);
const matchedFiles = await glob(pattern, workPath);
Object.assign(includedFiles, matchedFiles);
}
// explicit and always include the entrypoint

View File

@@ -1,6 +1,6 @@
{
"name": "@now/php",
"version": "0.5.3",
"version": "0.5.4",
"license": "MIT",
"repository": {
"type": "git",

View File

@@ -73,7 +73,7 @@ export const build = async ({
meta = {},
}: BuildOptions) => {
console.log('downloading files...');
const downloadedFiles = await download(originalFiles, workPath);
const downloadedFiles = await download(originalFiles, workPath, meta);
const foundLockFile = 'Pipfile.lock' in downloadedFiles;
const pyUserBase = await getWriteableDirectory();
process.env.PYTHONUSERBASE = pyUserBase;

View File

@@ -1,6 +1,6 @@
{
"name": "@now/python",
"version": "0.2.1",
"version": "0.2.2",
"main": "index.js",
"license": "MIT",
"repository": {

View File

@@ -254,10 +254,10 @@ async function buildSingleFile({
exports.build = async (m) => {
const {
files, entrypoint, workPath, config,
files, entrypoint, workPath, config, meta,
} = m;
console.log('downloading files');
const downloadedFiles = await download(files, workPath);
const downloadedFiles = await download(files, workPath, meta);
const entryPath = downloadedFiles[entrypoint].fsPath;
await installRust();

Binary file not shown.

View File

@@ -1,6 +1,6 @@
{
"name": "@now/rust",
"version": "0.2.4-canary.0",
"version": "0.2.4",
"license": "MIT",
"repository": {
"type": "git",

View File

@@ -1135,10 +1135,10 @@
globby "8.0.0"
signal-exit "3.0.2"
"@zeit/ncc@0.18.3":
version "0.18.3"
resolved "https://registry.yarnpkg.com/@zeit/ncc/-/ncc-0.18.3.tgz#6a84552c7b6710ab510f71e49546fff4e3b5c545"
integrity sha512-QNSNpHoh8medZXbmHHtJRZU3/2oemb3AjMrv/2fXBWCDPDmkDCRkE6V5PRrjdMQFvEN9SerhHWR8pp3IJF6Mww==
"@zeit/ncc@0.18.5":
version "0.18.5"
resolved "https://registry.yarnpkg.com/@zeit/ncc/-/ncc-0.18.5.tgz#5687df6c32f1a2e2486aa110b3454ccebda4fb9c"
integrity sha512-F+SbvEAh8rchiRXqQbmD1UmbePY7dCOKTbvfFtbVbK2xMH/tyri5YKfNxXKK7eL9EWkkbqB3NTVQO6nokApeBA==
JSONStream@^1.0.4, JSONStream@^1.3.4:
version "1.3.5"