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.
- package/README.md +71 -44
- package/dist/adonisjs/configure.cjs +2 -2
- package/dist/adonisjs/configure.cjs.map +1 -1
- package/dist/adonisjs/configure.js.map +1 -1
- package/dist/adonisjs/index.cjs +2 -2
- package/dist/adonisjs/index.cjs.map +1 -1
- package/dist/adonisjs/index.d.cts +2 -2
- package/dist/adonisjs/index.d.ts +2 -2
- package/dist/adonisjs/index.js.map +1 -1
- package/dist/adonisjs/middleware.cjs +107 -84
- package/dist/adonisjs/middleware.cjs.map +1 -1
- package/dist/adonisjs/middleware.d.cts +2 -2
- package/dist/adonisjs/middleware.d.ts +2 -2
- package/dist/adonisjs/middleware.js +106 -83
- package/dist/adonisjs/middleware.js.map +1 -1
- package/dist/adonisjs/provider.cjs +4765 -62
- package/dist/adonisjs/provider.cjs.map +1 -1
- package/dist/adonisjs/provider.d.cts +7 -4
- package/dist/adonisjs/provider.d.ts +7 -4
- package/dist/adonisjs/provider.js +4743 -17
- package/dist/adonisjs/provider.js.map +1 -1
- package/dist/common/client.cjs +64 -42
- package/dist/common/client.cjs.map +1 -1
- package/dist/common/client.d.cts +2 -2
- package/dist/common/client.d.ts +2 -2
- package/dist/common/client.js +33 -11
- package/dist/common/client.js.map +1 -1
- package/dist/common/consumerRegistry.d.cts +2 -2
- package/dist/common/consumerRegistry.d.ts +2 -2
- package/dist/common/headers.cjs.map +1 -1
- package/dist/common/headers.d.cts +1 -1
- package/dist/common/headers.d.ts +1 -1
- package/dist/common/headers.js.map +1 -1
- package/dist/common/logging.cjs +3 -2
- package/dist/common/logging.cjs.map +1 -1
- package/dist/common/logging.d.cts +1 -1
- package/dist/common/logging.d.ts +1 -1
- package/dist/common/logging.js +3 -2
- package/dist/common/logging.js.map +1 -1
- package/dist/common/packageVersions.cjs +2 -2
- package/dist/common/packageVersions.cjs.map +1 -1
- package/dist/common/packageVersions.js.map +1 -1
- package/dist/common/requestCounter.d.cts +2 -2
- package/dist/common/requestCounter.d.ts +2 -2
- package/dist/common/requestLogger.cjs +57 -33
- package/dist/common/requestLogger.cjs.map +1 -1
- package/dist/common/requestLogger.d.cts +12 -5
- package/dist/common/requestLogger.d.ts +12 -5
- package/dist/common/requestLogger.js +30 -6
- package/dist/common/requestLogger.js.map +1 -1
- package/dist/common/response.cjs +12 -6
- package/dist/common/response.cjs.map +1 -1
- package/dist/common/response.d.cts +3 -3
- package/dist/common/response.d.ts +3 -3
- package/dist/common/response.js +12 -6
- package/dist/common/response.js.map +1 -1
- package/dist/common/serverErrorCounter.cjs +3 -2
- package/dist/common/serverErrorCounter.cjs.map +1 -1
- package/dist/common/serverErrorCounter.d.cts +2 -2
- package/dist/common/serverErrorCounter.d.ts +2 -2
- package/dist/common/serverErrorCounter.js +1 -0
- package/dist/common/serverErrorCounter.js.map +1 -1
- package/dist/common/tempGzipFile.cjs +15 -14
- package/dist/common/tempGzipFile.cjs.map +1 -1
- package/dist/common/tempGzipFile.d.cts +1 -1
- package/dist/common/tempGzipFile.d.ts +1 -1
- package/dist/common/tempGzipFile.js +3 -2
- package/dist/common/tempGzipFile.js.map +1 -1
- package/dist/common/types.d.cts +2 -2
- package/dist/common/types.d.ts +2 -2
- package/dist/common/validationErrorCounter.cjs +4 -4
- package/dist/common/validationErrorCounter.cjs.map +1 -1
- package/dist/common/validationErrorCounter.d.cts +2 -2
- package/dist/common/validationErrorCounter.d.ts +2 -2
- package/dist/common/validationErrorCounter.js +2 -2
- package/dist/common/validationErrorCounter.js.map +1 -1
- package/dist/elysia/index.cjs +1582 -0
- package/dist/elysia/index.cjs.map +1 -0
- package/dist/elysia/index.d.cts +9 -0
- package/dist/elysia/index.d.ts +9 -0
- package/dist/elysia/index.js +1552 -0
- package/dist/elysia/index.js.map +1 -0
- package/dist/elysia/plugin.cjs +1576 -0
- package/dist/elysia/plugin.cjs.map +1 -0
- package/dist/elysia/plugin.d.cts +53 -0
- package/dist/elysia/plugin.d.ts +53 -0
- package/dist/elysia/plugin.js +1552 -0
- package/dist/elysia/plugin.js.map +1 -0
- package/dist/elysia/utils.cjs +98 -0
- package/dist/elysia/utils.cjs.map +1 -0
- package/dist/elysia/utils.d.cts +12 -0
- package/dist/elysia/utils.d.ts +12 -0
- package/dist/elysia/utils.js +78 -0
- package/dist/elysia/utils.js.map +1 -0
- package/dist/express/index.cjs +4997 -169
- package/dist/express/index.cjs.map +1 -1
- package/dist/express/index.d.cts +2 -2
- package/dist/express/index.d.ts +2 -2
- package/dist/express/index.js +4969 -120
- package/dist/express/index.js.map +1 -1
- package/dist/express/middleware.cjs +4997 -169
- package/dist/express/middleware.cjs.map +1 -1
- package/dist/express/middleware.d.cts +2 -2
- package/dist/express/middleware.d.ts +2 -2
- package/dist/express/middleware.js +4969 -120
- package/dist/express/middleware.js.map +1 -1
- package/dist/fastify/index.cjs +4926 -72
- package/dist/fastify/index.cjs.map +1 -1
- package/dist/fastify/index.d.cts +3 -2
- package/dist/fastify/index.d.ts +3 -2
- package/dist/fastify/index.js +4899 -24
- package/dist/fastify/index.js.map +1 -1
- package/dist/fastify/plugin.cjs +4926 -72
- package/dist/fastify/plugin.cjs.map +1 -1
- package/dist/fastify/plugin.d.cts +8 -3
- package/dist/fastify/plugin.d.ts +8 -3
- package/dist/fastify/plugin.js +4899 -24
- package/dist/fastify/plugin.js.map +1 -1
- package/dist/h3/index.cjs +235 -57
- package/dist/h3/index.cjs.map +1 -1
- package/dist/h3/index.d.cts +2 -2
- package/dist/h3/index.d.ts +2 -2
- package/dist/h3/index.js +200 -22
- package/dist/h3/index.js.map +1 -1
- package/dist/h3/plugin.cjs +235 -57
- package/dist/h3/plugin.cjs.map +1 -1
- package/dist/h3/plugin.d.cts +6 -4
- package/dist/h3/plugin.d.ts +6 -4
- package/dist/h3/plugin.js +200 -22
- package/dist/h3/plugin.js.map +1 -1
- package/dist/h3/utils.cjs +2 -2
- package/dist/h3/utils.cjs.map +1 -1
- package/dist/h3/utils.js.map +1 -1
- package/dist/hono/index.cjs +295 -118
- package/dist/hono/index.cjs.map +1 -1
- package/dist/hono/index.d.cts +2 -2
- package/dist/hono/index.d.ts +2 -2
- package/dist/hono/index.js +261 -84
- package/dist/hono/index.js.map +1 -1
- package/dist/hono/middleware.cjs +295 -118
- package/dist/hono/middleware.cjs.map +1 -1
- package/dist/hono/middleware.d.cts +2 -2
- package/dist/hono/middleware.d.ts +2 -2
- package/dist/hono/middleware.js +261 -84
- package/dist/hono/middleware.js.map +1 -1
- package/dist/hono/utils.cjs +2 -2
- package/dist/hono/utils.cjs.map +1 -1
- package/dist/hono/utils.d.cts +2 -2
- package/dist/hono/utils.d.ts +2 -2
- package/dist/hono/utils.js.map +1 -1
- package/dist/koa/index.cjs +280 -107
- package/dist/koa/index.cjs.map +1 -1
- package/dist/koa/index.d.cts +2 -2
- package/dist/koa/index.d.ts +2 -2
- package/dist/koa/index.js +244 -71
- package/dist/koa/index.js.map +1 -1
- package/dist/koa/middleware.cjs +278 -107
- package/dist/koa/middleware.cjs.map +1 -1
- package/dist/koa/middleware.d.cts +2 -2
- package/dist/koa/middleware.d.ts +2 -2
- package/dist/koa/middleware.js +244 -71
- package/dist/koa/middleware.js.map +1 -1
- package/dist/loggers/console.cjs +69 -0
- package/dist/loggers/console.cjs.map +1 -0
- package/dist/loggers/console.d.cts +9 -0
- package/dist/loggers/console.d.ts +9 -0
- package/dist/loggers/console.js +46 -0
- package/dist/loggers/console.js.map +1 -0
- package/dist/loggers/index.cjs +4837 -0
- package/dist/loggers/index.cjs.map +1 -0
- package/dist/loggers/index.d.cts +9 -0
- package/dist/loggers/index.d.ts +9 -0
- package/dist/loggers/index.js +4826 -0
- package/dist/loggers/index.js.map +1 -0
- package/dist/loggers/nestjs.cjs +135 -0
- package/dist/loggers/nestjs.cjs.map +1 -0
- package/dist/loggers/nestjs.d.cts +9 -0
- package/dist/loggers/nestjs.d.ts +9 -0
- package/dist/loggers/nestjs.js +100 -0
- package/dist/loggers/nestjs.js.map +1 -0
- package/dist/loggers/pino.cjs +4669 -0
- package/dist/loggers/pino.cjs.map +1 -0
- package/dist/loggers/pino.d.cts +9 -0
- package/dist/loggers/pino.d.ts +9 -0
- package/dist/loggers/pino.js +4661 -0
- package/dist/loggers/pino.js.map +1 -0
- package/dist/loggers/utils.cjs +66 -0
- package/dist/loggers/utils.cjs.map +1 -0
- package/dist/loggers/utils.d.cts +6 -0
- package/dist/loggers/utils.d.ts +6 -0
- package/dist/loggers/utils.js +42 -0
- package/dist/loggers/utils.js.map +1 -0
- package/dist/loggers/winston.cjs +135 -0
- package/dist/loggers/winston.cjs.map +1 -0
- package/dist/loggers/winston.d.cts +9 -0
- package/dist/loggers/winston.d.ts +9 -0
- package/dist/loggers/winston.js +100 -0
- package/dist/loggers/winston.js.map +1 -0
- package/dist/nestjs/index.cjs +5448 -542
- package/dist/nestjs/index.cjs.map +1 -1
- package/dist/nestjs/index.d.cts +2 -2
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +5364 -460
- package/dist/nestjs/index.js.map +1 -1
- 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
|
-
- [
|
|
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
|
-
- [
|
|
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
|
-
###
|
|
127
|
+
### NestJS
|
|
146
128
|
|
|
147
|
-
This is an example of how to use the Apitally middleware with a
|
|
148
|
-
For further instructions, see our
|
|
149
|
-
[setup guide for
|
|
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
|
|
153
|
-
const { useApitally } = require("apitally/
|
|
134
|
+
const { NestFactory } = require("@nestjs/core");
|
|
135
|
+
const { useApitally } = require("apitally/nestjs");
|
|
136
|
+
const { AppModule } = require("./app.module");
|
|
154
137
|
|
|
155
|
-
|
|
138
|
+
async function bootstrap() {
|
|
139
|
+
const app = await NestFactory.create(AppModule);
|
|
156
140
|
|
|
157
|
-
useApitally(app, {
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
###
|
|
210
|
+
### Elysia
|
|
204
211
|
|
|
205
|
-
|
|
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
|
-
```
|
|
208
|
-
|
|
209
|
-
|
|
216
|
+
```javascript
|
|
217
|
+
import { Elysia } from "elysia";
|
|
218
|
+
import { apitallyPlugin } from "apitally/elysia";
|
|
210
219
|
|
|
211
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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"]}
|
package/dist/adonisjs/index.cjs
CHANGED
|
@@ -29,7 +29,7 @@ __export(adonisjs_exports, {
|
|
|
29
29
|
module.exports = __toCommonJS(adonisjs_exports);
|
|
30
30
|
|
|
31
31
|
// src/adonisjs/configure.ts
|
|
32
|
-
var
|
|
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,
|
|
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,
|
|
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
|
|
package/dist/adonisjs/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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 =
|
|
89
|
-
var BODY_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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
159
|
-
msg:
|
|
160
|
-
|
|
190
|
+
type: ctx.apitallyError.name,
|
|
191
|
+
msg: ctx.apitallyError.message,
|
|
192
|
+
traceback: ctx.apitallyError.stack || ""
|
|
161
193
|
});
|
|
162
|
-
}
|
|
194
|
+
}
|
|
163
195
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
}
|
|
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");
|