apitally 0.18.1 → 0.20.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 (205) hide show
  1. package/README.md +71 -44
  2. package/dist/adonisjs/configure.cjs +2 -2
  3. package/dist/adonisjs/configure.cjs.map +1 -1
  4. package/dist/adonisjs/configure.js.map +1 -1
  5. package/dist/adonisjs/index.cjs +2 -2
  6. package/dist/adonisjs/index.cjs.map +1 -1
  7. package/dist/adonisjs/index.d.cts +2 -2
  8. package/dist/adonisjs/index.d.ts +2 -2
  9. package/dist/adonisjs/index.js.map +1 -1
  10. package/dist/adonisjs/middleware.cjs +107 -84
  11. package/dist/adonisjs/middleware.cjs.map +1 -1
  12. package/dist/adonisjs/middleware.d.cts +2 -2
  13. package/dist/adonisjs/middleware.d.ts +2 -2
  14. package/dist/adonisjs/middleware.js +106 -83
  15. package/dist/adonisjs/middleware.js.map +1 -1
  16. package/dist/adonisjs/provider.cjs +4765 -62
  17. package/dist/adonisjs/provider.cjs.map +1 -1
  18. package/dist/adonisjs/provider.d.cts +7 -4
  19. package/dist/adonisjs/provider.d.ts +7 -4
  20. package/dist/adonisjs/provider.js +4743 -17
  21. package/dist/adonisjs/provider.js.map +1 -1
  22. package/dist/common/client.cjs +64 -42
  23. package/dist/common/client.cjs.map +1 -1
  24. package/dist/common/client.d.cts +2 -2
  25. package/dist/common/client.d.ts +2 -2
  26. package/dist/common/client.js +33 -11
  27. package/dist/common/client.js.map +1 -1
  28. package/dist/common/consumerRegistry.d.cts +2 -2
  29. package/dist/common/consumerRegistry.d.ts +2 -2
  30. package/dist/common/headers.cjs.map +1 -1
  31. package/dist/common/headers.d.cts +1 -1
  32. package/dist/common/headers.d.ts +1 -1
  33. package/dist/common/headers.js.map +1 -1
  34. package/dist/common/logging.cjs +3 -2
  35. package/dist/common/logging.cjs.map +1 -1
  36. package/dist/common/logging.d.cts +1 -1
  37. package/dist/common/logging.d.ts +1 -1
  38. package/dist/common/logging.js +3 -2
  39. package/dist/common/logging.js.map +1 -1
  40. package/dist/common/packageVersions.cjs +2 -2
  41. package/dist/common/packageVersions.cjs.map +1 -1
  42. package/dist/common/packageVersions.js.map +1 -1
  43. package/dist/common/requestCounter.d.cts +2 -2
  44. package/dist/common/requestCounter.d.ts +2 -2
  45. package/dist/common/requestLogger.cjs +57 -33
  46. package/dist/common/requestLogger.cjs.map +1 -1
  47. package/dist/common/requestLogger.d.cts +12 -5
  48. package/dist/common/requestLogger.d.ts +12 -5
  49. package/dist/common/requestLogger.js +30 -6
  50. package/dist/common/requestLogger.js.map +1 -1
  51. package/dist/common/response.cjs +12 -6
  52. package/dist/common/response.cjs.map +1 -1
  53. package/dist/common/response.d.cts +3 -3
  54. package/dist/common/response.d.ts +3 -3
  55. package/dist/common/response.js +12 -6
  56. package/dist/common/response.js.map +1 -1
  57. package/dist/common/serverErrorCounter.cjs +3 -2
  58. package/dist/common/serverErrorCounter.cjs.map +1 -1
  59. package/dist/common/serverErrorCounter.d.cts +2 -2
  60. package/dist/common/serverErrorCounter.d.ts +2 -2
  61. package/dist/common/serverErrorCounter.js +1 -0
  62. package/dist/common/serverErrorCounter.js.map +1 -1
  63. package/dist/common/tempGzipFile.cjs +15 -14
  64. package/dist/common/tempGzipFile.cjs.map +1 -1
  65. package/dist/common/tempGzipFile.d.cts +1 -1
  66. package/dist/common/tempGzipFile.d.ts +1 -1
  67. package/dist/common/tempGzipFile.js +3 -2
  68. package/dist/common/tempGzipFile.js.map +1 -1
  69. package/dist/common/types.d.cts +2 -2
  70. package/dist/common/types.d.ts +2 -2
  71. package/dist/common/validationErrorCounter.cjs +4 -4
  72. package/dist/common/validationErrorCounter.cjs.map +1 -1
  73. package/dist/common/validationErrorCounter.d.cts +2 -2
  74. package/dist/common/validationErrorCounter.d.ts +2 -2
  75. package/dist/common/validationErrorCounter.js +2 -2
  76. package/dist/common/validationErrorCounter.js.map +1 -1
  77. package/dist/elysia/index.cjs +1582 -0
  78. package/dist/elysia/index.cjs.map +1 -0
  79. package/dist/elysia/index.d.cts +9 -0
  80. package/dist/elysia/index.d.ts +9 -0
  81. package/dist/elysia/index.js +1552 -0
  82. package/dist/elysia/index.js.map +1 -0
  83. package/dist/elysia/plugin.cjs +1576 -0
  84. package/dist/elysia/plugin.cjs.map +1 -0
  85. package/dist/elysia/plugin.d.cts +53 -0
  86. package/dist/elysia/plugin.d.ts +53 -0
  87. package/dist/elysia/plugin.js +1552 -0
  88. package/dist/elysia/plugin.js.map +1 -0
  89. package/dist/elysia/utils.cjs +98 -0
  90. package/dist/elysia/utils.cjs.map +1 -0
  91. package/dist/elysia/utils.d.cts +12 -0
  92. package/dist/elysia/utils.d.ts +12 -0
  93. package/dist/elysia/utils.js +78 -0
  94. package/dist/elysia/utils.js.map +1 -0
  95. package/dist/express/index.cjs +4997 -169
  96. package/dist/express/index.cjs.map +1 -1
  97. package/dist/express/index.d.cts +2 -2
  98. package/dist/express/index.d.ts +2 -2
  99. package/dist/express/index.js +4969 -120
  100. package/dist/express/index.js.map +1 -1
  101. package/dist/express/middleware.cjs +4997 -169
  102. package/dist/express/middleware.cjs.map +1 -1
  103. package/dist/express/middleware.d.cts +2 -2
  104. package/dist/express/middleware.d.ts +2 -2
  105. package/dist/express/middleware.js +4969 -120
  106. package/dist/express/middleware.js.map +1 -1
  107. package/dist/fastify/index.cjs +4926 -72
  108. package/dist/fastify/index.cjs.map +1 -1
  109. package/dist/fastify/index.d.cts +3 -2
  110. package/dist/fastify/index.d.ts +3 -2
  111. package/dist/fastify/index.js +4899 -24
  112. package/dist/fastify/index.js.map +1 -1
  113. package/dist/fastify/plugin.cjs +4926 -72
  114. package/dist/fastify/plugin.cjs.map +1 -1
  115. package/dist/fastify/plugin.d.cts +8 -3
  116. package/dist/fastify/plugin.d.ts +8 -3
  117. package/dist/fastify/plugin.js +4899 -24
  118. package/dist/fastify/plugin.js.map +1 -1
  119. package/dist/h3/index.cjs +235 -57
  120. package/dist/h3/index.cjs.map +1 -1
  121. package/dist/h3/index.d.cts +2 -2
  122. package/dist/h3/index.d.ts +2 -2
  123. package/dist/h3/index.js +200 -22
  124. package/dist/h3/index.js.map +1 -1
  125. package/dist/h3/plugin.cjs +235 -57
  126. package/dist/h3/plugin.cjs.map +1 -1
  127. package/dist/h3/plugin.d.cts +6 -4
  128. package/dist/h3/plugin.d.ts +6 -4
  129. package/dist/h3/plugin.js +200 -22
  130. package/dist/h3/plugin.js.map +1 -1
  131. package/dist/h3/utils.cjs +2 -2
  132. package/dist/h3/utils.cjs.map +1 -1
  133. package/dist/h3/utils.js.map +1 -1
  134. package/dist/hono/index.cjs +295 -118
  135. package/dist/hono/index.cjs.map +1 -1
  136. package/dist/hono/index.d.cts +2 -2
  137. package/dist/hono/index.d.ts +2 -2
  138. package/dist/hono/index.js +261 -84
  139. package/dist/hono/index.js.map +1 -1
  140. package/dist/hono/middleware.cjs +295 -118
  141. package/dist/hono/middleware.cjs.map +1 -1
  142. package/dist/hono/middleware.d.cts +2 -2
  143. package/dist/hono/middleware.d.ts +2 -2
  144. package/dist/hono/middleware.js +261 -84
  145. package/dist/hono/middleware.js.map +1 -1
  146. package/dist/hono/utils.cjs +2 -2
  147. package/dist/hono/utils.cjs.map +1 -1
  148. package/dist/hono/utils.d.cts +2 -2
  149. package/dist/hono/utils.d.ts +2 -2
  150. package/dist/hono/utils.js.map +1 -1
  151. package/dist/koa/index.cjs +280 -107
  152. package/dist/koa/index.cjs.map +1 -1
  153. package/dist/koa/index.d.cts +2 -2
  154. package/dist/koa/index.d.ts +2 -2
  155. package/dist/koa/index.js +244 -71
  156. package/dist/koa/index.js.map +1 -1
  157. package/dist/koa/middleware.cjs +278 -107
  158. package/dist/koa/middleware.cjs.map +1 -1
  159. package/dist/koa/middleware.d.cts +2 -2
  160. package/dist/koa/middleware.d.ts +2 -2
  161. package/dist/koa/middleware.js +244 -71
  162. package/dist/koa/middleware.js.map +1 -1
  163. package/dist/loggers/console.cjs +69 -0
  164. package/dist/loggers/console.cjs.map +1 -0
  165. package/dist/loggers/console.d.cts +9 -0
  166. package/dist/loggers/console.d.ts +9 -0
  167. package/dist/loggers/console.js +46 -0
  168. package/dist/loggers/console.js.map +1 -0
  169. package/dist/loggers/index.cjs +4837 -0
  170. package/dist/loggers/index.cjs.map +1 -0
  171. package/dist/loggers/index.d.cts +9 -0
  172. package/dist/loggers/index.d.ts +9 -0
  173. package/dist/loggers/index.js +4826 -0
  174. package/dist/loggers/index.js.map +1 -0
  175. package/dist/loggers/nestjs.cjs +135 -0
  176. package/dist/loggers/nestjs.cjs.map +1 -0
  177. package/dist/loggers/nestjs.d.cts +9 -0
  178. package/dist/loggers/nestjs.d.ts +9 -0
  179. package/dist/loggers/nestjs.js +100 -0
  180. package/dist/loggers/nestjs.js.map +1 -0
  181. package/dist/loggers/pino.cjs +4669 -0
  182. package/dist/loggers/pino.cjs.map +1 -0
  183. package/dist/loggers/pino.d.cts +9 -0
  184. package/dist/loggers/pino.d.ts +9 -0
  185. package/dist/loggers/pino.js +4661 -0
  186. package/dist/loggers/pino.js.map +1 -0
  187. package/dist/loggers/utils.cjs +66 -0
  188. package/dist/loggers/utils.cjs.map +1 -0
  189. package/dist/loggers/utils.d.cts +6 -0
  190. package/dist/loggers/utils.d.ts +6 -0
  191. package/dist/loggers/utils.js +42 -0
  192. package/dist/loggers/utils.js.map +1 -0
  193. package/dist/loggers/winston.cjs +135 -0
  194. package/dist/loggers/winston.cjs.map +1 -0
  195. package/dist/loggers/winston.d.cts +9 -0
  196. package/dist/loggers/winston.d.ts +9 -0
  197. package/dist/loggers/winston.js +100 -0
  198. package/dist/loggers/winston.js.map +1 -0
  199. package/dist/nestjs/index.cjs +5448 -542
  200. package/dist/nestjs/index.cjs.map +1 -1
  201. package/dist/nestjs/index.d.cts +2 -2
  202. package/dist/nestjs/index.d.ts +2 -2
  203. package/dist/nestjs/index.js +5364 -460
  204. package/dist/nestjs/index.js.map +1 -1
  205. package/package.json +26 -4
