Skip to content

Commit 07cd270

Browse files
committed
refactor: split options api entry points
This should include the types only if the plugins are imported from the correct entries once the deprecated versions are removed. It requires some extra testing before merging
1 parent d7d98b7 commit 07cd270

File tree

8 files changed

+98
-40
lines changed

8 files changed

+98
-40
lines changed

build.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ export default defineBuildConfig({
1010
input: './src/server/index',
1111
name: 'server/index',
1212
},
13+
{
14+
input: './src/options-api/firestore',
15+
name: 'options-api/firestore',
16+
},
17+
{
18+
input: './src/options-api/database',
19+
name: 'options-api/database',
20+
},
1321
],
1422
declaration: true,
1523
externals: [

package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@
1414
"types": "./dist/server/index.d.ts",
1515
"import": "./dist/server/index.mjs",
1616
"require": "./dist/server/index.cjs"
17+
},
18+
"./options-api/firestore": {
19+
"types": "./dist/options-api/firestore.d.ts",
20+
"import": "./dist/options-api/firestore.mjs",
21+
"require": "./dist/options-api/firestore.cjs"
22+
},
23+
"./options-api/database": {
24+
"types": "./dist/options-api/database.d.ts",
25+
"import": "./dist/options-api/database.mjs",
26+
"require": "./dist/options-api/database.cjs"
1727
}
1828
},
1929
"main": "./dist/index.cjs",

src/database/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
import { useFirebaseApp } from '../app'
1111
import { UseDatabaseRefOptions, _useDatabaseRef } from './useDatabaseRef'
1212

13-
export { databasePlugin } from './optionsApi'
1413
export { globalDatabaseOptions } from './bind'
1514
export type { UseDatabaseRefOptions }
1615

src/database/unbind.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import type { Ref } from 'vue-demi'
22
import type { UnbindWithReset, ResetOption } from '../shared'
3-
import { databaseUnbinds } from './optionsApi'
3+
4+
export const databaseUnbinds = new WeakMap<
5+
object,
6+
Record<string, UnbindWithReset>
7+
>()
48

