vercel-deno-dev
Advanced tools
Comparing version 0.1.0-5f6d9aaeade5de4fd91bf26b088e15f8275ce886 to 0.1.0-5f77d027b6d4dd97e563a9f7d454cd58e6c93012
@@ -14,2 +14,3 @@ "use strict"; | ||
const downloadedFiles = await build_utils_1.download(files, workPath, meta); | ||
console.log(meta); | ||
// configure environment variable | ||
@@ -16,0 +17,0 @@ const denoFiles = await util_1.getdenoFiles(workPath, meta.isDev || false); |
@@ -90,3 +90,3 @@ "use strict"; | ||
const tsconfig = process.env.DENO_CONFIG ? [`-c`, `${downloadedFiles[process.env.DENO_CONFIG].fsPath}`] : []; | ||
const { workPath, entrypoint } = opts; | ||
const { workPath, entrypoint, meta = {} } = opts; | ||
const denobinPath = '.deno/bin/deno'; | ||
@@ -103,47 +103,37 @@ const runtimePath = 'boot/runtime.ts'; | ||
} | ||
// patch .graph files to use file paths beginning with /var/task | ||
// reference : https://github.com/TooTallNate/vercel-deno/blob/5a236aab30eeb4a6e68216a80f637e687bc59d2b/src/index.ts#L98-L118 | ||
const workPathUri = `file://${workPath}`; | ||
const sourceFiles = new Set(); | ||
const genFileDir = path_1.join(workPath, '.deno/gen/file'); | ||
sourceFiles.add(entrypoint); | ||
for await (const file of getFilesWithExtension(genFileDir, '.graph')) { | ||
let needsWrite = false; | ||
const graph = JSON.parse(await fs_extra_1.readFile(file, 'utf8')); | ||
for (let i = 0; i < graph.deps.length; i++) { | ||
const dep = graph.deps[i]; | ||
if (dep.startsWith(workPathUri)) { | ||
const relative = dep.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
graph.deps[i] = updated; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
if (!meta.isDev) { | ||
// patch .graph files to use file paths beginning with /var/task | ||
// reference : https://github.com/TooTallNate/vercel-deno/blob/5a236aab30eeb4a6e68216a80f637e687bc59d2b/src/index.ts#L98-L118 | ||
const workPathUri = `file://${workPath}`; | ||
const sourceFiles = new Set(); | ||
const genFileDir = path_1.join(workPath, '.deno/gen/file'); | ||
sourceFiles.add(entrypoint); | ||
for await (const file of getFilesWithExtension(genFileDir, '.graph')) { | ||
let needsWrite = false; | ||
const graph = JSON.parse(await fs_extra_1.readFile(file, 'utf8')); | ||
for (let i = 0; i < graph.deps.length; i++) { | ||
const dep = graph.deps[i]; | ||
if (dep.startsWith(workPathUri)) { | ||
const relative = dep.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
graph.deps[i] = updated; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
} | ||
if (needsWrite) { | ||
console.log('Patched %j', file); | ||
await fs_extra_1.writeFile(file, JSON.stringify(graph, null, 2)); | ||
} | ||
} | ||
for await (const file of getFilesWithExtension(genFileDir, '.buildinfo')) { | ||
let needsWrite = false; | ||
const buildInfo = JSON.parse(await fs_extra_1.readFile(file, 'utf8')); | ||
const { fileInfos, referencedMap, exportedModulesMap, semanticDiagnosticsPerFile, } = buildInfo.program; | ||
for (const filename of Object.keys(fileInfos)) { | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
fileInfos[updated] = fileInfos[filename]; | ||
delete fileInfos[filename]; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
if (needsWrite) { | ||
console.log('Patched %j', file); | ||
await fs_extra_1.writeFile(file, JSON.stringify(graph, null, 2)); | ||
} | ||
} | ||
for (const [filename, refs] of Object.entries(referencedMap)) { | ||
for (let i = 0; i < refs.length; i++) { | ||
const ref = refs[i]; | ||
if (ref.startsWith(workPathUri)) { | ||
const relative = ref.substring(workPathUri.length + 1); | ||
for await (const file of getFilesWithExtension(genFileDir, '.buildinfo')) { | ||
let needsWrite = false; | ||
const buildInfo = JSON.parse(await fs_extra_1.readFile(file, 'utf8')); | ||
const { fileInfos, referencedMap, exportedModulesMap, semanticDiagnosticsPerFile, } = buildInfo.program; | ||
for (const filename of Object.keys(fileInfos)) { | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
refs[i] = updated; | ||
fileInfos[updated] = fileInfos[filename]; | ||
delete fileInfos[filename]; | ||
sourceFiles.add(relative); | ||
@@ -153,18 +143,48 @@ needsWrite = true; | ||
} | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
referencedMap[updated] = refs; | ||
delete referencedMap[filename]; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
for (const [filename, refs] of Object.entries(referencedMap)) { | ||
for (let i = 0; i < refs.length; i++) { | ||
const ref = refs[i]; | ||
if (ref.startsWith(workPathUri)) { | ||
const relative = ref.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
refs[i] = updated; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
referencedMap[updated] = refs; | ||
delete referencedMap[filename]; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
} | ||
for (const [filename, refs] of Object.entries(exportedModulesMap)) { | ||
for (let i = 0; i < refs.length; i++) { | ||
const ref = refs[i]; | ||
for (const [filename, refs] of Object.entries(exportedModulesMap)) { | ||
for (let i = 0; i < refs.length; i++) { | ||
const ref = refs[i]; | ||
if (ref.startsWith(workPathUri)) { | ||
const relative = ref.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
refs[i] = updated; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
exportedModulesMap[updated] = refs; | ||
delete exportedModulesMap[filename]; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
for (let i = 0; i < semanticDiagnosticsPerFile.length; i++) { | ||
const ref = semanticDiagnosticsPerFile[i]; | ||
if (ref.startsWith(workPathUri)) { | ||
const relative = ref.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
refs[i] = updated; | ||
semanticDiagnosticsPerFile[i] = updated; | ||
sourceFiles.add(relative); | ||
@@ -174,30 +194,12 @@ needsWrite = true; | ||
} | ||
if (filename.startsWith(workPathUri)) { | ||
const relative = filename.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
exportedModulesMap[updated] = refs; | ||
delete exportedModulesMap[filename]; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
if (needsWrite) { | ||
console.log('Patched %j', file); | ||
await fs_extra_1.writeFile(file, JSON.stringify(buildInfo, null, 2)); | ||
} | ||
} | ||
for (let i = 0; i < semanticDiagnosticsPerFile.length; i++) { | ||
const ref = semanticDiagnosticsPerFile[i]; | ||
if (ref.startsWith(workPathUri)) { | ||
const relative = ref.substring(workPathUri.length + 1); | ||
const updated = `file:///var/task/${relative}`; | ||
semanticDiagnosticsPerFile[i] = updated; | ||
sourceFiles.add(relative); | ||
needsWrite = true; | ||
} | ||
} | ||
if (needsWrite) { | ||
console.log('Patched %j', file); | ||
await fs_extra_1.writeFile(file, JSON.stringify(buildInfo, null, 2)); | ||
} | ||
// move generated files to AWS path /var/task | ||
const cwd = path_1.join(workPath, '.deno', 'gen', 'file', workPath); | ||
const aws_task = path_1.join(workPath, '.deno', 'gen', 'file', 'var', 'task'); | ||
await fs_extra_1.move(cwd, aws_task, { overwrite: true }); | ||
} | ||
// move generated files to AWS path /var/task | ||
const cwd = path_1.join(workPath, '.deno', 'gen', 'file', workPath); | ||
const aws_task = path_1.join(workPath, '.deno', 'gen', 'file', 'var', 'task'); | ||
await fs_extra_1.move(cwd, aws_task, { overwrite: true }); | ||
return await dist_1.glob(".deno/**", workPath); | ||
@@ -204,0 +206,0 @@ } |
@@ -60,3 +60,3 @@ "use strict"; | ||
...tsconfig, | ||
path_1.join(__dirname, 'runtime.ts'), | ||
path_1.join(__dirname, '../boot/dev.runtime.ts'), | ||
]; | ||
@@ -70,17 +70,21 @@ const portFile = path_1.join(os_1.tmpdir(), `deno-port-${Math.random().toString(32).substring(2)}`); | ||
}; | ||
const child = child_process_1.spawn(denoBinPath, args, { | ||
cwd: workPath, | ||
env, | ||
stdio: ['ignore'], | ||
}); | ||
console.log('waiting for port...'); | ||
/// we listen any response from tmp/deno-port-RAND | ||
await fs_extra_1.default.createFile(portFile); | ||
/// listen any response from tmp/deno-port-RAND | ||
const getPort = new Promise((res) => { | ||
fs_extra_1.default.watch(portFile, "utf-8", async () => { | ||
console.log('file changed detected, read port file...'); | ||
const me = fs_extra_1.default.watch(portFile, "utf-8", async () => { | ||
const file = await fs_extra_1.readFile(portFile, { encoding: 'utf8' }); | ||
if (file) | ||
if (file.length > 0) { | ||
console.log('Dev port received.'); | ||
me.close(); | ||
await fs_extra_1.default.remove(portFile); | ||
res({ port: Number(file) }); | ||
} | ||
}); | ||
}); | ||
const child = child_process_1.spawn(denoBinPath, args, { | ||
cwd: workPath, | ||
env, | ||
stdio: ['ignore', 'inherit', 'inherit'], | ||
}); | ||
console.log('waiting for dev port...'); | ||
const result = await getPort; | ||
@@ -87,0 +91,0 @@ if (isDevPort(result)) |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.startDevServer = exports.config = exports.build = exports.version = void 0; | ||
exports.startDevServer = exports.shouldServe = exports.config = exports.build = exports.version = void 0; | ||
const build_1 = __importDefault(require("./build")); | ||
@@ -16,1 +16,3 @@ exports.build = build_1.default; | ||
exports.startDevServer = dev_1.default; | ||
const build_utils_1 = require("@vercel/build-utils"); | ||
Object.defineProperty(exports, "shouldServe", { enumerable: true, get: function () { return build_utils_1.shouldServe; } }); |
{ | ||
"name": "vercel-deno-dev", | ||
"version": "0.1.0-5f6d9aaeade5de4fd91bf26b088e15f8275ce886", | ||
"version": "0.1.0-5f77d027b6d4dd97e563a9f7d454cd58e6c93012", | ||
"description": "run deno on vercel", | ||
@@ -18,7 +18,7 @@ "main": "./dist/index", | ||
"@types/fs-extra": "^9.0.1", | ||
"@types/node": "^14.0.1", | ||
"@vercel/build-utils": "^2.3.1", | ||
"@types/node": "^14.0.24", | ||
"@vercel/build-utils": "^2.4.1", | ||
"@vercel/frameworks": "^0.0.14", | ||
"@vercel/routing-utils": "^1.8.2", | ||
"typescript": "^3.9.2" | ||
"typescript": "^3.9.7" | ||
}, | ||
@@ -25,0 +25,0 @@ "scripts": { |
33546
767