57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
|
var assert = require('assert');
|
||
|
|
||
|
/**
|
||
|
* Compatibility layer allowing applications based on an older LoopBack version
|
||
|
* to work with newer versions with minimum changes involved.
|
||
|
*
|
||
|
* You should not use it unless migrating from an older version of LoopBack.
|
||
|
*/
|
||
|
|
||
|
var compat = exports;
|
||
|
|
||
|
/**
|
||
|
* LoopBack versions pre-1.6 use plural model names when registering shared
|
||
|
* classes with strong-remoting. As the result, strong-remoting use method names
|
||
|
* like `Users.create` for the javascript methods like `User.create`.
|
||
|
* This has been fixed in v1.6, LoopBack consistently uses the singular
|
||
|
* form now.
|
||
|
*
|
||
|
* Turn this option on to enable the old behaviour.
|
||
|
*
|
||
|
* - `app.remotes()` and `app.remoteObjects()` will be indexed using
|
||
|
* plural names (Users instead of User).
|
||
|
*
|
||
|
* - Remote hooks must use plural names for the class name, i.e
|
||
|
* `Users.create` instead of `User.create`. This is transparently
|
||
|
* handled by `Model.beforeRemote()` and `Model.afterRemote()`.
|
||
|
*
|
||
|
* @type {boolean}
|
||
|
* @deprecated Your application should not depend on the way how loopback models
|
||
|
* and strong-remoting are wired together. It if does, you should update
|
||
|
* it to use singular model names.
|
||
|
*/
|
||
|
|
||
|
compat.usePluralNamesForRemoting = false;
|
||
|
|
||
|
/**
|
||
|
* Get the class name to use with strong-remoting.
|
||
|
* @param {function} Ctor Model class (constructor), e.g. `User`
|
||
|
* @return {string} Singular or plural name, depending on the value
|
||
|
* of `compat.usePluralNamesForRemoting`
|
||
|
* @internal
|
||
|
*/
|
||
|
|
||
|
compat.getClassNameForRemoting = function(Ctor) {
|
||
|
assert(
|
||
|
typeof(Ctor) === 'function',
|
||
|
'compat.getClassNameForRemoting expects a constructor as the argument');
|
||
|
|
||
|
if (compat.usePluralNamesForRemoting) {
|
||
|
assert(Ctor.pluralModelName,
|
||
|
'Model must have a "pluralModelName" property in compat mode');
|
||
|
return Ctor.pluralModelName;
|
||
|
}
|
||
|
|
||
|
return Ctor.modelName;
|
||
|
};
|