@goatlab/node-backend 0.0.15 → 0.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.
Files changed (126) hide show
  1. package/README.md +54 -38
  2. package/dist/container/Container.d.ts +441 -0
  3. package/dist/container/Container.js +895 -0
  4. package/dist/container/Container.js.map +1 -0
  5. package/dist/container/DistributedCacheInvalidator.d.ts +84 -0
  6. package/dist/container/DistributedCacheInvalidator.js +213 -0
  7. package/dist/container/DistributedCacheInvalidator.js.map +1 -0
  8. package/dist/container/LruCache.d.ts +14 -0
  9. package/dist/container/LruCache.js +23 -0
  10. package/dist/container/LruCache.js.map +1 -0
  11. package/dist/container/types.d.ts +128 -0
  12. package/dist/container/types.js +6 -0
  13. package/dist/container/types.js.map +1 -0
  14. package/dist/index.d.ts +31 -0
  15. package/dist/index.js +53 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/server/bootstraps/getExpressTrpcApp.d.ts +17 -0
  18. package/dist/server/bootstraps/getExpressTrpcApp.js +98 -0
  19. package/dist/server/bootstraps/getExpressTrpcApp.js.map +1 -0
  20. package/dist/server/consts.d.ts +35 -0
  21. package/dist/server/consts.js +33 -0
  22. package/dist/server/consts.js.map +1 -0
  23. package/dist/server/context/context.model.d.ts +13 -0
  24. package/dist/server/context/context.model.js +3 -0
  25. package/dist/server/context/context.model.js.map +1 -0
  26. package/dist/server/context/request.context.d.ts +40 -0
  27. package/dist/server/context/request.context.js +65 -0
  28. package/dist/server/context/request.context.js.map +1 -0
  29. package/dist/server/context/trpc.context.d.ts +11 -0
  30. package/dist/server/context/trpc.context.js +67 -0
  31. package/dist/server/context/trpc.context.js.map +1 -0
  32. package/dist/server/initOpenApiDocs.d.ts +9 -0
  33. package/dist/server/initOpenApiDocs.js +18 -0
  34. package/dist/server/initOpenApiDocs.js.map +1 -0
  35. package/dist/server/middleware/cloudTaskDecrypt.middleware.d.ts +6 -0
  36. package/dist/server/middleware/cloudTaskDecrypt.middleware.js +44 -0
  37. package/dist/server/middleware/cloudTaskDecrypt.middleware.js.map +1 -0
  38. package/dist/server/middleware/error.middleware.d.ts +17 -0
  39. package/dist/server/middleware/error.middleware.js +66 -0
  40. package/dist/server/middleware/error.middleware.js.map +1 -0
  41. package/dist/server/middleware/handleRequest.middleware.d.ts +7 -0
  42. package/dist/server/middleware/handleRequest.middleware.js +40 -0
  43. package/dist/server/middleware/handleRequest.middleware.js.map +1 -0
  44. package/dist/server/middleware/logger/cloudRun.logger.d.ts +27 -0
  45. package/dist/server/middleware/logger/cloudRun.logger.js +87 -0
  46. package/dist/server/middleware/logger/cloudRun.logger.js.map +1 -0
  47. package/dist/server/middleware/logger/logger.service.d.ts +6 -0
  48. package/dist/server/middleware/logger/logger.service.js +17 -0
  49. package/dist/server/middleware/logger/logger.service.js.map +1 -0
  50. package/dist/server/middleware/logs.middleware.d.ts +7 -0
  51. package/dist/server/middleware/logs.middleware.js +130 -0
  52. package/dist/server/middleware/logs.middleware.js.map +1 -0
  53. package/dist/server/middleware/requireAuthenticated.d.ts +2 -0
  54. package/dist/server/middleware/requireAuthenticated.js +13 -0
  55. package/dist/server/middleware/requireAuthenticated.js.map +1 -0
  56. package/dist/server/middleware/trpcError.middleware.d.ts +4 -0
  57. package/dist/server/middleware/trpcError.middleware.js +38 -0
  58. package/dist/server/middleware/trpcError.middleware.js.map +1 -0
  59. package/dist/server/schemas/user.schema.d.ts +109 -0
  60. package/dist/server/schemas/user.schema.js +28 -0
  61. package/dist/server/schemas/user.schema.js.map +1 -0
  62. package/dist/server/sentry/getSentry.d.ts +6 -0
  63. package/dist/server/sentry/getSentry.js +45 -0
  64. package/dist/server/sentry/getSentry.js.map +1 -0
  65. package/dist/server/sentry/sentry.service.d.ts +34 -0
  66. package/dist/server/sentry/sentry.service.js +110 -0
  67. package/dist/server/sentry/sentry.service.js.map +1 -0
  68. package/dist/server/services/email/email.model.d.ts +84 -0
  69. package/dist/server/services/email/email.model.js +62 -0
  70. package/dist/server/services/email/email.model.js.map +1 -0
  71. package/dist/server/services/email/email.service.d.ts +23 -0
  72. package/dist/server/services/email/email.service.js +139 -0
  73. package/dist/server/services/email/email.service.js.map +1 -0
  74. package/dist/server/services/gcp/getGcpServiceAccountFromBase64.d.ts +15 -0
  75. package/dist/server/services/gcp/getGcpServiceAccountFromBase64.js +9 -0
  76. package/dist/server/services/gcp/getGcpServiceAccountFromBase64.js.map +1 -0
  77. package/dist/server/services/secrets/secret.service.d.ts +31 -0
  78. package/dist/server/services/secrets/secret.service.js +172 -0
  79. package/dist/server/services/secrets/secret.service.js.map +1 -0
  80. package/dist/server/services/sendgrid/sendgrid.model.d.ts +118 -0
  81. package/dist/server/services/sendgrid/sendgrid.model.js +3 -0
  82. package/dist/server/services/sendgrid/sendgrid.model.js.map +1 -0
  83. package/dist/server/services/sendgrid/sendgridApi.service.d.ts +13 -0
  84. package/dist/server/services/sendgrid/sendgridApi.service.js +79 -0
  85. package/dist/server/services/sendgrid/sendgridApi.service.js.map +1 -0
  86. package/dist/server/services/sendgrid/sendgridHooks.model.d.ts +27 -0
  87. package/dist/server/services/sendgrid/sendgridHooks.model.js +19 -0
  88. package/dist/server/services/sendgrid/sendgridHooks.model.js.map +1 -0
  89. package/dist/server/services/translations/template.util.d.ts +7 -0
  90. package/dist/server/services/translations/template.util.js +11 -0
  91. package/dist/server/services/translations/template.util.js.map +1 -0
  92. package/dist/server/services/translations/translation.model.d.ts +4 -0
  93. package/dist/server/services/translations/translation.model.js +6 -0
  94. package/dist/server/services/translations/translation.model.js.map +1 -0
  95. package/dist/server/services/translations/translation.service.d.ts +25 -0
  96. package/dist/server/services/translations/translation.service.js +97 -0
  97. package/dist/server/services/translations/translation.service.js.map +1 -0
  98. package/dist/server/services/util/benchmarker.d.ts +13 -0
  99. package/dist/server/services/util/benchmarker.js +34 -0
  100. package/dist/server/services/util/benchmarker.js.map +1 -0
  101. package/dist/server/services/util/pagination.d.ts +50 -0
  102. package/dist/server/services/util/pagination.js +57 -0
  103. package/dist/server/services/util/pagination.js.map +1 -0
  104. package/dist/server/services/util/url.service.d.ts +75 -0
  105. package/dist/server/services/util/url.service.js +139 -0
  106. package/dist/server/services/util/url.service.js.map +1 -0
  107. package/dist/server/test/express.mock.d.ts +6 -0
  108. package/dist/server/test/express.mock.js +49 -0
  109. package/dist/server/test/express.mock.js.map +1 -0
  110. package/dist/server/test/firebase.mock.d.ts +4 -0
  111. package/dist/server/test/firebase.mock.js +30 -0
  112. package/dist/server/test/firebase.mock.js.map +1 -0
  113. package/dist/server/test/mock.model.d.ts +5 -0
  114. package/dist/server/test/mock.model.js +3 -0
  115. package/dist/server/test/mock.model.js.map +1 -0
  116. package/dist/server/test/trpc.mock.d.ts +6 -0
  117. package/dist/server/test/trpc.mock.js +14 -0
  118. package/dist/server/test/trpc.mock.js.map +1 -0
  119. package/dist/server/trpc.d.ts +364 -0
  120. package/dist/server/trpc.js +87 -0
  121. package/dist/server/trpc.js.map +1 -0
  122. package/dist/server/types/Envinronment.d.ts +1 -0
  123. package/dist/server/types/Envinronment.js +3 -0
  124. package/dist/server/types/Envinronment.js.map +1 -0
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +33 -3
@@ -0,0 +1,75 @@
1
+ import type { Environment } from '../../types/Envinronment';
2
+ interface UrlServiceProps {
3
+ isMobile?: boolean;
4
+ useIP?: boolean;
5
+ preferPublicIp?: boolean;
6
+ }
7
+ export type PaymentSuccessRedirectURL = `${string}/payment/processed?orderId=${string}`;
8
+ export type PaymentFailedRedirectURL = `${string}/payment/cancelled?paymentFailed=true&orderId=${string}`;
9
+ export type PaymentCancelledRedirectURL = `${string}/payment/cancelled?orderId=${string}`;
10
+ export declare class UrlService {
11
+ publicBucketName: string;
12
+ privateBucketName: string;
13
+ baseDomain: string;
14
+ backendApiBaseUrl: string;
15
+ environment: Environment;
16
+ constructor({ publicBucketName, privateBucketName, baseDomain, backendApiBaseUrl, environment, }: {
17
+ publicBucketName: string;
18
+ privateBucketName: string;
19
+ baseDomain: string;
20
+ backendApiBaseUrl: string;
21
+ environment: Environment;
22
+ });
23
+ getBackendUrl: ({ isMobile, useIP }?: UrlServiceProps) => string;
24
+ /**
25
+ * When running locally, the storage can be accessed
26
+ * either using localhost, the localIp of the host or Nginx URL
27
+ *
28
+ * We mainly use this for local testing as Chrome forces us to have
29
+ * an HTTPS endpoint to upload assets to the Firebase Emulator
30
+ * @returns
31
+ */
32
+ getLocalStorageHostUrl: ({ isMobile, useIP, }: UrlServiceProps) => Promise<string>;
33
+ getPublicStorageUrl: ({ isMobile, useIP }: UrlServiceProps) => Promise<string>;
34
+ getPrivateStorageUrl: ({ isMobile, useIP, }: UrlServiceProps) => Promise<string>;
35
+ getFrontendUrl: () => string;
36
+ /**
37
+ * Decides where to send the user back after the payment has been completed
38
+ * if we already decided on an origin, it will use that origin
39
+ *
40
+ * @param origin
41
+ * @returns
42
+ */
43
+ getFrontendRedirectURL(origin?: string): string;
44
+ /**
45
+ * Decides which backend the payment provider should reply to
46
+ * It can be either dev, prod or local. Transbank queries the backend from
47
+ * the frontend, so you will still be able to use local urls
48
+ * @param origin
49
+ * @returns
50
+ */
51
+ getBackendRedirectURLForTransBankPayments({ origin, orderId, storeId, }: {
52
+ origin?: string;
53
+ orderId?: string;
54
+ storeId?: string;
55
+ }): string;
56
+ /**
57
+ * Redirección de pago exitoso
58
+ * @param origin
59
+ * @param orderId
60
+ */
61
+ getPaymentSuccessRedirectURL(origin: string | undefined, orderId: string): PaymentSuccessRedirectURL;
62
+ /**
63
+ * Redirección de pago con error (fallo en commit, etc)
64
+ * @param origin
65
+ * @param orderId
66
+ */
67
+ getPaymentFailedRedirectURL(origin: string | undefined, orderId: string): PaymentFailedRedirectURL;
68
+ /**
69
+ * Redirección de pago cancelado por el usuario
70
+ * @param origin
71
+ * @param orderId
72
+ */
73
+ getPaymentCancelledRedirectURL(origin: string | undefined, orderId: string): PaymentCancelledRedirectURL;
74
+ }
75
+ export {};
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrlService = void 0;
4
+ const node_utils_1 = require("@goatlab/node-utils");
5
+ const localIpAddress = node_utils_1.Ips.getLocalIpAddress();
6
+ class UrlService {
7
+ publicBucketName;
8
+ privateBucketName;
9
+ baseDomain;
10
+ backendApiBaseUrl;
11
+ environment;
12
+ constructor({ publicBucketName, privateBucketName, baseDomain, backendApiBaseUrl, environment, }) {
13
+ this.publicBucketName = publicBucketName;
14
+ this.privateBucketName = privateBucketName;
15
+ this.baseDomain = baseDomain;
16
+ this.backendApiBaseUrl = backendApiBaseUrl;
17
+ this.environment = environment;
18
+ }
19
+ getBackendUrl = ({ isMobile, useIP } = { isMobile: false, useIP: false }) => {
20
+ if (this.environment === 'local') {
21
+ return this.backendApiBaseUrl;
22
+ }
23
+ if (isMobile || useIP) {
24
+ return `http://${localIpAddress}:8086`;
25
+ }
26
+ return `https://api.a.getsodium.com`;
27
+ };
28
+ /**
29
+ * When running locally, the storage can be accessed
30
+ * either using localhost, the localIp of the host or Nginx URL
31
+ *
32
+ * We mainly use this for local testing as Chrome forces us to have
33
+ * an HTTPS endpoint to upload assets to the Firebase Emulator
34
+ * @returns
35
+ */
36
+ getLocalStorageHostUrl = async ({ isMobile, useIP, }) => {
37
+ if (isMobile || useIP) {
38
+ return `http://${localIpAddress}:9199`;
39
+ }
40
+ return `https://assets.a.getsodium.com`;
41
+ };
42
+ getPublicStorageUrl = async ({ isMobile, useIP }) => {
43
+ if (this.environment === 'local') {
44
+ const storageServiceUrl = await this.getLocalStorageHostUrl({
45
+ isMobile,
46
+ useIP,
47
+ });
48
+ return `${storageServiceUrl}/${this.publicBucketName}`;
49
+ }
50
+ if (this.environment === 'prod') {
51
+ return `https://assets.${this.baseDomain}`;
52
+ }
53
+ return `https://assets-dev.${this.baseDomain}`;
54
+ };
55
+ getPrivateStorageUrl = async ({ isMobile, useIP, }) => {
56
+ if (this.environment === 'local') {
57
+ const storageServiceUrl = await this.getLocalStorageHostUrl({
58
+ isMobile,
59
+ useIP,
60
+ });
61
+ return `${storageServiceUrl}/${this.privateBucketName}`;
62
+ }
63
+ if (this.environment === 'prod') {
64
+ return `https://private-assets.${this.baseDomain}`;
65
+ }
66
+ return `https://private-assets-dev.${this.baseDomain}`;
67
+ };
68
+ getFrontendUrl = () => {
69
+ if (this.environment === 'local') {
70
+ return 'https://frontend.a.getsodium.com';
71
+ }
72
+ if (this.environment === 'prod') {
73
+ return `https://dev.${this.baseDomain}`;
74
+ }
75
+ return `https://${this.baseDomain}`;
76
+ };
77
+ /**
78
+ * Decides where to send the user back after the payment has been completed
79
+ * if we already decided on an origin, it will use that origin
80
+ *
81
+ * @param origin
82
+ * @returns
83
+ */
84
+ getFrontendRedirectURL(origin) {
85
+ // This is the frontend url
86
+ const baseRedirect = origin ||
87
+ // Just in case origin is not provided (should not happen)
88
+ (this.environment === 'prod'
89
+ ? `https://${this.baseDomain}`
90
+ : // DEV running in cloud run
91
+ this.environment === 'dev' && process.env.K_SERVICE
92
+ ? `https://dev.${this.baseDomain}`
93
+ : 'https://localhost:4430');
94
+ return baseRedirect;
95
+ }
96
+ /**
97
+ * Decides which backend the payment provider should reply to
98
+ * It can be either dev, prod or local. Transbank queries the backend from
99
+ * the frontend, so you will still be able to use local urls
100
+ * @param origin
101
+ * @returns
102
+ */
103
+ getBackendRedirectURLForTransBankPayments({ origin, orderId, storeId, }) {
104
+ const redirectUrl = this.getBackendUrl({
105
+ useIP: true,
106
+ preferPublicIp: true,
107
+ });
108
+ return `${redirectUrl}/payments/process?origin=${origin}&storeId=${storeId}&orderId=${orderId}`;
109
+ }
110
+ /**
111
+ * Redirección de pago exitoso
112
+ * @param origin
113
+ * @param orderId
114
+ */
115
+ getPaymentSuccessRedirectURL(origin, orderId) {
116
+ const base = this.getFrontendRedirectURL(origin);
117
+ return `${base}/payment/processed?orderId=${encodeURIComponent(orderId)}`;
118
+ }
119
+ /**
120
+ * Redirección de pago con error (fallo en commit, etc)
121
+ * @param origin
122
+ * @param orderId
123
+ */
124
+ getPaymentFailedRedirectURL(origin, orderId) {
125
+ const base = this.getFrontendRedirectURL(origin);
126
+ return `${base}/payment/cancelled?paymentFailed=true&orderId=${encodeURIComponent(orderId)}`;
127
+ }
128
+ /**
129
+ * Redirección de pago cancelado por el usuario
130
+ * @param origin
131
+ * @param orderId
132
+ */
133
+ getPaymentCancelledRedirectURL(origin, orderId) {
134
+ const base = this.getFrontendRedirectURL(origin);
135
+ return `${base}/payment/cancelled?orderId=${encodeURIComponent(orderId)}`;
136
+ }
137
+ }
138
+ exports.UrlService = UrlService;
139
+ //# sourceMappingURL=url.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.service.js","sourceRoot":"","sources":["../../../../src/server/services/util/url.service.ts"],"names":[],"mappings":";;;AAAA,oDAAyC;AAgBzC,MAAM,cAAc,GAAG,gBAAG,CAAC,iBAAiB,EAAE,CAAA;AAE9C,MAAa,UAAU;IACrB,gBAAgB,CAAQ;IACxB,iBAAiB,CAAQ;IACzB,UAAU,CAAQ;IAClB,iBAAiB,CAAQ;IACzB,WAAW,CAAa;IAExB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,WAAW,GAOZ;QACC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IACM,aAAa,GAAG,CACrB,EAAE,QAAQ,EAAE,KAAK,KAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EACxE,EAAE;QACF,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,iBAAiB,CAAA;QAC/B,CAAC;QAED,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,UAAU,cAAc,OAAO,CAAA;QACxC,CAAC;QAED,OAAO,6BAA6B,CAAA;IACtC,CAAC,CAAA;IAED;;;;;;;OAOG;IACI,sBAAsB,GAAG,KAAK,EAAE,EACrC,QAAQ,EACR,KAAK,GACW,EAAmB,EAAE;QACrC,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,OAAO,UAAU,cAAc,OAAO,CAAA;QACxC,CAAC;QACD,OAAO,gCAAgC,CAAA;IACzC,CAAC,CAAA;IAEM,mBAAmB,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAmB,EAAE,EAAE;QAC1E,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBAC1D,QAAQ;gBACR,KAAK;aACN,CAAC,CAAA;YAEF,OAAO,GAAG,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACxD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAA;QAC5C,CAAC;QAED,OAAO,sBAAsB,IAAI,CAAC,UAAU,EAAE,CAAA;IAChD,CAAC,CAAA;IAEM,oBAAoB,GAAG,KAAK,EAAE,EACnC,QAAQ,EACR,KAAK,GACW,EAAE,EAAE;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC;gBAC1D,QAAQ;gBACR,KAAK;aACN,CAAC,CAAA;YAEF,OAAO,GAAG,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,0BAA0B,IAAI,CAAC,UAAU,EAAE,CAAA;QACpD,CAAC;QAED,OAAO,8BAA8B,IAAI,CAAC,UAAU,EAAE,CAAA;IACxD,CAAC,CAAA;IAEM,cAAc,GAAG,GAAG,EAAE;QAC3B,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,kCAAkC,CAAA;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,eAAe,IAAI,CAAC,UAAU,EAAE,CAAA;QACzC,CAAC;QAED,OAAO,WAAW,IAAI,CAAC,UAAU,EAAE,CAAA;IACrC,CAAC,CAAA;IAED;;;;;;OAMG;IACI,sBAAsB,CAAC,MAAe;QAC3C,2BAA2B;QAC3B,MAAM,YAAY,GAChB,MAAM;YACN,0DAA0D;YAC1D,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM;gBAC1B,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;gBAC9B,CAAC,CAAC,2BAA2B;oBAC3B,IAAI,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;wBACnD,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE;wBAClC,CAAC,CAAC,wBAAwB,CAAC,CAAA;QAEjC,OAAO,YAAY,CAAA;IACrB,CAAC;IAED;;;;;;OAMG;IACI,yCAAyC,CAAC,EAC/C,MAAM,EACN,OAAO,EACP,OAAO,GAKR;QACC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QAEF,OAAO,GAAG,WAAW,4BAA4B,MAAM,YAAY,OAAO,YAAY,OAAO,EAAE,CAAA;IACjG,CAAC;IAED;;;;OAIG;IACI,4BAA4B,CACjC,MAA0B,EAC1B,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,GAAG,IAAI,8BAA8B,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;IAC3E,CAAC;IAED;;;;OAIG;IACI,2BAA2B,CAChC,MAA0B,EAC1B,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,GAAG,IAAI,iDAAiD,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;IAC9F,CAAC;IAED;;;;OAIG;IACI,8BAA8B,CACnC,MAA0B,EAC1B,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,GAAG,IAAI,8BAA8B,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;IAC3E,CAAC;CACF;AA/LD,gCA+LC"}
@@ -0,0 +1,6 @@
1
+ import type { MockRequest as ExpressMockRequest, RequestOptions } from 'node-mocks-http';
2
+ import { BasicAccount } from './mock.model';
3
+ type MockRequest = Record<string, unknown> & ExpressMockRequest<any>;
4
+ export declare function mockRequest(options?: RequestOptions): MockRequest;
5
+ export declare const mockedRegisteredAccountRequest: (account?: Partial<BasicAccount>, patch?: RequestOptions) => MockRequest;
6
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockedRegisteredAccountRequest = void 0;
4
+ exports.mockRequest = mockRequest;
5
+ const node_mocks_http_1 = require("node-mocks-http");
6
+ const firebase_mock_1 = require("./firebase.mock");
7
+ function mockRequest(options = {}) {
8
+ const request = (0, node_mocks_http_1.createRequest)(options);
9
+ if (options.ip) {
10
+ Object.assign(request, {
11
+ ip: options.ip,
12
+ });
13
+ }
14
+ Object.assign(request, {
15
+ acceptsLanguages: () => options.acceptsLanguages || [],
16
+ });
17
+ request.log = console.log;
18
+ request.warn = console.log;
19
+ request.error = console.log;
20
+ return request;
21
+ }
22
+ function defaultRequestOptions() {
23
+ return {
24
+ method: 'GET',
25
+ url: '/',
26
+ headers: {
27
+ Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
28
+ 'Accept-Encoding': 'gzip, deflate, br',
29
+ // Request from Iphone
30
+ 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12A365 Safari/600.1.4 (000206)',
31
+ },
32
+ acceptsLanguages: ['en', 'es'],
33
+ };
34
+ }
35
+ const mockedRegisteredAccountRequest = (account, patch = {}) => {
36
+ const defOptions = defaultRequestOptions();
37
+ const mockedToken = (0, firebase_mock_1.mockFirebaseToken)(account);
38
+ return mockRequest({
39
+ ...defOptions,
40
+ headers: {
41
+ authorization: `Bearer ${mockedToken}`,
42
+ ...defOptions.headers,
43
+ // We can extend the headers
44
+ },
45
+ ...patch,
46
+ });
47
+ };
48
+ exports.mockedRegisteredAccountRequest = mockedRegisteredAccountRequest;
49
+ //# sourceMappingURL=express.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.mock.js","sourceRoot":"","sources":["../../../src/server/test/express.mock.ts"],"names":[],"mappings":";;;AAUA,kCAiBC;AAvBD,qDAA+C;AAC/C,mDAAmD;AAKnD,SAAgB,WAAW,CAAC,UAA0B,EAAE;IACtD,MAAM,OAAO,GAAG,IAAA,+BAAa,EAAC,OAAO,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACrB,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QACrB,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE;KACvD,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IACzB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAA;IAC1B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAA;IAE3B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG;QACR,OAAO,EAAE;YACP,MAAM,EACJ,uFAAuF;YACzF,iBAAiB,EAAE,mBAAmB;YACtC,sBAAsB;YACtB,YAAY,EACV,wJAAwJ;SAC3J;QACD,gBAAgB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;KAC/B,CAAA;AACH,CAAC;AAEM,MAAM,8BAA8B,GAAG,CAC5C,OAA+B,EAC/B,QAAwB,EAAE,EACb,EAAE;IACf,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,MAAM,WAAW,GAAG,IAAA,iCAAiB,EAAC,OAAO,CAAC,CAAA;IAE9C,OAAO,WAAW,CAAC;QACjB,GAAG,UAAU;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,WAAW,EAAE;YACtC,GAAG,UAAU,CAAC,OAAO;YACrB,4BAA4B;SAC7B;QACD,GAAG,KAAK;KACT,CAAC,CAAA;AACJ,CAAC,CAAA;AAhBY,QAAA,8BAA8B,kCAgB1C"}
@@ -0,0 +1,4 @@
1
+ import type { FirebaseDecodedToken } from '../schemas/user.schema';
2
+ import { BasicAccount } from './mock.model';
3
+ export declare const mockedFirebaseDecodedToken: (mockedAccount?: Partial<BasicAccount>) => FirebaseDecodedToken;
4
+ export declare const mockFirebaseToken: (account?: Partial<BasicAccount>) => string;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockFirebaseToken = exports.mockedFirebaseDecodedToken = void 0;
4
+ const mockedFirebaseDecodedToken = (mockedAccount) => {
5
+ const account = mockedAccount || {
6
+ email: 'testemail@test.com',
7
+ firebaseId: 'testfirebaseId',
8
+ };
9
+ const payload = {
10
+ aud: 'someFakeAudience',
11
+ auth_time: 1664050702,
12
+ email: account.email || '',
13
+ email_verified: true,
14
+ exp: 1695579492,
15
+ iat: 1664050702,
16
+ iss: 'someFakeProject',
17
+ sub: '12312312312',
18
+ uid: account.firebaseId ?? 'someFakeFirebaseId',
19
+ firebase: true,
20
+ };
21
+ return payload;
22
+ };
23
+ exports.mockedFirebaseDecodedToken = mockedFirebaseDecodedToken;
24
+ const mockFirebaseToken = (account) => {
25
+ const payload = (0, exports.mockedFirebaseDecodedToken)(account);
26
+ // This should be a JWT, but it is just a mock
27
+ return JSON.stringify(payload);
28
+ };
29
+ exports.mockFirebaseToken = mockFirebaseToken;
30
+ //# sourceMappingURL=firebase.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.mock.js","sourceRoot":"","sources":["../../../src/server/test/firebase.mock.ts"],"names":[],"mappings":";;;AAGO,MAAM,0BAA0B,GAAG,CACxC,aAAqC,EACf,EAAE;IACxB,MAAM,OAAO,GAAG,aAAa,IAAI;QAC/B,KAAK,EAAE,oBAAoB;QAC3B,UAAU,EAAE,gBAAgB;KAC7B,CAAA;IAED,MAAM,OAAO,GAAyB;QACpC,GAAG,EAAE,kBAAkB;QACvB,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;QAC1B,cAAc,EAAE,IAAI;QACpB,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,iBAAiB;QACtB,GAAG,EAAE,aAAa;QAClB,GAAG,EAAE,OAAO,CAAC,UAAU,IAAI,oBAAoB;QAC/C,QAAQ,EAAE,IAAI;KACf,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AArBY,QAAA,0BAA0B,8BAqBtC;AAEM,MAAM,iBAAiB,GAAG,CAAC,OAA+B,EAAU,EAAE;IAC3E,MAAM,OAAO,GAAG,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAA;IACnD,8CAA8C;IAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC,CAAA;AAJY,QAAA,iBAAiB,qBAI7B"}
@@ -0,0 +1,5 @@
1
+ export type BasicAccount = {
2
+ email?: string | null;
3
+ firebaseId?: string | null;
4
+ [key: string]: unknown;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mock.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.model.js","sourceRoot":"","sources":["../../../src/server/test/mock.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { AnyRootTypes, RouterCaller, RouterRecord } from '@trpc/server/unstable-core-do-not-import';
2
+ import { BasicAccount } from './mock.model';
3
+ export declare const mockedAuthenticatedTrpcRouter: <TRoot extends AnyRootTypes, TRecord extends RouterRecord>({ mockedAccount, createCaller, }: {
4
+ mockedAccount?: Partial<BasicAccount>;
5
+ createCaller: RouterCaller<TRoot, TRecord>;
6
+ }) => Promise<import("@trpc/server/unstable-core-do-not-import").DecorateRouterRecord<TRecord>>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mockedAuthenticatedTrpcRouter = void 0;
4
+ const request_context_1 = require("../context/request.context");
5
+ const express_mock_1 = require("./express.mock");
6
+ const firebase_mock_1 = require("./firebase.mock");
7
+ const mockedAuthenticatedTrpcRouter = async ({ mockedAccount, createCaller, }) => {
8
+ const mockedRequest = (0, express_mock_1.mockedRegisteredAccountRequest)(mockedAccount);
9
+ const user = (0, firebase_mock_1.mockedFirebaseDecodedToken)(mockedAccount);
10
+ const ctx = (0, request_context_1.requestContext)(mockedRequest, user);
11
+ return createCaller(ctx);
12
+ };
13
+ exports.mockedAuthenticatedTrpcRouter = mockedAuthenticatedTrpcRouter;
14
+ //# sourceMappingURL=trpc.mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trpc.mock.js","sourceRoot":"","sources":["../../../src/server/test/trpc.mock.ts"],"names":[],"mappings":";;;AAKA,gEAA2D;AAC3D,iDAA+D;AAC/D,mDAA4D;AAGrD,MAAM,6BAA6B,GAAG,KAAK,EAGhD,EACA,aAAa,EACb,YAAY,GAIb,EAAE,EAAE;IACH,MAAM,aAAa,GAAG,IAAA,6CAA8B,EAAC,aAAa,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,IAAA,0CAA0B,EAAC,aAAa,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,IAAA,gCAAc,EAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAE/C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC,CAAA;AAfY,QAAA,6BAA6B,iCAezC"}