@mondomob/gae-node-nestjs 12.0.0-alpha-2 → 12.0.0-alpha-3

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 (206) hide show
  1. package/dist/_test/mocks.d.ts +9 -0
  2. package/dist/_test/mocks.js +27 -0
  3. package/dist/_test/mocks.js.map +1 -0
  4. package/dist/_test/request-scope-test-utils.d.ts +3 -0
  5. package/dist/_test/request-scope-test-utils.js +18 -0
  6. package/dist/_test/request-scope-test-utils.js.map +1 -0
  7. package/dist/auth/auth-user.model.d.ts +9 -0
  8. package/dist/auth/auth-user.model.js +33 -0
  9. package/dist/auth/auth-user.model.js.map +1 -0
  10. package/dist/auth/auth.callbacks.d.ts +8 -0
  11. package/dist/auth/auth.callbacks.js +5 -0
  12. package/dist/auth/auth.callbacks.js.map +1 -0
  13. package/dist/auth/auth.configurer.d.ts +35 -0
  14. package/dist/auth/auth.configurer.js +212 -0
  15. package/dist/auth/auth.configurer.js.map +1 -0
  16. package/dist/auth/auth.controller.d.ts +27 -0
  17. package/dist/auth/auth.controller.js +312 -0
  18. package/dist/auth/auth.controller.js.map +1 -0
  19. package/dist/auth/auth.guard.d.ts +16 -0
  20. package/dist/auth/auth.guard.js +127 -0
  21. package/dist/auth/auth.guard.js.map +1 -0
  22. package/dist/auth/auth.listener.d.ts +5 -0
  23. package/dist/auth/auth.listener.js +5 -0
  24. package/dist/auth/auth.listener.js.map +1 -0
  25. package/dist/auth/auth.repository.d.ts +52 -0
  26. package/dist/auth/auth.repository.js +79 -0
  27. package/dist/auth/auth.repository.js.map +1 -0
  28. package/dist/auth/auth.resolver.d.ts +13 -0
  29. package/dist/auth/auth.resolver.js +86 -0
  30. package/dist/auth/auth.resolver.js.map +1 -0
  31. package/dist/auth/auth.service.d.ts +35 -0
  32. package/dist/auth/auth.service.js +299 -0
  33. package/dist/auth/auth.service.js.map +1 -0
  34. package/dist/auth/auth.task.controller.d.ts +13 -0
  35. package/dist/auth/auth.task.controller.js +76 -0
  36. package/dist/auth/auth.task.controller.js.map +1 -0
  37. package/dist/auth/auth.task.service.d.ts +8 -0
  38. package/dist/auth/auth.task.service.js +26 -0
  39. package/dist/auth/auth.task.service.js.map +1 -0
  40. package/dist/auth/csrf.interceptor.d.ts +11 -0
  41. package/dist/auth/csrf.interceptor.js +38 -0
  42. package/dist/auth/csrf.interceptor.js.map +1 -0
  43. package/dist/auth/invite-user.service.d.ts +45 -0
  44. package/dist/auth/invite-user.service.js +215 -0
  45. package/dist/auth/invite-user.service.js.map +1 -0
  46. package/dist/auth/invite.callbacks.d.ts +6 -0
  47. package/dist/auth/invite.callbacks.js +5 -0
  48. package/dist/auth/invite.callbacks.js.map +1 -0
  49. package/dist/auth/login-identifier.repository.d.ts +13 -0
  50. package/dist/auth/login-identifier.repository.js +28 -0
  51. package/dist/auth/login-identifier.repository.js.map +1 -0
  52. package/dist/auth/password-reset.service.d.ts +15 -0
  53. package/dist/auth/password-reset.service.js +81 -0
  54. package/dist/auth/password-reset.service.js.map +1 -0
  55. package/dist/auth/user.service.d.ts +27 -0
  56. package/dist/auth/user.service.js +94 -0
  57. package/dist/auth/user.service.js.map +1 -0
  58. package/dist/configuration.d.ts +84 -0
  59. package/dist/configuration.js +5 -0
  60. package/dist/configuration.js.map +1 -0
  61. package/dist/configure.d.ts +40 -0
  62. package/dist/configure.js +85 -0
  63. package/dist/configure.js.map +1 -0
  64. package/dist/context/context-middleware.d.ts +15 -0
  65. package/dist/context/context-middleware.js +37 -0
  66. package/dist/context/context-middleware.js.map +1 -0
  67. package/dist/context/context-request-scope.d.ts +8 -0
  68. package/dist/context/context-request-scope.js +29 -0
  69. package/dist/context/context-request-scope.js.map +1 -0
  70. package/dist/context/index.d.ts +2 -0
  71. package/dist/context/index.js +9 -0
  72. package/dist/context/index.js.map +1 -0
  73. package/dist/datastore/context.d.ts +36 -0
  74. package/dist/datastore/context.js +27 -0
  75. package/dist/datastore/context.js.map +1 -0
  76. package/dist/datastore/datastore.provider.d.ts +8 -0
  77. package/dist/datastore/datastore.provider.js +30 -0
  78. package/dist/datastore/datastore.provider.js.map +1 -0
  79. package/dist/datastore/filters.d.ts +19 -0
  80. package/dist/datastore/filters.js +27 -0
  81. package/dist/datastore/filters.js.map +1 -0
  82. package/dist/datastore/loader.d.ts +50 -0
  83. package/dist/datastore/loader.js +147 -0
  84. package/dist/datastore/loader.js.map +1 -0
  85. package/dist/datastore/node-datastore-session.d.ts +17 -0
  86. package/dist/datastore/node-datastore-session.js +87 -0
  87. package/dist/datastore/node-datastore-session.js.map +1 -0
  88. package/dist/datastore/repository.d.ts +45 -0
  89. package/dist/datastore/repository.js +150 -0
  90. package/dist/datastore/repository.js.map +1 -0
  91. package/dist/datastore/transactional.d.ts +4 -0
  92. package/dist/datastore/transactional.js +13 -0
  93. package/dist/datastore/transactional.js.map +1 -0
  94. package/dist/error/NonFatalError.d.ts +3 -0
  95. package/dist/error/NonFatalError.js +11 -0
  96. package/dist/error/NonFatalError.js.map +1 -0
  97. package/dist/filter.d.ts +5 -0
  98. package/dist/filter.js +40 -0
  99. package/dist/filter.js.map +1 -0
  100. package/dist/gcloud/logging.d.ts +1 -0
  101. package/dist/gcloud/logging.js +5 -0
  102. package/dist/gcloud/logging.js.map +1 -0
  103. package/dist/gcloud/storage.provider.d.ts +12 -0
  104. package/dist/gcloud/storage.provider.js +41 -0
  105. package/dist/gcloud/storage.provider.js.map +1 -0
  106. package/dist/gcloud/tasks.d.ts +10 -0
  107. package/dist/gcloud/tasks.js +68 -0
  108. package/dist/gcloud/tasks.js.map +1 -0
  109. package/dist/graphql/GraphQLMiddleware.d.ts +0 -0
  110. package/dist/graphql/GraphQLMiddleware.js +2 -0
  111. package/dist/graphql/GraphQLMiddleware.js.map +1 -0
  112. package/dist/index.d.ts +28 -0
  113. package/dist/index.js +65 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/logging/index.d.ts +1 -0
  116. package/dist/logging/index.js +8 -0
  117. package/dist/logging/index.js.map +1 -0
  118. package/dist/logging/logging-internal.d.ts +2 -0
  119. package/dist/logging/logging-internal.js +20 -0
  120. package/dist/logging/logging-internal.js.map +1 -0
  121. package/dist/logging/logging-request-scope.d.ts +15 -0
  122. package/dist/logging/logging-request-scope.js +39 -0
  123. package/dist/logging/logging-request-scope.js.map +1 -0
  124. package/dist/logging/logging.d.ts +34 -0
  125. package/dist/logging/logging.js +55 -0
  126. package/dist/logging/logging.js.map +1 -0
  127. package/dist/mail/gmail/gmail.configurer.d.ts +15 -0
  128. package/dist/mail/gmail/gmail.configurer.js +59 -0
  129. package/dist/mail/gmail/gmail.configurer.js.map +1 -0
  130. package/dist/mail/gmail/gmail.controller.d.ts +9 -0
  131. package/dist/mail/gmail/gmail.controller.js +62 -0
  132. package/dist/mail/gmail/gmail.controller.js.map +1 -0
  133. package/dist/mail/gmail/gmail.sender.d.ts +12 -0
  134. package/dist/mail/gmail/gmail.sender.js +62 -0
  135. package/dist/mail/gmail/gmail.sender.js.map +1 -0
  136. package/dist/mail/gmail/stored.credentials.repository.d.ts +12 -0
  137. package/dist/mail/gmail/stored.credentials.repository.js +23 -0
  138. package/dist/mail/gmail/stored.credentials.repository.js.map +1 -0
  139. package/dist/mail/mail-logging.sender.d.ts +9 -0
  140. package/dist/mail/mail-logging.sender.js +42 -0
  141. package/dist/mail/mail-logging.sender.js.map +1 -0
  142. package/dist/mail/mail-subject.sender.d.ts +12 -0
  143. package/dist/mail/mail-subject.sender.js +33 -0
  144. package/dist/mail/mail-subject.sender.js.map +1 -0
  145. package/dist/mail/mail-whitelist.sender.d.ts +14 -0
  146. package/dist/mail/mail-whitelist.sender.js +59 -0
  147. package/dist/mail/mail-whitelist.sender.js.map +1 -0
  148. package/dist/mail/mail.diverter.d.ts +13 -0
  149. package/dist/mail/mail.diverter.js +65 -0
  150. package/dist/mail/mail.diverter.js.map +1 -0
  151. package/dist/mail/mail.sender.d.ts +6 -0
  152. package/dist/mail/mail.sender.js +5 -0
  153. package/dist/mail/mail.sender.js.map +1 -0
  154. package/dist/mail/smtp/smtp.sender.d.ts +10 -0
  155. package/dist/mail/smtp/smtp.sender.js +65 -0
  156. package/dist/mail/smtp/smtp.sender.js.map +1 -0
  157. package/dist/mail-templates/base.d.ts +2 -0
  158. package/dist/mail-templates/base.js +328 -0
  159. package/dist/mail-templates/base.js.map +1 -0
  160. package/dist/mail-templates/invite.d.ts +1 -0
  161. package/dist/mail-templates/invite.js +19 -0
  162. package/dist/mail-templates/invite.js.map +1 -0
  163. package/dist/module.d.ts +16 -0
  164. package/dist/module.js +136 -0
  165. package/dist/module.js.map +1 -0
  166. package/dist/request-scope/index.d.ts +2 -0
  167. package/dist/request-scope/index.js +9 -0
  168. package/dist/request-scope/index.js.map +1 -0
  169. package/dist/request-scope/request-scope-interceptor.d.ts +5 -0
  170. package/dist/request-scope/request-scope-interceptor.js +3 -0
  171. package/dist/request-scope/request-scope-interceptor.js.map +1 -0
  172. package/dist/request-scope/request-scope.d.ts +12 -0
  173. package/dist/request-scope/request-scope.js +79 -0
  174. package/dist/request-scope/request-scope.js.map +1 -0
  175. package/dist/request-scope/request-scope.middleware.d.ts +15 -0
  176. package/dist/request-scope/request-scope.middleware.js +53 -0
  177. package/dist/request-scope/request-scope.middleware.js.map +1 -0
  178. package/dist/search/search.service.d.ts +52 -0
  179. package/dist/search/search.service.js +90 -0
  180. package/dist/search/search.service.js.map +1 -0
  181. package/dist/search/searchable.repository.d.ts +36 -0
  182. package/dist/search/searchable.repository.js +95 -0
  183. package/dist/search/searchable.repository.js.map +1 -0
  184. package/dist/types.d.ts +3 -0
  185. package/dist/types.js +9 -0
  186. package/dist/types.js.map +1 -0
  187. package/dist/util/arrays.d.ts +1 -0
  188. package/dist/util/arrays.js +10 -0
  189. package/dist/util/arrays.js.map +1 -0
  190. package/dist/util/guards.d.ts +1 -0
  191. package/dist/util/guards.js +7 -0
  192. package/dist/util/guards.js.map +1 -0
  193. package/dist/util/index.d.ts +1 -0
  194. package/dist/util/index.js +5 -0
  195. package/dist/util/index.js.map +1 -0
  196. package/dist/util/nestjs.d.ts +9 -0
  197. package/dist/util/nestjs.js +9 -0
  198. package/dist/util/nestjs.js.map +1 -0
  199. package/dist/util/types.d.ts +4 -0
  200. package/dist/util/types.js +8 -0
  201. package/dist/util/types.js.map +1 -0
  202. package/dist/validator.d.ts +1 -0
  203. package/dist/validator.js +5 -0
  204. package/dist/validator.js.map +1 -0
  205. package/mondomob-gae-node-nestjs-12.0.0-alpha-3.tgz +0 -0
  206. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.provider.js","sourceRoot":"","sources":["../../src/gcloud/storage.provider.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AAEpD,mDAAwE;AACxE,uCAAiD;AAG1C,IAAM,eAAe,GAArB,MAAM,eAAe;IAK1B,YAAsD,qBAAoC;QAApC,0BAAqB,GAArB,qBAAqB,CAAe;QACxF,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAY,EAAC,SAAS,CAAC,CAAC;QACtC,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,IAAI,qBAAqB,CAAC,aAAa,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mGAAmG,CACpG,CAAC;YACF,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,kCAAkC,CAAC,MAAc;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI;SACxC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;CACF,CAAA;AAlCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAME,mBAAA,IAAA,eAAM,EAAC,eAAe,CAAC,CAAA;;GALzB,eAAe,CAkC3B"}
