blob: d9d0bb7d49f9f196a24fb33dbc24d071e9c54511 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
/**
* @fileoverview conversion between JavaScript and v23/verror Error object
* @private
*/
var VanadiumError = require('./../verror/vanadium-error');
var defaultLanguage = require('./../runtime/default-language');
var defaultCatalog = require('./../runtime/default-catalog');
var verror = require('../gen-vdl/v.io/v23/verror');
module.exports = {
toStandardErrorStruct: toStandardErrorStruct,
};
var unknownId = (new verror.UnknownError(null)).id;
/**
* Converts from a JavaScript error object to verror standard struct which
* wspr expects as error format.
* @private
* @param {Error} err JavaScript error object
* @param {string} appName name of the app
* @param {string} operation operation name.
* @return {_standard} verror standard struct
*/
function toStandardErrorStruct(err, appName, operation) {
if (err instanceof VanadiumError) {
return err;
}
var message = '';
var paramList = [];
if (err instanceof Error) {
message = err.message;
paramList = [];
} else if (err !== undefined && err !== null) {
paramList = [appName, operation, err + ''];
message = defaultCatalog.format(
defaultLanguage, unknownId, paramList);
}
if (!paramList[0] && appName) {
paramList[0] = appName;
}
if (!paramList[1] && operation) {
paramList[1] = operation;
}
// Make a copy of paramList
var args = paramList.slice(0);
// Add a null context to the front of the args.
args.unshift(null);
var e = new verror.UnknownError(args);
e.resetArgs.apply(e, paramList);
e.message = message;
e.msg = message;
return e;
}