@convokitapp/react-native 0.4.0

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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/lib/commonjs/client.js +79 -0
  4. package/lib/commonjs/client.js.map +1 -0
  5. package/lib/commonjs/encoding.js +90 -0
  6. package/lib/commonjs/encoding.js.map +1 -0
  7. package/lib/commonjs/expo.js +60 -0
  8. package/lib/commonjs/expo.js.map +1 -0
  9. package/lib/commonjs/exports.js +58 -0
  10. package/lib/commonjs/exports.js.map +1 -0
  11. package/lib/commonjs/index.js +21 -0
  12. package/lib/commonjs/index.js.map +1 -0
  13. package/lib/commonjs/package.json +1 -0
  14. package/lib/commonjs/runtime.js +53 -0
  15. package/lib/commonjs/runtime.js.map +1 -0
  16. package/lib/module/client.js +74 -0
  17. package/lib/module/client.js.map +1 -0
  18. package/lib/module/encoding.js +86 -0
  19. package/lib/module/encoding.js.map +1 -0
  20. package/lib/module/expo.js +39 -0
  21. package/lib/module/expo.js.map +1 -0
  22. package/lib/module/exports.js +7 -0
  23. package/lib/module/exports.js.map +1 -0
  24. package/lib/module/index.js +8 -0
  25. package/lib/module/index.js.map +1 -0
  26. package/lib/module/package.json +1 -0
  27. package/lib/module/runtime.js +47 -0
  28. package/lib/module/runtime.js.map +1 -0
  29. package/lib/typescript/commonjs/client.d.ts +26 -0
  30. package/lib/typescript/commonjs/client.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/encoding.d.ts +3 -0
  32. package/lib/typescript/commonjs/encoding.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/expo.d.ts +9 -0
  34. package/lib/typescript/commonjs/expo.d.ts.map +1 -0
  35. package/lib/typescript/commonjs/exports.d.ts +8 -0
  36. package/lib/typescript/commonjs/exports.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/index.d.ts +4 -0
  38. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/package.json +1 -0
  40. package/lib/typescript/commonjs/runtime.d.ts +21 -0
  41. package/lib/typescript/commonjs/runtime.d.ts.map +1 -0
  42. package/lib/typescript/module/client.d.ts +26 -0
  43. package/lib/typescript/module/client.d.ts.map +1 -0
  44. package/lib/typescript/module/encoding.d.ts +3 -0
  45. package/lib/typescript/module/encoding.d.ts.map +1 -0
  46. package/lib/typescript/module/expo.d.ts +9 -0
  47. package/lib/typescript/module/expo.d.ts.map +1 -0
  48. package/lib/typescript/module/exports.d.ts +8 -0
  49. package/lib/typescript/module/exports.d.ts.map +1 -0
  50. package/lib/typescript/module/index.d.ts +4 -0
  51. package/lib/typescript/module/index.d.ts.map +1 -0
  52. package/lib/typescript/module/package.json +1 -0
  53. package/lib/typescript/module/runtime.d.ts +21 -0
  54. package/lib/typescript/module/runtime.d.ts.map +1 -0
  55. package/package.json +78 -0
  56. package/src/client.ts +92 -0
  57. package/src/encoding.ts +69 -0
  58. package/src/expo.ts +38 -0
  59. package/src/exports.ts +20 -0
  60. package/src/index.ts +7 -0
  61. package/src/runtime.ts +64 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ConvoKit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # `@convokitapp/react-native`
