angular / angular/angularfire

Six `firebase` entry points have no `@angular/fire` equivalent, so their exports are unreachable

未关闭
#3,755 0 条评论 0 个 reaction 已指派 1 人 已被 @armando-navarro 认领 在 GitHub 查看
comp: core type: feature
主要语言
TypeScript
星标
7.8k
派生
2.2k
平均合并
22 小时 28 分钟
30 天内合并 PR
6

描述

### Summary

`firebase` 12.18.0 publishes 20 importable paths that are not `compat`. `tools/build.ts` re-exports 14 of them. Anything exported from the other six is unreachable through `@angular/fire`, so an app that needs it has to import from `firebase` directly and give up the Angular behavior AngularFire adds for that part of its code.

### The six unreachable paths

- `firebase/firestore/pipelines`
- `firebase/firestore/lite/pipelines`
- `firebase/auth/cordova`
- `firebase/auth/web-extension`
- `firebase/installations`
- `firebase/messaging/sw`

The two `pipelines` paths are recent: `firebase` 12.4.0 publishes no path containing `pipelines`, and 12.8.0 publishes two. The other four exist in 12.4.0 and so have been unreachable for as long as that has been the version the package is built against.

### Why this is separate from a wrapped module missing symbols

A missing symbol inside a path AngularFire already ships is fixed by re-running `tools/build.ts`, which regenerates that path's `src//firebase.ts` from the installed `firebase` and picks the new symbol up.

A missing path is not fixed that way, because there is nothing for the generator to regenerate. `tools/build.ts` only writes the `firebase.ts` file inside a directory that already exists, and the rest of that directory is written by hand. `src/firestore/lite/` is 8 files and 269 lines, of which only `firebase.ts` is generated.

### Things to consider

This is not a single mechanical change, and I do not think all six should be treated the same way:

- Whether to ship each path at all. `firebase/messaging/sw` runs in a service worker and `firebase/auth/cordova` targets a platform Angular apps rarely use, so an Angular wrapper may not be the right home for either.
- For each path that ships, every function in it has to be classified for wrapping, the same way the existing modules were.
- The cost is per path, roughly six or seven hand-written files each, so this may be better done a path at a time than as one change.

If you are blocked on one of these specifically, saying which one and what you are trying to do would help order the work. `firebase/firestore/pipelines` is the one with a request already attached to it, in [#3693](https://github.com/angular/angularfire/issues/3693).

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。