diff --git a/package.json b/package.json index 269dd5cf..e5687a76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "typesaurus", - "version": "6.0.0", + "version": "6.1.0-alpha.2", "description": "Type-safe ODM for Firestore", "keywords": [ "Firebase", @@ -18,6 +18,8 @@ "@babel/preset-env": "^7.4.5", "@babel/preset-typescript": "^7.3.3", "@firebase/testing": "^0.16.7", + "@react-native-firebase/app": "^6.4.0", + "@react-native-firebase/firestore": "^6.4.0", "@types/jest": "^24.0.13", "@types/node": "^12.0.4", "@types/sinon": "^7.0.13", diff --git a/src/adaptor/native.ts b/src/adaptor/native.ts new file mode 100644 index 00000000..b9d08218 --- /dev/null +++ b/src/adaptor/native.ts @@ -0,0 +1,29 @@ +import nativeFirestore, { + firebase, + FirebaseFirestoreTypes +} from '@react-native-firebase/firestore' +// @ts-ignore: React Native Firebase doesn't export types for internal modules +import FirestoreDocumentReference from '@react-native-firebase/firestore/lib/FirestoreDocumentReference' +import { getAll } from './utils' + +const DocumentReference = FirestoreDocumentReference as FirebaseFirestoreTypes.DocumentReference + +export default async function adaptor() { + const firestore = nativeFirestore() + // At the moment, the React Native Firebase adaptor doesn't support getAll. + if (!('getAll' in firestore)) Object.assign(firestore, { getAll }) + return { + firestore, + consts: { + DocumentReference, + Timestamp: firebase.firestore.Timestamp, + FieldValue: firebase.firestore.FieldValue + } + } +} + +export function injectAdaptor() { + throw new Error( + 'Injecting adaptor is not supported in the native environment' + ) +} diff --git a/src/adaptor/package.esm.json b/src/adaptor/package.esm.json index 04cd8c4d..f1f36211 100644 --- a/src/adaptor/package.esm.json +++ b/src/adaptor/package.esm.json @@ -1,4 +1,5 @@ { "browser": "./browser/lazy", - "main": "./node" + "main": "./node", + "react-native": "./native" } diff --git a/src/adaptor/package.json b/src/adaptor/package.json index c621ef0c..39a0fa27 100644 --- a/src/adaptor/package.json +++ b/src/adaptor/package.json @@ -1,4 +1,5 @@ { "browser": "./browser/index", - "main": "./node" + "main": "./node", + "react-native": "./native" } diff --git a/tsconfig.json b/tsconfig.json index e67aed61..f4984593 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,8 @@ "strict": true, "noImplicitAny": true, "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true }, "exclude": ["**/test.ts", "lib", "node_modules", "test"] } diff --git a/yarn.lock b/yarn.lock index 85a519a3..db47d7de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1428,6 +1428,25 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@react-native-firebase/app-types@6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@react-native-firebase/app-types/-/app-types-6.4.0.tgz#f3d8c1d63f5bc5f6d5f9683caa428b189a968839" + integrity sha512-c8rYdh4DJReKjTl/jUjPNrCwhbAlNcgCch3n3rCOuATjYleiSt3zhskn37aRQeCOKohvNzuxvYy5ZYtzAxMYmw== + +"@react-native-firebase/app@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-6.4.0.tgz#cc3f22ebed03397fc85e855634f4db3729d242d9" + integrity sha512-QCV+SY0hdx3OTR+KQngvF/ejuPkEP8V5pr0ie8hic/yV6vcGtrMEN/NGSvgILjbPYRhspYDZSi4HdTgc70WUIA== + dependencies: + "@react-native-firebase/app-types" "6.4.0" + opencollective-postinstall "^2.0.1" + superstruct "^0.6.2" + +"@react-native-firebase/firestore@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@react-native-firebase/firestore/-/firestore-6.4.0.tgz#b45a3a7649ebc6fa4be8b3d4051dea8b8b9ea55b" + integrity sha512-iiR0hJ1d1Ka6n23fczfWHjfX0j7mLAFqSJFBA252yKKcOxN7Z7fe8rx/Ueq+gDwquc3lWo7aITzWHrE1u1TQxw== + "@sindresorhus/is@^1.0.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-1.2.0.tgz#63ce3638cb85231f3704164c90a18ef816da3fb7" @@ -2926,6 +2945,16 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -4525,11 +4554,23 @@ follow-redirects@^1.0.0: dependencies: debug "^3.2.6" -for-in@^1.0.2: +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -6506,6 +6547,11 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +kind-of@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -7120,6 +7166,14 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -7594,6 +7648,11 @@ open@^6.3.0: dependencies: is-wsl "^1.1.0" +opencollective-postinstall@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -8863,6 +8922,15 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -9374,6 +9442,14 @@ superstatic@^6.0.1: try-require "^1.0.0" update-notifier "^2.5.0" +superstruct@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.6.2.tgz#c5eb034806a17ff98d036674169ef85e4c7f6a1c" + integrity sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig== + dependencies: + clone-deep "^2.0.1" + kind-of "^6.0.1" + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a"