2
+
3
+ React Native facade over `@convokitapp/sdk`. It intentionally excludes the
4
+ server client and adds URI-based upload helpers.
5
+
6
+ ```ts
7
+ import { ConvoKitClient } from '@convokitapp/react-native'
8
+
9
+ const client = new ConvoKitClient({ clientId, tokenProvider })
10
+ await client.connectUser(appUserId)
11
+ ```
12
+
13
+ Expo applications may import `ConvoKitClient` from
14
+ `@convokitapp/react-native/expo` to use the Expo FileSystem adapter.
15
+
16
+ URI uploads accept `{ uri, fileName, contentType?, size? }`; the original
17
+ `Blob`, `ArrayBuffer`, and typed-array APIs remain available from the shared
18
+ JavaScript SDK client. The default entry installs mobile-safe URL, random,
19
+ base64, and text-encoding fallbacks. The Expo entry uses Expo Crypto and
20
+ FileSystem without making Expo a dependency of bare React Native consumers.
21
+
22
+ Tested matrix: Node 22, React 19.2, React Native 0.86–0.87, Hermes, and the New
23
+ Architecture. Publish `@convokitapp/sdk` before this package.
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ConvoKitClient = void 0;
7
+ var _sdk = require("@convokitapp/sdk");
8
+ var _runtime = require("./runtime.js");
9
+ class ConvoKitClient extends _sdk.ConvoKitClient {
10
+ constructor(options) {
11
+ (0, _runtime.assertReactNativeRuntime)();
12
+ super(options);
13
+ this.runtimeAdapter = options.runtimeAdapter ?? _runtime.fetchRuntimeAdapter;
14
+ }
15
+ async uploadUserAvatarFromUri(input) {
16
+ const bytes = await this.runtimeAdapter.readFile(input);
17
+ return this.uploadUserAvatar({
18
+ userId: (0, _runtime.requiredText)(input.userId, 'userId'),
19
+ bytes,
20
+ fileName: (0, _runtime.requiredText)(input.fileName, 'fileName'),
21
+ ...(input.contentType === undefined ? {} : {
22
+ contentType: input.contentType
23
+ })
24
+ });
25
+ }
26
+ async uploadConversationImageFromUri(input) {
27
+ const bytes = await this.runtimeAdapter.readFile(input);
28
+ return this.uploadConversationImage({
29
+ conversationId: (0, _runtime.requiredText)(input.conversationId, 'conversationId'),
30
+ bytes,
31
+ fileName: (0, _runtime.requiredText)(input.fileName, 'fileName'),
32
+ ...(input.contentType === undefined ? {} : {
33
+ contentType: input.contentType
34
+ })
35
+ });
36
+ }
37
+ async uploadMessageMediaFromUri(input) {
38
+ const bytes = await this.runtimeAdapter.readFile(input);
39
+ const conversationId = (0, _runtime.requiredText)(input.conversationId, 'conversationId');
40
+ const fileName = (0, _runtime.requiredText)(input.fileName, 'fileName');
41
+ const url = await this.uploadMessageMedia({
42
+ conversationId,
43
+ bytes,
44
+ fileName,
45
+ ...(input.contentType === undefined ? {} : {
46
+ contentType: input.contentType
47
+ })
48
+ });
49
+ const mediaType = input.mediaType ?? (input.contentType?.startsWith('image/') ? 'image' : 'file');
50
+ return {
51
+ url,
52
+ media: {
53
+ type: mediaType,
54
+ url,
55
+ name: fileName,
56
+ ...(input.size === undefined ? {} : {
57
+ size: input.size
58
+ }),
59
+ ...(input.metadata === undefined ? {} : {
60
+ metadata: input.metadata
61
+ })
62
+ }
63
+ };
64
+ }
65
+ async saveDownloadedMedia(url, output) {
66
+ if (!this.runtimeAdapter.saveDownload) {
67
+ throw new _sdk.ConvoKitError('This runtime does not provide downloaded-file storage', {
68
+ code: 'NATIVE_FILE_SAVE_UNAVAILABLE'
69
+ });
70
+ }
71
+ const blob = await this.downloadMedia(url);
72
+ return this.runtimeAdapter.saveDownload({
73
+ ...output,
74
+ blob
75
+ });
76
+ }
77
+ }
78
+ exports.ConvoKitClient = ConvoKitClient;
79
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sdk","require","_runtime","ConvoKitClient","JavaScriptConvoKitClient","constructor","options","assertReactNativeRuntime","runtimeAdapter","fetchRuntimeAdapter","uploadUserAvatarFromUri","input","bytes","readFile","uploadUserAvatar","userId","requiredText","fileName","contentType","undefined","uploadConversationImageFromUri","uploadConversationImage","conversationId","uploadMessageMediaFromUri","url","uploadMessageMedia","mediaType","startsWith","media","type","name","size","metadata","saveDownloadedMedia","output","saveDownload","ConvoKitError","code","blob","downloadMedia","exports"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.installEncodingPolyfills = installEncodingPolyfills;
7
+ const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
8
+ function decodeBase64(value) {
9
+ const input = value.replace(/\s/g, '');
10
+ if (input.length % 4 === 1 || /[^A-Za-z0-9+/=]/.test(input)) throw new TypeError('Invalid base64 input');
11
+ let buffer = 0;
12
+ let bits = 0;
13
+ let output = '';
14
+ for (const character of input.replace(/=+$/, '')) {
15
+ const index = alphabet.indexOf(character);
16
+ if (index < 0) throw new TypeError('Invalid base64 input');
17
+ buffer = buffer << 6 | index;
18
+ bits += 6;
19
+ if (bits >= 8) {
20
+ bits -= 8;
21
+ output += String.fromCharCode(buffer >> bits & 0xff);
22
+ }
23
+ }
24
+ return output;
25
+ }
26
+ function encodeBase64(value) {
27
+ let output = '';
28
+ for (let index = 0; index < value.length; index += 3) {
29
+ const first = value.charCodeAt(index);
30
+ const second = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;
31
+ const third = index + 2 < value.length ? value.charCodeAt(index + 2) : 0;
32
+ if (first > 255 || second > 255 || third > 255) throw new TypeError('btoa only accepts Latin-1 input');
33
+ const packed = first << 16 | second << 8 | third;
34
+ output += alphabet.charAt(packed >> 18 & 63) + alphabet.charAt(packed >> 12 & 63);
35
+ output += index + 1 < value.length ? alphabet.charAt(packed >> 6 & 63) : '=';
36
+ output += index + 2 < value.length ? alphabet.charAt(packed & 63) : '=';
37
+ }
38
+ return output;
39
+ }
40
+ class ConvoKitTextEncoder {
41
+ encode(value = '') {
42
+ const bytes = [];
43
+ for (const character of value) {
44
+ const codePoint = character.codePointAt(0);
45
+ if (codePoint <= 0x7f) bytes.push(codePoint);else if (codePoint <= 0x7ff) bytes.push(0xc0 | codePoint >> 6, 0x80 | codePoint & 0x3f);else if (codePoint <= 0xffff) bytes.push(0xe0 | codePoint >> 12, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);else bytes.push(0xf0 | codePoint >> 18, 0x80 | codePoint >> 12 & 0x3f, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);
46
+ }
47
+ return new Uint8Array(bytes);
48
+ }
49
+ }
50
+ class ConvoKitTextDecoder {
51
+ decode(input) {
52
+ if (input === undefined) return '';
53
+ let bytes;
54
+ if (input instanceof ArrayBuffer || typeof SharedArrayBuffer !== 'undefined' && input instanceof SharedArrayBuffer) {
55
+ bytes = new Uint8Array(input);
56
+ } else {
57
+ const view = input;
58
+ bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
59
+ }
60
+ let encoded = '';
61
+ for (const byte of bytes) encoded += `%${byte.toString(16).padStart(2, '0')}`;
62
+ try {
63
+ return decodeURIComponent(encoded);
64
+ } catch {
65
+ return '\uFFFD';
66
+ }
67
+ }
68
+ }
69
+
70
+ /** Installs only encoding globals that the host React Native runtime does not provide. */
71
+ function installEncodingPolyfills() {
72
+ const host = globalThis;
73
+ if (typeof host.atob !== 'function') Object.defineProperty(host, 'atob', {
74
+ configurable: true,
75
+ value: decodeBase64
76
+ });
77
+ if (typeof host.btoa !== 'function') Object.defineProperty(host, 'btoa', {
78
+ configurable: true,
79
+ value: encodeBase64
80
+ });
81
+ if (typeof host.TextEncoder !== 'function') Object.defineProperty(host, 'TextEncoder', {
82
+ configurable: true,
83
+ value: ConvoKitTextEncoder
84
+ });
85
+ if (typeof host.TextDecoder !== 'function') Object.defineProperty(host, 'TextDecoder', {
86
+ configurable: true,
87
+ value: ConvoKitTextDecoder
88
+ });
89
+ }
90
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["alphabet","decodeBase64","value","input","replace","length","test","TypeError","buffer","bits","output","character","index","indexOf","String","fromCharCode","encodeBase64","first","charCodeAt","second","third","packed","charAt","ConvoKitTextEncoder","encode","bytes","codePoint","codePointAt","push","Uint8Array","ConvoKitTextDecoder","decode","undefined","ArrayBuffer","SharedArrayBuffer","view","byteOffset","byteLength","encoded","byte","toString","padStart","decodeURIComponent","installEncodingPolyfills","host","globalThis","atob","Object","defineProperty","configurable","btoa","TextEncoder","TextDecoder"],"sourceRoot":"../../src","sources":["encoding.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ expoRuntimeAdapter: true,
8
+ ConvoKitClient: true
9
+ };
10
+ exports.expoRuntimeAdapter = exports.ConvoKitClient = void 0;
11
+ require("react-native-url-polyfill/auto");
12
+ var ExpoCrypto = _interopRequireWildcard(require("expo-crypto"));
13
+ var FileSystem = _interopRequireWildcard(require("expo-file-system"));
14
+ var _client = require("./client.js");
15
+ var _encoding = require("./encoding.js");
16
+ var _exports = require("./exports.js");
17
+ Object.keys(_exports).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _exports[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _exports[key];
25
+ }
26
+ });
27
+ });
28
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
29
+ (0, _encoding.installEncodingPolyfills)();
30
+ if (typeof globalThis.crypto?.getRandomValues !== 'function') {
31
+ const current = globalThis.crypto ?? {};
32
+ Object.defineProperty(globalThis, 'crypto', {
33
+ configurable: true,
34
+ value: Object.assign(current, {
35
+ getRandomValues: ExpoCrypto.getRandomValues
36
+ })
37
+ });
38
+ }
39
+ const expoRuntimeAdapter = exports.expoRuntimeAdapter = {
40
+ async readFile(input) {
41
+ const file = new FileSystem.File(input.uri);
42
+ return file.arrayBuffer();
43
+ },
44
+ async saveDownload(input) {
45
+ if (!input.destinationUri) throw new Error('destinationUri is required by the Expo adapter');
46
+ const file = new FileSystem.File(input.destinationUri);
47
+ file.write(new Uint8Array(await input.blob.arrayBuffer()));
48
+ return file.uri;
49
+ }
50
+ };
51
+ class ConvoKitClient extends _client.ConvoKitClient {
52
+ constructor(options) {
53
+ super({
54
+ ...options,
55
+ runtimeAdapter: options.runtimeAdapter ?? expoRuntimeAdapter
56
+ });
57
+ }
58
+ }
59
+ exports.ConvoKitClient = ConvoKitClient;
60
+ //# sourceMappingURL=expo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["require","ExpoCrypto","_interopRequireWildcard","FileSystem","_client","_encoding","_exports","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","set","getOwnPropertyDescriptor","installEncodingPolyfills","globalThis","crypto","getRandomValues","current","configurable","value","assign","expoRuntimeAdapter","readFile","input","file","File","uri","arrayBuffer","saveDownload","destinationUri","Error","write","Uint8Array","blob","ConvoKitClient","BaseClient","constructor","options","runtimeAdapter"],"sourceRoot":"../../src","sources":["expo.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CONVOKIT_API_URL", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _sdk.CONVOKIT_API_URL;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ConvoKitClient", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _client.ConvoKitClient;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "ConvoKitError", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _sdk.ConvoKitError;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "ConvoKitRealtime", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _sdk.ConvoKitRealtime;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "assertReactNativeRuntime", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _runtime.assertReactNativeRuntime;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "createClientMessageId", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _sdk.createClientMessageId;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "fetchRuntimeAdapter", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _runtime.fetchRuntimeAdapter;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "installEncodingPolyfills", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _encoding.installEncodingPolyfills;
52
+ }
53
+ });
54
+ var _client = require("./client.js");
55
+ var _runtime = require("./runtime.js");
56
+ var _encoding = require("./encoding.js");
57
+ var _sdk = require("@convokitapp/sdk");
58
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_client","require","_runtime","_encoding","_sdk"],"sourceRoot":"../../src","sources":["exports.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAMA,IAAAG,IAAA,GAAAH,OAAA","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ require("react-native-url-polyfill/auto");
7
+ require("react-native-get-random-values");
8
+ var _encoding = require("./encoding.js");
9
+ var _exports = require("./exports.js");
10
+ Object.keys(_exports).forEach(function (key) {
11
+ if (key === "default" || key === "__esModule") return;
12
+ if (key in exports && exports[key] === _exports[key]) return;
13
+ Object.defineProperty(exports, key, {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _exports[key];
17
+ }
18
+ });
19
+ });
20
+ (0, _encoding.installEncodingPolyfills)();
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["require","_encoding","_exports","Object","keys","forEach","key","exports","defineProperty","enumerable","get","installEncodingPolyfills"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;AAAAA,OAAA;AACAA,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAIA,IAAAE,QAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,QAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAJ,QAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAR,QAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAFA,IAAAK,kCAAwB,EAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.assertReactNativeRuntime = assertReactNativeRuntime;
7
+ exports.fetchRuntimeAdapter = void 0;
8
+ exports.requiredText = requiredText;
9
+ var _sdk = require("@convokitapp/sdk");
10
+ const fetchRuntimeAdapter = exports.fetchRuntimeAdapter = {
11
+ async readFile(input) {
12
+ if (!input.uri.trim()) {
13
+ throw new _sdk.ConvoKitError('uri is required', {
14
+ code: 'INVALID_ARGUMENT'
15
+ });
16
+ }
17
+ let response;
18
+ try {
19
+ response = await fetch(input.uri);
20
+ } catch (cause) {
21
+ throw new _sdk.ConvoKitError('Could not read the selected file', {
22
+ code: 'NATIVE_FILE_READ_FAILED',
23
+ cause
24
+ });
25
+ }
26
+ if (!response.ok) {
27
+ throw new _sdk.ConvoKitError('Could not read the selected file', {
28
+ code: 'NATIVE_FILE_READ_FAILED',
29
+ status: response.status
30
+ });
31
+ }
32
+ return response.blob();
33
+ }
34
+ };
35
+ function assertReactNativeRuntime() {
36
+ const missing = ['fetch', 'URL', 'WebSocket', 'atob', 'TextDecoder'].filter(key => typeof globalThis[key] === 'undefined');
37
+ if (typeof globalThis.crypto?.getRandomValues !== 'function') {
38
+ missing.push('crypto.getRandomValues');
39
+ }
40
+ if (missing.length) {
41
+ throw new _sdk.ConvoKitError(`React Native runtime is missing: ${missing.join(', ')}`, {
42
+ code: 'REACT_NATIVE_RUNTIME_UNAVAILABLE'
43
+ });
44
+ }
45
+ }
46
+ function requiredText(value, name) {
47
+ const result = value.trim();
48
+ if (!result) throw new _sdk.ConvoKitError(`${name} is required`, {
49
+ code: 'INVALID_ARGUMENT'
50
+ });
51
+ return result;
52
+ }
53
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sdk","require","fetchRuntimeAdapter","exports","readFile","input","uri","trim","ConvoKitError","code","response","fetch","cause","ok","status","blob","assertReactNativeRuntime","missing","filter","key","globalThis","crypto","getRandomValues","push","length","join","requiredText","value","name","result"],"sourceRoot":"../../src","sources":["runtime.ts"],"mappings":";;;;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAqBO,MAAMC,mBAA8C,GAAAC,OAAA,CAAAD,mBAAA,GAAG;EAC5D,MAAME,QAAQA,CAACC,KAAK,EAAE;IACpB,IAAI,CAACA,KAAK,CAACC,GAAG,CAACC,IAAI,CAAC,CAAC,EAAE;MACrB,MAAM,IAAIC,kBAAa,CAAC,iBAAiB,EAAE;QAAEC,IAAI,EAAE;MAAmB,CAAC,CAAC;IAC1E;IACA,IAAIC,QAAkB;IACtB,IAAI;MACFA,QAAQ,GAAG,MAAMC,KAAK,CAACN,KAAK,CAACC,GAAG,CAAC;IACnC,CAAC,CAAC,OAAOM,KAAK,EAAE;MACd,MAAM,IAAIJ,kBAAa,CAAC,kCAAkC,EAAE;QAC1DC,IAAI,EAAE,yBAAyB;QAC/BG;MACF,CAAC,CAAC;IACJ;IACA,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;MAChB,MAAM,IAAIL,kBAAa,CAAC,kCAAkC,EAAE;QAC1DC,IAAI,EAAE,yBAAyB;QAC/BK,MAAM,EAAEJ,QAAQ,CAACI;MACnB,CAAC,CAAC;IACJ;IACA,OAAOJ,QAAQ,CAACK,IAAI,CAAC,CAAC;EACxB;AACF,CAAC;AAEM,SAASC,wBAAwBA,CAAA,EAAS;EAC/C,MAAMC,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAACC,MAAM,CACzEC,GAAG,IAAI,OAAQC,UAAU,CAA6BD,GAAG,CAAC,KAAK,WACjE,CAAC;EACD,IAAI,OAAOC,UAAU,CAACC,MAAM,EAAEC,eAAe,KAAK,UAAU,EAAE;IAC5DL,OAAO,CAACM,IAAI,CAAC,wBAAwB,CAAC;EACxC;EACA,IAAIN,OAAO,CAACO,MAAM,EAAE;IAClB,MAAM,IAAIhB,kBAAa,CAAC,oCAAoCS,OAAO,CAACQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;MAChFhB,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;AACF;AAEO,SAASiB,YAAYA,CAACC,KAAa,EAAEC,IAAY,EAAU;EAChE,MAAMC,MAAM,GAAGF,KAAK,CAACpB,IAAI,CAAC,CAAC;EAC3B,IAAI,CAACsB,MAAM,EAAE,MAAM,IAAIrB,kBAAa,CAAC,GAAGoB,IAAI,cAAc,EAAE;IAAEnB,IAAI,EAAE;EAAmB,CAAC,CAAC;EACzF,OAAOoB,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { ConvoKitClient as JavaScriptConvoKitClient, ConvoKitError } from '@convokitapp/sdk';
4
+ import { assertReactNativeRuntime, fetchRuntimeAdapter, requiredText } from "./runtime.js";
5
+ export class ConvoKitClient extends JavaScriptConvoKitClient {
6
+ constructor(options) {
7
+ assertReactNativeRuntime();
8
+ super(options);
9
+ this.runtimeAdapter = options.runtimeAdapter ?? fetchRuntimeAdapter;
10
+ }
11
+ async uploadUserAvatarFromUri(input) {
12
+ const bytes = await this.runtimeAdapter.readFile(input);
13
+ return this.uploadUserAvatar({
14
+ userId: requiredText(input.userId, 'userId'),
15
+ bytes,
16
+ fileName: requiredText(input.fileName, 'fileName'),
17
+ ...(input.contentType === undefined ? {} : {
18
+ contentType: input.contentType
19
+ })
20
+ });
21
+ }
22
+ async uploadConversationImageFromUri(input) {
23
+ const bytes = await this.runtimeAdapter.readFile(input);
24
+ return this.uploadConversationImage({
25
+ conversationId: requiredText(input.conversationId, 'conversationId'),
26
+ bytes,
27
+ fileName: requiredText(input.fileName, 'fileName'),
28
+ ...(input.contentType === undefined ? {} : {
29
+ contentType: input.contentType
30
+ })
31
+ });
32
+ }
33
+ async uploadMessageMediaFromUri(input) {
34
+ const bytes = await this.runtimeAdapter.readFile(input);
35
+ const conversationId = requiredText(input.conversationId, 'conversationId');
36
+ const fileName = requiredText(input.fileName, 'fileName');
37
+ const url = await this.uploadMessageMedia({
38
+ conversationId,
39
+ bytes,
40
+ fileName,
41
+ ...(input.contentType === undefined ? {} : {
42
+ contentType: input.contentType
43
+ })
44
+ });
45
+ const mediaType = input.mediaType ?? (input.contentType?.startsWith('image/') ? 'image' : 'file');
46
+ return {
47
+ url,
48
+ media: {
49
+ type: mediaType,
50
+ url,
51
+ name: fileName,
52
+ ...(input.size === undefined ? {} : {
53
+ size: input.size
54
+ }),
55
+ ...(input.metadata === undefined ? {} : {
56
+ metadata: input.metadata
57
+ })
58
+ }
59
+ };
60
+ }
61
+ async saveDownloadedMedia(url, output) {
62
+ if (!this.runtimeAdapter.saveDownload) {
63
+ throw new ConvoKitError('This runtime does not provide downloaded-file storage', {
64
+ code: 'NATIVE_FILE_SAVE_UNAVAILABLE'
65
+ });
66
+ }
67
+ const blob = await this.downloadMedia(url);
68
+ return this.runtimeAdapter.saveDownload({
69
+ ...output,
70
+ blob
71
+ });
72
+ }
73
+ }
74
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ConvoKitClient","JavaScriptConvoKitClient","ConvoKitError","assertReactNativeRuntime","fetchRuntimeAdapter","requiredText","constructor","options","runtimeAdapter","uploadUserAvatarFromUri","input","bytes","readFile","uploadUserAvatar","userId","fileName","contentType","undefined","uploadConversationImageFromUri","uploadConversationImage","conversationId","uploadMessageMediaFromUri","url","uploadMessageMedia","mediaType","startsWith","media","type","name","size","metadata","saveDownloadedMedia","output","saveDownload","code","blob","downloadMedia"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
4
+ function decodeBase64(value) {
5
+ const input = value.replace(/\s/g, '');
6
+ if (input.length % 4 === 1 || /[^A-Za-z0-9+/=]/.test(input)) throw new TypeError('Invalid base64 input');
7
+ let buffer = 0;
8
+ let bits = 0;
9
+ let output = '';
10
+ for (const character of input.replace(/=+$/, '')) {
11
+ const index = alphabet.indexOf(character);
12
+ if (index < 0) throw new TypeError('Invalid base64 input');
13
+ buffer = buffer << 6 | index;
14
+ bits += 6;
15
+ if (bits >= 8) {
16
+ bits -= 8;
17
+ output += String.fromCharCode(buffer >> bits & 0xff);
18
+ }
19
+ }
20
+ return output;
21
+ }
22
+ function encodeBase64(value) {
23
+ let output = '';
24
+ for (let index = 0; index < value.length; index += 3) {
25
+ const first = value.charCodeAt(index);
26
+ const second = index + 1 < value.length ? value.charCodeAt(index + 1) : 0;
27
+ const third = index + 2 < value.length ? value.charCodeAt(index + 2) : 0;
28
+ if (first > 255 || second > 255 || third > 255) throw new TypeError('btoa only accepts Latin-1 input');
29
+ const packed = first << 16 | second << 8 | third;
30
+ output += alphabet.charAt(packed >> 18 & 63) + alphabet.charAt(packed >> 12 & 63);
31
+ output += index + 1 < value.length ? alphabet.charAt(packed >> 6 & 63) : '=';
32
+ output += index + 2 < value.length ? alphabet.charAt(packed & 63) : '=';
33
+ }
34
+ return output;
35
+ }
36
+ class ConvoKitTextEncoder {
37
+ encode(value = '') {
38
+ const bytes = [];
39
+ for (const character of value) {
40
+ const codePoint = character.codePointAt(0);
41
+ if (codePoint <= 0x7f) bytes.push(codePoint);else if (codePoint <= 0x7ff) bytes.push(0xc0 | codePoint >> 6, 0x80 | codePoint & 0x3f);else if (codePoint <= 0xffff) bytes.push(0xe0 | codePoint >> 12, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);else bytes.push(0xf0 | codePoint >> 18, 0x80 | codePoint >> 12 & 0x3f, 0x80 | codePoint >> 6 & 0x3f, 0x80 | codePoint & 0x3f);
42
+ }
43
+ return new Uint8Array(bytes);
44
+ }
45
+ }
46
+ class ConvoKitTextDecoder {
47
+ decode(input) {
48
+ if (input === undefined) return '';
49
+ let bytes;
50
+ if (input instanceof ArrayBuffer || typeof SharedArrayBuffer !== 'undefined' && input instanceof SharedArrayBuffer) {
51
+ bytes = new Uint8Array(input);
52
+ } else {
53
+ const view = input;
54
+ bytes = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
55
+ }
56
+ let encoded = '';
57
+ for (const byte of bytes) encoded += `%${byte.toString(16).padStart(2, '0')}`;
58
+ try {
59
+ return decodeURIComponent(encoded);
60
+ } catch {
61
+ return '\uFFFD';
62
+ }
63
+ }
64
+ }
65
+
66
+ /** Installs only encoding globals that the host React Native runtime does not provide. */
67
+ export function installEncodingPolyfills() {
68
+ const host = globalThis;
69
+ if (typeof host.atob !== 'function') Object.defineProperty(host, 'atob', {
70
+ configurable: true,
71
+ value: decodeBase64
72
+ });
73
+ if (typeof host.btoa !== 'function') Object.defineProperty(host, 'btoa', {
74
+ configurable: true,
75
+ value: encodeBase64
76
+ });
77
+ if (typeof host.TextEncoder !== 'function') Object.defineProperty(host, 'TextEncoder', {
78
+ configurable: true,
79
+ value: ConvoKitTextEncoder
80
+ });
81
+ if (typeof host.TextDecoder !== 'function') Object.defineProperty(host, 'TextDecoder', {
82
+ configurable: true,
83
+ value: ConvoKitTextDecoder
84
+ });
85
+ }
86
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["alphabet","decodeBase64","value","input","replace","length","test","TypeError","buffer","bits","output","character","index","indexOf","String","fromCharCode","encodeBase64","first","charCodeAt","second","third","packed","charAt","ConvoKitTextEncoder","encode","bytes","codePoint","codePointAt","push","Uint8Array","ConvoKitTextDecoder","decode","undefined","ArrayBuffer","SharedArrayBuffer","view","byteOffset","byteLength","encoded","byte","toString","padStart","decodeURIComponent","installEncodingPolyfills","host","globalThis","atob","Object","defineProperty","configurable","btoa","TextEncoder","TextDecoder"],"sourceRoot":"../../src","sources":["encoding.ts"],"mappings":"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","ignoreList":[]}