type-arango
Version:
ArangoDB Foxx decorators and utilities for TypeScript
102 lines • 5.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRoutes = exports.configure = exports.complete = exports.Type = exports.Entity = exports.Entities = exports.isFoxx = exports.LogLevel = exports.Joi = exports.config = exports.isActive = exports.routes = exports.documents = exports.collections = exports.logger = exports.version = void 0;
var joi_1 = require("./joi");
Object.defineProperty(exports, "Joi", { enumerable: true, get: function () { return joi_1.Joi; } });
var utils_1 = require("./utils");
Object.defineProperty(exports, "isFoxx", { enumerable: true, get: function () { return utils_1.isFoxx; } });
var models_1 = require("./models");
Object.defineProperty(exports, "Entities", { enumerable: true, get: function () { return models_1.Entities; } });
Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return models_1.Entity; } });
Object.defineProperty(exports, "Type", { enumerable: true, get: function () { return models_1.Type; } });
var errors_1 = require("./errors");
var types_1 = require("./types");
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return types_1.LogLevel; } });
exports.version = require('../package.json').version;
exports.logger = new models_1.Logger();
exports.collections = [];
exports.documents = [];
exports.routes = [];
exports.isActive = utils_1.isFoxx();
exports.config = {
logLevel: types_1.LogLevel.Warn,
prefixCollectionName: false,
exposeRouteFunctionsToSwagger: false,
dasherizeRoutes: true,
paramOperatorSeparator: '|',
stripDocumentId: true,
stripDocumentRev: true,
stripDocumentKey: false,
unregisterAQLFunctionEntityGroup: true,
addAttributeWritersToReaders: true,
defaultLocale: 'en',
defaultCurrency: 'USD',
defaultListLimit: 25,
defaultListLimitMax: 100,
forClient: null,
fromClient: null,
providedRolesDefault: ['guest'],
requiredRolesFallback: ['user'],
requiredWriterRolesFallback: ['admin'],
throwUnauthorized: 'unauthorized',
throwForbidden: 'forbidden',
disableCache: false,
header: null,
getUserRoles: function (req) {
return (req.session && req.session.data && req.session.data.roles || []).concat(exports.config.providedRolesDefault);
},
getAuthorizedRoles: function (userRoles, accessRoles) {
return userRoles.filter(function (role) { return accessRoles.includes(role); });
}
};
var decorators_1 = require("./decorators");
Object.defineProperty(exports, "Collection", { enumerable: true, get: function () { return decorators_1.Collection; } });
Object.defineProperty(exports, "Route", { enumerable: true, get: function () { return decorators_1.Route; } });
Object.defineProperty(exports, "Description", { enumerable: true, get: function () { return decorators_1.Description; } });
Object.defineProperty(exports, "Document", { enumerable: true, get: function () { return decorators_1.Document; } });
Object.defineProperty(exports, "Edge", { enumerable: true, get: function () { return decorators_1.Edge; } });
Object.defineProperty(exports, "Nested", { enumerable: true, get: function () { return decorators_1.Nested; } });
Object.defineProperty(exports, "Attribute", { enumerable: true, get: function () { return decorators_1.Attribute; } });
Object.defineProperty(exports, "Index", { enumerable: true, get: function () { return decorators_1.Index; } });
Object.defineProperty(exports, "OneToOne", { enumerable: true, get: function () { return decorators_1.OneToOne; } });
Object.defineProperty(exports, "OneToMany", { enumerable: true, get: function () { return decorators_1.OneToMany; } });
Object.defineProperty(exports, "Authorized", { enumerable: true, get: function () { return decorators_1.Authorized; } });
Object.defineProperty(exports, "Before", { enumerable: true, get: function () { return decorators_1.Before; } });
Object.defineProperty(exports, "After", { enumerable: true, get: function () { return decorators_1.After; } });
Object.defineProperty(exports, "ForClient", { enumerable: true, get: function () { return decorators_1.ForClient; } });
Object.defineProperty(exports, "FromClient", { enumerable: true, get: function () { return decorators_1.FromClient; } });
Object.defineProperty(exports, "Task", { enumerable: true, get: function () { return decorators_1.Task; } });
Object.defineProperty(exports, "AQLFunction", { enumerable: true, get: function () { return decorators_1.AQLFunction; } });
function complete() {
if (!exports.isActive)
return;
exports.documents.forEach(function (doc) { return doc.finalize(); });
exports.collections.forEach(function (col) { return col.finalize(); });
}
exports.complete = complete;
/**
* TypeArango() - Sets the config of `type-arango`
*/
function configure(configuration) {
if (configuration) {
Object.assign(exports.config, configuration);
exports.logger.info('Configure:', configuration);
}
return complete;
}
exports.configure = configure;
exports.default = configure;
/**
* Provides the Foxx.Router to `type-arango`
*/
function createRoutes(router, options) {
if (!utils_1.isFoxx())
throw new errors_1.RequiresFoxxEnvironmentError('createRoutes()');
if (options)
configure(options);
exports.logger.info('Creating Routes...');
exports.routes.reverse().forEach(function (route) { return route.setup(router); });
return router;
}
exports.createRoutes = createRoutes;
//# sourceMappingURL=index.js.map