@dereekb/firebase-server 4.1.0 → 5.1.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/CHANGELOG.md +39 -0
- package/LICENSE +21 -0
- package/package.json +10 -9
- package/src/lib/auth/auth.nest.d.ts +3 -2
- package/src/lib/auth/auth.nest.js +10 -8
- package/src/lib/auth/auth.nest.js.map +1 -1
- package/src/lib/auth/auth.service.d.ts +14 -6
- package/src/lib/auth/auth.service.js +5 -5
- package/src/lib/auth/auth.service.js.map +1 -1
- package/src/lib/firebase/firebase.nest.d.ts +2 -2
- package/src/lib/firestore/driver.accessor.batch.d.ts +4 -4
- package/src/lib/firestore/driver.accessor.batch.js +1 -1
- package/src/lib/firestore/driver.accessor.batch.js.map +1 -1
- package/src/lib/firestore/driver.accessor.d.ts +1 -1
- package/src/lib/firestore/driver.accessor.default.d.ts +3 -3
- package/src/lib/firestore/driver.accessor.default.js +2 -2
- package/src/lib/firestore/driver.accessor.default.js.map +1 -1
- package/src/lib/firestore/driver.accessor.js +2 -5
- package/src/lib/firestore/driver.accessor.js.map +1 -1
- package/src/lib/firestore/driver.accessor.transaction.d.ts +4 -4
- package/src/lib/firestore/driver.accessor.transaction.js +1 -1
- package/src/lib/firestore/driver.accessor.transaction.js.map +1 -1
- package/src/lib/firestore/driver.d.ts +1 -2
- package/src/lib/firestore/driver.query.d.ts +3 -3
- package/src/lib/firestore/driver.query.js.map +1 -1
- package/src/lib/firestore/firestore.nest.d.ts +1 -1
- package/src/lib/firestore/firestore.nest.js +12 -6
- package/src/lib/firestore/firestore.nest.js.map +1 -1
- package/src/lib/function/context.js +1 -1
- package/src/lib/function/context.js.map +1 -1
- package/src/lib/function/type.d.ts +8 -2
- package/src/lib/nest/app.d.ts +18 -2
- package/src/lib/nest/app.js +19 -12
- package/src/lib/nest/app.js.map +1 -1
- package/src/lib/nest/function/context.d.ts +4 -5
- package/src/lib/nest/function/index.d.ts +2 -2
- package/src/lib/nest/function/index.js +2 -2
- package/src/lib/nest/function/index.js.map +1 -1
- package/src/lib/nest/function/transform.d.ts +1 -1
- package/src/lib/nest/function/v1/call.d.ts +36 -0
- package/src/lib/nest/function/v1/call.js +28 -0
- package/src/lib/nest/function/v1/call.js.map +1 -0
- package/src/lib/nest/function/{nest.utility.d.ts → v1/call.utility.d.ts} +3 -3
- package/src/lib/nest/function/{nest.utility.js → v1/call.utility.js} +3 -3
- package/src/lib/nest/function/v1/call.utility.js.map +1 -0
- package/src/lib/nest/function/v1/event.d.ts +38 -0
- package/src/lib/nest/function/v1/event.js +41 -0
- package/src/lib/nest/function/v1/event.js.map +1 -0
- package/src/lib/nest/function/v1/index.d.ts +3 -0
- package/src/lib/nest/function/v1/index.js +7 -0
- package/src/lib/nest/function/v1/index.js.map +1 -0
- package/src/lib/nest/function/v2/blocking.d.ts +19 -0
- package/src/lib/nest/function/v2/blocking.js +23 -0
- package/src/lib/nest/function/v2/blocking.js.map +1 -0
- package/src/lib/nest/function/v2/call.d.ts +36 -0
- package/src/lib/nest/function/v2/call.js +28 -0
- package/src/lib/nest/function/v2/call.js.map +1 -0
- package/src/lib/nest/function/v2/event.d.ts +20 -0
- package/src/lib/nest/function/v2/event.js +23 -0
- package/src/lib/nest/function/v2/event.js.map +1 -0
- package/src/lib/nest/function/v2/index.d.ts +4 -0
- package/src/lib/nest/function/v2/index.js +8 -0
- package/src/lib/nest/function/v2/index.js.map +1 -0
- package/src/lib/nest/function/v2/taskqueue.d.ts +19 -0
- package/src/lib/nest/function/v2/taskqueue.js +23 -0
- package/src/lib/nest/function/v2/taskqueue.js.map +1 -0
- package/src/lib/nest/index.d.ts +2 -0
- package/src/lib/nest/index.js +2 -0
- package/src/lib/nest/index.js.map +1 -1
- package/src/lib/nest/middleware/appcheck.d.ts +4 -0
- package/src/lib/nest/middleware/appcheck.decorator.d.ts +4 -0
- package/src/lib/nest/middleware/appcheck.decorator.js +13 -0
- package/src/lib/nest/middleware/appcheck.decorator.js.map +1 -0
- package/src/lib/nest/middleware/appcheck.js +3 -0
- package/src/lib/nest/middleware/appcheck.js.map +1 -0
- package/src/lib/nest/middleware/appcheck.middleware.d.ts +24 -0
- package/src/lib/nest/middleware/appcheck.middleware.js +71 -0
- package/src/lib/nest/middleware/appcheck.middleware.js.map +1 -0
- package/src/lib/nest/middleware/appcheck.module.d.ts +8 -0
- package/src/lib/nest/middleware/appcheck.module.js +23 -0
- package/src/lib/nest/middleware/appcheck.module.js.map +1 -0
- package/src/lib/nest/middleware/index.d.ts +6 -0
- package/src/lib/nest/middleware/index.js +10 -0
- package/src/lib/nest/middleware/index.js.map +1 -0
- package/src/lib/nest/middleware/rawbody.middleware.d.ts +6 -0
- package/src/lib/nest/middleware/rawbody.middleware.js +16 -0
- package/src/lib/nest/middleware/rawbody.middleware.js.map +1 -0
- package/src/lib/nest/middleware/webhook.d.ts +10 -0
- package/src/lib/nest/middleware/webhook.js +26 -0
- package/src/lib/nest/middleware/webhook.js.map +1 -0
- package/src/lib/nest/nest.provider.d.ts +23 -0
- package/src/lib/nest/nest.provider.js +13 -0
- package/src/lib/nest/nest.provider.js.map +1 -0
- package/test/CHANGELOG.md +17 -0
- package/test/package.json +12 -11
- package/test/src/lib/firebase/firebase.admin.auth.d.ts +3 -3
- package/test/src/lib/firebase/firebase.admin.auth.js +7 -9
- package/test/src/lib/firebase/firebase.admin.auth.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.collection.d.ts +2 -2
- package/test/src/lib/firebase/firebase.admin.collection.js +0 -1
- package/test/src/lib/firebase/firebase.admin.collection.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.d.ts +7 -19
- package/test/src/lib/firebase/firebase.admin.function.d.ts +5 -4
- package/test/src/lib/firebase/firebase.admin.function.js +8 -6
- package/test/src/lib/firebase/firebase.admin.function.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.js +7 -13
- package/test/src/lib/firebase/firebase.admin.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.nest.d.ts +2 -2
- package/test/src/lib/firebase/firebase.admin.nest.function.context.d.ts +5 -5
- package/test/src/lib/firebase/firebase.admin.nest.function.context.js +2 -0
- package/test/src/lib/firebase/firebase.admin.nest.function.context.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.nest.function.d.ts +11 -12
- package/test/src/lib/firebase/firebase.admin.nest.function.js +8 -7
- package/test/src/lib/firebase/firebase.admin.nest.function.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.nest.js +2 -2
- package/test/src/lib/firebase/firebase.admin.nest.js.map +1 -1
- package/test/src/lib/firebase/firebase.admin.test.server.d.ts +1 -1
- package/test/src/lib/firebase/firebase.admin.test.server.js.map +1 -1
- package/test/src/lib/firebase/firebase.function.d.ts +23 -0
- package/test/src/lib/firebase/firebase.function.js +27 -0
- package/test/src/lib/firebase/firebase.function.js.map +1 -0
- package/test/src/lib/firebase/firebase.js.map +1 -1
- package/test/src/lib/firestore/firestore.js +1 -1
- package/test/src/lib/firestore/firestore.js.map +1 -1
- package/test-setup.js.map +1 -1
- package/src/lib/nest/function/nest.d.ts +0 -91
- package/src/lib/nest/function/nest.js +0 -74
- package/src/lib/nest/function/nest.js.map +0 -1
- package/src/lib/nest/function/nest.utility.js.map +0 -1
package/src/lib/nest/index.js
CHANGED
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./function"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./middleware"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./app"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./nest.provider"), exports);
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/nest/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,gDAAsB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/nest/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,uDAA6B;AAC7B,gDAAsB;AACtB,0DAAgC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SkipAppCheck = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
/**
|
|
7
|
+
* nestjs decorator that will instruct FirebaseAppCheckMiddleware to skip AppCheck for related requests.
|
|
8
|
+
*/
|
|
9
|
+
exports.SkipAppCheck = (0, common_1.createParamDecorator)((_, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
10
|
+
const req = context.switchToHttp().getRequest();
|
|
11
|
+
req.skipAppCheck = true;
|
|
12
|
+
}));
|
|
13
|
+
//# sourceMappingURL=appcheck.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appcheck.decorator.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/appcheck.decorator.ts"],"names":[],"mappings":";;;;AAEA,2CAAwE;AAExE;;GAEG;AACU,QAAA,YAAY,GAAG,IAAA,6BAAoB,EAAC,CAAO,CAAC,EAAE,OAAyB,EAAE,EAAE;IACtF,MAAM,GAAG,GAAY,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;IACjE,GAAuB,CAAC,YAAY,GAAG,IAAI,CAAC;AAC/C,CAAC,CAAA,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appcheck.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/appcheck.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import { Request } from 'firebase-functions/v2/https';
|
|
3
|
+
import { Response } from 'express';
|
|
4
|
+
import { Maybe } from '@dereekb/util';
|
|
5
|
+
/**
|
|
6
|
+
* Middleware that verifies the X-Firebase-AppCheck header using admin.
|
|
7
|
+
*
|
|
8
|
+
* It ignores all webhook paths by default.
|
|
9
|
+
*/
|
|
10
|
+
export declare class FirebaseAppCheckMiddleware implements NestMiddleware {
|
|
11
|
+
private readonly logger;
|
|
12
|
+
static isIgnoredRequest(req: Request): boolean;
|
|
13
|
+
static isIgnoredPath(path: string): boolean;
|
|
14
|
+
use(req: Request, res: Response, next: (error?: Error | unknown) => void): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Verifies the AppCheck parameter. If it fails, a value is returned.
|
|
18
|
+
*
|
|
19
|
+
* @param req
|
|
20
|
+
* @param res
|
|
21
|
+
* @param next
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
export declare function verifyAppCheckInRequest(req: Request): Promise<Maybe<Error>>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var FirebaseAppCheckMiddleware_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.verifyAppCheckInRequest = exports.FirebaseAppCheckMiddleware = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const admin = require("firebase-admin");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const nestjs_1 = require("@dereekb/nestjs");
|
|
9
|
+
/**
|
|
10
|
+
* Middleware that verifies the X-Firebase-AppCheck header using admin.
|
|
11
|
+
*
|
|
12
|
+
* It ignores all webhook paths by default.
|
|
13
|
+
*/
|
|
14
|
+
let FirebaseAppCheckMiddleware = FirebaseAppCheckMiddleware_1 = class FirebaseAppCheckMiddleware {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.logger = new common_1.Logger('FirebaseAppCheckMiddleware');
|
|
17
|
+
}
|
|
18
|
+
static isIgnoredRequest(req) {
|
|
19
|
+
const isIgnoredRoute = req.skipAppCheck || FirebaseAppCheckMiddleware_1.isIgnoredPath(req.baseUrl);
|
|
20
|
+
return isIgnoredRoute;
|
|
21
|
+
}
|
|
22
|
+
static isIgnoredPath(path) {
|
|
23
|
+
return path.startsWith(nestjs_1.DEFAULT_BASE_WEBHOOK_PATH);
|
|
24
|
+
}
|
|
25
|
+
use(req, res, next) {
|
|
26
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const isIgnoredRoute = FirebaseAppCheckMiddleware_1.isIgnoredRequest(req);
|
|
28
|
+
let error;
|
|
29
|
+
if (!isIgnoredRoute) {
|
|
30
|
+
error = yield verifyAppCheckInRequest(req);
|
|
31
|
+
if (error) {
|
|
32
|
+
this.logger.error('app check token failed verify');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
next(error);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
FirebaseAppCheckMiddleware = FirebaseAppCheckMiddleware_1 = tslib_1.__decorate([
|
|
40
|
+
(0, common_1.Injectable)()
|
|
41
|
+
], FirebaseAppCheckMiddleware);
|
|
42
|
+
exports.FirebaseAppCheckMiddleware = FirebaseAppCheckMiddleware;
|
|
43
|
+
/**
|
|
44
|
+
* Verifies the AppCheck parameter. If it fails, a value is returned.
|
|
45
|
+
*
|
|
46
|
+
* @param req
|
|
47
|
+
* @param res
|
|
48
|
+
* @param next
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
function verifyAppCheckInRequest(req) {
|
|
52
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const appCheckToken = req.header('X-Firebase-AppCheck');
|
|
54
|
+
let error;
|
|
55
|
+
if (!appCheckToken) {
|
|
56
|
+
error = new common_1.ForbiddenException();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// verify the token
|
|
60
|
+
try {
|
|
61
|
+
yield admin.appCheck().verifyToken(appCheckToken);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
error = new common_1.ForbiddenException();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return error;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
exports.verifyAppCheckInRequest = verifyAppCheckInRequest;
|
|
71
|
+
//# sourceMappingURL=appcheck.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appcheck.middleware.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/appcheck.middleware.ts"],"names":[],"mappings":";;;;;AAAA,wCAAwC;AACxC,2CAAwF;AAKxF,4CAA4D;AAE5D;;;;GAIG;AAEH,IAAa,0BAA0B,kCAAvC,MAAa,0BAA0B;IAAvC;QAEmB,WAAM,GAAG,IAAI,eAAM,CAAC,4BAA4B,CAAC,CAAC;IA2BrE,CAAC;IAzBC,MAAM,CAAC,gBAAgB,CAAC,GAAY;QAClC,MAAM,cAAc,GAAI,GAAuB,CAAC,YAAY,IAAI,4BAA0B,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,kCAAyB,CAAC,CAAC;IACpD,CAAC;IAEK,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAuC;;YAC5E,MAAM,cAAc,GAAG,4BAA0B,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAExE,IAAI,KAAmB,CAAC;YAExB,IAAI,CAAC,cAAc,EAAE;gBACnB,KAAK,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBAE3C,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;aACF;YAED,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;KAAA;CAEF,CAAA;AA7BY,0BAA0B;IADtC,IAAA,mBAAU,GAAE;GACA,0BAA0B,CA6BtC;AA7BY,gEAA0B;AA+BvC;;;;;;;GAOG;AACH,SAAsB,uBAAuB,CAAC,GAAY;;QACxD,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxD,IAAI,KAAmB,CAAC;QAExB,IAAI,CAAC,aAAa,EAAE;YAClB,KAAK,GAAG,IAAI,2BAAkB,EAAE,CAAC;SAClC;aAAM;YAEL,mBAAmB;YACnB,IAAI;gBACF,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,KAAK,GAAG,IAAI,2BAAkB,EAAE,CAAC;aAClC;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAAA;AAjBD,0DAiBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MiddlewareConsumer } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Convenience class that mirrors the ConfigureAppCheckMiddlewareModule class in @dereekb/nestjs, but for Firebase apps.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConfigureFirebaseAppCheckMiddlewareModule {
|
|
6
|
+
private readonly logger;
|
|
7
|
+
configure(consumer: MiddlewareConsumer): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigureFirebaseAppCheckMiddlewareModule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const appcheck_middleware_1 = require("./appcheck.middleware");
|
|
7
|
+
/**
|
|
8
|
+
* Convenience class that mirrors the ConfigureAppCheckMiddlewareModule class in @dereekb/nestjs, but for Firebase apps.
|
|
9
|
+
*/
|
|
10
|
+
let ConfigureFirebaseAppCheckMiddlewareModule = class ConfigureFirebaseAppCheckMiddlewareModule {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.logger = new common_1.Logger('ConfigureFirebaseAppCheckMiddlewareModule');
|
|
13
|
+
}
|
|
14
|
+
configure(consumer) {
|
|
15
|
+
consumer.apply(appcheck_middleware_1.FirebaseAppCheckMiddleware).forRoutes('*');
|
|
16
|
+
this.logger.debug('Configured firebase webhook routes with proper middleware.');
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
ConfigureFirebaseAppCheckMiddlewareModule = tslib_1.__decorate([
|
|
20
|
+
(0, common_1.Module)({})
|
|
21
|
+
], ConfigureFirebaseAppCheckMiddlewareModule);
|
|
22
|
+
exports.ConfigureFirebaseAppCheckMiddlewareModule = ConfigureFirebaseAppCheckMiddlewareModule;
|
|
23
|
+
//# sourceMappingURL=appcheck.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appcheck.module.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/appcheck.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAoE;AACpE,+DAAmE;AAEnE;;GAEG;AAEH,IAAa,yCAAyC,GAAtD,MAAa,yCAAyC;IAAtD;QAEmB,WAAM,GAAG,IAAI,eAAM,CAAC,2CAA2C,CAAC,CAAC;IAOpF,CAAC;IALQ,SAAS,CAAC,QAA4B;QAC3C,QAAQ,CAAC,KAAK,CAAC,gDAA0B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;CAEF,CAAA;AATY,yCAAyC;IADrD,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,yCAAyC,CASrD;AATY,8FAAyC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./appcheck"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./appcheck.middleware"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./appcheck.module"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./appcheck.decorator"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./rawbody.middleware"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./webhook"), exports);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,gEAAsC;AACtC,4DAAkC;AAClC,+DAAqC;AACrC,+DAAqC;AACrC,oDAA0B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NestMiddleware } from '@nestjs/common';
|
|
2
|
+
import { Request } from 'firebase-functions/v2/https';
|
|
3
|
+
import { Response } from 'express';
|
|
4
|
+
export declare class FirebaseRawBodyMiddleware implements NestMiddleware {
|
|
5
|
+
use(req: Request, res: Response, next: () => void): void;
|
|
6
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FirebaseRawBodyMiddleware = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
let FirebaseRawBodyMiddleware = class FirebaseRawBodyMiddleware {
|
|
7
|
+
use(req, res, next) {
|
|
8
|
+
req.body = req.rawBody;
|
|
9
|
+
next();
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
FirebaseRawBodyMiddleware = tslib_1.__decorate([
|
|
13
|
+
(0, common_1.Injectable)()
|
|
14
|
+
], FirebaseRawBodyMiddleware);
|
|
15
|
+
exports.FirebaseRawBodyMiddleware = FirebaseRawBodyMiddleware;
|
|
16
|
+
//# sourceMappingURL=rawbody.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawbody.middleware.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/rawbody.middleware.ts"],"names":[],"mappings":";;;;AAAA,2CAA4D;AAK5D,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IACpC,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAgB;QAC/C,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAA;AALY,yBAAyB;IADrC,IAAA,mBAAU,GAAE;GACA,yBAAyB,CAKrC;AALY,8DAAyB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MiddlewareConsumer } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Convenience class that mirrors the ConfigureWebhookMiddlewareModule class in @dereekb/nestjs, but for Firebase apps.
|
|
4
|
+
*
|
|
5
|
+
* Requests to /webhook/* have their request.body value set to the rawBody.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ConfigureFirebaseWebhookMiddlewareModule {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
configure(consumer: MiddlewareConsumer): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigureFirebaseWebhookMiddlewareModule = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const nestjs_1 = require("@dereekb/nestjs");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const rawbody_middleware_1 = require("./rawbody.middleware");
|
|
8
|
+
/**
|
|
9
|
+
* Convenience class that mirrors the ConfigureWebhookMiddlewareModule class in @dereekb/nestjs, but for Firebase apps.
|
|
10
|
+
*
|
|
11
|
+
* Requests to /webhook/* have their request.body value set to the rawBody.
|
|
12
|
+
*/
|
|
13
|
+
let ConfigureFirebaseWebhookMiddlewareModule = class ConfigureFirebaseWebhookMiddlewareModule {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.logger = new common_1.Logger('ConfigureFirebaseWebhookMiddlewareModule');
|
|
16
|
+
}
|
|
17
|
+
configure(consumer) {
|
|
18
|
+
consumer.apply(rawbody_middleware_1.FirebaseRawBodyMiddleware).forRoutes(nestjs_1.DEFAULT_WEBHOOK_MIDDLEWARE_ROUTE_INFO);
|
|
19
|
+
this.logger.debug('Configured firebase webhook routes with proper middleware.');
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
ConfigureFirebaseWebhookMiddlewareModule = tslib_1.__decorate([
|
|
23
|
+
(0, common_1.Module)({})
|
|
24
|
+
], ConfigureFirebaseWebhookMiddlewareModule);
|
|
25
|
+
exports.ConfigureFirebaseWebhookMiddlewareModule = ConfigureFirebaseWebhookMiddlewareModule;
|
|
26
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/src/lib/nest/middleware/webhook.ts"],"names":[],"mappings":";;;;AAAA,4CAAwE;AACxE,2CAAmF;AACnF,6DAAiE;AAEjE;;;;GAIG;AAEH,IAAa,wCAAwC,GAArD,MAAa,wCAAwC;IAArD;QAEmB,WAAM,GAAG,IAAI,eAAM,CAAC,0CAA0C,CAAC,CAAC;IAOnF,CAAC;IALQ,SAAS,CAAC,QAA4B;QAC3C,QAAQ,CAAC,KAAK,CAAC,8CAAyB,CAAC,CAAC,SAAS,CAAC,8CAAqC,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;CAEF,CAAA;AATY,wCAAwC;IADpD,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,wCAAwC,CASpD;AATY,4FAAwC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Getter } from '@dereekb/util';
|
|
2
|
+
import { INestApplicationContext } from '@nestjs/common';
|
|
3
|
+
/**
|
|
4
|
+
* Getter for an INestApplicationContext promise. Nest should be initialized when the promise resolves.
|
|
5
|
+
*/
|
|
6
|
+
export declare type NestApplicationPromiseGetter = Getter<Promise<INestApplicationContext>>;
|
|
7
|
+
/**
|
|
8
|
+
* Generates a function from the passed NestApplicationPromiseGetter/context.
|
|
9
|
+
*
|
|
10
|
+
* This pattern is available to allow generating similar content for differenting contexts, such as production and testing.
|
|
11
|
+
*/
|
|
12
|
+
export declare type NestApplicationFunctionFactory<F> = (nestAppPromiseGetter: NestApplicationPromiseGetter) => F;
|
|
13
|
+
/**
|
|
14
|
+
* Getter for an INestApplicationContext promise. Nest should be initialized when the promise resolves.
|
|
15
|
+
*/
|
|
16
|
+
export declare type MakeNestContext<C> = (nest: INestApplicationContext) => C;
|
|
17
|
+
/**
|
|
18
|
+
* Abstract class that wraps an INestApplicationContext value.
|
|
19
|
+
*/
|
|
20
|
+
export declare abstract class AbstractNestContext {
|
|
21
|
+
readonly nest: INestApplicationContext;
|
|
22
|
+
constructor(nest: INestApplicationContext);
|
|
23
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractNestContext = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract class that wraps an INestApplicationContext value.
|
|
6
|
+
*/
|
|
7
|
+
class AbstractNestContext {
|
|
8
|
+
constructor(nest) {
|
|
9
|
+
this.nest = nest;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AbstractNestContext = AbstractNestContext;
|
|
13
|
+
//# sourceMappingURL=nest.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest.provider.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/nest/nest.provider.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACH,MAAsB,mBAAmB;IACvC,YAAqB,IAA6B;QAA7B,SAAI,GAAJ,IAAI,CAAyB;IAAG,CAAC;CACvD;AAFD,kDAEC"}
|
package/test/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [5.0.1](https://github.com/dereekb/dbx-components/compare/v5.0.0-dev...v5.0.1) (2022-05-26)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# [5.0.0](https://github.com/dereekb/dbx-components/compare/v4.1.0-dev...v5.0.0) (2022-05-25)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* added firebase functions v2 nest context components ([e5ca892](https://github.com/dereekb/dbx-components/commit/e5ca89250c7b7cf99f75d8edb0fc16a4618cbc21))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
5
22
|
# [4.1.0](https://github.com/dereekb/dbx-components/compare/v4.0.1-dev...v4.1.0) (2022-05-17)
|
|
6
23
|
|
|
7
24
|
|
package/test/package.json
CHANGED
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"typings": "./src/index.d.ts",
|
|
6
6
|
"dependencies": {},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@dereekb/firebase": "
|
|
8
|
+
"@dereekb/firebase": "5.1.0",
|
|
9
9
|
"rxjs": "^7.0.0",
|
|
10
10
|
"rxfire": "^6.0.3",
|
|
11
11
|
"firebase": "^9.8.0",
|
|
12
|
-
"@dereekb/util": "
|
|
12
|
+
"@dereekb/util": "5.1.0",
|
|
13
13
|
"make-error": "^1.3.0",
|
|
14
14
|
"extra-set": "^2.2.11",
|
|
15
|
-
"
|
|
16
|
-
"@dereekb/rxjs": "4.1.0",
|
|
15
|
+
"@dereekb/rxjs": "5.1.0",
|
|
17
16
|
"ms": "^3.0.0-canary.1",
|
|
18
|
-
"@dereekb/date": "
|
|
17
|
+
"@dereekb/date": "5.1.0",
|
|
19
18
|
"class-transformer": "^0.5.1",
|
|
20
19
|
"date-fns": "^2.28.0",
|
|
21
20
|
"class-validator": "^0.13.2",
|
|
22
21
|
"date-fns-tz": "^1.3.0",
|
|
23
22
|
"rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
|
|
24
|
-
"@dereekb/model": "
|
|
25
|
-
"@dereekb/util/test": "
|
|
23
|
+
"@dereekb/model": "5.1.0",
|
|
24
|
+
"@dereekb/util/test": "5.1.0",
|
|
26
25
|
"firebase-admin": "^10.2.0",
|
|
27
26
|
"jsonwebtoken": "^8.0.0",
|
|
28
|
-
"firebase-functions": "^3.21.
|
|
27
|
+
"firebase-functions": "^3.21.2",
|
|
29
28
|
"@nestjs/common": "^8.4.0",
|
|
30
29
|
"@google-cloud/firestore": "^5.0.2",
|
|
31
|
-
"@dereekb/firebase/test": "
|
|
32
|
-
"@dereekb/firebase-server": "
|
|
30
|
+
"@dereekb/firebase/test": "5.1.0",
|
|
31
|
+
"@dereekb/firebase-server": "5.1.0",
|
|
32
|
+
"@dereekb/nestjs": "5.1.0",
|
|
33
|
+
"@nestjs/config": "^2.0.1",
|
|
33
34
|
"@nestjs/core": "^8.4.0",
|
|
34
35
|
"@nestjs/platform-express": "^8.4.0",
|
|
35
36
|
"tslib": "^2.0.0"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FirebaseAuthUserId } from '@dereekb/firebase';
|
|
2
|
-
import { Factory, GetterOrValue, PromiseOrValue } from
|
|
3
|
-
import { AbstractChildJestTestContextFixture, JestTestContextFixture } from
|
|
4
|
-
import { FirebaseAdminTestContext } from
|
|
2
|
+
import { Factory, GetterOrValue, PromiseOrValue } from '@dereekb/util';
|
|
3
|
+
import { AbstractChildJestTestContextFixture, JestTestContextFixture } from '@dereekb/util/test';
|
|
4
|
+
import { FirebaseAdminTestContext } from './firebase.admin';
|
|
5
5
|
import { CreateRequest } from 'firebase-admin/lib/auth/auth-config';
|
|
6
6
|
import { UserRecord } from 'firebase-admin/lib/auth/user-record';
|
|
7
7
|
import { DecodedIdToken } from 'firebase-admin/lib/auth/token-verifier';
|
|
@@ -45,10 +45,10 @@ class AuthorizedUserTestContextInstance {
|
|
|
45
45
|
return this.loadUserRecord().then((record) => createTestFunctionContextOptions(this.testContext.auth, record));
|
|
46
46
|
}
|
|
47
47
|
callCloudFunction(fn, params) {
|
|
48
|
-
return this.makeContextOptions().then(options => fn(params, options));
|
|
48
|
+
return this.makeContextOptions().then((options) => fn(params, options));
|
|
49
49
|
}
|
|
50
50
|
callEventCloudFunction(fn, params, contextOptions) {
|
|
51
|
-
return this.makeContextOptions().then(options => fn(params,
|
|
51
|
+
return this.makeContextOptions().then((options) => fn(params, contextOptions ? Object.assign(Object.assign({}, contextOptions), options) : options));
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.AuthorizedUserTestContextInstance = AuthorizedUserTestContextInstance;
|
|
@@ -59,13 +59,12 @@ function authorizedUserContext(config, buildTests) {
|
|
|
59
59
|
authorizedUserContextFactory(config)({ f: config.f }, buildTests);
|
|
60
60
|
}
|
|
61
61
|
exports.authorizedUserContext = authorizedUserContext;
|
|
62
|
-
;
|
|
63
62
|
/**
|
|
64
63
|
* Creates a new Jest Context that has a random user for authorization for use in firebase server tests.
|
|
65
64
|
*/
|
|
66
65
|
function authorizedUserContextFactory(config) {
|
|
67
66
|
const { uid: uidGetter, makeInstance = (uid, testInstance) => new AuthorizedUserTestContextInstance(uid, testInstance), makeFixture = (f) => new AuthorizedUserTestContextFixture(f), makeUserDetails = () => ({}), initUser } = config;
|
|
68
|
-
const makeUid =
|
|
67
|
+
const makeUid = uidGetter ? (0, util_1.asGetter)(uidGetter) : exports.testUidFactory;
|
|
69
68
|
return (params, buildTests) => {
|
|
70
69
|
const { f, user: inputUser } = params;
|
|
71
70
|
return (0, test_1.useJestContextFixture)({
|
|
@@ -94,13 +93,12 @@ function authorizedUserContextFactory(config) {
|
|
|
94
93
|
};
|
|
95
94
|
}
|
|
96
95
|
exports.authorizedUserContextFactory = authorizedUserContextFactory;
|
|
97
|
-
;
|
|
98
96
|
/**
|
|
99
97
|
* Incrementing number factory for generating test UID values.
|
|
100
98
|
*
|
|
101
99
|
* Has the format 'test-uid-<number>'
|
|
102
100
|
*/
|
|
103
|
-
exports.testUidFactory = (0, util_1.mapGetter)((0, util_1.incrementingNumberFactory)(), (i) => `test-uid-${i}`);
|
|
101
|
+
exports.testUidFactory = (0, util_1.mapGetter)((0, util_1.incrementingNumberFactory)(), (i) => `test-uid-${i}+${new Date().toISOString()}`);
|
|
104
102
|
/**
|
|
105
103
|
* Creates a CallableContextOptions with auth attached corresponding to the input UserRecord.
|
|
106
104
|
*
|
|
@@ -153,9 +151,9 @@ function testFirestoreClaimsFromUserRecord(userRecord) {
|
|
|
153
151
|
var _a;
|
|
154
152
|
// Copy claims to be similar to DecodedIdToken pieces.
|
|
155
153
|
const baseClaims = {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
154
|
+
picture: userRecord.photoURL,
|
|
155
|
+
email: userRecord.email,
|
|
156
|
+
email_verified: (_a = userRecord.emailVerified) !== null && _a !== void 0 ? _a : false,
|
|
159
157
|
firebase: {
|
|
160
158
|
sign_in_provider: '@dereekb/firebase-server/test',
|
|
161
159
|
identities: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.admin.auth.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.auth.ts"],"names":[],"mappings":";;;;AACA,wCAAoI;AACpI,6CAAwH;AAMxH,+CAAmD;AAgBnD,MAAa,
|
|
1
|
+
{"version":3,"file":"firebase.admin.auth.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FirestoreCollection, FirestoreDocument, DocumentReference } from '@dereekb/firebase';
|
|
2
2
|
import { ModelKey, PromiseOrValue } from '@dereekb/util';
|
|
3
|
-
import { JestTestContextFixture, AbstractChildJestTestContextFixture } from
|
|
4
|
-
import { FirebaseAdminTestContext } from
|
|
3
|
+
import { JestTestContextFixture, AbstractChildJestTestContextFixture } from '@dereekb/util/test';
|
|
4
|
+
import { FirebaseAdminTestContext } from './firebase.admin';
|
|
5
5
|
/**
|
|
6
6
|
* Testing context for a single model.
|
|
7
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.admin.collection.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.collection.ts"],"names":[],"mappings":";;;;AAEA,6CAAwH;AAYxH,MAAa,
|
|
1
|
+
{"version":3,"file":"firebase.admin.collection.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/test/src/lib/firebase/firebase.admin.collection.ts"],"names":[],"mappings":";;;;AAEA,6CAAwH;AAYxH,MAAa,uBAAyS,SAAQ,0CAA0C;IACtW,qCAAqC;IACrC,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF;AAbD,0DAaC;AAED,MAAa,wBAAwB;IACnC,YAAqB,UAAqC,EAAW,GAAyB,EAAW,WAAe;QAAnG,eAAU,GAAV,UAAU,CAA2B;QAAW,QAAG,GAAH,GAAG,CAAsB;QAAW,gBAAW,GAAX,WAAW,CAAI;IAAG,CAAC;IAE5H,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;CACF;AAdD,4DAcC;AA0CD;;GAEG;AACH,SAAgB,uBAAuB,CAQrC,MAA4D;IAC5D,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,CAAM,EAAE,WAAW,GAAG,CAAC,CAAK,EAAE,EAAE,CAAC,IAAI,uBAAuB,CAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEhU,OAAO,CAAC,MAAyC,EAAE,UAA0B,EAAE,EAAE;QAC/E,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;QACrB,OAAO,IAAA,4BAAqB,EAAO;YACjC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAM;YAC5B,UAAU;YACV,YAAY,EAAE,GAAS,EAAE;gBACvB,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAClC,MAAM,UAAU,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;gBAC9D,MAAM,QAAQ,GAAM,MAAM,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;gBAExE,IAAI,YAAY,EAAE;oBAChB,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACtC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAA;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AA9BD,0DA8BC"}
|
|
@@ -2,24 +2,12 @@ import * as admin from 'firebase-admin';
|
|
|
2
2
|
import { Firestore } from '@google-cloud/firestore';
|
|
3
3
|
import { Auth } from 'firebase-admin/lib/auth/auth';
|
|
4
4
|
import { JestTestFirestoreContextFactory, TestFirestoreContext, TestFirestoreContextFixture, TestFirestoreInstance } from '@dereekb/firebase/test';
|
|
5
|
-
import { AbstractJestTestContextFixture, JestBuildTestsWithContextFunction, JestTestContextFactory, JestTestContextFixture } from
|
|
5
|
+
import { AbstractJestTestContextFixture, JestBuildTestsWithContextFunction, JestTestContextFactory, JestTestContextFixture } from '@dereekb/util/test';
|
|
6
6
|
import { GoogleCloudTestFirestoreInstance } from '../firestore/firestore';
|
|
7
|
-
import {
|
|
8
|
-
import { wrap, WrappedFunction, WrappedScheduledFunction } from 'firebase-functions-test/lib/main';
|
|
9
|
-
import { Getter } from '@dereekb/util';
|
|
7
|
+
import { FirebaseAdminCloudFunctionWrapper, FirebaseAdminCloudFunctionWrapperSource } from './firebase.function';
|
|
10
8
|
export interface FirebaseAdminTestConfig {
|
|
11
9
|
}
|
|
12
|
-
export
|
|
13
|
-
export declare type WrapCloudFunctionInput<T> = CloudFunctionV1<T>;
|
|
14
|
-
export declare type WrappedCloudFunction<T> = WrappedScheduledFunction | WrappedFunction<T>;
|
|
15
|
-
export interface FirebaseAdminCloudFunctionWrapper {
|
|
16
|
-
/**
|
|
17
|
-
* Wrap function if available. If not in the right context/supported then this will throw an exception.
|
|
18
|
-
*/
|
|
19
|
-
get wrapCloudFunction(): WrapCloudFunction;
|
|
20
|
-
}
|
|
21
|
-
export declare function wrapCloudFunctionForTests<I, T extends WrapCloudFunctionInput<I> = WrapCloudFunctionInput<I>>(wrapper: FirebaseAdminCloudFunctionWrapper, getter: Getter<T>): Getter<WrappedCloudFunction<I>>;
|
|
22
|
-
export interface FirebaseAdminTestContext extends FirebaseAdminCloudFunctionWrapper {
|
|
10
|
+
export interface FirebaseAdminTestContext extends FirebaseAdminCloudFunctionWrapperSource {
|
|
23
11
|
readonly app: admin.app.App;
|
|
24
12
|
readonly auth: Auth;
|
|
25
13
|
readonly firestore: Firestore;
|
|
@@ -32,17 +20,17 @@ export declare class FirebaseAdminTestContextFixture extends AbstractJestTestCon
|
|
|
32
20
|
get firestore(): Firestore;
|
|
33
21
|
get firestoreInstance(): TestFirestoreInstance;
|
|
34
22
|
get firestoreContext(): TestFirestoreContext;
|
|
35
|
-
get
|
|
23
|
+
get fnWrapper(): FirebaseAdminCloudFunctionWrapper;
|
|
36
24
|
}
|
|
37
25
|
export declare class FirebaseAdminTestContextInstance implements FirebaseAdminTestContext {
|
|
38
26
|
readonly app: admin.app.App;
|
|
39
|
-
readonly getTestFirestoreInstance: import("@dereekb/util").CachedFactoryWithInput<GoogleCloudTestFirestoreInstance,
|
|
27
|
+
readonly getTestFirestoreInstance: import("@dereekb/util").CachedFactoryWithInput<GoogleCloudTestFirestoreInstance, unknown>;
|
|
40
28
|
constructor(app: admin.app.App);
|
|
41
29
|
get auth(): Auth;
|
|
42
30
|
get firestore(): Firestore;
|
|
43
31
|
get firestoreInstance(): TestFirestoreInstance;
|
|
44
32
|
get firestoreContext(): TestFirestoreContext;
|
|
45
|
-
get
|
|
33
|
+
get fnWrapper(): FirebaseAdminCloudFunctionWrapper;
|
|
46
34
|
}
|
|
47
35
|
export declare abstract class AbstractFirebaseAdminTestContextInstanceChild<F extends FirebaseAdminTestContextInstance = FirebaseAdminTestContextInstance> implements FirebaseAdminTestContext {
|
|
48
36
|
readonly parent: F;
|
|
@@ -52,7 +40,7 @@ export declare abstract class AbstractFirebaseAdminTestContextInstanceChild<F ex
|
|
|
52
40
|
get firestore(): Firestore;
|
|
53
41
|
get firestoreInstance(): TestFirestoreInstance;
|
|
54
42
|
get firestoreContext(): TestFirestoreContext;
|
|
55
|
-
get
|
|
43
|
+
get fnWrapper(): FirebaseAdminCloudFunctionWrapper;
|
|
56
44
|
}
|
|
57
45
|
/**
|
|
58
46
|
* A JestTestContextBuilderFunction for building firebase test context factories using firebase-admin.
|
|
@@ -3,8 +3,8 @@ import { Firestore } from '@google-cloud/firestore';
|
|
|
3
3
|
import { Auth } from 'firebase-admin/lib/auth/auth';
|
|
4
4
|
import { FeaturesList } from 'firebase-functions-test/lib/features';
|
|
5
5
|
import { TestFirestoreContext, TestFirestoreInstance } from '@dereekb/firebase/test';
|
|
6
|
-
import { AbstractJestTestContextFixture, JestTestContextFactory, JestTestContextFixture } from
|
|
7
|
-
import { FirebaseAdminTestContext, FirebaseAdminTestContextInstance
|
|
6
|
+
import { AbstractJestTestContextFixture, JestTestContextFactory, JestTestContextFixture } from '@dereekb/util/test';
|
|
7
|
+
import { FirebaseAdminTestContext, FirebaseAdminTestContextInstance } from './firebase.admin';
|
|
8
8
|
export declare function setupFirebaseAdminFunctionTestSingleton(reroll?: boolean): FeaturesList;
|
|
9
9
|
export declare function rerollFirebaseAdminFunctionTestSingleton(): FeaturesList;
|
|
10
10
|
export interface FirebaseAdminFunctionTestConfig {
|
|
@@ -27,12 +27,13 @@ export declare class FirebaseAdminFunctionTestContextFixture extends AbstractJes
|
|
|
27
27
|
get firestore(): Firestore;
|
|
28
28
|
get firestoreInstance(): TestFirestoreInstance;
|
|
29
29
|
get firestoreContext(): TestFirestoreContext;
|
|
30
|
-
get
|
|
30
|
+
get fnWrapper(): import("./firebase.function").FirebaseAdminCloudFunctionWrapper;
|
|
31
31
|
}
|
|
32
32
|
export declare class FirebaseAdminFunctionTestContextInstance extends FirebaseAdminTestContextInstance implements FirebaseAdminFunctionTestContext {
|
|
33
33
|
readonly instance: FeaturesList;
|
|
34
|
+
private _fnWrapper;
|
|
34
35
|
constructor(instance: FeaturesList, app: admin.app.App);
|
|
35
|
-
get
|
|
36
|
+
get fnWrapper(): import("./firebase.function").FirebaseAdminCloudFunctionWrapper;
|
|
36
37
|
}
|
|
37
38
|
export declare let DEFAULT_FIREBASE_ADMIN_FUNCTION_TEST_USE_FUNCTION_SINGLETON_CONTEXT: boolean;
|
|
38
39
|
export declare function setDefaultFirebaseAdminFunctionTestUseFunctionSingleton(use: boolean): void;
|