CoreManager.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. var config = {
  2. IS_NODE: typeof process !== 'undefined' && !!process.versions && !!process.versions.node && !process.versions.electron,
  3. REQUEST_ATTEMPT_LIMIT: 5,
  4. REQUEST_BATCH_SIZE: 20,
  5. REQUEST_HEADERS: {},
  6. SERVER_URL: 'https://api.parse.com/1',
  7. SERVER_AUTH_TYPE: null,
  8. SERVER_AUTH_TOKEN: null,
  9. LIVEQUERY_SERVER_URL: null,
  10. ENCRYPTED_KEY: null,
  11. VERSION: "js" + "1.5.9",
  12. APPLICATION_ID: null,
  13. JAVASCRIPT_KEY: null,
  14. MASTER_KEY: null,
  15. USE_MASTER_KEY: false,
  16. PERFORM_USER_REWRITE: true,
  17. FORCE_REVOCABLE_SESSION: false,
  18. ENCRYPTED_USER: false,
  19. IDEMPOTENCY: false
  20. };
  21. function requireMethods(name, methods, controller) {
  22. methods.forEach(function (func) {
  23. if (typeof controller[func] !== 'function') {
  24. throw new Error(name + " must implement " + func + "()");
  25. }
  26. });
  27. }
  28. module.exports = {
  29. get: function (key) {
  30. if (config.hasOwnProperty(key)) {
  31. return config[key];
  32. }
  33. throw new Error("Configuration key not found: " + key);
  34. },
  35. set: function (key, value) {
  36. config[key] = value;
  37. },
  38. setAnalyticsController: function (controller) {
  39. requireMethods('AnalyticsController', ['track'], controller);
  40. config.AnalyticsController = controller;
  41. },
  42. getAnalyticsController: function () {
  43. return config.AnalyticsController;
  44. },
  45. setCloudController: function (controller) {
  46. requireMethods('CloudController', ['run', 'getJobsData', 'startJob'], controller);
  47. config.CloudController = controller;
  48. },
  49. getCloudController: function () {
  50. return config.CloudController;
  51. },
  52. setConfigController: function (controller) {
  53. requireMethods('ConfigController', ['current', 'get', 'save'], controller);
  54. config.ConfigController = controller;
  55. },
  56. getConfigController: function () {
  57. return config.ConfigController;
  58. },
  59. setCryptoController: function (controller) {
  60. requireMethods('CryptoController', ['encrypt', 'decrypt'], controller);
  61. config.CryptoController = controller;
  62. },
  63. getCryptoController: function () {
  64. return config.CryptoController;
  65. },
  66. setFileController: function (controller) {
  67. requireMethods('FileController', ['saveFile', 'saveBase64'], controller);
  68. config.FileController = controller;
  69. },
  70. getFileController: function () {
  71. return config.FileController;
  72. },
  73. setInstallationController: function (controller) {
  74. requireMethods('InstallationController', ['currentInstallationId'], controller);
  75. config.InstallationController = controller;
  76. },
  77. getInstallationController: function () {
  78. return config.InstallationController;
  79. },
  80. setObjectController: function (controller) {
  81. requireMethods('ObjectController', ['save', 'fetch', 'destroy'], controller);
  82. config.ObjectController = controller;
  83. },
  84. getObjectController: function () {
  85. return config.ObjectController;
  86. },
  87. setObjectStateController: function (controller) {
  88. requireMethods('ObjectStateController', ['getState', 'initializeState', 'removeState', 'getServerData', 'setServerData', 'getPendingOps', 'setPendingOp', 'pushPendingState', 'popPendingState', 'mergeFirstPendingState', 'getObjectCache', 'estimateAttribute', 'estimateAttributes', 'commitServerChanges', 'enqueueTask', 'clearAllState'], controller);
  89. config.ObjectStateController = controller;
  90. },
  91. getObjectStateController: function () {
  92. return config.ObjectStateController;
  93. },
  94. setPushController: function (controller) {
  95. requireMethods('PushController', ['send'], controller);
  96. config.PushController = controller;
  97. },
  98. getPushController: function () {
  99. return config.PushController;
  100. },
  101. setQueryController: function (controller) {
  102. requireMethods('QueryController', ['find', 'aggregate'], controller);
  103. config.QueryController = controller;
  104. },
  105. getQueryController: function () {
  106. return config.QueryController;
  107. },
  108. setRESTController: function (controller) {
  109. requireMethods('RESTController', ['request', 'ajax'], controller);
  110. config.RESTController = controller;
  111. },
  112. getRESTController: function () {
  113. return config.RESTController;
  114. },
  115. setSchemaController: function (controller) {
  116. requireMethods('SchemaController', ['get', 'create', 'update', 'delete', 'send', 'purge'], controller);
  117. config.SchemaController = controller;
  118. },
  119. getSchemaController: function () {
  120. return config.SchemaController;
  121. },
  122. setSessionController: function (controller) {
  123. requireMethods('SessionController', ['getSession'], controller);
  124. config.SessionController = controller;
  125. },
  126. getSessionController: function () {
  127. return config.SessionController;
  128. },
  129. setStorageController: function (controller) {
  130. if (controller.async) {
  131. requireMethods('An async StorageController', ['getItemAsync', 'setItemAsync', 'removeItemAsync', 'getAllKeysAsync'], controller);
  132. } else {
  133. requireMethods('A synchronous StorageController', ['getItem', 'setItem', 'removeItem', 'getAllKeys'], controller);
  134. }
  135. config.StorageController = controller;
  136. },
  137. setLocalDatastoreController: function (controller) {
  138. requireMethods('LocalDatastoreController', ['pinWithName', 'fromPinWithName', 'unPinWithName', 'getAllContents', 'clear'], controller);
  139. config.LocalDatastoreController = controller;
  140. },
  141. getLocalDatastoreController: function () {
  142. return config.LocalDatastoreController;
  143. },
  144. setLocalDatastore: function (store) {
  145. config.LocalDatastore = store;
  146. },
  147. getLocalDatastore: function () {
  148. return config.LocalDatastore;
  149. },
  150. getStorageController: function () {
  151. return config.StorageController;
  152. },
  153. setAsyncStorage: function (storage) {
  154. config.AsyncStorage = storage;
  155. },
  156. getAsyncStorage: function () {
  157. return config.AsyncStorage;
  158. },
  159. setWebSocketController: function (controller) {
  160. config.WebSocketController = controller;
  161. },
  162. getWebSocketController: function () {
  163. return config.WebSocketController;
  164. },
  165. setUserController: function (controller) {
  166. requireMethods('UserController', ['setCurrentUser', 'currentUser', 'currentUserAsync', 'signUp', 'logIn', 'become', 'logOut', 'me', 'requestPasswordReset', 'upgradeToRevocableSession', 'requestEmailVerification', 'verifyPassword', 'linkWith'], controller);
  167. config.UserController = controller;
  168. },
  169. getUserController: function () {
  170. return config.UserController;
  171. },
  172. setLiveQueryController: function (controller) {
  173. requireMethods('LiveQueryController', ['setDefaultLiveQueryClient', 'getDefaultLiveQueryClient', '_clearCachedDefaultClient'], controller);
  174. config.LiveQueryController = controller;
  175. },
  176. getLiveQueryController: function () {
  177. return config.LiveQueryController;
  178. },
  179. setHooksController: function (controller) {
  180. requireMethods('HooksController', ['create', 'get', 'update', 'remove'], controller);
  181. config.HooksController = controller;
  182. },
  183. getHooksController: function () {
  184. return config.HooksController;
  185. }
  186. };