use named arguments for "build" and "serve"

This commit is contained in:
Evan Wallace
2021-04-03 00:14:06 -07:00
parent 09752ec0d8
commit 274d347341
3 changed files with 35 additions and 20 deletions

View File

@@ -109,8 +109,15 @@ const startRunningService = async (wasmURL: string, useWorker: boolean): Promise
longLivedService = {
build: (options: types.BuildOptions): Promise<any> =>
new Promise<types.BuildResult>((resolve, reject) =>
service.buildOrServe('build', null, null, options, false, '/', (err, res) =>
err ? reject(err) : resolve(res as types.BuildResult))),
service.buildOrServe({
callName: 'build',
refs: null,
serveOptions: null,
options,
isTTY: false,
defaultWD: '/',
callback: (err, res) => err ? reject(err) : resolve(res as types.BuildResult),
})),
transform: (input, options) =>
new Promise((resolve, reject) =>
service.transform({

View File

@@ -380,7 +380,7 @@ export interface Refs {
}
export interface StreamService {
buildOrServe(
buildOrServe(args: {
callName: string,
refs: Refs | null,
serveOptions: types.ServeOptions | null,
@@ -388,7 +388,7 @@ export interface StreamService {
isTTY: boolean,
defaultWD: string,
callback: (err: Error | null, res: types.BuildResult | types.ServeResult | null) => void,
): void;
}): void;
transform(args: {
callName: string,
@@ -819,7 +819,7 @@ export function createChannel(streamIn: StreamIn): StreamOut {
};
};
let buildOrServe: StreamService['buildOrServe'] = (callName, callerRefs, serveOptions, options, isTTY, defaultWD, callback) => {
let buildOrServe: StreamService['buildOrServe'] = ({ callName, refs: callerRefs, serveOptions, options, isTTY, defaultWD, callback }) => {
let pluginRefs: Refs | undefined;
const details = createObjectStash();
const logLevelDefault = 'warning';

View File

@@ -144,9 +144,14 @@ export let buildSync: typeof types.buildSync = (options: types.BuildOptions): an
}
let result: types.BuildResult;
runServiceSync(service => service.buildOrServe('buildSync', null, null, options, isTTY(), defaultWD, (err, res) => {
if (err) throw err;
result = res as types.BuildResult;
runServiceSync(service => service.buildOrServe({
callName: 'buildSync',
refs: null,
serveOptions: null,
options,
isTTY: isTTY(),
defaultWD,
callback: (err, res) => { if (err) throw err; result = res as types.BuildResult },
}));
return result!;
};
@@ -252,12 +257,14 @@ let ensureServiceIsRunning = (): Service => {
longLivedService = {
build: (options: types.BuildOptions): Promise<any> => {
return new Promise<types.BuildResult>((resolve, reject) => {
service.buildOrServe('build', refs, null, options, isTTY(), defaultWD, (err, res) => {
if (err) {
reject(err)
} else {
resolve(res as types.BuildResult);
}
service.buildOrServe({
callName: 'build',
refs,
serveOptions: null,
options,
isTTY: isTTY(),
defaultWD,
callback: (err, res) => err ? reject(err) : resolve(res as types.BuildResult),
})
})
},
@@ -265,12 +272,13 @@ let ensureServiceIsRunning = (): Service => {
if (serveOptions === null || typeof serveOptions !== 'object')
throw new Error('The first argument must be an object')
return new Promise((resolve, reject) =>
service.buildOrServe('serve', refs, serveOptions, buildOptions, isTTY(), defaultWD, (err, res) => {
if (err) {
reject(err);
} else {
resolve(res as types.ServeResult);
}
service.buildOrServe({
callName: 'serve',
refs,
serveOptions,
options: buildOptions,
isTTY: isTTY(),
defaultWD, callback: (err, res) => err ? reject(err) : resolve(res as types.ServeResult),
}))
},
transform: (input, options) => {