BVB Source Codes

parse-server Show AdaptableController.js Source code

Return Download parse-server: download AdaptableController.js Source code - Download parse-server Source code - Type:.js
  1. /*
  2. AdaptableController.js
  3.  
  4. AdaptableController is the base class for all controllers
  5. that support adapter,
  6. The super class takes care of creating the right instance for the adapter
  7. based on the parameters passed
  8.  
  9.  */
  10.  
  11. // _adapter is private, use Symbol
  12. var _adapter = Symbol();
  13. import Config from '../Config';
  14.  
  15. export class AdaptableController {
  16.  
  17.   constructor(adapter, appId, options) {
  18.     this.options = options;
  19.     this.appId = appId;
  20.     this.adapter = adapter;
  21.   }
  22.  
  23.   set adapter(adapter) {
  24.     this.validateAdapter(adapter);
  25.     this[_adapter] = adapter;
  26.   }
  27.  
  28.   get adapter() {
  29.     return this[_adapter];
  30.   }
  31.  
  32.   get config() {
  33.     return new Config(this.appId);
  34.   }
  35.  
  36.   expectedAdapterType() {
  37.     throw new Error("Subclasses should implement expectedAdapterType()");
  38.   }
  39.  
  40.   validateAdapter(adapter) {
  41.     AdaptableController.validateAdapter(adapter, this);
  42.   }
  43.  
  44.   static validateAdapter(adapter, self, ExpectedType) {
  45.     if (!adapter) {
  46.       throw new Error(this.constructor.name + " requires an adapter");
  47.     }
  48.  
  49.     const Type = ExpectedType || self.expectedAdapterType();
  50.     // Allow skipping for testing
  51.     if (!Type) {
  52.       return;
  53.     }
  54.  
  55.     // Makes sure the prototype matches
  56.     const mismatches = Object.getOwnPropertyNames(Type.prototype).reduce((obj, key) => {
  57.       const adapterType = typeof adapter[key];
  58.       const expectedType = typeof Type.prototype[key];
  59.       if (adapterType !== expectedType) {
  60.         obj[key] = {
  61.           expected: expectedType,
  62.           actual: adapterType
  63.         }
  64.       }
  65.       return obj;
  66.     }, {});
  67.  
  68.     if (Object.keys(mismatches).length > 0) {
  69.       throw new Error("Adapter prototype don't match expected prototype", adapter, mismatches);
  70.     }
  71.   }
  72. }
  73.  
  74. export default AdaptableController;
  75.  
downloadAdaptableController.js Source code - Download parse-server Source code
Related Source Codes/Software:
react-boilerplate - 2017-06-07
webtorrent - Streaming torrent client for the web ... 2017-06-06
machine-learning-for-software-engineers - A complete daily plan for studying to become a mac... 2017-06-06
upterm - A terminal emulator for the 21st century. 2017-06-06
lottie-android - Render After Effects animations natively on Androi... 2017-06-07
AsyncDisplayKit - Smooth asynchronous user interfaces for iOS apps. ... 2017-06-07
ionicons - The premium icon font for Ionic ... 2017-06-07
storybook - 2017-06-07
prettier - Prettier is an opinionated JavaScript formatter. ... 2017-06-08
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top