package/README.md CHANGED
@@ -23,12 +23,13 @@ This SDK for Apitally currently supports the following Node.js web
23
23
  frameworks:
24
24
 
25
25
  - [Express](https://docs.apitally.io/frameworks/express)
26
- - [NestJS](https://docs.apitally.io/frameworks/nestjs)
27
26
  - [Fastify](https://docs.apitally.io/frameworks/fastify)
28
- - [Koa](https://docs.apitally.io/frameworks/koa)
27
+ - [NestJS](https://docs.apitally.io/frameworks/nestjs)
28
+ - [AdonisJS](https://docs.apitally.io/frameworks/adonisjs)
29
29
  - [Hono](https://docs.apitally.io/frameworks/hono)
30
30
  - [H3](https://docs.apitally.io/frameworks/h3) (v2)
31
- - [AdonisJS](https://docs.apitally.io/frameworks/adonisjs)
31
+ - [Elysia](https://docs.apitally.io/frameworks/elysia)
32
+ - [Koa](https://docs.apitally.io/frameworks/koa)
32
33
 
33
34
  Learn more about Apitally on our 🌎 [website](https://apitally.io) or check out
34
35
  the 📚 [documentation](https://docs.apitally.io).
@@ -89,25 +90,6 @@ useApitally(app, {
89
90
  });
90
91
  ```
91
92
 
92
- ### NestJS
93
-
94
- This is an example of how to use the Apitally middleware with a NestJS
95
- application. For further instructions, see our
96
- [setup guide for NestJS](https://docs.apitally.io/frameworks/nestjs).
97
-
98
- ```javascript
99
- const { NestFactory } = require("@nestjs/core");
100
- const { useApitally } = require("apitally/nestjs");
101
- const { AppModule } = require("./app.module");
102
-
103
- const app = await NestFactory.create(AppModule);
104
-
105
- await useApitally(app, {
106
- clientId: "your-client-id",
107
- env: "dev", // or "prod" etc.
108
- });
109
- ```
110
-
111
93
  ### Fastify
112
94
 
113
95
  This is an example of how to register the Apitally plugin with a Fastify
@@ -142,24 +124,49 @@ fastify.register((instance, opts, done) => {
142
124
 
143
125
  _Note:_ If your project uses ES modules you can use `await fastify.register(...)` and don't need to wrap your routes in a plugin. See the [Fastify V4 migration guide](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#synchronous-route-definitions-2954) for more details.
144
126
 
145
- ### Koa
127
+ ### NestJS
146
128
 
147
- This is an example of how to use the Apitally middleware with a Koa application.
148
- For further instructions, see our
149
- [setup guide for Koa](https://docs.apitally.io/frameworks/koa).
129
+ This is an example of how to use the Apitally middleware with a NestJS
130
+ application. For further instructions, see our
131
+ [setup guide for NestJS](https://docs.apitally.io/frameworks/nestjs).
150
132
 
151
133
  ```javascript
152
- const Koa = require("koa");
153
- const { useApitally } = require("apitally/koa");
134
+ const { NestFactory } = require("@nestjs/core");
135
+ const { useApitally } = require("apitally/nestjs");
136
+ const { AppModule } = require("./app.module");
154
137
 
155
- const app = new Koa();
138
+ async function bootstrap() {
139
+ const app = await NestFactory.create(AppModule);
156
140
 
157
- useApitally(app, {
158
- clientId: "your-client-id",
159
- env: "dev", // or "prod" etc.
160
- });
141
+ await useApitally(app, {
142
+ clientId: "your-client-id",
143
+ env: "dev", // or "prod" etc.
144
+ });
145
+
146
+ // ...
147
+ }
148
+
149
+ bootstrap();
161
150
  ```
162
151
 
152
+ ### AdonisJS
153
+
154
+ You can use the following Ace command to configure Apitally in your AdonisJS application:
155
+
156
+ ```bash
157
+ node ace configure apitally/adonisjs
158
+ ```
159
+
160
+ This command will automatically:
161
+
162
+ - Create a config file at `config/apitally.ts`
163
+ - Register the Apitally provider in `adonisrc.ts`
164
+ - Add the Apitally middleware to `start/kernel.ts`
165
+ - Add required environment variables to `.env` and `start/env.ts`
166
+
167
+ For further instructions, see our
168
+ [setup guide for AdonisJS](https://docs.apitally.io/frameworks/adonisjs).
169
+
163
170
  ### Hono
164
171
 
165
172
  This is an example of how to use the Apitally middleware with a Hono application.
@@ -200,23 +207,43 @@ const app = new H3({
200
207
 
201
208
  _Note:_ Apitally only works with H3 v2 and currently doesn't support nested apps.
202
209
 
203
- ### AdonisJS
210
+ ### Elysia
204
211
 
205
- You can use the below Ace command to configure Apitally in your AdonisJS application:
212
+ This is an example of how to use the Apitally plugin with an Elysia application.
213
+ For further instructions, see our
214
+ [setup guide for Elysia](https://docs.apitally.io/frameworks/elysia).
206
215
 
207
- ```bash
208
- node ace configure apitally/adonisjs
209
- ```
216
+ ```javascript
217
+ import { Elysia } from "elysia";
218
+ import { apitallyPlugin } from "apitally/elysia";
210
219
 
211
- This command will automatically:
220
+ const app = new Elysia()
221
+ .use(
222
+ apitallyPlugin({
223
+ clientId: "your-client-id",
224
+ env: "dev", // or "prod" etc.
225
+ }),
226
+ )
227
+ .get("/", () => "hello");
228
+ ```
212
229
 
213
- - Create a config file at `config/apitally.ts`
214
- - Register the Apitally provider in `adonisrc.ts`
215
- - Add the Apitally middleware to `start/kernel.ts`
216
- - Add required environment variables to `.env` and `start/env.ts`
230
+ ### Koa
217
231
 
232
+ This is an example of how to use the Apitally middleware with a Koa application.
218
233
  For further instructions, see our
219
- [setup guide for AdonisJS](https://docs.apitally.io/frameworks/adonisjs).
234
+ [setup guide for Koa](https://docs.apitally.io/frameworks/koa).
235
+
236
+ ```javascript
237
+ const Koa = require("koa");
238
+ const { useApitally } = require("apitally/koa");
239
+
240
+ const app = new Koa();
241
+
242
+ useApitally(app, {
243
+ clientId: "your-client-id",
244
+ env: "dev", // or "prod" etc.
245
+ });
246
+ ```
220
247
 
221
248
  ## Getting help
222
249
 
@@ -24,7 +24,7 @@ __export(configure_exports, {
24
24
  configure: () => configure
25
25
  });
26
26
  module.exports = __toCommonJS(configure_exports);
27
- var import_url = require("url");
27
+ var import_node_url = require("url");
28
28
 
29
29
  // src/common/paramValidation.ts
30
30
  function isValidClientId(clientId) {
@@ -40,7 +40,7 @@ __name(isValidEnv, "isValidEnv");
40
40
 
41
41
  // src/adonisjs/configure.ts
42
42
  var import_meta = {};
43
- var STUBS_ROOT = (0, import_url.fileURLToPath)(new URL("./stubs/", import_meta.url));
43
+ var STUBS_ROOT = (0, import_node_url.fileURLToPath)(new URL("./stubs/", import_meta.url));
44
44
  async function configure(command) {
45
45
  const clientId = await command.prompt.ask("Apitally client ID", {
46
46
  result(value) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKA,iBAA8B;;;ACLvB,SAASA,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADNhB;AASA,IAAME,iBAAaC,0BAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;","names":["isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables"]}
1
+ {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKA,sBAA8B;;;ACLvB,SAASA,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADNhB;AASA,IAAME,iBAAaC,+BAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;","names":["isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;AAKA,SAASA,qBAAqB;;;ACLvB,SAASC,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADGhB,IAAME,aAAaC,cAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;","names":["fileURLToPath","isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables"]}
1
+ {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;AAKA,SAASA,qBAAqB;;;ACLvB,SAASC,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADGhB,IAAME,aAAaC,cAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;","names":["fileURLToPath","isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables"]}
@@ -29,7 +29,7 @@ __export(adonisjs_exports, {
29
29
  module.exports = __toCommonJS(adonisjs_exports);
30
30
 
31
31
  // src/adonisjs/configure.ts
32
- var import_url = require("url");
32
+ var import_node_url = require("url");
33
33
 
34
34
  // src/common/paramValidation.ts
35
35
  function isValidClientId(clientId) {
@@ -45,7 +45,7 @@ __name(isValidEnv, "isValidEnv");
45
45
 
46
46
  // src/adonisjs/configure.ts
47
47
  var import_meta = {};
48
- var STUBS_ROOT = (0, import_url.fileURLToPath)(new URL("./stubs/", import_meta.url));
48
+ var STUBS_ROOT = (0, import_node_url.fileURLToPath)(new URL("./stubs/", import_meta.url));
49
49
  async function configure(command) {
50
50
  const clientId = await command.prompt.ask("Apitally client ID", {
51
51
  result(value) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/index.ts","../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n","/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;;;;;ACCA,iBAA8B;;;ACLvB,SAASA,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADNhB;AASA,IAAME,iBAAaC,0BAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;;;ADLf,SAAS6B,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables","defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
1
+ {"version":3,"sources":["../../src/adonisjs/index.ts","../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n","/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;;;;;ACCA,sBAA8B;;;ACLvB,SAASA,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADNhB;AASA,IAAME,iBAAaC,+BAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;;;ADLf,SAAS6B,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables","defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
@@ -4,8 +4,8 @@ export { configure } from './configure.cjs';
4
4
  import '../common/logging.cjs';
5
5
  import 'winston';
6
6
  import '../common/requestLogger.cjs';
7
- import 'buffer';
8
- import 'http';
7
+ import 'node:buffer';
8
+ import 'node:http';
9
9
  import '../common/tempGzipFile.cjs';
10
10
  import '@adonisjs/core/commands/configure';
11
11
 
@@ -4,8 +4,8 @@ export { configure } from './configure.js';
4
4
  import '../common/logging.js';
5
5
  import 'winston';
6
6
  import '../common/requestLogger.js';
7
- import 'buffer';
8
- import 'http';
7
+ import 'node:buffer';
8
+ import 'node:http';
9
9
  import '../common/tempGzipFile.js';
10
10
  import '@adonisjs/core/commands/configure';
11
11
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts","../../src/adonisjs/index.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n","import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n"],"mappings":";;;;AAKA,SAASA,qBAAqB;;;ACLvB,SAASC,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADGhB,IAAME,aAAaC,cAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;;;AELf,SAAS6B,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["fileURLToPath","isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables","defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
1
+ {"version":3,"sources":["../../src/adonisjs/configure.ts","../../src/common/paramValidation.ts","../../src/adonisjs/index.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {});\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n","export function isValidClientId(clientId: string): boolean {\n const regexExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexExp.test(clientId);\n}\n\nexport function isValidEnv(env: string): boolean {\n const regexExp = /^[\\w-]{1,32}$/;\n return regexExp.test(env);\n}\n","import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n"],"mappings":";;;;AAKA,SAASA,qBAAqB;;;ACLvB,SAASC,gBAAgBC,UAAgB;AAC9C,QAAMC,WACJ;AACF,SAAOA,SAASC,KAAKF,QAAAA;AACvB;AAJgBD;AAMT,SAASI,WAAWC,KAAW;AACpC,QAAMH,WAAW;AACjB,SAAOA,SAASC,KAAKE,GAAAA;AACvB;AAHgBD;;;ADGhB,IAAME,aAAaC,cAAc,IAAIC,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOI,gBAAgBJ,KAAAA;IACzB;EACF,CAAA;AACA,QAAMK,MAAM,MAAMV,QAAQE,OAAOC,IAAI,oBAAoB;IACvDQ,SAAS;IACTP,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXK,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAJ,SAASH,OAAK;AACZ,aAAOQ,WAAWR,KAAAA;IACpB;EACF,CAAA;AAEA,QAAMS,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcrB,YAAY,wBAAwB,CAAC,CAAA;AAElE,QAAMmB,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcd;EAChB,CAAA;AAEA,QAAMI,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAjDsBzB;;;AELf,SAAS6B,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["fileURLToPath","isValidClientId","clientId","regexExp","test","isValidEnv","env","STUBS_ROOT","fileURLToPath","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","isValidClientId","env","default","replaceAll","isValidEnv","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables","defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
@@ -34,7 +34,7 @@ __export(middleware_exports, {
34
34
  default: () => ApitallyMiddleware
35
35
  });
36
36
  module.exports = __toCommonJS(middleware_exports);
37
- var import_perf_hooks = require("perf_hooks");
37
+ var import_node_perf_hooks = require("perf_hooks");
38
38
 
39
39
  // src/common/consumerRegistry.ts
40
40
  var consumerFromStringOrObject = /* @__PURE__ */ __name((consumer) => {
@@ -73,7 +73,11 @@ __name(parseContentLength, "parseContentLength");
73
73
 
74
74
  // src/common/requestLogger.ts
75
75
  var import_async_lock = __toESM(require("async-lock"), 1);
76
- var import_buffer = require("buffer");
76
+ var import_node_buffer2 = require("buffer");
77
+ var import_node_crypto3 = require("crypto");
78
+ var import_node_fs2 = require("fs");
79
+ var import_node_os2 = require("os");
80
+ var import_node_path2 = require("path");
77
81
 
78
82
  // src/common/sentry.ts
79
83
  var sentry;
@@ -84,10 +88,25 @@ var sentry;
84
88
  }
85
89
  })();
86
90
 
91
+ // src/common/serverErrorCounter.ts
92
+ var import_node_crypto = require("crypto");
93
+
94
+ // src/common/tempGzipFile.ts
95
+ var import_node_buffer = require("buffer");
96
+ var import_node_crypto2 = require("crypto");
97
+ var import_node_fs = require("fs");
98
+ var import_promises = require("fs/promises");
99
+ var import_node_os = require("os");
100
+ var import_node_path = require("path");
101
+ var import_node_zlib = require("zlib");
102
+
87
103
  // src/common/requestLogger.ts
88
- var BODY_TOO_LARGE = import_buffer.Buffer.from("<body too large>");
89
- var BODY_MASKED = import_buffer.Buffer.from("<masked>");
104
+ var BODY_TOO_LARGE = import_node_buffer2.Buffer.from("<body too large>");
105
+ var BODY_MASKED = import_node_buffer2.Buffer.from("<masked>");
90
106
  function convertHeaders(headers) {
107
+ if (!headers) {
108
+ return [];
109
+ }
91
110
  if (headers instanceof Headers) {
92
111
  return Array.from(headers.entries());
93
112
  }
@@ -114,99 +133,103 @@ __name(convertHeaders, "convertHeaders");
114
133
  // src/adonisjs/middleware.ts
115
134
  var _ApitallyMiddleware = class _ApitallyMiddleware {
116
135
  async handle(ctx, next) {
117
- var _a, _b;
118
136
  const client = await ctx.containerResolver.make("apitallyClient");
137
+ const logsContext = await ctx.containerResolver.make("apitallyLogsContext");
119
138
  if (!client.isEnabled() || ctx.request.method().toUpperCase() === "OPTIONS") {
120
139
  await next();
121
140
  return;
122
141
  }
123
- const path = (_a = ctx.route) == null ? void 0 : _a.pattern;
124
- const timestamp = Date.now() / 1e3;
125
- const startTime = import_perf_hooks.performance.now();
126
- await next();
127
- const responseTime = import_perf_hooks.performance.now() - startTime;
128
- const requestSize = parseContentLength(ctx.request.header("content-length"));
129
- const requestContentType = (_b = ctx.request.header("content-type")) == null ? void 0 : _b.toString();
130
- let responseStatus = ctx.response.getStatus();
131
- let responseHeaders = ctx.response.getHeaders();
132
- let responseSize;
133
- let responseContentType;
134
- const consumer = ctx.apitallyConsumer ? consumerFromStringOrObject(ctx.apitallyConsumer) : null;
135
- client.consumerRegistry.addOrUpdateConsumer(consumer);
136
- const onWriteHead = /* @__PURE__ */ __name((statusCode, headers) => {
137
- var _a2;
138
- responseStatus = statusCode;
139
- responseHeaders = headers;
140
- responseSize = parseContentLength(headers["content-length"]);
141
- responseContentType = (_a2 = headers["content-type"]) == null ? void 0 : _a2.toString();
142
- if (path) {
143
- client.requestCounter.addRequest({
144
- consumer: consumer == null ? void 0 : consumer.identifier,
145
- method: ctx.request.method(),
146
- path,
147
- statusCode: responseStatus,
148
- responseTime,
149
- requestSize,
150
- responseSize
151
- });
152
- if (responseStatus === 422 && ctx.apitallyError && "code" in ctx.apitallyError && "messages" in ctx.apitallyError && ctx.apitallyError.code === "E_VALIDATION_ERROR" && Array.isArray(ctx.apitallyError.messages)) {
153
- ctx.apitallyError.messages.forEach((message) => {
154
- client.validationErrorCounter.addValidationError({
142
+ return logsContext.run([], async () => {
143
+ var _a, _b;
144
+ const path = (_a = ctx.route) == null ? void 0 : _a.pattern;
145
+ const timestamp = Date.now() / 1e3;
146
+ const startTime = import_node_perf_hooks.performance.now();
147
+ await next();
148
+ const responseTime = import_node_perf_hooks.performance.now() - startTime;
149
+ const requestSize = parseContentLength(ctx.request.header("content-length"));
150
+ const requestContentType = (_b = ctx.request.header("content-type")) == null ? void 0 : _b.toString();
151
+ let responseStatus = ctx.response.getStatus();
152
+ let responseHeaders = ctx.response.getHeaders();
153
+ let responseSize;
154
+ let responseContentType;
155
+ const consumer = ctx.apitallyConsumer ? consumerFromStringOrObject(ctx.apitallyConsumer) : null;
156
+ client.consumerRegistry.addOrUpdateConsumer(consumer);
157
+ const onWriteHead = /* @__PURE__ */ __name((statusCode, headers) => {
158
+ var _a2;
159
+ responseStatus = statusCode;
160
+ responseHeaders = headers;
161
+ responseSize = parseContentLength(headers["content-length"]);
162
+ responseContentType = (_a2 = headers["content-type"]) == null ? void 0 : _a2.toString();
163
+ if (path) {
164
+ client.requestCounter.addRequest({
165
+ consumer: consumer == null ? void 0 : consumer.identifier,
166
+ method: ctx.request.method(),
167
+ path,
168
+ statusCode: responseStatus,
169
+ responseTime,
170
+ requestSize,
171
+ responseSize
172
+ });
173
+ if (responseStatus === 422 && ctx.apitallyError && "code" in ctx.apitallyError && "messages" in ctx.apitallyError && ctx.apitallyError.code === "E_VALIDATION_ERROR" && Array.isArray(ctx.apitallyError.messages)) {
174
+ ctx.apitallyError.messages.forEach((message) => {
175
+ client.validationErrorCounter.addValidationError({
176
+ consumer: consumer == null ? void 0 : consumer.identifier,
177
+ method: ctx.request.method(),
178
+ path,
179
+ loc: message.field,
180
+ msg: message.message,
181
+ type: message.rule
182
+ });
183
+ });
184
+ }
185
+ if (responseStatus === 500 && ctx.apitallyError) {
186
+ client.serverErrorCounter.addServerError({
155
187
  consumer: consumer == null ? void 0 : consumer.identifier,
156
188
  method: ctx.request.method(),
157
189
  path,
158
- loc: message.field,
159
- msg: message.message,
160
- type: message.rule
190
+ type: ctx.apitallyError.name,
191
+ msg: ctx.apitallyError.message,
192
+ traceback: ctx.apitallyError.stack || ""
161
193
  });
162
- });
194
+ }
163
195
  }
164
- if (responseStatus === 500 && ctx.apitallyError) {
165
- client.serverErrorCounter.addServerError({
166
- consumer: consumer == null ? void 0 : consumer.identifier,
196
+ }, "onWriteHead");
197
+ const originalWriteHead = ctx.response.response.writeHead;
198
+ ctx.response.response.writeHead = (...args) => {
199
+ originalWriteHead.apply(ctx.response.response, args);
200
+ onWriteHead(args[0], typeof args[1] === "string" ? args[2] : args[1]);
201
+ return ctx.response.response;
202
+ };
203
+ if (client.requestLogger.enabled) {
204
+ const logs = logsContext.getStore();
205
+ const onEnd = /* @__PURE__ */ __name((chunk) => {
206
+ const requestBody = client.requestLogger.config.logRequestBody && client.requestLogger.isSupportedContentType(requestContentType) ? ctx.request.raw() : void 0;
207
+ const responseBody = client.requestLogger.config.logResponseBody && client.requestLogger.isSupportedContentType(responseContentType) ? chunk : void 0;
208
+ client.requestLogger.logRequest({
209
+ timestamp,
167
210
  method: ctx.request.method(),
168
211
  path,
169
- type: ctx.apitallyError.name,
170
- msg: ctx.apitallyError.message,
171
- traceback: ctx.apitallyError.stack || ""
172
- });
173
- }
212
+ url: ctx.request.completeUrl(true),
213
+ headers: convertHeaders(ctx.request.headers()),
214
+ size: requestSize,
215
+ consumer: consumer == null ? void 0 : consumer.identifier,
216
+ body: requestBody ? Buffer.from(requestBody) : void 0
217
+ }, {
218
+ statusCode: responseStatus,
219
+ responseTime: responseTime / 1e3,
220
+ headers: convertHeaders(responseHeaders),
221
+ size: responseSize,
222
+ body: responseBody ? Buffer.from(responseBody) : void 0
223
+ }, ctx.apitallyError, logs);
224
+ }, "onEnd");
225
+ const originalEnd = ctx.response.response.end;
226
+ ctx.response.response.end = (...args) => {
227
+ originalEnd.apply(ctx.response.response, args);
228
+ onEnd(typeof args[0] !== "function" ? args[0] : void 0);
229
+ return ctx.response.response;
230
+ };
174
231
  }
175
- }, "onWriteHead");
176
- const originalWriteHead = ctx.response.response.writeHead;
177
- ctx.response.response.writeHead = (...args) => {
178
- originalWriteHead.apply(ctx.response.response, args);
179
- onWriteHead(args[0], typeof args[1] === "string" ? args[2] : args[1]);
180
- return ctx.response.response;
181
- };
182
- if (client.requestLogger.enabled) {
183
- const onEnd = /* @__PURE__ */ __name((chunk) => {
184
- const requestBody = client.requestLogger.config.logRequestBody && client.requestLogger.isSupportedContentType(requestContentType) ? ctx.request.raw() : void 0;
185
- const responseBody = client.requestLogger.config.logResponseBody && client.requestLogger.isSupportedContentType(responseContentType) ? chunk : void 0;
186
- client.requestLogger.logRequest({
187
- timestamp,
188
- method: ctx.request.method(),
189
- path,
190
- url: ctx.request.completeUrl(true),
191
- headers: convertHeaders(ctx.request.headers()),
192
- size: requestSize,
193
- consumer: consumer == null ? void 0 : consumer.identifier,
194
- body: requestBody ? Buffer.from(requestBody) : void 0
195
- }, {
196
- statusCode: responseStatus,
197
- responseTime: responseTime / 1e3,
198
- headers: convertHeaders(responseHeaders),
199
- size: responseSize,
200
- body: responseBody ? Buffer.from(responseBody) : void 0
201
- }, ctx.apitallyError);
202
- }, "onEnd");
203
- const originalEnd = ctx.response.response.end;
204
- ctx.response.response.end = (...args) => {
205
- originalEnd.apply(ctx.response.response, args);
206
- onEnd(typeof args[0] !== "function" ? args[0] : void 0);
207
- return ctx.response.response;
208
- };
209
- }
232
+ });
210
233
  }
211
234
  };
212
235
  __name(_ApitallyMiddleware, "ApitallyMiddleware");