Skip to content

Merge Master into Multi-Tab #568

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 35 commits into from
Mar 16, 2018

Conversation

schmidt-sebastian
Copy link
Contributor

@schmidt-sebastian schmidt-sebastian commented Mar 16, 2018

Manual changes:

CONFLICT (content): Merge conflict in packages/firestore/test/unit/specs/spec_test_runner.ts
-> Used new runTimer method
https://gist.github.com/schmidt-sebastian/bd02873a161acba24a6438baa75847b6
CONFLICT (content): Merge conflict in packages/firestore/test/unit/specs/spec_builder.ts
-> Used new runTimer method
https://gist.github.com/schmidt-sebastian/40496c08e13f3c415f8e047b48a9e8ba
CONFLICT (content): Merge conflict in packages/firestore/src/util/async_queue.ts
-> Used new format for 'TimerId'
https://gist.github.com/schmidt-sebastian/835c49d1dfa9fb6232a7546ffd0a1fb0
CONFLICT (content): Merge conflict in packages/firestore/src/local/simple_db.ts
-> This file is now the same as master
CONFLICT (content): Merge conflict in packages/firestore/src/local/memory_persistence.ts
-> Made start() and shutdown() async
CONFLICT (content): Merge conflict in packages/firestore/src/local/indexeddb_schema.ts
-> Moved Multi-Tab to schema version 3
https://gist.github.com/schmidt-sebastian/200629f197349de02a7ceea9d7242e39
CONFLICT (content): Merge conflict in packages/firestore/src/local/indexeddb_persistence.ts
-> Formatting
packages/firestore/test/unit/local/indexeddb_schema.test.ts
-> Merged in my tests from schema_migration.test.ts and removed this file
https://gist.github.com/schmidt-sebastian/5312687e6a72e7240b11d6dac9c83b77

jshcrowthe and others added 30 commits February 15, 2018 16:31
* Fix query string parsing

* [AUTOMATED]: Prettier Code Styling

* Feedback
* Adding testing module

* Typescript it

* [AUTOMATED]: Prettier Code Styling

* [AUTOMATED]: License Headers

* Do not register testing module with firebase

* [AUTOMATED]: Prettier Code Styling

* Feedback

* Add owners
* Patch the version info and the firebase.SDK_VERSION

* [AUTOMATED]: Prettier Code Styling
* Goes through and deletes old IDB entries

* [AUTOMATED]: Prettier Code Styling

* Fixing tests with db name differences

* Altering some logic / logs
* Remove `return Promise.resolve()` statements from the codebase.

* Fix compilation errors.

* Fix more compiler errors.

* Use `tslib` module and `importHelpers` Typescript compiler option.

It reduces the size of TypeScript packages (namely `firebase-database`,
`firebase-firestore`, `firebase-messaging` and the combined `firebase`)
be reusing TypeScript helper methods (e.g. `__awaiter`) which were
included in every single file relying on features not available
in ES5 (emitted during transpilation process).

* [AUTOMATED]: Prettier Code Styling

* Regenerate top-level yarn.lock

* Add `tslib` as a dependency to app, polyfill, storage, template and util packages.

Since we set `importHelpers` compiler option to `true` in the base config,
we need to add `tslib` to all packages. `*-types` packages are omitted
since they do not contain any executable code.

* Revert unnecessary change in comment formatting.

* Revert moving comments out of empty else block to make
the context more clear.

Addresses @mikelehen review
#422 (review)
* Run "yarn upgrade-interactive --latest"

* Update gulp to a proper NPM dep

* Regen yarn.lock

* Fix typescript generics issues

* [AUTOMATED]: Prettier Code Styling
* Adding Schema Migration

* Pseudocode for Schema Migration

* [AUTOMATED]: Prettier Code Styling

* IndexedDb Schema Migration

* Lint cleanup

* Removing unused import

* Removing user ID from instance row

* [AUTOMATED]: Prettier Code Styling

* Review comments

* Lint fixes

* Review

* [AUTOMATED]: Prettier Code Styling

* Fixing the tests

* Closing the Database in the Schema tests

* [AUTOMATED]: Prettier Code Styling

* Changing test helper to close the DB

* [AUTOMATED]: Prettier Code Styling

* Making v2 the default version

* [AUTOMATED]: Prettier Code Styling

* Addressing comment

* [AUTOMATED]: Prettier Code Styling

* Renamed to ALL_STORES

* Start work on adding query counts

* Implement target count

* [AUTOMATED]: Prettier Code Styling

* Separate out add and update for the query cache

* [AUTOMATED]: Prettier Code Styling

* Comments and formatting

* Comments and restructuring

* [AUTOMATED]: Prettier Code Styling

* Use SimpleDb, shorten iOS-y name

* [AUTOMATED]: Prettier Code Styling

* addTargetCount -> saveTargetCount

* Fix lint warnings

* Comment fixes

* Rename test file

* Add expectation for 0 targets if none were added

* [AUTOMATED]: Prettier Code Styling

* Switch to PersistenceTransaction for schema upgrade

* Fix the other tests

* [AUTOMATED]: Prettier Code Styling

* Update comment

* Add some asserts, revert to PersistencePromise

* Add assert

* [AUTOMATED]: Prettier Code Styling

* helpers moved

* Review feedback

* Switch to just using fail()

* Rename updateMetadata

* Renaming and thread metadata through schema upgrade

* Use the proper assert

* Review feedback

* [AUTOMATED]: Prettier Code Styling

* Drop note re running time, initialize metadata to null

* Fix tests that weren't calling start