@@ -0,0 +1,10 @@
1
+ import { Configuration } from '../';
2
+ export declare class TaskQueue<T extends Configuration> {
3
+ protected readonly configurationProvider: T;
4
+ private readonly queueName;
5
+ private taskLogger;
6
+ constructor(configurationProvider: T, queueName: string);
7
+ enqueue(taskName: string, payload?: any, inSeconds?: number): Promise<void>;
8
+ appEngineQueue(taskName: string, payload?: any, inSeconds?: number): Promise<void>;
9
+ localQueue(taskName: string, payload?: any): Promise<void>;
10
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskQueue = void 0;
4
+ const tasks_1 = require("@google-cloud/tasks");
5
+ const node_fetch_1 = require("node-fetch");
6
+ const logging_1 = require("./logging");
7
+ class TaskQueue {
8
+ constructor(configurationProvider, queueName) {
9
+ this.configurationProvider = configurationProvider;
10
+ this.queueName = queueName;
11
+ this.taskLogger = (0, logging_1.createLogger)('task-queue');
12
+ }
13
+ async enqueue(taskName, payload = {}, inSeconds) {
14
+ if (this.configurationProvider.environment === 'development') {
15
+ await this.localQueue(taskName, payload);
16
+ }
17
+ else {
18
+ await this.appEngineQueue(taskName, payload, inSeconds);
19
+ }
20
+ }
21
+ async appEngineQueue(taskName, payload = {}, inSeconds) {
22
+ const client = new tasks_1.CloudTasksClient();
23
+ const projectId = this.configurationProvider.projectId;
24
+ const location = this.configurationProvider.location;
25
+ const serviceTasksOnThisVersion = !!this.configurationProvider.serviceTasksOnThisVersion;
26
+ const body = JSON.stringify(payload);
27
+ const requestPayload = Buffer.from(body).toString('base64');
28
+ const parent = client.queuePath(projectId, location, this.queueName);
29
+ const task = Object.assign({ appEngineHttpRequest: Object.assign({ relativeUri: `/tasks/${taskName}`, headers: {
30
+ 'Content-Type': 'application/json',
31
+ }, body: requestPayload }, (serviceTasksOnThisVersion
32
+ ? {
33
+ appEngineRouting: {
34
+ version: process.env.GAE_VERSION,
35
+ },
36
+ }
37
+ : {})) }, (inSeconds
38
+ ? {
39
+ scheduleTime: {
40
+ seconds: inSeconds + Date.now() / 1000,
41
+ },
42
+ }
43
+ : {}));
44
+ this.taskLogger.info('Creating task with payload: ', task);
45
+ await client.createTask({
46
+ parent,
47
+ task,
48
+ });
49
+ }
50
+ async localQueue(taskName, payload = {}) {
51
+ const endpoint = `${this.configurationProvider.host}/tasks/${taskName}`;
52
+ this.taskLogger.info(`Dispatching local task to ${endpoint}`);
53
+ (0, node_fetch_1.default)(endpoint, {
54
+ method: 'POST',
55
+ body: JSON.stringify(payload),
56
+ headers: {
57
+ 'content-type': 'application/json',
58
+ 'x-appengine-taskname': taskName,
59
+ },
60
+ }).then(async (result) => {
61
+ if (!result.ok) {
62
+ throw new Error(`Task failed to execute - status ${result.status}: ${await result.text()}`);
63
+ }
64
+ });
65
+ }
66
+ }
67
+ exports.TaskQueue = TaskQueue;
68
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/gcloud/tasks.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,2CAA+B;AAE/B,uCAAyC;AAEzC,MAAa,SAAS;IAGpB,YAA+B,qBAAwB,EAAmB,SAAiB;QAA5D,0BAAqB,GAArB,qBAAqB,CAAG;QAAmB,cAAS,GAAT,SAAS,CAAQ;QACzF,IAAI,CAAC,UAAU,GAAG,IAAA,sBAAY,EAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAe,EAAE,EAAE,SAAkB;QACnE,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YAC7D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,UAAe,EAAE,EAAE,SAAkB;QAC1E,MAAM,MAAM,GAAG,IAAI,wBAAgB,EAAE,CAAC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACrD,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC;QAEzF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,IAAI,mBACR,oBAAoB,kBAClB,WAAW,EAAE,UAAU,QAAQ,EAAE,EACjC,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC,EACD,IAAI,EAAE,cAAc,IAEjB,CAAC,yBAAyB;gBAC3B,CAAC,CAAC;oBACE,gBAAgB,EAAE;wBAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;qBACjC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC,KAEN,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,YAAY,EAAE;oBACZ,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;iBACvC;aACF;YACH,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,UAAU,CAAC;YACtB,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,UAAe,EAAE;QAClD,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,UAAU,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAK9D,IAAA,oBAAK,EAAC,QAAQ,EAAE;YACd,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,sBAAsB,EAAE,QAAQ;aACjC;SACF,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,MAAM,KAAK,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA/ED,8BA+EC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=GraphQLMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLMiddleware.js","sourceRoot":"","sources":["../../src/graphql/GraphQLMiddleware.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ export { rootLogger, createLogger, BunyanLogger, Logger } from './logging';
2
+ export { Repository, dateType } from './datastore/repository';
3
+ export { Transactional } from './datastore/transactional';
4
+ export { DatastoreProvider } from './datastore/datastore.provider';
5
+ export { StorageProvider } from './gcloud/storage.provider';
6
+ export { Context, isContext, newContext, IUser, IUserUpdates, IUserCreateRequest, Ctxt } from './datastore/context';
7
+ export { TaskQueue } from './gcloud/tasks';
8
+ export { Filters, Filter } from './datastore/filters';
9
+ export { CsrfValidator } from './auth/csrf.interceptor';
10
+ export { AuthGuard, Task, System, Cron, AllowAnonymous, Roles } from './auth/auth.guard';
11
+ export * from './auth/user.service';
12
+ export { MailSender, MAIL_SENDER } from './mail/mail.sender';
13
+ export { PasswordResetRepository, UserInviteRepository, CredentialRepository } from './auth/auth.repository';
14
+ export { LoginIdentifierRepository } from './auth/login-identifier.repository';
15
+ export { PasswordResetService } from './auth/password-reset.service';
16
+ export { InviteUserService } from './auth/invite-user.service';
17
+ export { INVITE_CALLBACKS, InviteCallbacks } from './auth/invite.callbacks';
18
+ export { AuthService, hashPassword } from './auth/auth.service';
19
+ export { UserService } from './auth/user.service';
20
+ export { AUTH_LISTENER, AuthListener } from './auth/auth.listener';
21
+ export { AUTH_CALLBACKS, AuthCallbacks } from './auth/auth.callbacks';
22
+ export { Configuration, CONFIGURATION } from './configuration';
23
+ export { SearchFields, SearchService } from './search/search.service';
24
+ export { SearchableRepository } from './search/searchable.repository';
25
+ export * from './module';
26
+ export * from './configure';
27
+ export * from './context';
28
+ export * from './util';
package/dist/index.js ADDED
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SearchableRepository = exports.SearchService = exports.CONFIGURATION = exports.AUTH_CALLBACKS = exports.AUTH_LISTENER = exports.hashPassword = exports.AuthService = exports.INVITE_CALLBACKS = exports.InviteUserService = exports.PasswordResetService = exports.LoginIdentifierRepository = exports.CredentialRepository = exports.UserInviteRepository = exports.PasswordResetRepository = exports.MAIL_SENDER = exports.Roles = exports.AllowAnonymous = exports.Cron = exports.System = exports.Task = exports.AuthGuard = exports.CsrfValidator = exports.TaskQueue = exports.Ctxt = exports.newContext = exports.isContext = exports.StorageProvider = exports.DatastoreProvider = exports.Transactional = exports.dateType = exports.Repository = exports.BunyanLogger = exports.createLogger = exports.rootLogger = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var logging_1 = require("./logging");
6
+ Object.defineProperty(exports, "rootLogger", { enumerable: true, get: function () { return logging_1.rootLogger; } });
7
+ Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logging_1.createLogger; } });
8
+ Object.defineProperty(exports, "BunyanLogger", { enumerable: true, get: function () { return logging_1.BunyanLogger; } });
9
+ var repository_1 = require("./datastore/repository");
10
+ Object.defineProperty(exports, "Repository", { enumerable: true, get: function () { return repository_1.Repository; } });
11
+ Object.defineProperty(exports, "dateType", { enumerable: true, get: function () { return repository_1.dateType; } });
12
+ var transactional_1 = require("./datastore/transactional");
13
+ Object.defineProperty(exports, "Transactional", { enumerable: true, get: function () { return transactional_1.Transactional; } });
14
+ var datastore_provider_1 = require("./datastore/datastore.provider");
15
+ Object.defineProperty(exports, "DatastoreProvider", { enumerable: true, get: function () { return datastore_provider_1.DatastoreProvider; } });
16
+ var storage_provider_1 = require("./gcloud/storage.provider");
17
+ Object.defineProperty(exports, "StorageProvider", { enumerable: true, get: function () { return storage_provider_1.StorageProvider; } });
18
+ var context_1 = require("./datastore/context");
19
+ Object.defineProperty(exports, "isContext", { enumerable: true, get: function () { return context_1.isContext; } });
20
+ Object.defineProperty(exports, "newContext", { enumerable: true, get: function () { return context_1.newContext; } });
21
+ Object.defineProperty(exports, "Ctxt", { enumerable: true, get: function () { return context_1.Ctxt; } });
22
+ var tasks_1 = require("./gcloud/tasks");
23
+ Object.defineProperty(exports, "TaskQueue", { enumerable: true, get: function () { return tasks_1.TaskQueue; } });
24
+ var csrf_interceptor_1 = require("./auth/csrf.interceptor");
25
+ Object.defineProperty(exports, "CsrfValidator", { enumerable: true, get: function () { return csrf_interceptor_1.CsrfValidator; } });
26
+ var auth_guard_1 = require("./auth/auth.guard");
27
+ Object.defineProperty(exports, "AuthGuard", { enumerable: true, get: function () { return auth_guard_1.AuthGuard; } });
28
+ Object.defineProperty(exports, "Task", { enumerable: true, get: function () { return auth_guard_1.Task; } });
29
+ Object.defineProperty(exports, "System", { enumerable: true, get: function () { return auth_guard_1.System; } });
30
+ Object.defineProperty(exports, "Cron", { enumerable: true, get: function () { return auth_guard_1.Cron; } });
31
+ Object.defineProperty(exports, "AllowAnonymous", { enumerable: true, get: function () { return auth_guard_1.AllowAnonymous; } });
32
+ Object.defineProperty(exports, "Roles", { enumerable: true, get: function () { return auth_guard_1.Roles; } });
33
+ tslib_1.__exportStar(require("./auth/user.service"), exports);
34
+ var mail_sender_1 = require("./mail/mail.sender");
35
+ Object.defineProperty(exports, "MAIL_SENDER", { enumerable: true, get: function () { return mail_sender_1.MAIL_SENDER; } });
36
+ var auth_repository_1 = require("./auth/auth.repository");
37
+ Object.defineProperty(exports, "PasswordResetRepository", { enumerable: true, get: function () { return auth_repository_1.PasswordResetRepository; } });
38
+ Object.defineProperty(exports, "UserInviteRepository", { enumerable: true, get: function () { return auth_repository_1.UserInviteRepository; } });
39
+ Object.defineProperty(exports, "CredentialRepository", { enumerable: true, get: function () { return auth_repository_1.CredentialRepository; } });
40
+ var login_identifier_repository_1 = require("./auth/login-identifier.repository");
41
+ Object.defineProperty(exports, "LoginIdentifierRepository", { enumerable: true, get: function () { return login_identifier_repository_1.LoginIdentifierRepository; } });
42
+ var password_reset_service_1 = require("./auth/password-reset.service");
43
+ Object.defineProperty(exports, "PasswordResetService", { enumerable: true, get: function () { return password_reset_service_1.PasswordResetService; } });
44
+ var invite_user_service_1 = require("./auth/invite-user.service");
45
+ Object.defineProperty(exports, "InviteUserService", { enumerable: true, get: function () { return invite_user_service_1.InviteUserService; } });
46
+ var invite_callbacks_1 = require("./auth/invite.callbacks");
47
+ Object.defineProperty(exports, "INVITE_CALLBACKS", { enumerable: true, get: function () { return invite_callbacks_1.INVITE_CALLBACKS; } });
48
+ var auth_service_1 = require("./auth/auth.service");
49
+ Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
50
+ Object.defineProperty(exports, "hashPassword", { enumerable: true, get: function () { return auth_service_1.hashPassword; } });
51
+ var auth_listener_1 = require("./auth/auth.listener");
52
+ Object.defineProperty(exports, "AUTH_LISTENER", { enumerable: true, get: function () { return auth_listener_1.AUTH_LISTENER; } });
53
+ var auth_callbacks_1 = require("./auth/auth.callbacks");
54
+ Object.defineProperty(exports, "AUTH_CALLBACKS", { enumerable: true, get: function () { return auth_callbacks_1.AUTH_CALLBACKS; } });
55
+ var configuration_1 = require("./configuration");
56
+ Object.defineProperty(exports, "CONFIGURATION", { enumerable: true, get: function () { return configuration_1.CONFIGURATION; } });
57
+ var search_service_1 = require("./search/search.service");
58
+ Object.defineProperty(exports, "SearchService", { enumerable: true, get: function () { return search_service_1.SearchService; } });
59
+ var searchable_repository_1 = require("./search/searchable.repository");
60
+ Object.defineProperty(exports, "SearchableRepository", { enumerable: true, get: function () { return searchable_repository_1.SearchableRepository; } });
61
+ tslib_1.__exportStar(require("./module"), exports);
62
+ tslib_1.__exportStar(require("./configure"), exports);
63
+ tslib_1.__exportStar(require("./context"), exports);
64
+ tslib_1.__exportStar(require("./util"), exports);
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,qCAA2E;AAAlE,qGAAA,UAAU,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,uGAAA,YAAY,OAAA;AAC/C,qDAA8D;AAArD,wGAAA,UAAU,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAC7B,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,qEAAmE;AAA1D,uHAAA,iBAAiB,OAAA;AAC1B,8DAA4D;AAAnD,mHAAA,eAAe,OAAA;AACxB,+CAAoH;AAAlG,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAA2C,+FAAA,IAAI,OAAA;AACtF,wCAA2C;AAAlC,kGAAA,SAAS,OAAA;AAElB,4DAAwD;AAA/C,iHAAA,aAAa,OAAA;AACtB,gDAAyF;AAAhF,uGAAA,SAAS,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,mGAAA,KAAK,OAAA;AAC7D,8DAAoC;AACpC,kDAA6D;AAAxC,0GAAA,WAAW,OAAA;AAChC,0DAA6G;AAApG,0HAAA,uBAAuB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAC5E,kFAA+E;AAAtE,wIAAA,yBAAyB,OAAA;AAClC,wEAAqE;AAA5D,8HAAA,oBAAoB,OAAA;AAC7B,kEAA+D;AAAtD,wHAAA,iBAAiB,OAAA;AAC1B,4DAA4E;AAAnE,oHAAA,gBAAgB,OAAA;AACzB,oDAAgE;AAAvD,2GAAA,WAAW,OAAA;AAAE,4GAAA,YAAY,OAAA;AAElC,sDAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,wDAAsE;AAA7D,gHAAA,cAAc,OAAA;AACvB,iDAA+D;AAAvC,8GAAA,aAAa,OAAA;AACrC,0DAAsE;AAA/C,+GAAA,aAAa,OAAA;AACpC,wEAAsE;AAA7D,6HAAA,oBAAoB,OAAA;AAC7B,mDAAyB;AACzB,sDAA4B;AAC5B,oDAA0B;AAC1B,iDAAuB"}
@@ -0,0 +1 @@
1
+ export { rootLogger, createLogger, BunyanLogger, Logger } from './logging';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BunyanLogger = exports.createLogger = exports.rootLogger = void 0;
4
+ var logging_1 = require("./logging");
5
+ Object.defineProperty(exports, "rootLogger", { enumerable: true, get: function () { return logging_1.rootLogger; } });
6
+ Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logging_1.createLogger; } });
7
+ Object.defineProperty(exports, "BunyanLogger", { enumerable: true, get: function () { return logging_1.BunyanLogger; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":";;;AAAA,qCAA2E;AAAlE,qGAAA,UAAU,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,uGAAA,YAAY,OAAA"}
@@ -0,0 +1,2 @@
1
+ import * as Logger from 'bunyan';
2
+ export declare const defaultLogger: Logger;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultLogger = void 0;
4
+ const Logger = require("bunyan");
5
+ const logging_bunyan_1 = require("@google-cloud/logging-bunyan");
6
+ let streams = [
7
+ {
8
+ stream: process.stdout,
9
+ },
10
+ ];
11
+ if (process.env.APP_ENGINE_ENVIRONMENT) {
12
+ const loggingBunyan = new logging_bunyan_1.LoggingBunyan();
13
+ streams = [loggingBunyan.stream('info')];
14
+ }
15
+ exports.defaultLogger = Logger.createLogger({
16
+ name: 'service',
17
+ level: 'info',
18
+ streams,
19
+ });
20
+ //# sourceMappingURL=logging-internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-internal.js","sourceRoot":"","sources":["../../src/logging/logging-internal.ts"],"names":[],"mappings":";;;AACA,iCAAiC;AACjC,iEAA6D;AAE7D,IAAI,OAAO,GAAwC;IACjD;QACE,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB;CACF,CAAC;AACF,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;IAE1C,OAAO,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC;AAEY,QAAA,aAAa,GAAW,MAAM,CAAC,YAAY,CAAC;IACvD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,MAAM;IACb,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { RequestScopeInterceptor } from '../request-scope';
2
+ import { Configuration } from '../configuration';
3
+ import { Request } from 'express';
4
+ import * as Logger from 'bunyan';
5
+ export declare const logger: () => Logger;
6
+ export interface RequestWithLog extends Request {
7
+ log?: Logger;
8
+ }
9
+ export declare class LoggingRequestScopeInterceptor implements RequestScopeInterceptor {
10
+ readonly name: string;
11
+ private static enabled;
12
+ constructor(configurationProvider: Configuration);
13
+ intercept(req: RequestWithLog): void;
14
+ static isEnabled(): boolean;
15
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var LoggingRequestScopeInterceptor_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LoggingRequestScopeInterceptor = exports.logger = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const request_scope_1 = require("../request-scope");
7
+ const common_1 = require("@nestjs/common");
8
+ const configuration_1 = require("../configuration");
9
+ const logging_internal_1 = require("./logging-internal");
10
+ const key = '_LOGGER';
11
+ const logger = () => LoggingRequestScopeInterceptor.isEnabled() ? (0, request_scope_1.getRequestScopeValueOrDefault)(key, logging_internal_1.defaultLogger) : logging_internal_1.defaultLogger;
12
+ exports.logger = logger;
13
+ let LoggingRequestScopeInterceptor = LoggingRequestScopeInterceptor_1 = class LoggingRequestScopeInterceptor {
14
+ constructor(configurationProvider) {
15
+ var _a;
16
+ this.name = 'LoggingRequestScopeInterceptor';
17
+ LoggingRequestScopeInterceptor_1.enabled = !!((_a = configurationProvider.requestScope) === null || _a === void 0 ? void 0 : _a.logBundlingEnabled);
18
+ }
19
+ intercept(req) {
20
+ if (LoggingRequestScopeInterceptor_1.enabled && req.log) {
21
+ (0, request_scope_1.setRequestScopeValue)(key, req.log);
22
+ }
23
+ else {
24
+ if (process.env.APP_ENGINE_ENVIRONMENT) {
25
+ logging_internal_1.defaultLogger.warn(`${this.name}: Logger does not exist on Request, so cannot set it within request scope.`);
26
+ }
27
+ }
28
+ }
29
+ static isEnabled() {
30
+ return LoggingRequestScopeInterceptor_1.enabled;
31
+ }
32
+ };
33
+ exports.LoggingRequestScopeInterceptor = LoggingRequestScopeInterceptor;
34
+ exports.LoggingRequestScopeInterceptor = LoggingRequestScopeInterceptor = LoggingRequestScopeInterceptor_1 = tslib_1.__decorate([
35
+ (0, common_1.Injectable)(),
36
+ tslib_1.__param(0, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
37
+ tslib_1.__metadata("design:paramtypes", [Object])
38
+ ], LoggingRequestScopeInterceptor);
39
+ //# sourceMappingURL=logging-request-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-request-scope.js","sourceRoot":"","sources":["../../src/logging/logging-request-scope.ts"],"names":[],"mappings":";;;;;AAAA,oDAAgH;AAChH,2CAAoD;AACpD,oDAAgE;AAGhE,yDAAmD;AAEnD,MAAM,GAAG,GAAG,SAAS,CAAC;AACf,MAAM,MAAM,GAAG,GAAG,EAAE,CAEzB,8BAA8B,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAA,6CAA6B,EAAC,GAAG,EAAE,gCAAa,CAAC,CAAC,CAAC,CAAC,gCAAa,CAAC;AAFpG,QAAA,MAAM,UAE8F;AAO1G,IAAM,8BAA8B,sCAApC,MAAM,8BAA8B;IAIzC,YAAmC,qBAAoC;;QAH9D,SAAI,GAAW,gCAAgC,CAAC;QAIvD,gCAA8B,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA,MAAA,qBAAqB,CAAC,YAAY,0CAAE,kBAAkB,CAAA,CAAC;IACpG,CAAC;IAED,SAAS,CAAC,GAAmB;QAE3B,IAAI,gCAA8B,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACtD,IAAA,oCAAoB,EAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;gBAEvC,gCAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,4EAA4E,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,gCAA8B,CAAC,OAAO,CAAC;IAChD,CAAC;CACF,CAAA;AAvBY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;IAKE,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAJvB,8BAA8B,CAuB1C"}
@@ -0,0 +1,34 @@
1
+ import { LoggerService } from '@nestjs/common';
2
+ export interface Logger {
3
+ trace(): boolean;
4
+ trace(error: Error, ...params: any[]): void;
5
+ trace(obj: object, ...params: any[]): void;
6
+ trace(format: any, ...params: any[]): void;
7
+ debug(): boolean;
8
+ debug(error: Error, ...params: any[]): void;
9
+ debug(obj: object, ...params: any[]): void;
10
+ debug(format: any, ...params: any[]): void;
11
+ info(): boolean;
12
+ info(error: Error, ...params: any[]): void;
13
+ info(obj: object, ...params: any[]): void;
14
+ info(format: any, ...params: any[]): void;
15
+ warn(): boolean;
16
+ warn(error: Error, ...params: any[]): void;
17
+ warn(obj: object, ...params: any[]): void;
18
+ warn(format: any, ...params: any[]): void;
19
+ error(): boolean;
20
+ error(error: Error, ...params: any[]): void;
21
+ error(obj: object, ...params: any[]): void;
22
+ error(format: any, ...params: any[]): void;
23
+ fatal(): boolean;
24
+ fatal(error: Error, ...params: any[]): void;
25
+ fatal(obj: object, ...params: any[]): void;
26
+ fatal(format: any, ...params: any[]): void;
27
+ }
28
+ export declare const rootLogger: Logger;
29
+ export declare const createLogger: (name: string) => Logger;
30
+ export declare class BunyanLogger implements LoggerService {
31
+ log(message: string): void;
32
+ error(message: string, trace: string): void;
33
+ warn(message: string): void;
34
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BunyanLogger = exports.createLogger = exports.rootLogger = void 0;
4
+ const logging_request_scope_1 = require("./logging-request-scope");
5
+ class LoggerImpl {
6
+ constructor(name) {
7
+ this.prefix = name ? `${name}: ` : '';
8
+ }
9
+ debug(formatOrObjOrErr, ...params) {
10
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
11
+ return params.length ? (0, logging_request_scope_1.logger)().debug(firstParam, ...params) : (0, logging_request_scope_1.logger)().debug(firstParam);
12
+ }
13
+ error(formatOrObjOrErr, ...params) {
14
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
15
+ return params.length ? (0, logging_request_scope_1.logger)().error(firstParam, ...params) : (0, logging_request_scope_1.logger)().error(firstParam);
16
+ }
17
+ fatal(formatOrObjOrErr, ...params) {
18
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
19
+ return params.length ? (0, logging_request_scope_1.logger)().fatal(firstParam, ...params) : (0, logging_request_scope_1.logger)().fatal(firstParam);
20
+ }
21
+ info(formatOrObjOrErr, ...params) {
22
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
23
+ return params.length ? (0, logging_request_scope_1.logger)().info(firstParam, ...params) : (0, logging_request_scope_1.logger)().info(firstParam);
24
+ }
25
+ trace(formatOrObjOrErr, ...params) {
26
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
27
+ return params.length ? (0, logging_request_scope_1.logger)().trace(firstParam, ...params) : (0, logging_request_scope_1.logger)().trace(firstParam);
28
+ }
29
+ warn(formatOrObjOrErr, ...params) {
30
+ const firstParam = this.prefixIfString(formatOrObjOrErr);
31
+ return params.length ? (0, logging_request_scope_1.logger)().warn(firstParam, ...params) : (0, logging_request_scope_1.logger)().warn(firstParam);
32
+ }
33
+ prefixIfString(param) {
34
+ if (typeof param === 'string') {
35
+ return `${this.prefix}${param}`;
36
+ }
37
+ return param;
38
+ }
39
+ }
40
+ exports.rootLogger = new LoggerImpl();
41
+ const createLogger = (name) => new LoggerImpl(name);
42
+ exports.createLogger = createLogger;
43
+ class BunyanLogger {
44
+ log(message) {
45
+ exports.rootLogger.info(message);
46
+ }
47
+ error(message, trace) {
48
+ exports.rootLogger.error(message, { errorTrace: trace });
49
+ }
50
+ warn(message) {
51
+ exports.rootLogger.warn(message);
52
+ }
53
+ }
54
+ exports.BunyanLogger = BunyanLogger;
55
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/logging/logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { StoredCredentialsRepository } from './stored.credentials.repository';
2
+ import { Configuration, Context } from '../..';
3
+ import { DatastoreProvider } from '../../datastore/datastore.provider';
4
+ export declare class GmailConfigurer {
5
+ private readonly storedCredentialsRepository;
6
+ private readonly datastoreProvider;
7
+ private readonly configuration;
8
+ private readonly logger;
9
+ constructor(storedCredentialsRepository: StoredCredentialsRepository, datastoreProvider: DatastoreProvider, configuration: Configuration);
10
+ authenticate(): any;
11
+ getCredential(context: Context): Promise<{
12
+ id: string;
13
+ value: string;
14
+ } | undefined>;
15
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GmailConfigurer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const passport = require("passport");
7
+ const stored_credentials_repository_1 = require("./stored.credentials.repository");
8
+ const __1 = require("../..");
9
+ const datastore_provider_1 = require("../../datastore/datastore.provider");
10
+ const context_1 = require("../../datastore/context");
11
+ const configuration_1 = require("../../configuration");
12
+ const GoogleStrategy = require('passport-google-oauth20').Strategy;
13
+ let GmailConfigurer = class GmailConfigurer {
14
+ constructor(storedCredentialsRepository, datastoreProvider, configuration) {
15
+ this.storedCredentialsRepository = storedCredentialsRepository;
16
+ this.datastoreProvider = datastoreProvider;
17
+ this.configuration = configuration;
18
+ this.logger = (0, __1.createLogger)('gmail-configurer');
19
+ if (this.configuration.auth.google && this.configuration.auth.google.enabled) {
20
+ passport.use('google-gmail', new GoogleStrategy({
21
+ clientID: this.configuration.auth.google.clientId,
22
+ clientSecret: this.configuration.auth.google.secret,
23
+ callbackURL: `${this.configuration.host}/system/gmail/setup/oauth2callback`,
24
+ userProfileURL: 'https://www.googleapis.com/oauth2/v3/userinfo',
25
+ }, (accessToken, refreshToken, profile, done) => {
26
+ this.logger.info(`Gmail OAuth complete. Saving credentials.`);
27
+ storedCredentialsRepository
28
+ .save((0, context_1.newContext)(this.datastoreProvider.datastore), {
29
+ id: 'gmail-credential',
30
+ value: refreshToken,
31
+ })
32
+ .then(() => {
33
+ this.logger.info(`Gmail OAuth complete and credentials have been saved.`);
34
+ return done(null, { refreshToken });
35
+ })
36
+ .catch(err => done(err, { refreshToken }));
37
+ }));
38
+ }
39
+ }
40
+ authenticate() {
41
+ const options = {
42
+ scope: ['https://mail.google.com/', 'openid profile'],
43
+ prompt: 'consent',
44
+ accessType: 'offline',
45
+ };
46
+ return passport.authenticate('google-gmail', options);
47
+ }
48
+ getCredential(context) {
49
+ return this.storedCredentialsRepository.get(context, 'gmail-credential');
50
+ }
51
+ };
52
+ exports.GmailConfigurer = GmailConfigurer;
53
+ exports.GmailConfigurer = GmailConfigurer = tslib_1.__decorate([
54
+ (0, common_1.Injectable)(),
55
+ tslib_1.__param(2, (0, common_1.Inject)(configuration_1.CONFIGURATION)),
56
+ tslib_1.__metadata("design:paramtypes", [stored_credentials_repository_1.StoredCredentialsRepository,
57
+ datastore_provider_1.DatastoreProvider, Object])
58
+ ], GmailConfigurer);
59
+ //# sourceMappingURL=gmail.configurer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.configurer.js","sourceRoot":"","sources":["../../../src/mail/gmail/gmail.configurer.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AACpD,qCAAqC;AACrC,mFAA8E;AAC9E,6BAA6D;AAC7D,2EAAuE;AACvE,qDAAqD;AACrD,uDAAoD;AAGpD,MAAM,cAAc,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC;AAG5D,IAAM,eAAe,GAArB,MAAM,eAAe;IAG1B,YACmB,2BAAwD,EACxD,iBAAoC,EAC9B,aAA6C;QAFnD,gCAA2B,GAA3B,2BAA2B,CAA6B;QACxD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACb,kBAAa,GAAb,aAAa,CAAe;QALrD,WAAM,GAAG,IAAA,gBAAY,EAAC,kBAAkB,CAAC,CAAC;QAOzD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7E,QAAQ,CAAC,GAAG,CACV,cAAc,EACd,IAAI,cAAc,CAChB;gBACE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACjD,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBACnD,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,oCAAoC;gBAC3E,cAAc,EAAE,+CAA+C;aAChE,EAED,CAAC,WAAmB,EAAE,YAAoB,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE;gBAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;gBAC9D,2BAA2B;qBACxB,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;oBAClD,EAAE,EAAE,kBAAkB;oBACtB,KAAK,EAAE,YAAY;iBACpB,CAAC;qBACD,IAAI,CAAC,GAAG,EAAE;oBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;oBAC1E,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC,CACF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,YAAY;QACV,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;YACrD,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,OAAO,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CAAC,OAAgB;QAC5B,OAAO,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC3E,CAAC;CACF,CAAA;AAjDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAOR,mBAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;6CAFwB,2DAA2B;QACrC,sCAAiB;GAL5C,eAAe,CAiD3B"}
@@ -0,0 +1,9 @@
1
+ import { Request, Response } from 'express';
2
+ import { GmailConfigurer } from './gmail.configurer';
3
+ export declare class GmailController {
4
+ private readonly gmailConfigurer;
5
+ private readonly logger;
6
+ constructor(gmailConfigurer: GmailConfigurer);
7
+ setupGmailOAuth(request: Request, response: Response): void;
8
+ oauthCallback(request: Request, response: Response): void;
9
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GmailController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const __1 = require("../..");
7
+ const auth_guard_1 = require("../../auth/auth.guard");
8
+ const passport = require("passport");
9
+ const gmail_configurer_1 = require("./gmail.configurer");
10
+ let GmailController = class GmailController {
11
+ constructor(gmailConfigurer) {
12
+ this.gmailConfigurer = gmailConfigurer;
13
+ this.logger = (0, __1.createLogger)('gmail-controller');
14
+ }
15
+ setupGmailOAuth(request, response) {
16
+ const authenticateRet = this.gmailConfigurer.authenticate();
17
+ authenticateRet(request, response, (err) => {
18
+ this.logger.error(err);
19
+ });
20
+ }
21
+ oauthCallback(request, response) {
22
+ const authenticateRet = passport.authenticate('google-gmail', {
23
+ failureRedirect: '/',
24
+ });
25
+ authenticateRet(request, response, () => {
26
+ const user = request.user;
27
+ this.logger.info(`Gmail OAuth done. request.user.refreshToken property exists is: ${request.user && !!user.refreshToken}`);
28
+ if (!request.user) {
29
+ response.send('Gmail OAuth setup FAILED.');
30
+ }
31
+ else if (!user.refreshToken) {
32
+ response.send('Gmail OAuth incomplete - credentials have not been saved.');
33
+ }
34
+ else {
35
+ response.send('Gmail OAuth completed!');
36
+ }
37
+ });
38
+ }
39
+ };
40
+ exports.GmailController = GmailController;
41
+ tslib_1.__decorate([
42
+ (0, common_1.Get)('setup'),
43
+ tslib_1.__param(0, (0, common_1.Req)()),
44
+ tslib_1.__param(1, (0, common_1.Res)()),
45
+ tslib_1.__metadata("design:type", Function),
46
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
47
+ tslib_1.__metadata("design:returntype", void 0)
48
+ ], GmailController.prototype, "setupGmailOAuth", null);
49
+ tslib_1.__decorate([
50
+ (0, common_1.Get)('setup/oauth2callback'),
51
+ tslib_1.__param(0, (0, common_1.Req)()),
52
+ tslib_1.__param(1, (0, common_1.Res)()),
53
+ tslib_1.__metadata("design:type", Function),
54
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
55
+ tslib_1.__metadata("design:returntype", void 0)
56
+ ], GmailController.prototype, "oauthCallback", null);
57
+ exports.GmailController = GmailController = tslib_1.__decorate([
58
+ (0, auth_guard_1.Roles)('super'),
59
+ (0, common_1.Controller)('system/gmail'),
60
+ tslib_1.__metadata("design:paramtypes", [gmail_configurer_1.GmailConfigurer])
61
+ ], GmailController);
62
+ //# sourceMappingURL=gmail.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.controller.js","sourceRoot":"","sources":["../../../src/mail/gmail/gmail.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAA2D;AAE3D,6BAAqC;AACrC,sDAA8C;AAC9C,qCAAqC;AACrC,yDAAqD;AAI9C,IAAM,eAAe,GAArB,MAAM,eAAe;IAG1B,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAF5C,WAAM,GAAG,IAAA,gBAAY,EAAC,kBAAkB,CAAC,CAAC;IAEK,CAAC;IAGjE,eAAe,CAAQ,OAAgB,EAAS,QAAkB;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAC5D,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,aAAa,CAAQ,OAAgB,EAAS,QAAkB;QAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE;YAC5D,eAAe,EAAE,GAAG;SACrB,CAAC,CAAC;QAEH,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAW,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mEAAmE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CACzG,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAlCY,0CAAe;AAM1B;IADC,IAAA,YAAG,EAAC,OAAO,CAAC;IACI,mBAAA,IAAA,YAAG,GAAE,CAAA;IAAoB,mBAAA,IAAA,YAAG,GAAE,CAAA;;;;sDAK9C;AAGD;IADC,IAAA,YAAG,EAAC,sBAAsB,CAAC;IACb,mBAAA,IAAA,YAAG,GAAE,CAAA;IAAoB,mBAAA,IAAA,YAAG,GAAE,CAAA;;;;oDAmB5C;0BAjCU,eAAe;IAF3B,IAAA,kBAAK,EAAC,OAAO,CAAC;IACd,IAAA,mBAAU,EAAC,cAAc,CAAC;6CAIqB,kCAAe;GAHlD,eAAe,CAkC3B"}
@@ -0,0 +1,12 @@
1
+ import { MailSender } from '../mail.sender';
2
+ import { GmailConfigurer } from './gmail.configurer';
3
+ import { Options } from 'nodemailer/lib/mailer';
4
+ import { Configuration } from '../../configuration';
5
+ import { Context } from '../../datastore/context';
6
+ export declare class GmailSender implements MailSender {
7
+ private readonly gmailConfigurer;
8
+ private readonly configurationProvider;
9
+ private logger;
10
+ constructor(gmailConfigurer: GmailConfigurer, configurationProvider: Configuration);
11
+ send(context: Context, mailOptions: Options): Promise<void>;
12
+ }