@dereekb/firebase-server 3.0.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.
Files changed (138) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +7 -0
  3. package/package.json +34 -0
  4. package/src/index.d.ts +2 -0
  5. package/src/index.js +6 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/auth/auth.nest.d.ts +28 -0
  8. package/src/lib/auth/auth.nest.js +56 -0
  9. package/src/lib/auth/auth.nest.js.map +1 -0
  10. package/src/lib/auth/auth.service.d.ts +161 -0
  11. package/src/lib/auth/auth.service.js +125 -0
  12. package/src/lib/auth/auth.service.js.map +1 -0
  13. package/src/lib/auth/auth.user.d.ts +0 -0
  14. package/src/lib/auth/auth.user.js +2 -0
  15. package/src/lib/auth/auth.user.js.map +1 -0
  16. package/src/lib/auth/index.d.ts +2 -0
  17. package/src/lib/auth/index.js +7 -0
  18. package/src/lib/auth/index.js.map +1 -0
  19. package/src/lib/firebase/firebase.nest.d.ts +7 -0
  20. package/src/lib/firebase/firebase.nest.js +17 -0
  21. package/src/lib/firebase/firebase.nest.js.map +1 -0
  22. package/src/lib/firebase/index.d.ts +1 -0
  23. package/src/lib/firebase/index.js +5 -0
  24. package/src/lib/firebase/index.js.map +1 -0
  25. package/src/lib/firestore/driver.accessor.batch.d.ts +31 -0
  26. package/src/lib/firestore/driver.accessor.batch.js +65 -0
  27. package/src/lib/firestore/driver.accessor.batch.js.map +1 -0
  28. package/src/lib/firestore/driver.accessor.d.ts +11 -0
  29. package/src/lib/firestore/driver.accessor.default.d.ts +15 -0
  30. package/src/lib/firestore/driver.accessor.default.js +45 -0
  31. package/src/lib/firestore/driver.accessor.default.js.map +1 -0
  32. package/src/lib/firestore/driver.accessor.js +53 -0
  33. package/src/lib/firestore/driver.accessor.js.map +1 -0
  34. package/src/lib/firestore/driver.accessor.transaction.d.ts +31 -0
  35. package/src/lib/firestore/driver.accessor.transaction.js +64 -0
  36. package/src/lib/firestore/driver.accessor.transaction.js.map +1 -0
  37. package/src/lib/firestore/driver.d.ts +4 -0
  38. package/src/lib/firestore/driver.js +15 -0
  39. package/src/lib/firestore/driver.js.map +1 -0
  40. package/src/lib/firestore/driver.query.d.ts +6 -0
  41. package/src/lib/firestore/driver.query.js +40 -0
  42. package/src/lib/firestore/driver.query.js.map +1 -0
  43. package/src/lib/firestore/firestore.d.ts +5 -0
  44. package/src/lib/firestore/firestore.js +10 -0
  45. package/src/lib/firestore/firestore.js.map +1 -0
  46. package/src/lib/firestore/firestore.nest.d.ts +44 -0
  47. package/src/lib/firestore/firestore.nest.js +81 -0
  48. package/src/lib/firestore/firestore.nest.js.map +1 -0
  49. package/src/lib/firestore/index.d.ts +5 -0
  50. package/src/lib/firestore/index.js +9 -0
  51. package/src/lib/firestore/index.js.map +1 -0
  52. package/src/lib/function/assert.d.ts +2 -0
  53. package/src/lib/function/assert.js +12 -0
  54. package/src/lib/function/assert.js.map +1 -0
  55. package/src/lib/function/context.d.ts +4 -0
  56. package/src/lib/function/context.js +16 -0
  57. package/src/lib/function/context.js.map +1 -0
  58. package/src/lib/function/error.d.ts +4 -0
  59. package/src/lib/function/error.js +17 -0
  60. package/src/lib/function/error.js.map +1 -0
  61. package/src/lib/function/index.d.ts +4 -0
  62. package/src/lib/function/index.js +8 -0
  63. package/src/lib/function/index.js.map +1 -0
  64. package/src/lib/function/type.d.ts +5 -0
  65. package/src/lib/function/type.js +3 -0
  66. package/src/lib/function/type.js.map +1 -0
  67. package/src/lib/index.d.ts +5 -0
  68. package/src/lib/index.js +9 -0
  69. package/src/lib/index.js.map +1 -0
  70. package/src/lib/nest/app.d.ts +36 -0
  71. package/src/lib/nest/app.js +71 -0
  72. package/src/lib/nest/app.js.map +1 -0
  73. package/src/lib/nest/function/context.d.ts +12 -0
  74. package/src/lib/nest/function/context.js +12 -0
  75. package/src/lib/nest/function/context.js.map +1 -0
  76. package/src/lib/nest/function/index.d.ts +4 -0
  77. package/src/lib/nest/function/index.js +8 -0
  78. package/src/lib/nest/function/index.js.map +1 -0
  79. package/src/lib/nest/function/nest.d.ts +91 -0
  80. package/src/lib/nest/function/nest.js +74 -0
  81. package/src/lib/nest/function/nest.js.map +1 -0
  82. package/src/lib/nest/function/nest.utility.d.ts +10 -0
  83. package/src/lib/nest/function/nest.utility.js +23 -0
  84. package/src/lib/nest/function/nest.utility.js.map +1 -0
  85. package/src/lib/nest/function/transform.d.ts +10 -0
  86. package/src/lib/nest/function/transform.js +27 -0
  87. package/src/lib/nest/function/transform.js.map +1 -0
  88. package/src/lib/nest/index.d.ts +2 -0
  89. package/src/lib/nest/index.js +6 -0
  90. package/src/lib/nest/index.js.map +1 -0
  91. package/src/test/firebase/firebase.admin.auth.d.ts +132 -0
  92. package/src/test/firebase/firebase.admin.auth.js +168 -0
  93. package/src/test/firebase/firebase.admin.auth.js.map +1 -0
  94. package/src/test/firebase/firebase.admin.collection.d.ts +57 -0
  95. package/src/test/firebase/firebase.admin.collection.js +61 -0
  96. package/src/test/firebase/firebase.admin.collection.js.map +1 -0
  97. package/src/test/firebase/firebase.admin.d.ts +73 -0
  98. package/src/test/firebase/firebase.admin.function.d.ts +46 -0
  99. package/src/test/firebase/firebase.admin.function.js +116 -0
  100. package/src/test/firebase/firebase.admin.function.js.map +1 -0
  101. package/src/test/firebase/firebase.admin.js +142 -0
  102. package/src/test/firebase/firebase.admin.js.map +1 -0
  103. package/src/test/firebase/firebase.admin.nest.d.ts +62 -0
  104. package/src/test/firebase/firebase.admin.nest.function.context.d.ts +22 -0
  105. package/src/test/firebase/firebase.admin.nest.function.context.js +35 -0
  106. package/src/test/firebase/firebase.admin.nest.function.context.js.map +1 -0
  107. package/src/test/firebase/firebase.admin.nest.function.d.ts +25 -0
  108. package/src/test/firebase/firebase.admin.nest.function.js +50 -0
  109. package/src/test/firebase/firebase.admin.nest.function.js.map +1 -0
  110. package/src/test/firebase/firebase.admin.nest.js +86 -0
  111. package/src/test/firebase/firebase.admin.nest.js.map +1 -0
  112. package/src/test/firebase/firebase.admin.test.server.d.ts +3 -0
  113. package/src/test/firebase/firebase.admin.test.server.js +39 -0
  114. package/src/test/firebase/firebase.admin.test.server.js.map +1 -0
  115. package/src/test/firebase/firebase.d.ts +30 -0
  116. package/src/test/firebase/firebase.js +76 -0
  117. package/src/test/firebase/firebase.js.map +1 -0
  118. package/src/test/firebase/index.d.ts +8 -0
  119. package/src/test/firebase/index.js +12 -0
  120. package/src/test/firebase/index.js.map +1 -0
  121. package/src/test/firestore/firestore.admin.d.ts +9 -0
  122. package/src/test/firestore/firestore.admin.js +14 -0
  123. package/src/test/firestore/firestore.admin.js.map +1 -0
  124. package/src/test/firestore/firestore.d.ts +22 -0
  125. package/src/test/firestore/firestore.fixture.admin.d.ts +6 -0
  126. package/src/test/firestore/firestore.fixture.admin.js +12 -0
  127. package/src/test/firestore/firestore.fixture.admin.js.map +1 -0
  128. package/src/test/firestore/firestore.js +57 -0
  129. package/src/test/firestore/firestore.js.map +1 -0
  130. package/src/test/firestore/index.d.ts +2 -0
  131. package/src/test/firestore/index.js +7 -0
  132. package/src/test/firestore/index.js.map +1 -0
  133. package/src/test/index.d.ts +2 -0
  134. package/src/test/index.js +6 -0
  135. package/src/test/index.js.map +1 -0
  136. package/test-setup.d.ts +0 -0
  137. package/test-setup.js +6 -0
  138. package/test-setup.js.map +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