59
export function internalUnbind(
610
key: string,

src/firestore/unbind.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import type { Ref } from 'vue-demi'
22
import type { UnbindWithReset } from '../shared'
33
import type { FirestoreRefOptions } from './bind'
4-
import { firestoreUnbinds } from './optionsApi'
4+
5+
export const firestoreUnbinds = new WeakMap<
6+
object,
7+
Record<string, UnbindWithReset>
8+
>()
59

610
export function internalUnbind(
711
key: string,

src/index.ts

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,30 +43,72 @@ export type {
4343
/**
4444
* Database Options API
4545
*/
46+
import {
47+
databasePlugin as _databasePlugin,
48+
databasePlugin as _rtdbPlugin,
49+
VueFireDatabaseOptionsAPI as _VueFireDatabaseOptionsAPI,
50+
} from './options-api/database'
51+
import type {
52+
DatabasePluginOptions as _DatabasePluginOptions,
53+
VueFirebaseObject as _VueFirebaseObject,
54+
FirebaseOption as _FirebaseOption,
55+
} from './options-api/database'
56+
4657
export {
58+
// already deprecated
4759
databasePlugin,
4860
// To ease migration
4961
databasePlugin as rtdbPlugin,
50-
VueFireDatabaseOptionsAPI,
51-
} from './database/optionsApi'
52-
export type {
53-
DatabasePluginOptions,
54-
VueFirebaseObject,
55-
FirebaseOption,
56-
} from './database/optionsApi'
62+
} from './options-api/database'
63+
64+
// TODO: remove deprecations in v4
65+
/**
66+
* @deprecated import from `vuefire/options-api/database` instead
67+
*/
68+
export const VueFireDatabaseOptionsAPI = _VueFireDatabaseOptionsAPI
69+
/**
70+
* @deprecated import from `vuefire/options-api/database` instead
71+
*/
72+
export type DatabasePluginOptions = _DatabasePluginOptions
73+
/**
74+
* @deprecated import from `vuefire/options-api/database` instead
75+
*/
76+
export type VueFirebaseObject = _VueFirebaseObject
77+
/**
78+
* @deprecated import from `vuefire/options-api/database` instead
79+
*/
80+
export type FirebaseOption = _FirebaseOption
5781

5882
/**
5983
* Firestore Options API
6084
*/
61-
export {
62-
firestorePlugin,
63-
VueFireFirestoreOptionsAPI,
64-
} from './firestore/optionsApi'
65-
export type {
66-
FirestorePluginOptions,
67-
VueFirestoreObject,
68-
FirestoreOption,
69-
} from './firestore/optionsApi'
85+
import { VueFireFirestoreOptionsAPI as _VueFireFirestoreOptionsAPI } from './options-api/firestore'
86+
import type {
87+
FirestorePluginOptions as _FirestorePluginOptions,
88+
VueFirestoreObject as _VueFirestoreObject,
89+
FirestoreOption as _FirestoreOption,
90+
} from './options-api/firestore'
91+
92+
// TODO: remove deprecations in v4
93+
/**
94+
* @deprecated import from `vuefire/options-api/firestore` instead
95+
*/
96+
export const VueFireFirestoreOptionsAPI = _VueFireFirestoreOptionsAPI
97+
/**
98+
* @deprecated import from `vuefire/options-api/firestore` instead
99+
*/
100+
export type FirestorePluginOptions = _FirestorePluginOptions
101+
/**
102+
* @deprecated import from `vuefire/options-api/firestore` instead
103+
*/
104+
export type VueFirestoreObject = _VueFirestoreObject
105+
/**
106+
* @deprecated import from `vuefire/options-api/firestore` instead
107+
*/
108+
export type FirestoreOption = _FirestoreOption
109+
110+
// this one is deprecated already
111+
export { firestorePlugin } from './options-api/firestore'
70112

71113
/**
72114
* App

src/database/optionsApi.ts renamed to src/options-api/database.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { FirebaseApp } from 'firebase/app'
2-
import { DatabaseReference, DataSnapshot, Query } from 'firebase/database'
1+
import type { FirebaseApp } from 'firebase/app'
2+
import type { DatabaseReference, DataSnapshot, Query } from 'firebase/database'
33
import { App, ComponentPublicInstance, effectScope, toRef } from 'vue-demi'
44
import { isVue3 } from 'vue-demi'
55
import { useFirebaseApp } from '../app'
66
import { getGlobalScope } from '../globals'
77
import { ResetOption, UnbindWithReset } from '../shared'
8-
import { internalUnbind } from './unbind'
9-
import { _DatabaseRefOptions } from './bind'
10-
import { _useDatabaseRef } from './useDatabaseRef'
8+
import { databaseUnbinds, internalUnbind } from '../database/unbind'
9+
import { _DatabaseRefOptions } from '../database/bind'
10+
import { _useDatabaseRef } from '../database/useDatabaseRef'
1111

1212
/**
1313
* Options for the Firebase Database Plugin that enables the Options API such as `$databaseBind` and `$databaseUnbind`.
@@ -34,11 +34,6 @@ const databasePluginDefaults: Readonly<
3434
export type VueFirebaseObject = Record<string, Query | DatabaseReference>
3535
export type FirebaseOption = VueFirebaseObject | (() => VueFirebaseObject)
3636

37-
export const databaseUnbinds = new WeakMap<
38-
object,
39-
Record<string, UnbindWithReset>
40-
>()
41-
4237
/**
4338
* Install this plugin if you want to add `$databaseBind` and `$databaseUnbind` functions. Note this plugin is only necessary if
4439
* you use the Options API. If you **exclusively use the Composition API** (e.g. `useDatabaseObject()` and `useDatabaseList()`), you

src/firestore/optionsApi.ts renamed to src/options-api/firestore.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,19 @@ import {
1111
toRef,
1212
isVue3,
1313
} from 'vue-demi'
14-
import { FirestoreRefOptions } from './bind'
15-
import { _useFirestoreRef } from './useFirestoreRef'
14+
import { FirestoreRefOptions } from '../firestore/bind'
15+
import { _useFirestoreRef } from '../firestore/useFirestoreRef'
1616
import { ResetOption, UnbindWithReset, _FirestoreDataSource } from '../shared'
17-
import { FirebaseApp } from 'firebase/app'
17+
import type { FirebaseApp } from 'firebase/app'
1818
import { getGlobalScope } from '../globals'
1919
import { useFirebaseApp } from '../app'
20-
import { internalUnbind } from './unbind'
20+
import { firestoreUnbinds, internalUnbind } from '../firestore/unbind'
2121

2222
// TODO: this should be an entry point to generate the corresponding .d.ts file that only gets included if the plugin is imported
2323

2424
export type VueFirestoreObject = Record<string, _FirestoreDataSource>
2525
export type FirestoreOption = VueFirestoreObject | (() => VueFirestoreObject)
2626

27-
export const firestoreUnbinds = new WeakMap<
28-
object,
29-
Record<string, UnbindWithReset>
30-
>()
31-
3227
/**
3328
* Options for the Firebase Database Plugin that enables the Options API such as `$firestoreBind` and
3429
* `$firestoreUnbind`.
@@ -55,7 +50,7 @@ const firestorePluginDefaults: Readonly<
5550
/**
5651
* Install this plugin to add `$firestoreBind` and `$firestoreUnbind` functions. Note this plugin is not necessary if
5752
* you exclusively use the Composition API (`useDocument()` and `useCollection()`).
58-
* @deprecated Use `VueFire` and `VueFireFirestoreOptionsAPI` with the `modules` option instead.b
53+
* @deprecated Use `VueFire` and `VueFireFirestoreOptionsAPI` with the `modules` option instead.
5954
*
6055
* @param app
6156
* @param pluginOptions
@@ -168,7 +163,8 @@ export const firestorePlugin = function firestorePlugin(
168163
*
169164
* ```ts
170165
* import { createApp } from 'vue'
171-
* import { VueFire, VueFireFirestoreOptionsAPI } from 'vuefire'
166+
* import { VueFire } from 'vuefire'
167+
* import { VueFireFirestoreOptionsAPI } from 'vuefire/options-api/firestore'
172168
*
173169
* const app = createApp(App)
174170
* app.use(VueFire, {

0 commit comments

Comments
 (0)