-
Notifications
You must be signed in to change notification settings - Fork 885
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split database and database-compat (#5276)
* compile database * pass database tests * compile and test database-compat * pass all tests * prettier * cleanup * fix lint * address comments * what is going on with ci * use correct case in import path * uppercase * rename * fix component name
- Loading branch information
Showing
69 changed files
with
2,001 additions
and
2,309 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/** | ||
* @license | ||
* Copyright 2020 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
module.exports = { | ||
extends: '../../config/.eslintrc.js', | ||
parserOptions: { | ||
project: 'tsconfig.json', | ||
// to make vscode-eslint work with monorepo | ||
// https://github.com/typescript-eslint/typescript-eslint/issues/251#issuecomment-463943250 | ||
tsconfigRootDir: __dirname | ||
}, | ||
rules: { | ||
'@typescript-eslint/no-unused-vars': 'off', | ||
'@typescript-eslint/no-floating-promises': 'off', | ||
'@typescript-eslint/explicit-function-return-type': 'off', | ||
'no-restricted-properties': 'off', | ||
'no-restricted-globals': 'off', | ||
'no-throw-literal': 'off', | ||
'id-blacklist': 'off', | ||
'import/order': [ | ||
'error', | ||
{ | ||
'groups': [ | ||
'builtin', | ||
'external', | ||
'internal', | ||
'parent', | ||
'sibling', | ||
'index' | ||
], | ||
'newlines-between': 'always', | ||
'alphabetize': { 'order': 'asc', 'caseInsensitive': true } | ||
} | ||
] | ||
}, | ||
overrides: [ | ||
{ | ||
files: ['**/*.d.ts'], | ||
rules: { | ||
'@typescript-eslint/no-explicit-any': 'off' | ||
} | ||
}, | ||
{ | ||
files: ['scripts/*.ts'], | ||
rules: { | ||
'import/no-extraneous-dependencies': 'off' | ||
} | ||
} | ||
] | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# @firebase/database-compat | ||
|
||
This is the compatibility layer for the Firebase Realtime Database component of the Firebase JS SDK. | ||
|
||
**This package is not intended for direct usage, and should only be used via the officially supported [firebase](https://www.npmjs.com/package/firebase) package.** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/** | ||
* @license | ||
* Copyright 2017 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
const karmaBase = require('../../config/karma.base'); | ||
|
||
const files = [`test/**/*.test.ts`]; | ||
|
||
module.exports = function (config) { | ||
const karmaConfig = Object.assign({}, karmaBase, { | ||
// files to load into karma | ||
files: files, | ||
// frameworks to use | ||
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter | ||
frameworks: ['mocha'] | ||
}); | ||
|
||
config.set(karmaConfig); | ||
}; | ||
|
||
module.exports.files = files; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
{ | ||
"name": "@firebase/database-compat", | ||
"version": "0.0.900", | ||
"description": "The Realtime Database component of the Firebase JS SDK.", | ||
"author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)", | ||
"main": "dist/index.js", | ||
"browser": "dist/index.esm2017.js", | ||
"module": "dist/index.esm2017.js", | ||
"esm5": "dist/index.esm5.js", | ||
"license": "Apache-2.0", | ||
"typings": "dist/database-compat/src/index.d.ts", | ||
"scripts": { | ||
"lint": "eslint -c .eslintrc.js '**/*.ts' --ignore-path '../../.gitignore'", | ||
"lint:fix": "eslint --fix -c .eslintrc.js '**/*.ts' --ignore-path '../../.gitignore'", | ||
"prettier": "prettier --write '*.js' '*.ts' '@(src|test)/**/*.ts'", | ||
"build": "rollup -c rollup.config.js", | ||
"build:release": "yarn build && yarn add-compat-overloads", | ||
"build:deps": "lerna run --scope @firebase/database-compat --include-dependencies build", | ||
"dev": "rollup -c -w", | ||
"test": "run-p lint test:browser test:node", | ||
"test:ci": "node ../../scripts/run_tests_in_ci.js -s test", | ||
"test:browser": "karma start --single-run", | ||
"test:node": "TS_NODE_FILES=true TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/index.node.ts --config ../../config/mocharc.node.js", | ||
"add-compat-overloads": "ts-node-script ../../scripts/exp/create-overloads.ts -i ../database/dist/public.d.ts -o dist/database-compat/src/index.d.ts -a -r FirebaseDatabase:types.FirebaseDatabase -r Query:types.Query -r Reference:types.Reference -r FirebaseApp:FirebaseAppCompat --moduleToEnhance @firebase/database" | ||
}, | ||
"peerDependencies": { | ||
"@firebase/app-compat": "0.x" | ||
}, | ||
"dependencies": { | ||
"@firebase/database": "0.11.0", | ||
"@firebase/database-types": "0.8.0", | ||
"@firebase/logger": "0.2.6", | ||
"@firebase/util": "1.3.0", | ||
"@firebase/component": "0.5.6", | ||
"tslib": "^2.1.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
/** | ||
* @license | ||
* Copyright 2017 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
// eslint-disable-next-line import/no-extraneous-dependencies | ||
|
||
import { FirebaseApp } from '@firebase/app-types'; | ||
import { FirebaseService } from '@firebase/app-types/private'; | ||
import { | ||
goOnline, | ||
connectDatabaseEmulator, | ||
goOffline, | ||
ref, | ||
refFromURL, | ||
increment, | ||
serverTimestamp, | ||
Database as ModularDatabase | ||
} from '@firebase/database'; | ||
import { | ||
validateArgCount, | ||
Compat, | ||
EmulatorMockTokenOptions | ||
} from '@firebase/util'; | ||
|
||
|
||
import { Reference } from './Reference'; | ||
|
||
/** | ||
* Class representing a firebase database. | ||
*/ | ||
export class Database implements FirebaseService, Compat<ModularDatabase> { | ||
static readonly ServerValue = { | ||
TIMESTAMP: serverTimestamp(), | ||
increment: (delta: number) => increment(delta) | ||
}; | ||
|
||
/** | ||
* The constructor should not be called by users of our public API. | ||
*/ | ||
constructor(readonly _delegate: ModularDatabase, readonly app: FirebaseApp) {} | ||
|
||
INTERNAL = { | ||
delete: () => this._delegate._delete() | ||
}; | ||
|
||
/** | ||
* Modify this instance to communicate with the Realtime Database emulator. | ||
* | ||
* <p>Note: This method must be called before performing any other operation. | ||
* | ||
* @param host - the emulator host (ex: localhost) | ||
* @param port - the emulator port (ex: 8080) | ||
* @param options.mockUserToken - the mock auth token to use for unit testing Security Rules | ||
*/ | ||
useEmulator( | ||
host: string, | ||
port: number, | ||
options: { | ||
mockUserToken?: EmulatorMockTokenOptions; | ||
} = {} | ||
): void { | ||
connectDatabaseEmulator(this._delegate, host, port, options); | ||
} | ||
|
||
/** | ||
* Returns a reference to the root or to the path specified in the provided | ||
* argument. | ||
* | ||
* @param path - The relative string path or an existing Reference to a database | ||
* location. | ||
* @throws If a Reference is provided, throws if it does not belong to the | ||
* same project. | ||
* @returns Firebase reference. | ||
*/ | ||
ref(path?: string): Reference; | ||
ref(path?: Reference): Reference; | ||
ref(path?: string | Reference): Reference { | ||
validateArgCount('database.ref', 0, 1, arguments.length); | ||
if (path instanceof Reference) { | ||
const childRef = refFromURL(this._delegate, path.toString()); | ||
return new Reference(this, childRef); | ||
} else { | ||
const childRef = ref(this._delegate, path); | ||
return new Reference(this, childRef); | ||
} | ||
} | ||
|
||
/** | ||
* Returns a reference to the root or the path specified in url. | ||
* We throw a exception if the url is not in the same domain as the | ||
* current repo. | ||
* @returns Firebase reference. | ||
*/ | ||
refFromURL(url: string): Reference { | ||
const apiName = 'database.refFromURL'; | ||
validateArgCount(apiName, 1, 1, arguments.length); | ||
const childRef = refFromURL(this._delegate, url); | ||
return new Reference(this, childRef); | ||
} | ||
|
||
// Make individual repo go offline. | ||
goOffline(): void { | ||
validateArgCount('database.goOffline', 0, 0, arguments.length); | ||
return goOffline(this._delegate); | ||
} | ||
|
||
goOnline(): void { | ||
validateArgCount('database.goOnline', 0, 0, arguments.length); | ||
return goOnline(this._delegate); | ||
} | ||
} |
Oops, something went wrong.