react-native-mosquito-transport 0.0.45 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -95,7 +95,7 @@ class MosquitodbUploadTask: NSObject, URLSessionDataDelegate {
95
95
  var request = URLRequest(url: URL(string: url)!)
96
96
  request.httpMethod = "POST"
97
97
 
98
- if let extraHeaders = options["extraHeaders"] as? [[String: String]] {
98
+ if let extraHeaders = options["extraHeaders"] as? [String: String] {
99
99
  for (key, value) in extraHeaders {
100
100
  request.setValue(value, forHTTPHeaderField: key)
101
101
  }
@@ -191,7 +191,7 @@ class MosquitodbDownloadTask: NSObject, URLSessionDownloadDelegate {
191
191
  var request = URLRequest(url: URL(string: url)!)
192
192
  request.httpMethod = "POST"
193
193
 
194
- if let extraHeaders = options["extraHeaders"] as? [[String: String]] {
194
+ if let extraHeaders = options["extraHeaders"] as? [String: String] {
195
195
  for (key, value) in extraHeaders {
196
196
  request.setValue(value, forHTTPHeaderField: key)
197
197
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-mosquito-transport",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "description": "React native javascript sdk for mosquito-transport (https://github.com/brainbehindx/mosquito-transport)",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -34,7 +34,7 @@
34
34
  "poke-object": "^1.0.1",
35
35
  "simplify-error": "^1.0.1",
36
36
  "socket.io-client": "^4.8.1",
37
- "subscription-listener": "^1.1.2",
37
+ "subscription-listener": "^1.1.3",
38
38
  "tweetnacl": "^1.0.3"
39
39
  },
40
40
  "peerDependencies": {
@@ -10,10 +10,10 @@ const { box, randomBytes } = naclPkg;
10
10
 
11
11
  export const listenReachableServer = (callback, projectUrl) => {
12
12
  let lastValue;
13
- return ServerReachableListener.listenTo(projectUrl, t => {
13
+ return ServerReachableListener.listenToPersist(projectUrl, t => {
14
14
  if (typeof t === 'boolean' && t !== lastValue) callback?.(t);
15
15
  lastValue = t;
16
- }, true);
16
+ });
17
17
  };
18
18
 
19
19
  export const prefixStoragePath = (path, prefix = 'file:///') => {
@@ -134,7 +134,7 @@ export const releaseCacheStore = async (builder) => {
134
134
  Scoped.AuthJWTToken[key] = value?.token;
135
135
  });
136
136
  Scoped.IsStoreReady = true;
137
- StoreReadyListener.dispatch('_', 'ready');
137
+ StoreReadyListener.dispatchPersist('_', 'ready');
138
138
  setTimeout(() => {
139
139
  if (tobePurged.length) updateCacheStore(tobePurged);
140
140
  }, 0);
@@ -147,12 +147,12 @@ export const awaitStore = () => new Promise(resolve => {
147
147
  resolve();
148
148
  return;
149
149
  }
150
- const l = StoreReadyListener.listenTo('_', t => {
150
+ const l = StoreReadyListener.listenToPersist('_', t => {
151
151
  if (t === 'ready') {
152
152
  resolve();
153
153
  l();
154
154
  }
155
- }, true);
155
+ });
156
156
  });
157
157
 
158
158
  export const awaitReachableServer = (projectUrl) => new Promise(resolve => {
@@ -160,12 +160,12 @@ export const awaitReachableServer = (projectUrl) => new Promise(resolve => {
160
160
  resolve();
161
161
  return;
162
162
  }
163
- const l = ServerReachableListener.listenTo(projectUrl, t => {
163
+ const l = ServerReachableListener.listenToPersist(projectUrl, t => {
164
164
  if (t) {
165
165
  resolve();
166
166
  l();
167
167
  }
168
- }, true);
168
+ });
169
169
  });
170
170
 
171
171
  export const getReachableServer = (projectUrl) => new Promise(resolve => {
@@ -173,12 +173,12 @@ export const getReachableServer = (projectUrl) => new Promise(resolve => {
173
173
  resolve(Scoped.IS_CONNECTED[projectUrl]);
174
174
  return;
175
175
  }
176
- const l = ServerReachableListener.listenTo(projectUrl, t => {
176
+ const l = ServerReachableListener.listenToPersist(projectUrl, t => {
177
177
  if (typeof t === 'boolean') {
178
178
  resolve(t);
179
179
  l();
180
180
  }
181
- }, true);
181
+ });
182
182
  });
183
183
 
184
184
  export const buildFetchInterface = async ({ body, authToken, method, uglify, serverE2E_PublicKey, extraHeaders }) => {
package/src/index.d.ts CHANGED
@@ -432,8 +432,13 @@ interface DocumentWriteValue {
432
432
  interface RNMTAuth {
433
433
  customSignin: (email: string, password: string) => Promise<SigninResult>;
434
434
  customSignup: (email: string, password: string, name?: string, metadata?: Object) => Promise<SignupResult>;
435
- googleSignin: (token: string) => Promise<SignupResult>;
436
- appleSignin: () => Promise<SignupResult>;
435
+ /**
436
+ *
437
+ * @param token can be an `id_token` or `authorization code` returned from Google Identity Services
438
+ * @param metadata
439
+ */
440
+ googleSignin: (token: string, metadata?: any | undefined) => Promise<SignupResult>;
441
+ appleSignin: (id_token: string, metadata?: any | undefined) => Promise<SignupResult>;
437
442
  facebookSignin: () => Promise<SignupResult>;
438
443
  twitterSignin: () => Promise<SignupResult>;
439
444
  githubSignin: () => Promise<SignupResult>;
package/src/index.js CHANGED
@@ -63,9 +63,7 @@ class RNMT {
63
63
  triggerAuthToken(projectUrl);
64
64
  initTokenRefresher({ ...this.config }, true);
65
65
 
66
- let isConnected,
67
- lastSentToken,
68
- queuedToken;
66
+ let isConnected, recentToken;
69
67
 
70
68
  const socket = io(`${this.config.wsPrefix}://${this.config.baseUrl}`, {
71
69
  transports: ['websocket', 'polling', 'flashsocket'],
@@ -80,8 +78,8 @@ class RNMT {
80
78
  ++connectionIte;
81
79
  isConnected = true;
82
80
  Scoped.IS_CONNECTED[projectUrl] = true;
83
- if (queuedToken) updateMountedToken(queuedToken.token);
84
- ServerReachableListener.dispatch(projectUrl, true);
81
+ if (recentToken) updateMountedToken();
82
+ ServerReachableListener.dispatchPersist(projectUrl, true);
85
83
  awaitStore().then(() => {
86
84
  if (isConnected) trySendPendingWrite(projectUrl);
87
85
  });
@@ -90,7 +88,7 @@ class RNMT {
90
88
  ++connectionIte;
91
89
  isConnected = false;
92
90
  Scoped.IS_CONNECTED[projectUrl] = false;
93
- ServerReachableListener.dispatch(projectUrl, false);
91
+ ServerReachableListener.dispatchPersist(projectUrl, false);
94
92
  }
95
93
 
96
94
  const manualCheckConnection = () => {
@@ -114,18 +112,13 @@ class RNMT {
114
112
  manualCheckConnection();
115
113
  });
116
114
 
117
- const updateMountedToken = (token) => {
118
- if ((lastSentToken || null) !== (token || null)) {
119
- socket.emit('_update_mounted_user', token || null);
120
- lastSentToken = token;
121
- }
122
- queuedToken = undefined;
115
+ const updateMountedToken = () => {
116
+ socket.emit('_update_mounted_user', recentToken || null);
123
117
  };
124
118
 
125
119
  listenToken(token => {
126
- if (isConnected) {
127
- updateMountedToken(token);
128
- } else queuedToken = { token };
120
+ recentToken = token;
121
+ if (isConnected) updateMountedToken();
129
122
  }, projectUrl);
130
123
 
131
124
  TokenRefreshListener.listenTo(projectUrl, v => {
@@ -9,10 +9,10 @@ import { Validator } from "guard-object";
9
9
  import { basicClone } from "../../helpers/basic_clone";
10
10
 
11
11
  export const listenToken = (callback, projectUrl) =>
12
- AuthTokenListener.listenTo(projectUrl, (t, n) => {
12
+ AuthTokenListener.listenToPersist(projectUrl, (t, n) => {
13
13
  if (t === undefined) return;
14
14
  callback?.(t || null, n);
15
- }, true);
15
+ });
16
16
 
17
17
  export const injectFreshToken = async (config, { token, refreshToken }) => {
18
18
  const { projectUrl } = config;
@@ -56,19 +56,19 @@ export const parseToken = (token) => JSON.parse(decodeBinary(token.split('.')[1]
56
56
 
57
57
  export const triggerAuthToken = async (projectUrl, isInit) => {
58
58
  await awaitStore();
59
- AuthTokenListener.dispatch(projectUrl, CacheStore.AuthStore[projectUrl]?.token || null, isInit);
59
+ AuthTokenListener.dispatchPersist(projectUrl, CacheStore.AuthStore[projectUrl]?.token || null, isInit);
60
60
  };
61
61
 
62
62
  export const awaitRefreshToken = (projectUrl) => new Promise(resolve => {
63
- const l = TokenRefreshListener.listenTo(projectUrl, v => {
63
+ const l = TokenRefreshListener.listenToPersist(projectUrl, v => {
64
64
  if (v === 'ready') {
65
65
  l();
66
66
  resolve();
67
67
  }
68
- }, true);
68
+ });
69
69
  });
70
70
 
71
- export const listenTokenReady = (callback, projectUrl) => TokenRefreshListener.listenTo(projectUrl, callback, true);
71
+ export const listenTokenReady = (callback, projectUrl) => TokenRefreshListener.listenToPersist(projectUrl, callback);
72
72
 
73
73
  export const initTokenRefresher = async (config, forceRefresh) => {
74
74
  const { projectUrl, maxRetries } = config;
@@ -81,9 +81,9 @@ export const initTokenRefresher = async (config, forceRefresh) => {
81
81
  if (emulatedURL) return;
82
82
 
83
83
  const notifyAuthReady = (value) => {
84
- TokenRefreshListener.dispatch(projectUrl, value);
84
+ TokenRefreshListener.dispatchPersist(projectUrl, value);
85
85
  getEmulatedLinks(projectUrl).forEach(v => {
86
- TokenRefreshListener.dispatch(v, value);
86
+ TokenRefreshListener.dispatchPersist(v, value);
87
87
  });
88
88
  }
89
89
 
@@ -14,6 +14,7 @@ const {
14
14
  _customSignin,
15
15
  _customSignup,
16
16
  _googleSignin,
17
+ _appleSignin,
17
18
  _areYouOk
18
19
  } = EngineApi;
19
20
 
@@ -28,9 +29,7 @@ export default class MTAuth {
28
29
 
29
30
  googleSignin = (token, metadata) => doGoogleSignin(this.builder, token, metadata);
30
31
 
31
- appleSignin() {
32
- throw 'unsupported method call';
33
- }
32
+ appleSignin = (token, metadata) => doAppleSignin(this.builder, token, metadata);
34
33
 
35
34
  facebookSignin() {
36
35
  throw 'unsupported method call';
@@ -240,7 +239,7 @@ const purgeCache = (url, isMain) => {
240
239
  ].forEach(e => {
241
240
  if (e && CacheStore[e]?.[url]) delete CacheStore[e][url];
242
241
  });
243
- TokenRefreshListener.dispatch(url);
242
+ TokenRefreshListener.dispatchPersist(url);
244
243
  triggerAuthToken(url);
245
244
  };
246
245
 
@@ -308,7 +307,10 @@ export const purgePendingToken = async (nodeId) => {
308
307
  }
309
308
  };
310
309
 
311
- const doGoogleSignin = (builder, token, metadata) => new Promise(async (resolve, reject) => {
310
+ const doGoogleSignin = (builder, token, metadata) => doProviderSignin(builder, token, metadata, _googleSignin);
311
+ const doAppleSignin = (builder, token, metadata) => doProviderSignin(builder, token, metadata, _appleSignin);
312
+
313
+ const doProviderSignin = (builder, token, metadata, endpointer) => new Promise(async (resolve, reject) => {
312
314
  const { projectUrl, serverE2E_PublicKey, uglify, extraHeaders } = builder;
313
315
 
314
316
  try {
@@ -322,7 +324,7 @@ const doGoogleSignin = (builder, token, metadata) => new Promise(async (resolve,
322
324
  extraHeaders
323
325
  });
324
326
 
325
- const data = await buildFetchResult(await fetch(_googleSignin(projectUrl, uglify), reqBuilder), uglify);
327
+ const data = await buildFetchResult(await fetch(endpointer(projectUrl, uglify), reqBuilder), uglify);
326
328
 
327
329
  const f = uglify ? await deserializeE2E(data, serverE2E_PublicKey, privateKey) : data;
328
330
 
@@ -337,8 +339,4 @@ const doGoogleSignin = (builder, token, metadata) => new Promise(async (resolve,
337
339
  } catch (e) {
338
340
  reject(simplifyCaughtError(e).simpleError);
339
341
  }
340
- });
341
-
342
- const doAppleSignin = async () => {
343
-
344
- }
342
+ });