* [AUTOMATED]: Prettier Code Styling
* Start work on @firebase/logger package

* Refactor to remove debug dep

* [AUTOMATED]: Prettier Code Styling

* [AUTOMATED]: License Headers

* Expose a LogHandler type

* Allow users to "silence" our logging

* Adding some comments

* Do @firebase/firestore integration

* Do @firebase/database integration

* [AUTOMATED]: Prettier Code Styling

* Refactor to propagate the default level if changed

* Add some basic tests

* [AUTOMATED]: Prettier Code Styling

* Feedback from @mikelehen and @schmidt-sebastian

Refactor to also log fatal issues

Refactor to not attempt to log if the level is invalid

Adding docs and more feedback

* [AUTOMATED]: Prettier Code Styling

* Fixing an error message

* Updating yarn.lock

* Address @mikelehen feedback

* [AUTOMATED]: Prettier Code Styling

* Refactor logClient.log -> logClient.debug

* Update deps

* More @mikelehen feedback

* Fixing comment

* Feedback from @schmidt-sebastian
…-if offline.

* Refactored OnlineState tracking out of RemoteStore and into new OnlineStateTracker component.
* Added a 10 second timeout to transition from OnlineState.Unknown to 
  OnlineState.Offline rather than waiting indefinitely for the stream to succeed or fail.
* Added a SpecTest to verify OnlineState timeout behavior.
* Misc cleanup:
    * Renamed OnlineState states: Failed => Offline, Healthy => Online
    * Renamed TimerIds (ListenStreamConnection => ListenStreamConnectionBackoff)
    * Added a dummy .catch() handler to the CancelablePromises returned by
      AsyncQueue.enqueueAfterDelay() to avoid UnhandledPromiseRejection log spam
      due to canceled timers.
    * Added ability to run timers from spec tests (including assigning string
      names to TimerId enum values)
    * Added TimerId.All to match iOS and make it easier to run all timers from spec
      tests.
* Refactor to organize shims by Object

* [AUTOMATED]: Prettier Code Styling

* [AUTOMATED]: License Headers
* Fix some issues w/ the release process.

This commit addresses two issues:

- The banner text not correctly displaying on macOS due to the changed emoji spacing
- The release CLI throwing errors when trying to stage an unpublished package

* [AUTOMATED]: Prettier Code Styling

* Refactor to handle production initial releases

* [AUTOMATED]: Prettier Code Styling
* Refactor so staging releases use a staging version

* [AUTOMATED]: Prettier Code Styling
…rl parameter in WebChannel requests. (#554)

I verified that the client still works against prod and that the ?database=... paremeter was included in every WebChannel network request.

NOTE that prior to this change we were including the "google-cloud-resource-prefix" header on non-streaming RPC requests, but with this change we will not include the header or use the "database" url parameter.
…559)

getNextMutationBatchAfterBatchId() was not respecting highestAcknowledgedBatchId and therefore we were resending writes if they had been acknowledged but not removed (aka the held write acks case). This showed up when a user disabled / enabled the network as reported here and I've included a spec test to emulate that case: firebase/firebase-ios-sdk#772
wti806 and others added 4 commits March 15, 2018 10:17
* passwordless signin

added new files for passwordless signin

added licence

exported function

* updated externs and types

* [AUTOMATED]: Prettier Code Styling

* added passwordless sign in in demo and fixed type

* remove email in localstorage after used for passwordless sign in
* refactored storage test

* [AUTOMATED]: Prettier Code Styling

* [AUTOMATED]: Prettier Code Styling

* migrate storage from localstorage to indexedDb

* added worker compatibility, exposed finally, updated error message

* appended photo size for google hosted image
@googlebot
Copy link

So there's good news and bad news.

👍 The good news is that everyone that needs to sign a CLA (the pull request submitter and all commit authors) have done so. Everything is all good there.

😕 The bad news is that it appears that one or more commits were authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that here in the pull request.

Note to project maintainer: This is a terminal state, meaning the cla/google commit status will not change from this state. It's up to you to confirm consent of the commit author(s) and merge this pull request when appropriate.

Copy link
Contributor

@mikelehen mikelehen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple small suggestions. Thanks for highlighting your conflict resolutions to make reviewing easier!

);
}

if (fromVersion < 3 && toVersion >= 3) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should probably be:

p = p.next(() => {
     createClientMetadataStore(db);
     createTargetChangeStore(db);
});

So we do everything in the right order (not that these migrations are order-dependent right now).

it('can install schema version 3', () => {
return withDb(3, async db => {
expect(db.version).to.be.equal(3);
expect(getAllObjectStores(db)).to.have.members(ALL_STORES);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you intentionally using ALL_STORES instead of V3_STORES? I'd be inclined to use V3_STORES so these tests don't need to change over time as we add new stores in later schema versions...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking of changing this already, but kept it the same as before. Fixed now.

@schmidt-sebastian schmidt-sebastian force-pushed the mrschmidt-multi-tab-merge branch from acb750f to 75096d9 Compare March 16, 2018 21:59
@schmidt-sebastian schmidt-sebastian force-pushed the mrschmidt-multi-tab-merge branch from 75096d9 to 2a5d3f6 Compare March 16, 2018 22:30
@schmidt-sebastian schmidt-sebastian merged commit 6ef0c69 into firestore-multi-tab Mar 16, 2018
@schmidt-sebastian schmidt-sebastian deleted the mrschmidt-multi-tab-merge branch March 26, 2018 21:33
@firebase firebase locked and limited conversation to collaborators Oct 22, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.