+
5
+ # [3.0.0](https://github.com/dereekb/dbx-components/compare/v2.1.0...v3.0.0) (2022-05-13)
6
+
7
+
8
+ ### Features
9
+
10
+ * added firebase-server ([676cf9e](https://github.com/dereekb/dbx-components/commit/676cf9e6c44aab5ca993b5a1a9c347c021b41a4a))
11
+ * added jestFunctionFixture ([1ea2d7d](https://github.com/dereekb/dbx-components/commit/1ea2d7d4c852449f34279eeedfadd2d69c1e7f2b))
12
+ * added modelConversionOptions to modelMapFunction ([2de30e0](https://github.com/dereekb/dbx-components/commit/2de30e07527bbaf27c51a8472054a35e73d2ae2b))
13
+ * added modelTestContextFactory ([0a96442](https://github.com/dereekb/dbx-components/commit/0a9644252ffc670cb2e861a4c02ace6790eeae52))
14
+ * added onCallWithNestContext to firebase-server ([ad4fcf8](https://github.com/dereekb/dbx-components/commit/ad4fcf80e71e7b954197dd89924d31180c03c911))
15
+ * firebaseServerAuthModule ([db9a4d3](https://github.com/dereekb/dbx-components/commit/db9a4d3d47fd15317186c7a034c25083ae395251))
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # firebase-server
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test firebase-server` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@dereekb/firebase-server",
3
+ "version": "3.0.0",
4
+ "main": "./src/index.js",
5
+ "typings": "./src/index.d.ts",
6
+ "dependencies": {},
7
+ "peerDependencies": {
8
+ "firebase-admin": "^10.2.0",
9
+ "@nestjs/common": "^8.4.0",
10
+ "@dereekb/util": "3.0.0",
11
+ "make-error": "^1.3.0",
12
+ "extra-set": "^2.2.11",
13
+ "change-case": "^4.1.2",
14
+ "firebase-functions": "^3.21.0",
15
+ "@dereekb/firebase": "3.0.0",
16
+ "rxjs": "^7.0.0",
17
+ "rxfire": "^6.0.3",
18
+ "firebase": "^9.8.0",
19
+ "@dereekb/rxjs": "3.0.0",
20
+ "ms": "^3.0.0-canary.1",
21
+ "@dereekb/date": "3.0.0",
22
+ "class-transformer": "^0.5.1",
23
+ "date-fns": "^2.28.0",
24
+ "class-validator": "^0.13.2",
25
+ "date-fns-tz": "^1.3.0",
26
+ "rrule": "git+https://git@github.com/dereekb/rrule.git#17adf5708d6567b4d01a3a8afd106261421ea492",
27
+ "@dereekb/model": "3.0.0",
28
+ "@google-cloud/firestore": "^5.0.2",
29
+ "@nestjs/core": "^8.4.0",
30
+ "@nestjs/platform-express": "^8.4.0",
31
+ "jsonwebtoken": "^8.0.0",
32
+ "tslib": "^2.0.0"
33
+ }
34
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib';
2
+ export * from './test';
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib"), exports);
5
+ tslib_1.__exportStar(require("./test"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/firebase-server/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,iDAAuB"}
@@ -0,0 +1,28 @@
1
+ import * as admin from 'firebase-admin';
2
+ import { FactoryProvider, InjectionToken, ModuleMetadata, Provider } from "@nestjs/common";
3
+ import { FirebaseServerAuthService } from './auth.service';
4
+ /**
5
+ * Token to access the Auth for the app.
6
+ */
7
+ export declare const FIREBASE_AUTH_TOKEN: InjectionToken;
8
+ /**
9
+ * Nest provider module for Firebase that provides a firestore, etc. from the firestore token.
10
+ */
11
+ export declare class FirebaseServerAuthModule {
12
+ }
13
+ export declare type ProvideFirestoreServerAuthServiceSimple<T extends FirebaseServerAuthService> = Pick<FactoryProvider<T>, 'provide'> & {
14
+ useFactory: (auth: admin.auth.Auth) => T;
15
+ };
16
+ export declare type ProvideFirebaseServerAuthService<T extends FirebaseServerAuthService> = FactoryProvider<T> | ProvideFirestoreServerAuthServiceSimple<T>;
17
+ export declare function provideFirebaseServerAuthService<T extends FirebaseServerAuthService>(provider: ProvideFirebaseServerAuthService<T>): [ProvideFirebaseServerAuthService<T>, Provider<T>];
18
+ export interface FirebaseServerAuthModuleMetadataConfig<T extends FirebaseServerAuthService> extends Pick<ModuleMetadata, 'imports' | 'exports' | 'providers'> {
19
+ readonly serviceProvider: ProvideFirebaseServerAuthService<T>;
20
+ }
21
+ /**
22
+ * Convenience function used to generate ModuleMetadata for an app's Auth related modules and FirebaseServerAuthService provider.
23
+ *
24
+ * @param provide
25
+ * @param useFactory
26
+ * @returns
27
+ */
28
+ export declare function firebaseServerAuthModuleMetadata<T extends FirebaseServerAuthService>(config: FirebaseServerAuthModuleMetadataConfig<T>): ModuleMetadata;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.firebaseServerAuthModuleMetadata = exports.provideFirebaseServerAuthService = exports.FirebaseServerAuthModule = exports.FIREBASE_AUTH_TOKEN = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const firebase_nest_1 = require("../firebase/firebase.nest");
7
+ const auth_service_1 = require("./auth.service");
8
+ // MARK: Tokens
9
+ /**
10
+ * Token to access the Auth for the app.
11
+ */
12
+ exports.FIREBASE_AUTH_TOKEN = 'FIREBASE_AUTH_TOKEN';
13
+ /**
14
+ * Nest provider module for Firebase that provides a firestore, etc. from the firestore token.
15
+ */
16
+ let FirebaseServerAuthModule = class FirebaseServerAuthModule {
17
+ };
18
+ FirebaseServerAuthModule = tslib_1.__decorate([
19
+ (0, common_1.Module)({
20
+ providers: [{
21
+ provide: exports.FIREBASE_AUTH_TOKEN,
22
+ useFactory: (app) => app.auth(),
23
+ inject: [firebase_nest_1.FIREBASE_APP_TOKEN]
24
+ }],
25
+ exports: [exports.FIREBASE_AUTH_TOKEN]
26
+ })
27
+ ], FirebaseServerAuthModule);
28
+ exports.FirebaseServerAuthModule = FirebaseServerAuthModule;
29
+ function provideFirebaseServerAuthService(provider) {
30
+ var _a;
31
+ return [
32
+ Object.assign(Object.assign({}, provider), { inject: (_a = provider.inject) !== null && _a !== void 0 ? _a : [exports.FIREBASE_AUTH_TOKEN] }),
33
+ {
34
+ provide: auth_service_1.FirebaseServerAuthService,
35
+ useExisting: provider.provide
36
+ }
37
+ ];
38
+ }
39
+ exports.provideFirebaseServerAuthService = provideFirebaseServerAuthService;
40
+ /**
41
+ * Convenience function used to generate ModuleMetadata for an app's Auth related modules and FirebaseServerAuthService provider.
42
+ *
43
+ * @param provide
44
+ * @param useFactory
45
+ * @returns
46
+ */
47
+ function firebaseServerAuthModuleMetadata(config) {
48
+ var _a, _b, _c;
49
+ return {
50
+ imports: [FirebaseServerAuthModule, ...((_a = config.imports) !== null && _a !== void 0 ? _a : [])],
51
+ exports: [FirebaseServerAuthModule, config.serviceProvider.provide, ...((_b = config.exports) !== null && _b !== void 0 ? _b : [])],
52
+ providers: [...provideFirebaseServerAuthService(config.serviceProvider), ...((_c = config.providers) !== null && _c !== void 0 ? _c : [])]
53
+ };
54
+ }
55
+ exports.firebaseServerAuthModuleMetadata = firebaseServerAuthModuleMetadata;
56
+ //# sourceMappingURL=auth.nest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.nest.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/auth/auth.nest.ts"],"names":[],"mappings":";;;;AACA,2CAAmG;AACnG,6DAA+D;AAC/D,iDAA2D;AAE3D,eAAe;AACf;;GAEG;AACU,QAAA,mBAAmB,GAAmB,qBAAqB,CAAC;AAEzE;;GAEG;AASH,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;CAAI,CAAA;AAA5B,wBAAwB;IARpC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC;gBACV,OAAO,EAAE,2BAAmB;gBAC5B,UAAU,EAAE,CAAC,GAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;gBAC9C,MAAM,EAAE,CAAC,kCAAkB,CAAC;aAC7B,CAAC;QACF,OAAO,EAAE,CAAC,2BAAmB,CAAC;KAC/B,CAAC;GACW,wBAAwB,CAAI;AAA5B,4DAAwB;AASrC,SAAgB,gCAAgC,CAAsC,QAA6C;;IACjI,OAAO;wCAEA,QAAQ,KACX,MAAM,EAAE,MAAC,QAAgB,CAAC,MAAM,mCAAI,CAAC,2BAAmB,CAAC;QAE3D;YACE,OAAO,EAAE,wCAAyB;YAClC,WAAW,EAAE,QAAQ,CAAC,OAAO;SAC9B;KACF,CAAC;AACJ,CAAC;AAXD,4EAWC;AAOD;;;;;;GAMG;AACH,SAAgB,gCAAgC,CAAsC,MAAiD;;IACrI,OAAO;QACL,OAAO,EAAE,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,wBAAwB,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;QAC9F,SAAS,EAAE,CAAC,GAAG,gCAAgC,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAA,MAAM,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC;KACtG,CAAC;AACJ,CAAC;AAND,4EAMC"}
@@ -0,0 +1,161 @@
1
+ import * as functions from 'firebase-functions';
2
+ import * as admin from 'firebase-admin';
3
+ import { FirebaseAuthUserId } from '@dereekb/firebase';
4
+ import { AuthClaims, AuthRoleSet, ArrayOrValue, AuthRole, AuthClaimsUpdate } from '@dereekb/util';
5
+ import { CallableContextWithAuthData } from '../function/context';
6
+ export interface FirebaseServerAuthUserIdentifierContext {
7
+ /**
8
+ * UID of the user for this context.
9
+ */
10
+ readonly uid: FirebaseAuthUserId;
11
+ }
12
+ export interface FirebaseServerAuthUserContext extends FirebaseServerAuthUserIdentifierContext {
13
+ /**
14
+ * Loads the record of the user.
15
+ */
16
+ loadRecord(): Promise<admin.auth.UserRecord>;
17
+ /**
18
+ * Loads the roles of the user.
19
+ */
20
+ loadRoles(): Promise<AuthRoleSet>;
21
+ /**
22
+ * Adds the given roles to the user.
23
+ *
24
+ * @param roles
25
+ */
26
+ addRoles(roles: ArrayOrValue<AuthRole>): Promise<void>;
27
+ /**
28
+ * Removes the given roles from the user.
29
+ *
30
+ * @param roles
31
+ */
32
+ removeRoles(roles: ArrayOrValue<AuthRole>): Promise<void>;
33
+ /**
34
+ * Updates the claims for a user by merging existing claims in with the input.
35
+ *
36
+ * All null values are cleared from the existing claims. Undefined values are ignored.
37
+ *
38
+ * @param claims
39
+ */
40
+ updateClaims(claims: AuthClaimsUpdate): Promise<void>;
41
+ /**
42
+ * Sets the claims for a user. All previous claims are cleared.
43
+ *
44
+ * @param claims
45
+ */
46
+ setClaims(claims: AuthClaimsUpdate): Promise<void>;
47
+ /**
48
+ * Clears all claims for the user.
49
+ *
50
+ * @param claims
51
+ */
52
+ clearClaims(): Promise<void>;
53
+ }
54
+ export declare abstract class AbstractFirebaseServerAuthUserContext<S extends FirebaseServerAuthService> implements FirebaseServerAuthUserContext {
55
+ readonly service: S;
56
+ readonly uid: FirebaseAuthUserId;
57
+ private readonly _loadRecord;
58
+ constructor(service: S, uid: FirebaseAuthUserId);
59
+ loadRecord(): Promise<admin.auth.UserRecord>;
60
+ loadRoles(): Promise<AuthRoleSet>;
61
+ addRoles(roles: ArrayOrValue<AuthRole>): Promise<void>;
62
+ removeRoles(roles: ArrayOrValue<AuthRole>): Promise<void>;
63
+ protected _claimsForRolesChange(roles: ArrayOrValue<AuthRole>): AuthClaims<any>;
64
+ loadClaims(): Promise<AuthClaims>;
65
+ updateClaims(claims: AuthClaimsUpdate): Promise<void>;
66
+ clearClaims(): Promise<void>;
67
+ setClaims(claims: AuthClaimsUpdate): Promise<void>;
68
+ }
69
+ export interface FirebaseServerAuthContext<U extends FirebaseServerAuthUserContext = FirebaseServerAuthUserContext> extends FirebaseServerAuthUserIdentifierContext {
70
+ /**
71
+ * The wrapped context.
72
+ */
73
+ readonly context: CallableContextWithAuthData;
74
+ /**
75
+ * Returns the user context for this type.
76
+ */
77
+ readonly userContext: U;
78
+ /**
79
+ * Whether or not the context sees the user as an admin of the system.
80
+ */
81
+ readonly isAdmin: boolean;
82
+ /**
83
+ * The auth roles provided by the token in this context.
84
+ */
85
+ readonly authRoles: AuthRoleSet;
86
+ /**
87
+ * The token in the context.
88
+ */
89
+ readonly token: admin.auth.DecodedIdToken;
90
+ /**
91
+ * The claims in the context.
92
+ */
93
+ readonly claims: AuthClaims;
94
+ }
95
+ export declare abstract class AbstractFirebaseServerAuthContext<C extends FirebaseServerAuthContext, U extends FirebaseServerAuthUserContext = FirebaseServerAuthUserContext, S extends FirebaseServerAuthService<U, C> = FirebaseServerAuthService<U, C>> implements FirebaseServerAuthContext {
96
+ readonly service: S;
97
+ readonly context: CallableContextWithAuthData;
98
+ private readonly _isAdmin;
99
+ private readonly _authRoles;
100
+ private readonly _userContext;
101
+ constructor(service: S, context: CallableContextWithAuthData);
102
+ get userContext(): U;
103
+ get isAdmin(): boolean;
104
+ get authRoles(): AuthRoleSet;
105
+ get token(): admin.auth.DecodedIdToken;
106
+ get claims(): AuthClaims;
107
+ get uid(): string;
108
+ }
109
+ /**
110
+ * FirebaseServer auth service that provides accessors to auth-related components.
111
+ */
112
+ export declare abstract class FirebaseServerAuthService<U extends FirebaseServerAuthUserContext = FirebaseServerAuthUserContext, C extends FirebaseServerAuthContext = FirebaseServerAuthContext> {
113
+ abstract readonly auth: admin.auth.Auth;
114
+ /**
115
+ * Creates a context with the input CallableContext. This creation also asserts that a uid is available to the request.
116
+ *
117
+ * If the input context is not a CallableContextWithAuthData, an exception is thrown.
118
+ *
119
+ * @param context
120
+ */
121
+ abstract context(context: functions.https.CallableContext): C;
122
+ /**
123
+ * Creates a FirebaseServerAuthUserContext instance for the input uid.
124
+ *
125
+ * The user's existence is not checked.
126
+ *
127
+ * @param uid
128
+ */
129
+ abstract userContext(uid: FirebaseAuthUserId): U;
130
+ /**
131
+ * Whether or not the input claims indicate admin priviledges.
132
+ */
133
+ abstract isAdmin(claims: AuthClaims): boolean;
134
+ /**
135
+ * Reads the AuthRoleSet from the input claims.
136
+ *
137
+ * @param claims
138
+ */
139
+ abstract readRoles(claims: AuthClaims): AuthRoleSet;
140
+ /**
141
+ * Creates the claims that reflect the input roles.
142
+ *
143
+ * The resultant claims value should include ALL claim values, with those that are unset to be null.
144
+ *
145
+ * @param roles
146
+ */
147
+ abstract claimsForRoles(roles: AuthRoleSet): AuthClaims;
148
+ }
149
+ /**
150
+ * Abstract FirebaseServerAuthService implementation.
151
+ */
152
+ export declare abstract class AbstractFirebaseServerAuthService<U extends FirebaseServerAuthUserContext = FirebaseServerAuthUserContext, C extends FirebaseServerAuthContext<U> = FirebaseServerAuthContext<U>> implements FirebaseServerAuthService<U, C> {
153
+ readonly auth: admin.auth.Auth;
154
+ constructor(auth: admin.auth.Auth);
155
+ context(context: functions.https.CallableContext): C;
156
+ protected abstract _context(context: CallableContextWithAuthData): C;
157
+ abstract userContext(uid: FirebaseAuthUserId): U;
158
+ isAdmin(claims: AuthClaims): boolean;
159
+ abstract readRoles(claims: AuthClaims): AuthRoleSet;
160
+ abstract claimsForRoles(roles: AuthRoleSet): AuthClaims;
161
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractFirebaseServerAuthService = exports.FirebaseServerAuthService = exports.AbstractFirebaseServerAuthContext = exports.AbstractFirebaseServerAuthUserContext = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const util_1 = require("@dereekb/util");
6
+ const context_1 = require("../function/context");
7
+ class AbstractFirebaseServerAuthUserContext {
8
+ constructor(service, uid) {
9
+ this.service = service;
10
+ this.uid = uid;
11
+ this._loadRecord = (0, util_1.cachedGetter)(() => this.service.auth.getUser(this.uid));
12
+ }
13
+ loadRecord() {
14
+ return this._loadRecord();
15
+ }
16
+ loadRoles() {
17
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
18
+ const claims = yield this.loadClaims();
19
+ return this.service.readRoles(claims);
20
+ });
21
+ }
22
+ addRoles(roles) {
23
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
24
+ let claims = this._claimsForRolesChange(roles);
25
+ return this.updateClaims(claims);
26
+ });
27
+ }
28
+ removeRoles(roles) {
29
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
+ const baseClaims = this._claimsForRolesChange(roles);
31
+ let claims = {};
32
+ (0, util_1.forEachKeyValue)(baseClaims, {
33
+ forEach: ([key]) => {
34
+ claims[key] = null;
35
+ },
36
+ filter: util_1.KeyValueTypleValueFilter.NONE // hit all values
37
+ });
38
+ return this.updateClaims(claims);
39
+ });
40
+ }
41
+ _claimsForRolesChange(roles) {
42
+ // filter null/undefined since the claims will contain null values for claims that are not related.
43
+ return (0, util_1.filterNullAndUndefinedValues)(this.service.claimsForRoles((0, util_1.asSet)(roles)));
44
+ }
45
+ loadClaims() {
46
+ return this.loadRecord().then(x => { var _a; return (_a = x.customClaims) !== null && _a !== void 0 ? _a : {}; });
47
+ }
48
+ updateClaims(claims) {
49
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
50
+ const currentClaims = yield this.loadClaims();
51
+ let newClaims;
52
+ if (currentClaims) {
53
+ newClaims = Object.assign(Object.assign({}, currentClaims), (0, util_1.filterUndefinedValues)(claims, false));
54
+ newClaims = (0, util_1.filterNullAndUndefinedValues)(newClaims);
55
+ }
56
+ else {
57
+ newClaims = claims;
58
+ }
59
+ return this.setClaims(newClaims);
60
+ });
61
+ }
62
+ clearClaims() {
63
+ return this.setClaims(null);
64
+ }
65
+ setClaims(claims) {
66
+ return this.service.auth.setCustomUserClaims(this.uid, claims).then(() => {
67
+ this._loadRecord.reset(); // reset the cache
68
+ });
69
+ }
70
+ }
71
+ exports.AbstractFirebaseServerAuthUserContext = AbstractFirebaseServerAuthUserContext;
72
+ class AbstractFirebaseServerAuthContext {
73
+ constructor(service, context) {
74
+ this.service = service;
75
+ this.context = context;
76
+ this._isAdmin = (0, util_1.cachedGetter)(() => this.service.isAdmin(this.context.auth.token));
77
+ this._authRoles = (0, util_1.cachedGetter)(() => this.service.readRoles(this.context.auth.token));
78
+ this._userContext = (0, util_1.cachedGetter)(() => this.service.userContext(this.context.auth.uid));
79
+ }
80
+ get userContext() {
81
+ return this._userContext();
82
+ }
83
+ get isAdmin() {
84
+ return this._isAdmin();
85
+ }
86
+ get authRoles() {
87
+ return this._authRoles();
88
+ }
89
+ get token() {
90
+ return this.context.auth.token;
91
+ }
92
+ get claims() {
93
+ return this.context.auth.token;
94
+ }
95
+ // MARK: FirebaseServerAuthUserContext
96
+ get uid() {
97
+ return this.userContext.uid;
98
+ }
99
+ }
100
+ exports.AbstractFirebaseServerAuthContext = AbstractFirebaseServerAuthContext;
101
+ // MARK: Service
102
+ /**
103
+ * FirebaseServer auth service that provides accessors to auth-related components.
104
+ */
105
+ class FirebaseServerAuthService {
106
+ }
107
+ exports.FirebaseServerAuthService = FirebaseServerAuthService;
108
+ /**
109
+ * Abstract FirebaseServerAuthService implementation.
110
+ */
111
+ class AbstractFirebaseServerAuthService {
112
+ constructor(auth) {
113
+ this.auth = auth;
114
+ }
115
+ context(context) {
116
+ (0, context_1.assertIsContextWithAuthData)(context);
117
+ context.auth.token;
118
+ return this._context(context);
119
+ }
120
+ isAdmin(claims) {
121
+ return this.readRoles(claims).has(util_1.AUTH_ADMIN_ROLE);
122
+ }
123
+ }
124
+ exports.AbstractFirebaseServerAuthService = AbstractFirebaseServerAuthService;
125
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/auth/auth.service.ts"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=auth.user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.user.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/auth/auth.user.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './auth.service';
2
+ export * from './auth.nest';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./auth.service"), exports);
5
+ tslib_1.__exportStar(require("./auth.nest"), exports);
6
+ // export * from './auth.user';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/auth/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,sDAA4B;AAC5B,+BAA+B"}
@@ -0,0 +1,7 @@
1
+ import * as admin from 'firebase-admin';
2
+ import { FactoryProvider, InjectionToken } from "@nestjs/common";
3
+ /**
4
+ * Nest Injection Token to access the
5
+ */
6
+ export declare const FIREBASE_APP_TOKEN: InjectionToken;
7
+ export declare function firebaseServerAppTokenProvider(useFactory: () => admin.app.App): FactoryProvider<any>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.firebaseServerAppTokenProvider = exports.FIREBASE_APP_TOKEN = void 0;
4
+ // MARK: Tokens
5
+ /**
6
+ * Nest Injection Token to access the
7
+ */
8
+ exports.FIREBASE_APP_TOKEN = 'FIREBASE_APP_TOKEN';
9
+ // MARK: Firebase Admin Provider
10
+ function firebaseServerAppTokenProvider(useFactory) {
11
+ return {
12
+ provide: exports.FIREBASE_APP_TOKEN,
13
+ useFactory
14
+ };
15
+ }
16
+ exports.firebaseServerAppTokenProvider = firebaseServerAppTokenProvider;
17
+ //# sourceMappingURL=firebase.nest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.nest.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/firebase/firebase.nest.ts"],"names":[],"mappings":";;;AAGA,eAAe;AACf;;GAEG;AACU,QAAA,kBAAkB,GAAmB,oBAAoB,CAAC;AAEvE,gCAAgC;AAChC,SAAgB,8BAA8B,CAAC,UAA+B;IAC5E,OAAO;QACL,OAAO,EAAE,0BAAkB;QAC3B,UAAU;KACX,CAAC;AACJ,CAAC;AALD,wEAKC"}
@@ -0,0 +1 @@
1
+ export * from './firebase.nest';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./firebase.nest"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/firebase/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"}
@@ -0,0 +1,31 @@
1
+ import { DocumentReference, WriteBatch as GoogleCloudWriteBatch, DocumentSnapshot } from "@google-cloud/firestore";
2
+ import { Observable } from "rxjs";
3
+ import { WithFieldValue, FirestoreDocumentContext, FirestoreDocumentContextType, FirestoreDocumentDataAccessor, FirestoreDocumentDataAccessorFactory, FirestoreDocumentDeleteParams, FirestoreDocumentUpdateParams, UpdateData } from "@dereekb/firebase";
4
+ /**
5
+ * FirestoreDocumentDataAccessor implementation for a batch.
6
+ */
7
+ export declare class WriteBatchFirestoreDocumentDataAccessor<T> implements FirestoreDocumentDataAccessor<T> {
8
+ readonly batch: GoogleCloudWriteBatch;
9
+ readonly documentRef: DocumentReference<T>;
10
+ constructor(batch: GoogleCloudWriteBatch, documentRef: DocumentReference<T>);
11
+ stream(): Observable<DocumentSnapshot<T>>;
12
+ exists(): Promise<boolean>;
13
+ get(): Promise<DocumentSnapshot<T>>;
14
+ delete(params?: FirestoreDocumentDeleteParams): Promise<void>;
15
+ set(data: WithFieldValue<T>): Promise<void>;
16
+ update(data: UpdateData<T>, params?: FirestoreDocumentUpdateParams): Promise<void>;
17
+ }
18
+ /**
19
+ * Creates a new FirestoreDocumentDataAccessorFactory for a Batch.
20
+ *
21
+ * @param batch
22
+ * @returns
23
+ */
24
+ export declare function writeBatchAccessorFactory<T>(writeBatch: GoogleCloudWriteBatch): FirestoreDocumentDataAccessorFactory<T>;
25
+ export declare class WriteBatchFirestoreDocumentContext<T> implements FirestoreDocumentContext<T> {
26
+ readonly batch: GoogleCloudWriteBatch;
27
+ readonly contextType = FirestoreDocumentContextType.BATCH;
28
+ readonly accessorFactory: FirestoreDocumentDataAccessorFactory<T>;
29
+ constructor(batch: GoogleCloudWriteBatch);
30
+ }
31
+ export declare function writeBatchDocumentContext<T>(batch: GoogleCloudWriteBatch): WriteBatchFirestoreDocumentContext<T>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeBatchDocumentContext = exports.WriteBatchFirestoreDocumentContext = exports.writeBatchAccessorFactory = exports.WriteBatchFirestoreDocumentDataAccessor = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const firebase_1 = require("@dereekb/firebase");
6
+ // MARK: Accessor
7
+ /**
8
+ * FirestoreDocumentDataAccessor implementation for a batch.
9
+ */
10
+ class WriteBatchFirestoreDocumentDataAccessor {
11
+ constructor(batch, documentRef) {
12
+ this.batch = batch;
13
+ this.documentRef = documentRef;
14
+ }
15
+ stream() {
16
+ return (0, rxjs_1.from)(this.get()); // todo
17
+ }
18
+ exists() {
19
+ return this.get().then(x => x.exists);
20
+ }
21
+ get() {
22
+ return this.documentRef.get();
23
+ }
24
+ delete(params) {
25
+ this.batch.delete(this.documentRef, params === null || params === void 0 ? void 0 : params.precondition);
26
+ return Promise.resolve();
27
+ }
28
+ set(data) {
29
+ this.batch.set(this.documentRef, data);
30
+ return Promise.resolve();
31
+ }
32
+ update(data, params) {
33
+ // todo: look into data typing casting more for this and the other types. Currently fails the building the demo-api app. "data as GoogleCloudUpdateData<T>"
34
+ // problem is related to T here being too open, but also the demo-api project shouldn't care.
35
+ this.batch.update(this.documentRef, data, params === null || params === void 0 ? void 0 : params.precondition);
36
+ return Promise.resolve();
37
+ }
38
+ }
39
+ exports.WriteBatchFirestoreDocumentDataAccessor = WriteBatchFirestoreDocumentDataAccessor;
40
+ /**
41
+ * Creates a new FirestoreDocumentDataAccessorFactory for a Batch.
42
+ *
43
+ * @param batch
44
+ * @returns
45
+ */
46
+ function writeBatchAccessorFactory(writeBatch) {
47
+ return {
48
+ accessorFor: (ref) => new WriteBatchFirestoreDocumentDataAccessor(writeBatch, ref)
49
+ };
50
+ }
51
+ exports.writeBatchAccessorFactory = writeBatchAccessorFactory;
52
+ // MARK: Context
53
+ class WriteBatchFirestoreDocumentContext {
54
+ constructor(batch) {
55
+ this.batch = batch;
56
+ this.contextType = firebase_1.FirestoreDocumentContextType.BATCH;
57
+ this.accessorFactory = writeBatchAccessorFactory(this.batch);
58
+ }
59
+ }
60
+ exports.WriteBatchFirestoreDocumentContext = WriteBatchFirestoreDocumentContext;
61
+ function writeBatchDocumentContext(batch) {
62
+ return new WriteBatchFirestoreDocumentContext(batch);
63
+ }
64
+ exports.writeBatchDocumentContext = writeBatchDocumentContext;
65
+ //# sourceMappingURL=driver.accessor.batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.accessor.batch.js","sourceRoot":"","sources":["../../../../../../packages/firebase-server/src/lib/firestore/driver.accessor.batch.ts"],"names":[],"mappings":";;;AACA,+BAAwC;AACxC,gDAA0P;AAE1P,iBAAiB;AACjB;;GAEG;AACH,MAAa,uCAAuC;IAElD,YAAqB,KAA4B,EAAW,WAAiC;QAAxE,UAAK,GAAL,KAAK,CAAuB;QAAW,gBAAW,GAAX,WAAW,CAAsB;IAAI,CAAC;IAElG,MAAM;QACJ,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAE,OAAO;IACnC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAsC;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,IAAuB;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,IAAmB,EAAE,MAAsC;QAChE,2JAA2J;QAC3J,6FAA6F;QAC7F,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAW,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CAEF;AAjCD,0FAiCC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAI,UAAiC;IAC5E,OAAO;QACL,WAAW,EAAE,CAAC,GAAyB,EAAE,EAAE,CAAC,IAAI,uCAAuC,CAAC,UAAU,EAAE,GAAG,CAAC;KACzG,CAAC;AACJ,CAAC;AAJD,8DAIC;AAED,gBAAgB;AAChB,MAAa,kCAAkC;IAK7C,YAAqB,KAA4B;QAA5B,UAAK,GAAL,KAAK,CAAuB;QAHxC,gBAAW,GAAG,uCAA4B,CAAC,KAAK,CAAC;QACjD,oBAAe,GAAG,yBAAyB,CAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,CAAC;CAEvD;AAPD,gFAOC;AAED,SAAgB,yBAAyB,CAAI,KAA4B;IACvE,OAAO,IAAI,kCAAkC,CAAI,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,8DAEC"}
@@ -0,0 +1,11 @@
1
+ import { FirestoreAccessorDriver, CollectionReference, DocumentReference } from "@dereekb/firebase";
2
+ interface DocRefForPathInput {
3
+ doc: (path: string) => DocumentReference;
4
+ }
5
+ interface CollectionRefForPathInput {
6
+ collection: (path: string) => CollectionReference;
7
+ }
8
+ export declare function collectionRefForPath<T>(start: CollectionRefForPathInput, path: string, pathSegments?: string[]): CollectionReference<T>;
9
+ export declare function docRefForPath<T>(start: DocRefForPathInput, path?: string, pathSegments?: string[]): DocumentReference<T>;
10
+ export declare function firestoreClientAccessorDriver(): FirestoreAccessorDriver;
11
+ export {};