firebase-tools 11.21.0 → 11.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commands/ext-configure.js +3 -3
- package/lib/commands/ext-dev-init.js +16 -4
- package/lib/commands/ext-dev-publish.js +3 -3
- package/lib/commands/ext-dev-register.js +2 -2
- package/lib/commands/ext-info.js +3 -3
- package/lib/commands/ext-install.js +2 -2
- package/lib/commands/ext-uninstall.js +2 -2
- package/lib/commands/ext-update.js +2 -2
- package/lib/commands/hosting-channel-create.js +2 -2
- package/lib/commands/hosting-channel-delete.js +2 -2
- package/lib/commands/hosting-channel-deploy.js +2 -2
- package/lib/commands/hosting-clone.js +2 -2
- package/lib/deploy/functions/release/fabricator.js +3 -0
- package/lib/deploy/functions/runtimes/discovery/index.js +1 -1
- package/lib/deploy/functions/runtimes/index.js +5 -2
- package/lib/deploy/functions/runtimes/node/index.js +70 -27
- package/lib/deploy/functions/runtimes/node/versioning.js +4 -2
- package/lib/deploy/functions/runtimes/python/index.js +132 -0
- package/lib/deploy/hosting/convertConfig.js +2 -1
- package/lib/emulator/auth/apiSpec.js +21 -1
- package/lib/emulator/controller.js +5 -5
- package/lib/emulator/downloadableEmulators.js +6 -6
- package/lib/emulator/extensionsEmulator.js +3 -2
- package/lib/emulator/functionsEmulator.js +119 -87
- package/lib/emulator/functionsEmulatorRuntime.js +26 -42
- package/lib/emulator/functionsRuntimeWorker.js +51 -35
- package/lib/emulator/hub.js +6 -6
- package/lib/emulator/pubsubEmulator.js +12 -9
- package/lib/emulator/storage/apis/shared.js +2 -1
- package/lib/emulator/storage/cloudFunctions.js +1 -1
- package/lib/emulator/storage/files.js +18 -11
- package/lib/emulator/types.js +9 -9
- package/lib/extensions/askUserForConsent.js +4 -4
- package/lib/extensions/askUserForEventsConfig.js +2 -2
- package/lib/extensions/askUserForParam.js +34 -3
- package/lib/extensions/billingMigrationHelper.js +4 -4
- package/lib/extensions/change-log.js +4 -4
- package/lib/extensions/displayExtensionInfo.js +4 -4
- package/lib/extensions/emulator/optionsHelper.js +3 -3
- package/lib/extensions/emulator/specHelper.js +17 -16
- package/lib/extensions/extensionsApi.js +2 -2
- package/lib/extensions/extensionsHelper.js +6 -6
- package/lib/extensions/provisioningHelper.js +2 -2
- package/lib/extensions/updateHelper.js +2 -2
- package/lib/extensions/warnings.js +5 -5
- package/lib/firestore/checkDatabaseType.js +3 -3
- package/lib/frameworks/angular/index.js +6 -4
- package/lib/frameworks/index.js +47 -11
- package/lib/frameworks/lit/index.js +5 -1
- package/lib/frameworks/next/index.js +48 -20
- package/lib/frameworks/next/utils.js +1 -1
- package/lib/frameworks/nuxt/index.js +18 -26
- package/lib/frameworks/nuxt/interfaces.js +2 -0
- package/lib/frameworks/nuxt/utils.js +13 -0
- package/lib/frameworks/nuxt2/index.js +91 -0
- package/lib/frameworks/preact/index.js +5 -1
- package/lib/frameworks/react/index.js +5 -1
- package/lib/frameworks/svelte/index.js +5 -1
- package/lib/frameworks/vite/index.js +6 -4
- package/lib/functions/python.js +16 -0
- package/lib/gcp/cloudfunctionsv2.js +8 -0
- package/lib/getDefaultHostingSite.js +3 -1
- package/lib/init/features/firestore/index.js +1 -3
- package/lib/init/features/functions/index.js +10 -0
- package/lib/init/features/functions/python.js +48 -0
- package/lib/init/features/hosting/index.js +3 -2
- package/lib/projectUtils.js +2 -2
- package/lib/rc.js +4 -4
- package/lib/serve/functions.js +1 -3
- package/npm-shrinkwrap.json +1295 -276
- package/package.json +2 -2
- package/templates/extensions/extension.yaml +1 -1
- package/templates/extensions/integration-test.env +2 -0
- package/templates/extensions/integration-test.json +14 -0
- package/templates/extensions/javascript/WELCOME.md +14 -5
- package/templates/extensions/javascript/index.js +10 -10
- package/templates/extensions/javascript/integration-test.js +13 -0
- package/templates/extensions/javascript/package.lint.json +12 -4
- package/templates/extensions/javascript/package.nolint.json +11 -2
- package/templates/extensions/typescript/WELCOME.md +18 -5
- package/templates/extensions/typescript/_mocharc +10 -0
- package/templates/extensions/typescript/index.ts +16 -15
- package/templates/extensions/typescript/integration-test.ts +13 -0
- package/templates/extensions/typescript/package.lint.json +16 -4
- package/templates/extensions/typescript/package.nolint.json +12 -4
- package/templates/init/functions/javascript/_eslintrc +16 -2
- package/templates/init/functions/javascript/package.lint.json +4 -4
- package/templates/init/functions/javascript/package.nolint.json +3 -3
- package/templates/init/functions/python/_gitignore +0 -0
- package/templates/init/functions/python/main.py +13 -0
- package/templates/init/functions/python/requirements.txt +1 -0
- package/templates/init/functions/typescript/_eslintrc +1 -0
- package/templates/init/functions/typescript/package.lint.json +4 -4
- package/templates/init/functions/typescript/package.nolint.json +4 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "firebase-tools",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.23.0",
|
|
4
4
|
"description": "Command-Line Interface for Firebase",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"stream-chain": "^2.2.4",
|
|
107
107
|
"stream-json": "^1.7.3",
|
|
108
108
|
"strip-ansi": "^6.0.1",
|
|
109
|
-
"superstatic": "^9.0.
|
|
109
|
+
"superstatic": "^9.0.3",
|
|
110
110
|
"tar": "^6.1.11",
|
|
111
111
|
"tcp-port-used": "^1.0.2",
|
|
112
112
|
"tmp": "^0.2.1",
|
|
@@ -40,7 +40,7 @@ resources:
|
|
|
40
40
|
location: ${LOCATION}
|
|
41
41
|
# httpsTrigger is used for an HTTP triggered function.
|
|
42
42
|
httpsTrigger: {}
|
|
43
|
-
runtime: "
|
|
43
|
+
runtime: "nodejs16"
|
|
44
44
|
|
|
45
45
|
# In the `params` field, set up your extension's user-configured parameters.
|
|
46
46
|
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#params-field
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
This directory now contains the source files for a simple extension called **greet-the-world**.
|
|
1
|
+
This directory now contains the source files for a simple extension called **greet-the-world**. You can try it out right away in the Firebase Emulator suite - just naviagte to the integration-test directory and run:
|
|
2
2
|
|
|
3
|
-
`firebase
|
|
3
|
+
`firebase emulators:start --project=<project-id>`
|
|
4
4
|
|
|
5
|
-
If you
|
|
5
|
+
If you don't have a project to use, you can instead use '--project=demo-test' to run against a fake project.
|
|
6
6
|
|
|
7
|
-
`
|
|
7
|
+
The `integration-test` directory also includes an end to end test (in the file integration-test.spec.js) that verifies that the extension responds back with the expected greeting. You can see it in action by running:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`npm run test`
|
|
10
|
+
|
|
11
|
+
If you want to jump into the code to customize your extension, then modify **index.js** and **extension.yaml** in your favorite editor.
|
|
12
|
+
|
|
13
|
+
If you want to deploy your extension to test on a real project, go to a Firebase project directory (or create a new one with `firebase init`) and run:
|
|
14
|
+
|
|
15
|
+
`firebase ext:install ./path/to/extension/directory --project=<project-id>`
|
|
16
|
+
`firebase deploy --only extensions`
|
|
17
|
+
|
|
18
|
+
You can find more information about building extensions in the publisher docs: https://firebase.google.com/docs/extensions/alpha/overview-build-extensions
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* This template contains a HTTP function that
|
|
3
|
-
*
|
|
4
|
-
* Always use the FUNCTIONS HANDLER NAMESPACE
|
|
5
|
-
* when writing Cloud Functions for extensions.
|
|
6
|
-
* Learn more about the handler namespace in the docs
|
|
2
|
+
* This template contains a HTTP function that
|
|
3
|
+
* responds with a greeting when called
|
|
7
4
|
*
|
|
8
5
|
* Reference PARAMETERS in your functions code with:
|
|
9
6
|
* `process.env.<parameter-name>`
|
|
10
|
-
* Learn more about
|
|
7
|
+
* Learn more about building extensions in the docs:
|
|
8
|
+
* https://firebase.google.com/docs/extensions/alpha/overview
|
|
11
9
|
*/
|
|
12
10
|
|
|
13
|
-
const functions = require(
|
|
11
|
+
const functions = require("firebase-functions");
|
|
14
12
|
|
|
15
|
-
exports.greetTheWorld = functions.
|
|
16
|
-
// Here we reference a user-provided parameter
|
|
13
|
+
exports.greetTheWorld = functions.https.onRequest((req, res) => {
|
|
14
|
+
// Here we reference a user-provided parameter
|
|
15
|
+
// (its value is provided by the user during installation)
|
|
17
16
|
const consumerProvidedGreeting = process.env.GREETING;
|
|
18
17
|
|
|
19
|
-
// And here we reference an auto-populated parameter
|
|
18
|
+
// And here we reference an auto-populated parameter
|
|
19
|
+
// (its value is provided by Firebase after installation)
|
|
20
20
|
const instanceId = process.env.EXT_INSTANCE_ID;
|
|
21
21
|
|
|
22
22
|
const greeting = `${consumerProvidedGreeting} World from ${instanceId}`;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const axios = require("axios");
|
|
2
|
+
const chai = require("chai");
|
|
3
|
+
|
|
4
|
+
describe("greet-the-world", () => {
|
|
5
|
+
it("should respond with the configured greeting", async () => {
|
|
6
|
+
const expected = "Hello World from greet-the-world";
|
|
7
|
+
|
|
8
|
+
const httpFunctionUri = "http://localhost:5001/demo-test/us-central1/ext-greet-the-world-greetTheWorld/";
|
|
9
|
+
const res = await axios.get(httpFunctionUri);
|
|
10
|
+
|
|
11
|
+
return chai.expect(res.data).to.eql(expected);
|
|
12
|
+
}).timeout(10000);
|
|
13
|
+
});
|
|
@@ -3,15 +3,23 @@
|
|
|
3
3
|
"description": "Greet the world",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"firebase-admin": "^
|
|
7
|
-
"firebase-functions": "^
|
|
6
|
+
"firebase-admin": "^11.5.0",
|
|
7
|
+
"firebase-functions": "^4.2.0"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"eslint": "^8.15.1",
|
|
11
|
-
"eslint-plugin-promise": "^6.0.0"
|
|
11
|
+
"eslint-plugin-promise": "^6.0.0",
|
|
12
|
+
"eslint-config-google": "^0.14.0",
|
|
13
|
+
"eslint-plugin-import": "^2.25.4",
|
|
14
|
+
"axios": "^1.3.2",
|
|
15
|
+
"chai": "^4.3.7",
|
|
16
|
+
"mocha": "^10.2.0"
|
|
12
17
|
},
|
|
13
18
|
"scripts": {
|
|
14
|
-
"lint": "./node_modules/.bin/eslint --max-warnings=0 .."
|
|
19
|
+
"lint": "./node_modules/.bin/eslint --max-warnings=0 ..",
|
|
20
|
+
"lint:fix": "./node_modules/.bin/eslint --max-warnings=0 --fix ..",
|
|
21
|
+
"mocha": "mocha '**/*.spec.js'",
|
|
22
|
+
"test": "(cd integration-tests && firebase emulators:exec 'npm run mocha' -P demo-test)"
|
|
15
23
|
},
|
|
16
24
|
"private": true
|
|
17
25
|
}
|
|
@@ -3,8 +3,17 @@
|
|
|
3
3
|
"description": "Greet the world",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"firebase-admin": "^
|
|
7
|
-
"firebase-functions": "^
|
|
6
|
+
"firebase-admin": "^11.5.0",
|
|
7
|
+
"firebase-functions": "^4.2.0"
|
|
8
|
+
},
|
|
9
|
+
"devDependencies": {
|
|
10
|
+
"axios": "^1.3.2",
|
|
11
|
+
"chai": "^4.3.7",
|
|
12
|
+
"mocha": "^10.2.0"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"mocha": "mocha '**/*.spec.js'",
|
|
16
|
+
"test": "(cd integration-tests && firebase emulators:exec 'npm run mocha' -P demo-test)"
|
|
8
17
|
},
|
|
9
18
|
"private": true
|
|
10
19
|
}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
This directory now contains the source files for a simple extension called **greet-the-world**.
|
|
1
|
+
This directory now contains the source files for a simple extension called **greet-the-world**. You can try it out right away in the Firebase Emulator suite: first, compile your code by running:
|
|
2
2
|
|
|
3
|
-
`npm run build --prefix=functions
|
|
3
|
+
`npm run build --prefix=functions`
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Then, navigate to the `functions/integration-test` directory and run:
|
|
6
6
|
|
|
7
|
-
`
|
|
7
|
+
`firebase emulators:start --project=<project-id>`
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
If you don't have a project to use, you can instead use '--project=demo-test' to run against a fake project.
|
|
10
|
+
|
|
11
|
+
The `integration-test` directory also includes an end to end test (in the file **integration-test.spec.ts**) that verifies that the extension responds back with the expected greeting. You can see it in action by running:
|
|
12
|
+
|
|
13
|
+
`npm run test`
|
|
14
|
+
|
|
15
|
+
If you want to jump into the code to customize your extension, then modify **index.ts** and **extension.yaml** in your favorite editor.
|
|
16
|
+
|
|
17
|
+
If you want to deploy your extension to test on a real project, go to a Firebase project directory (or create a new one with `firebase init`) and run:
|
|
18
|
+
|
|
19
|
+
`firebase ext:install ./path/to/extension/directory --project=<project-id>`
|
|
20
|
+
`firebase deploy --only extensions`
|
|
21
|
+
|
|
22
|
+
You can find more information about building extensions in the publisher docs: https://firebase.google.com/docs/extensions/alpha/overview-build-extensions
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* This template contains a HTTP function that responds
|
|
3
|
-
*
|
|
4
|
-
* Always use the FUNCTIONS HANDLER NAMESPACE
|
|
5
|
-
* when writing Cloud Functions for extensions.
|
|
6
|
-
* Learn more about the handler namespace in the docs
|
|
2
|
+
* This template contains a HTTP function that responds
|
|
3
|
+
* with a greeting when called
|
|
7
4
|
*
|
|
8
5
|
* Reference PARAMETERS in your functions code with:
|
|
9
6
|
* `process.env.<parameter-name>`
|
|
10
|
-
* Learn more about
|
|
7
|
+
* Learn more about building extensions in the docs:
|
|
8
|
+
* https://firebase.google.com/docs/extensions/alpha/overview
|
|
11
9
|
*/
|
|
12
10
|
|
|
13
|
-
import * as functions from
|
|
11
|
+
import * as functions from "firebase-functions";
|
|
14
12
|
|
|
15
|
-
exports.greetTheWorld = functions.
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
exports.greetTheWorld = functions.https.onRequest(
|
|
14
|
+
(req: functions.Request, res: functions.Response) => {
|
|
15
|
+
// Here we reference a user-provided parameter
|
|
16
|
+
// (its value is provided by the user during installation)
|
|
17
|
+
const consumerProvidedGreeting = process.env.GREETING;
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
// And here we reference an auto-populated parameter
|
|
20
|
+
// (its value is provided by Firebase after installation)
|
|
21
|
+
const instanceId = process.env.EXT_INSTANCE_ID;
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
const greeting = `${consumerProvidedGreeting} World from ${instanceId}`;
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
});
|
|
25
|
+
res.send(greeting);
|
|
26
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { expect } from "chai";
|
|
3
|
+
|
|
4
|
+
describe("greet-the-world", () => {
|
|
5
|
+
it("should respond with the configured greeting", async () => {
|
|
6
|
+
const expected = "Hello World from greet-the-world";
|
|
7
|
+
|
|
8
|
+
const httpFunctionUri = "http://localhost:5001/demo-test/us-central1/ext-greet-the-world-greetTheWorld/";
|
|
9
|
+
const res = await axios.get(httpFunctionUri);
|
|
10
|
+
|
|
11
|
+
return expect(res.data).to.eql(expected);
|
|
12
|
+
}).timeout(10000);
|
|
13
|
+
});
|
|
@@ -2,18 +2,30 @@
|
|
|
2
2
|
"name": "functions",
|
|
3
3
|
"scripts": {
|
|
4
4
|
"lint": "eslint \"src/**/*\"",
|
|
5
|
+
"lint:fix": "eslint \"src/**/*\" --fix",
|
|
5
6
|
"build": "tsc",
|
|
6
|
-
"build:watch": "tsc --watch"
|
|
7
|
+
"build:watch": "tsc --watch",
|
|
8
|
+
"mocha": "mocha '**/*.spec.ts'",
|
|
9
|
+
"test": "(cd integration-tests && firebase emulators:exec 'npm run mocha' -P demo-test)"
|
|
7
10
|
},
|
|
8
11
|
"main": "lib/index.js",
|
|
9
12
|
"dependencies": {
|
|
10
|
-
"firebase-admin": "^
|
|
11
|
-
"firebase-functions": "^
|
|
13
|
+
"firebase-admin": "^11.5.0",
|
|
14
|
+
"firebase-functions": "^4.2.0"
|
|
12
15
|
},
|
|
13
16
|
"devDependencies": {
|
|
17
|
+
"@types/chai": "^4.3.4",
|
|
18
|
+
"@types/mocha": "^10.0.1",
|
|
19
|
+
"@typescript-eslint/eslint-plugin": "^5.12.0",
|
|
20
|
+
"@typescript-eslint/parser": "^5.12.0",
|
|
14
21
|
"eslint": "^8.15.1",
|
|
15
22
|
"eslint-plugin-import": "^2.26.0",
|
|
16
|
-
"
|
|
23
|
+
"eslint-config-google": "^0.14.0",
|
|
24
|
+
"typescript": "^4.9.0",
|
|
25
|
+
"axios": "^1.3.2",
|
|
26
|
+
"chai": "^4.3.7",
|
|
27
|
+
"mocha": "^10.2.0",
|
|
28
|
+
"ts-node": "^10.4.0"
|
|
17
29
|
},
|
|
18
30
|
"private": true
|
|
19
31
|
}
|
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
"name": "functions",
|
|
3
3
|
"scripts": {
|
|
4
4
|
"build": "tsc",
|
|
5
|
-
"build:watch": "tsc --watch"
|
|
5
|
+
"build:watch": "tsc --watch",
|
|
6
|
+
"mocha": "mocha '**/*.spec.ts'",
|
|
7
|
+
"test": "(cd integration-tests && firebase emulators:exec 'npm run mocha' -P demo-test)"
|
|
6
8
|
},
|
|
7
9
|
"main": "lib/index.js",
|
|
8
10
|
"dependencies": {
|
|
9
|
-
"firebase-admin": "^
|
|
10
|
-
"firebase-functions": "^
|
|
11
|
+
"firebase-admin": "^11.5.0",
|
|
12
|
+
"firebase-functions": "^4.2.0"
|
|
11
13
|
},
|
|
12
14
|
"devDependencies": {
|
|
13
|
-
"
|
|
15
|
+
"@types/chai": "^4.3.4",
|
|
16
|
+
"@types/mocha": "^10.0.1",
|
|
17
|
+
"typescript": "^4.9.0",
|
|
18
|
+
"axios": "^1.3.2",
|
|
19
|
+
"chai": "^4.3.7",
|
|
20
|
+
"mocha": "^10.2.0",
|
|
21
|
+
"ts-node": "^10.4.0"
|
|
14
22
|
},
|
|
15
23
|
"private": true
|
|
16
24
|
}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
root: true,
|
|
3
2
|
env: {
|
|
4
3
|
es6: true,
|
|
5
4
|
node: true,
|
|
6
5
|
},
|
|
6
|
+
parserOptions: {
|
|
7
|
+
"ecmaVersion": 2018,
|
|
8
|
+
},
|
|
7
9
|
extends: [
|
|
8
10
|
"eslint:recommended",
|
|
9
11
|
"google",
|
|
10
12
|
],
|
|
11
13
|
rules: {
|
|
12
|
-
|
|
14
|
+
"no-restricted-globals": ["error", "name", "length"],
|
|
15
|
+
"prefer-arrow-callback": "error",
|
|
16
|
+
"quotes": ["error", "double", {"allowTemplateLiterals": true}],
|
|
13
17
|
},
|
|
18
|
+
overrides: [
|
|
19
|
+
{
|
|
20
|
+
files: ["**/*.spec.*"],
|
|
21
|
+
env: {
|
|
22
|
+
mocha: true,
|
|
23
|
+
},
|
|
24
|
+
rules: {},
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
globals: {},
|
|
14
28
|
};
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
},
|
|
15
15
|
"main": "index.js",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"firebase-admin": "^
|
|
18
|
-
"firebase-functions": "^
|
|
17
|
+
"firebase-admin": "^111.5.0",
|
|
18
|
+
"firebase-functions": "^4.2.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"eslint": "^8.
|
|
21
|
+
"eslint": "^8.15.0",
|
|
22
22
|
"eslint-config-google": "^0.14.0",
|
|
23
|
-
"firebase-functions-test": "^0.
|
|
23
|
+
"firebase-functions-test": "^3.0.0"
|
|
24
24
|
},
|
|
25
25
|
"private": true
|
|
26
26
|
}
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
},
|
|
14
14
|
"main": "index.js",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"firebase-admin": "^
|
|
17
|
-
"firebase-functions": "^
|
|
16
|
+
"firebase-admin": "^11.5.0",
|
|
17
|
+
"firebase-functions": "^4.2.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"firebase-functions-test": "^0.
|
|
20
|
+
"firebase-functions-test": "^3.0.0"
|
|
21
21
|
},
|
|
22
22
|
"private": true
|
|
23
23
|
}
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Welcome to Cloud Functions for Firebase for Python!
|
|
2
|
+
# To get started, simply uncomment the below code or create your own.
|
|
3
|
+
# Deploy with `firebase deploy`
|
|
4
|
+
|
|
5
|
+
from firebase_functions import https
|
|
6
|
+
from firebase_admin import initialize_app
|
|
7
|
+
|
|
8
|
+
# initialize_app()
|
|
9
|
+
#
|
|
10
|
+
#
|
|
11
|
+
# @https.on_request()
|
|
12
|
+
# def on_request_example(req: https.Request) -> https.Response:
|
|
13
|
+
# return https.Response("Hello world!")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
git+https://github.com/firebase/firebase-functions-python.git@main#egg=firebase-functions
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"main": "lib/index.js",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"firebase-admin": "^
|
|
19
|
-
"firebase-functions": "^
|
|
18
|
+
"firebase-admin": "^11.5.0",
|
|
19
|
+
"firebase-functions": "^4.2.0"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@typescript-eslint/eslint-plugin": "^5.12.0",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"eslint": "^8.9.0",
|
|
25
25
|
"eslint-config-google": "^0.14.0",
|
|
26
26
|
"eslint-plugin-import": "^2.25.4",
|
|
27
|
-
"firebase-functions-test": "^0.
|
|
28
|
-
"typescript": "^4.
|
|
27
|
+
"firebase-functions-test": "^3.0.0",
|
|
28
|
+
"typescript": "^4.9.0"
|
|
29
29
|
},
|
|
30
30
|
"private": true
|
|
31
31
|
}
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"main": "lib/index.js",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"firebase-admin": "^
|
|
18
|
-
"firebase-functions": "^
|
|
17
|
+
"firebase-admin": "^11.5.0",
|
|
18
|
+
"firebase-functions": "^4.2.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"typescript": "^4.
|
|
21
|
+
"typescript": "^4.9.0",
|
|
22
|
+
"firebase-functions-test": "^3.0.0"
|
|
22
23
|
},
|
|
23
24
|
"private": true
|
|
24
25
|
}
|