firebase-admin 9.12.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/LICENSE +201 -0
- package/README.md +90 -0
- package/lib/app-check/app-check-api-client-internal.js +197 -0
- package/lib/app-check/app-check.js +79 -0
- package/lib/app-check/index.d.ts +160 -0
- package/lib/app-check/index.js +19 -0
- package/lib/app-check/token-generator.js +161 -0
- package/lib/app-check/token-verifier.js +152 -0
- package/lib/auth/action-code-settings-builder.js +118 -0
- package/lib/auth/auth-api-request.js +1856 -0
- package/lib/auth/auth-config.js +636 -0
- package/lib/auth/auth.js +836 -0
- package/lib/auth/identifier.js +40 -0
- package/lib/auth/index.d.ts +1927 -0
- package/lib/auth/index.js +18 -0
- package/lib/auth/tenant-manager.js +140 -0
- package/lib/auth/tenant.js +171 -0
- package/lib/auth/token-generator.js +200 -0
- package/lib/auth/token-verifier.js +259 -0
- package/lib/auth/user-import-builder.js +387 -0
- package/lib/auth/user-record.js +346 -0
- package/lib/credential/credential-internal.js +391 -0
- package/lib/credential/credential.js +44 -0
- package/lib/credential/index.d.ts +169 -0
- package/lib/credential/index.js +23 -0
- package/lib/database/database-internal.js +266 -0
- package/lib/database/index.d.ts +89 -0
- package/lib/database/index.js +31 -0
- package/lib/default-namespace.js +31 -0
- package/lib/firebase-app.js +349 -0
- package/lib/firebase-namespace-api.d.ts +243 -0
- package/lib/firebase-namespace-api.js +18 -0
- package/lib/firebase-namespace.d.ts +31 -0
- package/lib/firebase-namespace.js +417 -0
- package/lib/firestore/firestore-internal.js +105 -0
- package/lib/firestore/index.d.ts +50 -0
- package/lib/firestore/index.js +47 -0
- package/lib/index.d.ts +24 -0
- package/lib/index.js +27 -0
- package/lib/installations/index.d.ts +81 -0
- package/lib/installations/index.js +18 -0
- package/lib/installations/installations-request-handler.js +117 -0
- package/lib/installations/installations.js +62 -0
- package/lib/instance-id/index.d.ts +83 -0
- package/lib/instance-id/index.js +18 -0
- package/lib/instance-id/instance-id.js +87 -0
- package/lib/machine-learning/index.d.ts +249 -0
- package/lib/machine-learning/index.js +18 -0
- package/lib/machine-learning/machine-learning-api-client.js +304 -0
- package/lib/machine-learning/machine-learning-utils.js +62 -0
- package/lib/machine-learning/machine-learning.js +364 -0
- package/lib/messaging/batch-request-internal.js +129 -0
- package/lib/messaging/index.d.ts +1174 -0
- package/lib/messaging/index.js +18 -0
- package/lib/messaging/messaging-api-request-internal.js +128 -0
- package/lib/messaging/messaging-errors-internal.js +106 -0
- package/lib/messaging/messaging-internal.js +484 -0
- package/lib/messaging/messaging.js +846 -0
- package/lib/project-management/android-app.js +176 -0
- package/lib/project-management/index.d.ts +363 -0
- package/lib/project-management/index.js +41 -0
- package/lib/project-management/ios-app.js +88 -0
- package/lib/project-management/project-management-api-request-internal.js +273 -0
- package/lib/project-management/project-management.js +254 -0
- package/lib/remote-config/index.d.ts +369 -0
- package/lib/remote-config/index.js +18 -0
- package/lib/remote-config/remote-config-api-client-internal.js +407 -0
- package/lib/remote-config/remote-config.js +304 -0
- package/lib/security-rules/index.d.ts +216 -0
- package/lib/security-rules/index.js +18 -0
- package/lib/security-rules/security-rules-api-client-internal.js +237 -0
- package/lib/security-rules/security-rules-internal.js +41 -0
- package/lib/security-rules/security-rules.js +310 -0
- package/lib/storage/index.d.ts +60 -0
- package/lib/storage/index.js +18 -0
- package/lib/storage/storage.js +123 -0
- package/lib/utils/api-request.js +845 -0
- package/lib/utils/crypto-signer.js +237 -0
- package/lib/utils/deep-copy.js +78 -0
- package/lib/utils/error.js +1063 -0
- package/lib/utils/index.js +217 -0
- package/lib/utils/jwt.js +355 -0
- package/lib/utils/validator.js +271 -0
- package/package.json +122 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/*! firebase-admin v9.12.0 */
|
|
2
|
+
"use strict";
|
|
3
|
+
/*!
|
|
4
|
+
* @license
|
|
5
|
+
* Copyright 2017 Google Inc.
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.isTopic = exports.isURL = exports.isUTCDateString = exports.isISODateString = exports.isPhoneNumber = exports.isEmail = exports.isPassword = exports.isUid = exports.isNonNullObject = exports.isObject = exports.isNonEmptyString = exports.isBase64String = exports.isString = exports.isNumber = exports.isBoolean = exports.isNonEmptyArray = exports.isArray = exports.isBuffer = void 0;
|
|
21
|
+
var url = require("url");
|
|
22
|
+
/**
|
|
23
|
+
* Validates that a value is a byte buffer.
|
|
24
|
+
*
|
|
25
|
+
* @param {any} value The value to validate.
|
|
26
|
+
* @return {boolean} Whether the value is byte buffer or not.
|
|
27
|
+
*/
|
|
28
|
+
function isBuffer(value) {
|
|
29
|
+
return value instanceof Buffer;
|
|
30
|
+
}
|
|
31
|
+
exports.isBuffer = isBuffer;
|
|
32
|
+
/**
|
|
33
|
+
* Validates that a value is an array.
|
|
34
|
+
*
|
|
35
|
+
* @param {any} value The value to validate.
|
|
36
|
+
* @return {boolean} Whether the value is an array or not.
|
|
37
|
+
*/
|
|
38
|
+
function isArray(value) {
|
|
39
|
+
return Array.isArray(value);
|
|
40
|
+
}
|
|
41
|
+
exports.isArray = isArray;
|
|
42
|
+
/**
|
|
43
|
+
* Validates that a value is a non-empty array.
|
|
44
|
+
*
|
|
45
|
+
* @param {any} value The value to validate.
|
|
46
|
+
* @return {boolean} Whether the value is a non-empty array or not.
|
|
47
|
+
*/
|
|
48
|
+
function isNonEmptyArray(value) {
|
|
49
|
+
return isArray(value) && value.length !== 0;
|
|
50
|
+
}
|
|
51
|
+
exports.isNonEmptyArray = isNonEmptyArray;
|
|
52
|
+
/**
|
|
53
|
+
* Validates that a value is a boolean.
|
|
54
|
+
*
|
|
55
|
+
* @param {any} value The value to validate.
|
|
56
|
+
* @return {boolean} Whether the value is a boolean or not.
|
|
57
|
+
*/
|
|
58
|
+
function isBoolean(value) {
|
|
59
|
+
return typeof value === 'boolean';
|
|
60
|
+
}
|
|
61
|
+
exports.isBoolean = isBoolean;
|
|
62
|
+
/**
|
|
63
|
+
* Validates that a value is a number.
|
|
64
|
+
*
|
|
65
|
+
* @param {any} value The value to validate.
|
|
66
|
+
* @return {boolean} Whether the value is a number or not.
|
|
67
|
+
*/
|
|
68
|
+
function isNumber(value) {
|
|
69
|
+
return typeof value === 'number' && !isNaN(value);
|
|
70
|
+
}
|
|
71
|
+
exports.isNumber = isNumber;
|
|
72
|
+
/**
|
|
73
|
+
* Validates that a value is a string.
|
|
74
|
+
*
|
|
75
|
+
* @param {any} value The value to validate.
|
|
76
|
+
* @return {boolean} Whether the value is a string or not.
|
|
77
|
+
*/
|
|
78
|
+
function isString(value) {
|
|
79
|
+
return typeof value === 'string';
|
|
80
|
+
}
|
|
81
|
+
exports.isString = isString;
|
|
82
|
+
/**
|
|
83
|
+
* Validates that a value is a base64 string.
|
|
84
|
+
*
|
|
85
|
+
* @param {any} value The value to validate.
|
|
86
|
+
* @return {boolean} Whether the value is a base64 string or not.
|
|
87
|
+
*/
|
|
88
|
+
function isBase64String(value) {
|
|
89
|
+
if (!isString(value)) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(value);
|
|
93
|
+
}
|
|
94
|
+
exports.isBase64String = isBase64String;
|
|
95
|
+
/**
|
|
96
|
+
* Validates that a value is a non-empty string.
|
|
97
|
+
*
|
|
98
|
+
* @param {any} value The value to validate.
|
|
99
|
+
* @return {boolean} Whether the value is a non-empty string or not.
|
|
100
|
+
*/
|
|
101
|
+
function isNonEmptyString(value) {
|
|
102
|
+
return isString(value) && value !== '';
|
|
103
|
+
}
|
|
104
|
+
exports.isNonEmptyString = isNonEmptyString;
|
|
105
|
+
/**
|
|
106
|
+
* Validates that a value is a nullable object.
|
|
107
|
+
*
|
|
108
|
+
* @param {any} value The value to validate.
|
|
109
|
+
* @return {boolean} Whether the value is an object or not.
|
|
110
|
+
*/
|
|
111
|
+
function isObject(value) {
|
|
112
|
+
return typeof value === 'object' && !isArray(value);
|
|
113
|
+
}
|
|
114
|
+
exports.isObject = isObject;
|
|
115
|
+
/**
|
|
116
|
+
* Validates that a value is a non-null object.
|
|
117
|
+
*
|
|
118
|
+
* @param {any} value The value to validate.
|
|
119
|
+
* @return {boolean} Whether the value is a non-null object or not.
|
|
120
|
+
*/
|
|
121
|
+
function isNonNullObject(value) {
|
|
122
|
+
return isObject(value) && value !== null;
|
|
123
|
+
}
|
|
124
|
+
exports.isNonNullObject = isNonNullObject;
|
|
125
|
+
/**
|
|
126
|
+
* Validates that a string is a valid Firebase Auth uid.
|
|
127
|
+
*
|
|
128
|
+
* @param {any} uid The string to validate.
|
|
129
|
+
* @return {boolean} Whether the string is a valid Firebase Auth uid.
|
|
130
|
+
*/
|
|
131
|
+
function isUid(uid) {
|
|
132
|
+
return typeof uid === 'string' && uid.length > 0 && uid.length <= 128;
|
|
133
|
+
}
|
|
134
|
+
exports.isUid = isUid;
|
|
135
|
+
/**
|
|
136
|
+
* Validates that a string is a valid Firebase Auth password.
|
|
137
|
+
*
|
|
138
|
+
* @param {any} password The password string to validate.
|
|
139
|
+
* @return {boolean} Whether the string is a valid Firebase Auth password.
|
|
140
|
+
*/
|
|
141
|
+
function isPassword(password) {
|
|
142
|
+
// A password must be a string of at least 6 characters.
|
|
143
|
+
return typeof password === 'string' && password.length >= 6;
|
|
144
|
+
}
|
|
145
|
+
exports.isPassword = isPassword;
|
|
146
|
+
/**
|
|
147
|
+
* Validates that a string is a valid email.
|
|
148
|
+
*
|
|
149
|
+
* @param {any} email The string to validate.
|
|
150
|
+
* @return {boolean} Whether the string is valid email or not.
|
|
151
|
+
*/
|
|
152
|
+
function isEmail(email) {
|
|
153
|
+
if (typeof email !== 'string') {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
// There must at least one character before the @ symbol and another after.
|
|
157
|
+
var re = /^[^@]+@[^@]+$/;
|
|
158
|
+
return re.test(email);
|
|
159
|
+
}
|
|
160
|
+
exports.isEmail = isEmail;
|
|
161
|
+
/**
|
|
162
|
+
* Validates that a string is a valid phone number.
|
|
163
|
+
*
|
|
164
|
+
* @param {any} phoneNumber The string to validate.
|
|
165
|
+
* @return {boolean} Whether the string is a valid phone number or not.
|
|
166
|
+
*/
|
|
167
|
+
function isPhoneNumber(phoneNumber) {
|
|
168
|
+
if (typeof phoneNumber !== 'string') {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
// Phone number validation is very lax here. Backend will enforce E.164
|
|
172
|
+
// spec compliance and will normalize accordingly.
|
|
173
|
+
// The phone number string must be non-empty and starts with a plus sign.
|
|
174
|
+
var re1 = /^\+/;
|
|
175
|
+
// The phone number string must contain at least one alphanumeric character.
|
|
176
|
+
var re2 = /[\da-zA-Z]+/;
|
|
177
|
+
return re1.test(phoneNumber) && re2.test(phoneNumber);
|
|
178
|
+
}
|
|
179
|
+
exports.isPhoneNumber = isPhoneNumber;
|
|
180
|
+
/**
|
|
181
|
+
* Validates that a string is a valid ISO date string.
|
|
182
|
+
*
|
|
183
|
+
* @param dateString The string to validate.
|
|
184
|
+
* @return Whether the string is a valid ISO date string.
|
|
185
|
+
*/
|
|
186
|
+
function isISODateString(dateString) {
|
|
187
|
+
try {
|
|
188
|
+
return isNonEmptyString(dateString) &&
|
|
189
|
+
(new Date(dateString).toISOString() === dateString);
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.isISODateString = isISODateString;
|
|
196
|
+
/**
|
|
197
|
+
* Validates that a string is a valid UTC date string.
|
|
198
|
+
*
|
|
199
|
+
* @param dateString The string to validate.
|
|
200
|
+
* @return Whether the string is a valid UTC date string.
|
|
201
|
+
*/
|
|
202
|
+
function isUTCDateString(dateString) {
|
|
203
|
+
try {
|
|
204
|
+
return isNonEmptyString(dateString) &&
|
|
205
|
+
(new Date(dateString).toUTCString() === dateString);
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.isUTCDateString = isUTCDateString;
|
|
212
|
+
/**
|
|
213
|
+
* Validates that a string is a valid web URL.
|
|
214
|
+
*
|
|
215
|
+
* @param {any} urlStr The string to validate.
|
|
216
|
+
* @return {boolean} Whether the string is valid web URL or not.
|
|
217
|
+
*/
|
|
218
|
+
function isURL(urlStr) {
|
|
219
|
+
if (typeof urlStr !== 'string') {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
// Lookup illegal characters.
|
|
223
|
+
var re = /[^a-z0-9:/?#[\]@!$&'()*+,;=.\-_~%]/i;
|
|
224
|
+
if (re.test(urlStr)) {
|
|
225
|
+
return false;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
var uri = url.parse(urlStr);
|
|
229
|
+
var scheme = uri.protocol;
|
|
230
|
+
var slashes = uri.slashes;
|
|
231
|
+
var hostname = uri.hostname;
|
|
232
|
+
var pathname = uri.pathname;
|
|
233
|
+
if ((scheme !== 'http:' && scheme !== 'https:') || !slashes) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
// Validate hostname: Can contain letters, numbers, underscore and dashes separated by a dot.
|
|
237
|
+
// Each zone must not start with a hyphen or underscore.
|
|
238
|
+
if (!hostname || !/^[a-zA-Z0-9]+[\w-]*([.]?[a-zA-Z0-9]+[\w-]*)*$/.test(hostname)) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
// Allow for pathnames: (/chars+)*/?
|
|
242
|
+
// Where chars can be a combination of: a-z A-Z 0-9 - _ . ~ ! $ & ' ( ) * + , ; = : @ %
|
|
243
|
+
var pathnameRe = /^(\/[\w\-.~!$'()*+,;=:@%]+)*\/?$/;
|
|
244
|
+
// Validate pathname.
|
|
245
|
+
if (pathname &&
|
|
246
|
+
pathname !== '/' &&
|
|
247
|
+
!pathnameRe.test(pathname)) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
// Allow any query string and hash as long as no invalid character is used.
|
|
251
|
+
}
|
|
252
|
+
catch (e) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
exports.isURL = isURL;
|
|
258
|
+
/**
|
|
259
|
+
* Validates that the provided topic is a valid FCM topic name.
|
|
260
|
+
*
|
|
261
|
+
* @param {any} topic The topic to validate.
|
|
262
|
+
* @return {boolean} Whether the provided topic is a valid FCM topic name.
|
|
263
|
+
*/
|
|
264
|
+
function isTopic(topic) {
|
|
265
|
+
if (typeof topic !== 'string') {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
var VALID_TOPIC_REGEX = /^(\/topics\/)?(private\/)?[a-zA-Z0-9-_.~%]+$/;
|
|
269
|
+
return VALID_TOPIC_REGEX.test(topic);
|
|
270
|
+
}
|
|
271
|
+
exports.isTopic = isTopic;
|
package/package.json
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "firebase-admin",
|
|
3
|
+
"version": "9.12.0",
|
|
4
|
+
"description": "Firebase admin SDK for Node.js",
|
|
5
|
+
"author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"homepage": "https://firebase.google.com/",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=10.13.0"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "gulp build",
|
|
13
|
+
"build:tests": "gulp compile_test",
|
|
14
|
+
"prepare": "npm run build",
|
|
15
|
+
"lint": "run-p lint:src lint:test",
|
|
16
|
+
"test": "run-s lint test:unit",
|
|
17
|
+
"integration": "run-s build test:integration",
|
|
18
|
+
"test:unit": "mocha test/unit/*.spec.ts --require ts-node/register",
|
|
19
|
+
"test:integration": "mocha test/integration/*.ts --slow 5000 --timeout 20000 --require ts-node/register",
|
|
20
|
+
"test:coverage": "nyc npm run test:unit",
|
|
21
|
+
"lint:src": "eslint src/ --ext .ts",
|
|
22
|
+
"lint:test": "eslint test/ --ext .ts",
|
|
23
|
+
"apidocs": "node docgen/generate-docs.js --api node",
|
|
24
|
+
"api-extractor": "api-extractor run",
|
|
25
|
+
"api-extractor:local": "api-extractor run --local"
|
|
26
|
+
},
|
|
27
|
+
"nyc": {
|
|
28
|
+
"extension": [
|
|
29
|
+
".ts"
|
|
30
|
+
],
|
|
31
|
+
"include": [
|
|
32
|
+
"src"
|
|
33
|
+
],
|
|
34
|
+
"exclude": [
|
|
35
|
+
"**/*.d.ts"
|
|
36
|
+
],
|
|
37
|
+
"all": true
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"admin",
|
|
41
|
+
"database",
|
|
42
|
+
"Firebase",
|
|
43
|
+
"realtime",
|
|
44
|
+
"authentication"
|
|
45
|
+
],
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "https://github.com/firebase/firebase-admin-node"
|
|
49
|
+
},
|
|
50
|
+
"main": "lib/index.js",
|
|
51
|
+
"files": [
|
|
52
|
+
"lib/",
|
|
53
|
+
"LICENSE",
|
|
54
|
+
"README.md",
|
|
55
|
+
"package.json"
|
|
56
|
+
],
|
|
57
|
+
"types": "./lib/index.d.ts",
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"@firebase/database-compat": "^0.1.1",
|
|
60
|
+
"@firebase/database-types": "^0.7.2",
|
|
61
|
+
"@types/node": ">=12.12.47",
|
|
62
|
+
"dicer": "^0.3.0",
|
|
63
|
+
"jsonwebtoken": "^8.5.1",
|
|
64
|
+
"jwks-rsa": "^2.0.2",
|
|
65
|
+
"node-forge": "^0.10.0"
|
|
66
|
+
},
|
|
67
|
+
"optionalDependencies": {
|
|
68
|
+
"@google-cloud/firestore": "^4.5.0",
|
|
69
|
+
"@google-cloud/storage": "^5.3.0"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@firebase/app-compat": "^0.1.2",
|
|
73
|
+
"@firebase/auth-compat": "^0.1.3",
|
|
74
|
+
"@firebase/auth-types": "^0.10.3",
|
|
75
|
+
"@microsoft/api-extractor": "^7.11.2",
|
|
76
|
+
"@types/bcrypt": "^5.0.0",
|
|
77
|
+
"@types/chai": "^4.0.0",
|
|
78
|
+
"@types/chai-as-promised": "^7.1.0",
|
|
79
|
+
"@types/firebase-token-generator": "^2.0.28",
|
|
80
|
+
"@types/jsonwebtoken": "8.5.1",
|
|
81
|
+
"@types/lodash": "^4.14.104",
|
|
82
|
+
"@types/minimist": "^1.2.0",
|
|
83
|
+
"@types/mocha": "^8.2.2",
|
|
84
|
+
"@types/nock": "^11.1.0",
|
|
85
|
+
"@types/request": "^2.47.0",
|
|
86
|
+
"@types/request-promise": "^4.1.41",
|
|
87
|
+
"@types/sinon": "^10.0.2",
|
|
88
|
+
"@types/sinon-chai": "^3.0.0",
|
|
89
|
+
"@typescript-eslint/eslint-plugin": "^2.20.0",
|
|
90
|
+
"@typescript-eslint/parser": "^2.20.0",
|
|
91
|
+
"bcrypt": "^5.0.0",
|
|
92
|
+
"chai": "^4.2.0",
|
|
93
|
+
"chai-as-promised": "^7.0.0",
|
|
94
|
+
"chalk": "^4.1.1",
|
|
95
|
+
"child-process-promise": "^2.2.1",
|
|
96
|
+
"del": "^6.0.0",
|
|
97
|
+
"eslint": "^6.8.0",
|
|
98
|
+
"firebase-token-generator": "^2.0.0",
|
|
99
|
+
"gulp": "^4.0.2",
|
|
100
|
+
"gulp-filter": "^7.0.0",
|
|
101
|
+
"gulp-header": "^2.0.9",
|
|
102
|
+
"gulp-typescript": "^5.0.1",
|
|
103
|
+
"http-message-parser": "^0.0.34",
|
|
104
|
+
"jsdom": "^15.0.0",
|
|
105
|
+
"lodash": "^4.17.15",
|
|
106
|
+
"minimist": "^1.2.0",
|
|
107
|
+
"mocha": "^8.0.0",
|
|
108
|
+
"mz": "^2.7.0",
|
|
109
|
+
"nock": "^13.0.0",
|
|
110
|
+
"npm-run-all": "^4.1.5",
|
|
111
|
+
"nyc": "^15.1.0",
|
|
112
|
+
"request": "^2.75.0",
|
|
113
|
+
"request-promise": "^4.1.1",
|
|
114
|
+
"run-sequence": "^2.2.1",
|
|
115
|
+
"sinon": "^9.0.0",
|
|
116
|
+
"sinon-chai": "^3.0.0",
|
|
117
|
+
"ts-node": "^10.2.0",
|
|
118
|
+
"typedoc": "^0.19.2",
|
|
119
|
+
"typescript": "^3.7.3",
|
|
120
|
+
"yargs": "^17.0.1"
|
|
121
|
+
}
|
|
122
|
+
}
|