@lokalise/fastify-extras 17.0.2 → 17.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins/amplitude/Amplitude.d.ts +13 -0
- package/dist/plugins/amplitude/Amplitude.js +22 -0
- package/dist/plugins/amplitude/Amplitude.js.map +1 -0
- package/dist/plugins/amplitude/AmplitudeAdapter.d.ts +31 -0
- package/dist/plugins/amplitude/AmplitudeAdapter.js +30 -0
- package/dist/plugins/amplitude/AmplitudeAdapter.js.map +1 -0
- package/dist/plugins/amplitude/AmplitudeAdapter.spec.js +56 -0
- package/dist/plugins/amplitude/AmplitudeAdapter.spec.js.map +1 -0
- package/dist/plugins/{amplitudePlugin.d.ts → amplitude/amplitudePlugin.d.ts} +2 -13
- package/dist/plugins/{amplitudePlugin.js → amplitude/amplitudePlugin.js} +3 -19
- package/dist/plugins/amplitude/amplitudePlugin.js.map +1 -0
- package/dist/plugins/amplitude/amplitudePlugin.spec.d.ts +1 -0
- package/dist/plugins/amplitude/amplitudePlugin.spec.js.map +1 -0
- package/dist/plugins/bugsnagPlugin.d.ts +2 -2
- package/dist/plugins/bugsnagPlugin.js +2 -1
- package/dist/plugins/bugsnagPlugin.js.map +1 -1
- package/dist/plugins/metricsPlugin.d.ts +1 -1
- package/dist/plugins/metricsPlugin.js +43 -38
- package/dist/plugins/metricsPlugin.js.map +1 -1
- package/package.json +4 -4
- package/dist/plugins/amplitudePlugin.js.map +0 -1
- package/dist/plugins/amplitudePlugin.spec.js.map +0 -1
- /package/dist/plugins/{amplitudePlugin.spec.d.ts → amplitude/AmplitudeAdapter.spec.d.ts} +0 -0
- /package/dist/plugins/{amplitudePlugin.spec.js → amplitude/amplitudePlugin.spec.js} +0 -0
package/README.md
CHANGED
|
@@ -176,6 +176,10 @@ The plugin decorates your Fastify instance with a `Amplitude`, which you can inj
|
|
|
176
176
|
> "@amplitude/analytics-types": "*"
|
|
177
177
|
> ```
|
|
178
178
|
|
|
179
|
+
Additionally, you have the option to enhance the safety and accuracy of your events and properties by wrapping your `Amplitude` instance with `AmplitudeAdapter`.
|
|
180
|
+
|
|
181
|
+
> 📘Check [`AmplitudeAdapter.spec.ts](./lib/plugins/amplitude/amplitudePlugin.spec.ts) for a practical example
|
|
182
|
+
|
|
179
183
|
### UnhandledException Plugin
|
|
180
184
|
|
|
181
185
|
This plugin provides a mechanism for handling uncaught exceptions within your Fastify application, ensuring that such exceptions are logged and reported. It's especially useful for capturing unforeseen exceptions and provides a controlled shutdown of the Fastify server, thereby ensuring no potential data corruption.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { bugsnagPlugin, reportErrorToBugsnag, bugsnagErrorReporter } from './plugins/bugsnagPlugin';
|
|
1
|
+
export { bugsnagPlugin, reportErrorToBugsnag, bugsnagErrorReporter, addFeatureFlag, } from './plugins/bugsnagPlugin';
|
|
2
2
|
export type { ErrorReport } from './plugins/bugsnagPlugin';
|
|
3
3
|
export { requestContextProviderPlugin, getRequestIdFastifyAppConfig, REQUEST_ID_STORE_KEY, } from './plugins/requestContextProviderPlugin';
|
|
4
4
|
export type { BaseRequestContext as RequestContext } from './plugins/requestContextProviderPlugin';
|
|
@@ -16,7 +16,9 @@ export { publicHealthcheckPlugin } from './plugins/healthcheck/publicHealthcheck
|
|
|
16
16
|
export type { PublicHealthcheckPluginOptions, HealthCheck, InfoProvider, } from './plugins/healthcheck/publicHealthcheckPlugin';
|
|
17
17
|
export { wrapHealthCheck } from './plugins/healthcheck/healthcheckCommons';
|
|
18
18
|
export type { HealthChecker } from './plugins/healthcheck/healthcheckCommons';
|
|
19
|
-
export { amplitudePlugin,
|
|
19
|
+
export { amplitudePlugin, type AmplitudeConfig, type CreateApiTrackingEventFn, } from './plugins/amplitude/amplitudePlugin';
|
|
20
|
+
export { Amplitude } from './plugins/amplitude/Amplitude';
|
|
21
|
+
export { AmplitudeAdapter, AMPLITUDE_BASE_MESSAGE_SCHEMA, type AmplitudeMessage, type AmplitudeAdapterDependencies, } from './plugins/amplitude/AmplitudeAdapter';
|
|
20
22
|
export type { FastifyReplyWithPayload } from './types';
|
|
21
23
|
export { unhandledExceptionPlugin } from './plugins/unhandledExceptionPlugin';
|
|
22
24
|
export type { UnhandledExceptionPluginOptions } from './plugins/unhandledExceptionPlugin';
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decodeJwtToken = exports.generateJwtToken = exports.isZodError = exports.createErrorHandler = exports.unhandledExceptionPlugin = exports.Amplitude = exports.amplitudePlugin = exports.wrapHealthCheck = exports.publicHealthcheckPlugin = exports.prismaOtelTracingPlugin = exports.metricsPlugin = exports.wrapHealthCheckForPrometheus = exports.healthcheckMetricsPlugin = exports.SplitIOFeatureManager = exports.splitIOFeatureManagerPlugin = exports.NewRelicTransactionManager = exports.newrelicTransactionManagerPlugin = exports.REQUEST_ID_STORE_KEY = exports.getRequestIdFastifyAppConfig = exports.requestContextProviderPlugin = exports.bugsnagErrorReporter = exports.reportErrorToBugsnag = exports.bugsnagPlugin = void 0;
|
|
3
|
+
exports.decodeJwtToken = exports.generateJwtToken = exports.isZodError = exports.createErrorHandler = exports.unhandledExceptionPlugin = exports.AMPLITUDE_BASE_MESSAGE_SCHEMA = exports.AmplitudeAdapter = exports.Amplitude = exports.amplitudePlugin = exports.wrapHealthCheck = exports.publicHealthcheckPlugin = exports.prismaOtelTracingPlugin = exports.metricsPlugin = exports.wrapHealthCheckForPrometheus = exports.healthcheckMetricsPlugin = exports.SplitIOFeatureManager = exports.splitIOFeatureManagerPlugin = exports.NewRelicTransactionManager = exports.newrelicTransactionManagerPlugin = exports.REQUEST_ID_STORE_KEY = exports.getRequestIdFastifyAppConfig = exports.requestContextProviderPlugin = exports.addFeatureFlag = exports.bugsnagErrorReporter = exports.reportErrorToBugsnag = exports.bugsnagPlugin = void 0;
|
|
4
4
|
var bugsnagPlugin_1 = require("./plugins/bugsnagPlugin");
|
|
5
5
|
Object.defineProperty(exports, "bugsnagPlugin", { enumerable: true, get: function () { return bugsnagPlugin_1.bugsnagPlugin; } });
|
|
6
6
|
Object.defineProperty(exports, "reportErrorToBugsnag", { enumerable: true, get: function () { return bugsnagPlugin_1.reportErrorToBugsnag; } });
|
|
7
7
|
Object.defineProperty(exports, "bugsnagErrorReporter", { enumerable: true, get: function () { return bugsnagPlugin_1.bugsnagErrorReporter; } });
|
|
8
|
+
Object.defineProperty(exports, "addFeatureFlag", { enumerable: true, get: function () { return bugsnagPlugin_1.addFeatureFlag; } });
|
|
8
9
|
var requestContextProviderPlugin_1 = require("./plugins/requestContextProviderPlugin");
|
|
9
10
|
Object.defineProperty(exports, "requestContextProviderPlugin", { enumerable: true, get: function () { return requestContextProviderPlugin_1.requestContextProviderPlugin; } });
|
|
10
11
|
Object.defineProperty(exports, "getRequestIdFastifyAppConfig", { enumerable: true, get: function () { return requestContextProviderPlugin_1.getRequestIdFastifyAppConfig; } });
|
|
@@ -26,9 +27,13 @@ var publicHealthcheckPlugin_1 = require("./plugins/healthcheck/publicHealthcheck
|
|
|
26
27
|
Object.defineProperty(exports, "publicHealthcheckPlugin", { enumerable: true, get: function () { return publicHealthcheckPlugin_1.publicHealthcheckPlugin; } });
|
|
27
28
|
var healthcheckCommons_1 = require("./plugins/healthcheck/healthcheckCommons");
|
|
28
29
|
Object.defineProperty(exports, "wrapHealthCheck", { enumerable: true, get: function () { return healthcheckCommons_1.wrapHealthCheck; } });
|
|
29
|
-
var amplitudePlugin_1 = require("./plugins/amplitudePlugin");
|
|
30
|
+
var amplitudePlugin_1 = require("./plugins/amplitude/amplitudePlugin");
|
|
30
31
|
Object.defineProperty(exports, "amplitudePlugin", { enumerable: true, get: function () { return amplitudePlugin_1.amplitudePlugin; } });
|
|
31
|
-
|
|
32
|
+
var Amplitude_1 = require("./plugins/amplitude/Amplitude");
|
|
33
|
+
Object.defineProperty(exports, "Amplitude", { enumerable: true, get: function () { return Amplitude_1.Amplitude; } });
|
|
34
|
+
var AmplitudeAdapter_1 = require("./plugins/amplitude/AmplitudeAdapter");
|
|
35
|
+
Object.defineProperty(exports, "AmplitudeAdapter", { enumerable: true, get: function () { return AmplitudeAdapter_1.AmplitudeAdapter; } });
|
|
36
|
+
Object.defineProperty(exports, "AMPLITUDE_BASE_MESSAGE_SCHEMA", { enumerable: true, get: function () { return AmplitudeAdapter_1.AMPLITUDE_BASE_MESSAGE_SCHEMA; } });
|
|
32
37
|
var unhandledExceptionPlugin_1 = require("./plugins/unhandledExceptionPlugin");
|
|
33
38
|
Object.defineProperty(exports, "unhandledExceptionPlugin", { enumerable: true, get: function () { return unhandledExceptionPlugin_1.unhandledExceptionPlugin; } });
|
|
34
39
|
var errorHandler_1 = require("./errors/errorHandler");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;AAAA,yDAKgC;AAJ9B,8GAAA,aAAa,OAAA;AACb,qHAAA,oBAAoB,OAAA;AACpB,qHAAA,oBAAoB,OAAA;AACpB,+GAAA,cAAc,OAAA;AAIhB,uFAI+C;AAH7C,4IAAA,4BAA4B,OAAA;AAC5B,4IAAA,4BAA4B,OAAA;AAC5B,oIAAA,oBAAoB,OAAA;AAItB,+FAGmD;AAFjD,oJAAA,gCAAgC,OAAA;AAChC,8IAAA,0BAA0B,OAAA;AAI5B,qFAG8C;AAF5C,0IAAA,2BAA2B,OAAA;AAC3B,oIAAA,qBAAqB,OAAA;AAIvB,2FAGuD;AAFrD,oIAAA,wBAAwB,OAAA;AACxB,wIAAA,4BAA4B,OAAA;AAQ9B,yDAAuD;AAA9C,8GAAA,aAAa,OAAA;AAGtB,2FAAyF;AAAhF,kIAAA,uBAAuB,OAAA;AAGhC,yFAAuF;AAA9E,kIAAA,uBAAuB,OAAA;AAOhC,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AAGxB,uEAI4C;AAH1C,kHAAA,eAAe,OAAA;AAIjB,2DAAyD;AAAhD,sGAAA,SAAS,OAAA;AAClB,yEAK6C;AAJ3C,oHAAA,gBAAgB,OAAA;AAChB,iIAAA,6BAA6B,OAAA;AAO/B,+EAA6E;AAApE,oIAAA,wBAAwB,OAAA;AAGjC,sDAAsE;AAA7D,kHAAA,kBAAkB,OAAA;AAAE,0GAAA,UAAU,OAAA;AAGvC,qDAAyE;AAAhE,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AmplitudeReturn, BaseEvent, Result } from '@amplitude/analytics-types';
|
|
2
|
+
export declare class Amplitude {
|
|
3
|
+
private readonly isEnabled;
|
|
4
|
+
constructor(isEnabled: boolean);
|
|
5
|
+
/**
|
|
6
|
+
* Sends the given event to Amplitude
|
|
7
|
+
*
|
|
8
|
+
* @param event Event to send to amplitude. Please check
|
|
9
|
+
* [this](https://amplitude.github.io/Amplitude-TypeScript/interfaces/_amplitude_analytics_node.Types.BaseEvent.html)
|
|
10
|
+
* to get more info about the BaseEvent type
|
|
11
|
+
*/
|
|
12
|
+
track(event: BaseEvent): AmplitudeReturn<Result | null>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Amplitude = void 0;
|
|
4
|
+
const analytics_node_1 = require("@amplitude/analytics-node");
|
|
5
|
+
class Amplitude {
|
|
6
|
+
isEnabled;
|
|
7
|
+
constructor(isEnabled) {
|
|
8
|
+
this.isEnabled = isEnabled;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Sends the given event to Amplitude
|
|
12
|
+
*
|
|
13
|
+
* @param event Event to send to amplitude. Please check
|
|
14
|
+
* [this](https://amplitude.github.io/Amplitude-TypeScript/interfaces/_amplitude_analytics_node.Types.BaseEvent.html)
|
|
15
|
+
* to get more info about the BaseEvent type
|
|
16
|
+
*/
|
|
17
|
+
track(event) {
|
|
18
|
+
return this.isEnabled ? (0, analytics_node_1.track)(event) : { promise: Promise.resolve(null) };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Amplitude = Amplitude;
|
|
22
|
+
//# sourceMappingURL=Amplitude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Amplitude.js","sourceRoot":"","sources":["../../../lib/plugins/amplitude/Amplitude.ts"],"names":[],"mappings":";;;AAAA,8DAAiD;AAGjD,MAAa,SAAS;IACH,SAAS,CAAS;IAEnC,YAAY,SAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,KAAgB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3E,CAAC;CACF;AAjBD,8BAiBC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import z, { type ZodObject } from 'zod';
|
|
2
|
+
import type { Amplitude } from './Amplitude';
|
|
3
|
+
export declare const AMPLITUDE_BASE_MESSAGE_SCHEMA: z.ZodObject<{
|
|
4
|
+
event_type: z.ZodLiteral<string>;
|
|
5
|
+
event_properties: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
6
|
+
user_id: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
event_type: string;
|
|
9
|
+
event_properties: {};
|
|
10
|
+
user_id: string;
|
|
11
|
+
}, {
|
|
12
|
+
event_type: string;
|
|
13
|
+
event_properties: {};
|
|
14
|
+
user_id: string;
|
|
15
|
+
}>;
|
|
16
|
+
export type AmplitudeAdapterDependencies = {
|
|
17
|
+
amplitude: Amplitude;
|
|
18
|
+
};
|
|
19
|
+
export type AmplitudeMessage = {
|
|
20
|
+
schema: ZodObject<(typeof AMPLITUDE_BASE_MESSAGE_SCHEMA)['shape']>;
|
|
21
|
+
};
|
|
22
|
+
type AmplitudeMessageSchemaType<T extends AmplitudeMessage> = z.infer<T['schema']>;
|
|
23
|
+
/**
|
|
24
|
+
* Amplitude adapter which provides type safe tracking of events
|
|
25
|
+
*/
|
|
26
|
+
export declare class AmplitudeAdapter<AmplitudeMessages extends AmplitudeMessage[]> {
|
|
27
|
+
private readonly amplitude;
|
|
28
|
+
constructor({ amplitude }: AmplitudeAdapterDependencies);
|
|
29
|
+
track<Message extends AmplitudeMessages[number]>(supportedMessage: Message, data: Omit<AmplitudeMessageSchemaType<Message>, 'event_type'>): void;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmplitudeAdapter = exports.AMPLITUDE_BASE_MESSAGE_SCHEMA = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const zod_1 = tslib_1.__importDefault(require("zod"));
|
|
6
|
+
exports.AMPLITUDE_BASE_MESSAGE_SCHEMA = zod_1.default
|
|
7
|
+
.object({
|
|
8
|
+
event_type: zod_1.default.literal('<replace.me>'),
|
|
9
|
+
event_properties: zod_1.default.object({}),
|
|
10
|
+
user_id: zod_1.default.string().uuid(),
|
|
11
|
+
})
|
|
12
|
+
.strip();
|
|
13
|
+
/**
|
|
14
|
+
* Amplitude adapter which provides type safe tracking of events
|
|
15
|
+
*/
|
|
16
|
+
class AmplitudeAdapter {
|
|
17
|
+
amplitude;
|
|
18
|
+
constructor({ amplitude }) {
|
|
19
|
+
this.amplitude = amplitude;
|
|
20
|
+
}
|
|
21
|
+
track(supportedMessage, data) {
|
|
22
|
+
const message = supportedMessage.schema.parse({
|
|
23
|
+
event_type: supportedMessage.schema.shape.event_type.value,
|
|
24
|
+
...data,
|
|
25
|
+
});
|
|
26
|
+
this.amplitude.track(message);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.AmplitudeAdapter = AmplitudeAdapter;
|
|
30
|
+
//# sourceMappingURL=AmplitudeAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmplitudeAdapter.js","sourceRoot":"","sources":["../../../lib/plugins/amplitude/AmplitudeAdapter.ts"],"names":[],"mappings":";;;;AAAA,sDAAuC;AAI1B,QAAA,6BAA6B,GAAG,aAAC;KAC3C,MAAM,CAAC;IACN,UAAU,EAAE,aAAC,CAAC,OAAO,CAAS,cAAc,CAAC;IAC7C,gBAAgB,EAAE,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,OAAO,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CAC3B,CAAC;KACD,KAAK,EAAE,CAAA;AAWV;;GAEG;AACH,MAAa,gBAAgB;IACV,SAAS,CAAW;IAErC,YAAY,EAAE,SAAS,EAAgC;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,KAAK,CACV,gBAAyB,EACzB,IAA6D;QAE7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5C,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;YAC1D,GAAG,IAAI;SACR,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF;AAjBD,4CAiBC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const crypto_1 = require("crypto");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const Amplitude_1 = require("./Amplitude");
|
|
7
|
+
const AmplitudeAdapter_1 = require("./AmplitudeAdapter");
|
|
8
|
+
const testMessages = {
|
|
9
|
+
myEvent: {
|
|
10
|
+
schema: AmplitudeAdapter_1.AMPLITUDE_BASE_MESSAGE_SCHEMA.extend({
|
|
11
|
+
event_type: zod_1.z.literal('my event'),
|
|
12
|
+
event_properties: zod_1.z.object({
|
|
13
|
+
number: zod_1.z.number(),
|
|
14
|
+
}),
|
|
15
|
+
}),
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
const testMessagesValues = Object.values(testMessages);
|
|
19
|
+
describe('Amplitude adapter', () => {
|
|
20
|
+
let amplitudeAdapter;
|
|
21
|
+
let amplitudeTrackSpy;
|
|
22
|
+
(0, vitest_1.beforeAll)(() => {
|
|
23
|
+
const amplitude = new Amplitude_1.Amplitude(true);
|
|
24
|
+
amplitudeTrackSpy = vi
|
|
25
|
+
.spyOn(amplitude, 'track')
|
|
26
|
+
.mockImplementation(() => ({ promise: Promise.resolve(null) }));
|
|
27
|
+
amplitudeAdapter = new AmplitudeAdapter_1.AmplitudeAdapter({ amplitude });
|
|
28
|
+
});
|
|
29
|
+
it('works', () => {
|
|
30
|
+
const user_id = (0, crypto_1.randomUUID)();
|
|
31
|
+
amplitudeAdapter.track(testMessages.myEvent, {
|
|
32
|
+
user_id,
|
|
33
|
+
event_properties: { number: 42 },
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)(amplitudeTrackSpy).toHaveBeenCalledWith({
|
|
36
|
+
event_type: 'my event',
|
|
37
|
+
user_id,
|
|
38
|
+
event_properties: { number: 42 },
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it('wrong type', () => {
|
|
42
|
+
let error;
|
|
43
|
+
try {
|
|
44
|
+
amplitudeAdapter.track(testMessages.myEvent, {
|
|
45
|
+
user_id: (0, crypto_1.randomUUID)(),
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
event_properties: { number: 'bad' },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
error = e;
|
|
52
|
+
}
|
|
53
|
+
(0, vitest_1.expect)(error).toBeInstanceOf(zod_1.z.ZodError);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=AmplitudeAdapter.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmplitudeAdapter.spec.js","sourceRoot":"","sources":["../../../lib/plugins/amplitude/AmplitudeAdapter.spec.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAGnC,mCAA0C;AAC1C,6BAAuB;AAEvB,2CAAuC;AACvC,yDAAoF;AAGpF,MAAM,YAAY,GAAqC;IACrD,OAAO,EAAE;QACP,MAAM,EAAE,gDAA6B,CAAC,MAAM,CAAC;YAC3C,UAAU,EAAE,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC;gBACzB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;aACnB,CAAC;SACH,CAAC;KACH;CACF,CAAA;AACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAGtD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,gBAAqD,CAAA;IACzD,IAAI,iBAA+B,CAAA;IAEnC,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,CAAA;QACrC,iBAAiB,GAAG,EAAE;aACnB,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;aACzB,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACjE,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACf,MAAM,OAAO,GAAG,IAAA,mBAAU,GAAE,CAAA;QAC5B,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;YAC3C,OAAO;YACP,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACjC,CAAC,CAAA;QAEF,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC;YAC7C,UAAU,EAAE,UAAU;YACtB,OAAO;YACP,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACjC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,IAAI,KAAc,CAAA;QAClB,IAAI,CAAC;YACH,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC3C,OAAO,EAAE,IAAA,mBAAU,GAAE;gBACrB,8DAA8D;gBAC9D,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAY,EAAE;aAC3C,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,GAAG,CAAC,CAAA;QACX,CAAC;QAED,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAC,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BaseEvent, NodeOptions, Plugin } from '@amplitude/analytics-types';
|
|
2
2
|
import type { FastifyReply, FastifyRequest } from 'fastify';
|
|
3
|
+
import { Amplitude } from './Amplitude';
|
|
3
4
|
declare module 'fastify' {
|
|
4
5
|
interface FastifyInstance {
|
|
5
6
|
amplitude: Amplitude;
|
|
@@ -53,15 +54,3 @@ export interface AmplitudeConfig {
|
|
|
53
54
|
* ```
|
|
54
55
|
*/
|
|
55
56
|
export declare const amplitudePlugin: import("fastify").FastifyPluginCallback<AmplitudeConfig, import("fastify").RawServerDefault, import("fastify").FastifyTypeProviderDefault, import("fastify").FastifyBaseLogger>;
|
|
56
|
-
export declare class Amplitude {
|
|
57
|
-
private readonly isEnabled;
|
|
58
|
-
constructor(isEnabled: boolean);
|
|
59
|
-
/**
|
|
60
|
-
* Sends the given event to Amplitude
|
|
61
|
-
*
|
|
62
|
-
* @param event Event to send to amplitude. Please check
|
|
63
|
-
* [this](https://amplitude.github.io/Amplitude-TypeScript/interfaces/_amplitude_analytics_node.Types.BaseEvent.html)
|
|
64
|
-
* to get more info about the BaseEvent type
|
|
65
|
-
*/
|
|
66
|
-
track(event: BaseEvent): AmplitudeReturn<Result | null>;
|
|
67
|
-
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.amplitudePlugin = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const analytics_node_1 = require("@amplitude/analytics-node");
|
|
6
6
|
const fastify_plugin_1 = tslib_1.__importDefault(require("fastify-plugin"));
|
|
7
|
+
const Amplitude_1 = require("./Amplitude");
|
|
7
8
|
function plugin(fastify, config, next) {
|
|
8
|
-
const amplitudeInstance = new Amplitude(config.isEnabled);
|
|
9
|
+
const amplitudeInstance = new Amplitude_1.Amplitude(config.isEnabled);
|
|
9
10
|
fastify.decorate('amplitude', amplitudeInstance);
|
|
10
11
|
if (!config.isEnabled) {
|
|
11
12
|
return next();
|
|
@@ -55,21 +56,4 @@ exports.amplitudePlugin = (0, fastify_plugin_1.default)(plugin, {
|
|
|
55
56
|
fastify: '4.x',
|
|
56
57
|
name: 'amplitude-plugin',
|
|
57
58
|
});
|
|
58
|
-
class Amplitude {
|
|
59
|
-
isEnabled;
|
|
60
|
-
constructor(isEnabled) {
|
|
61
|
-
this.isEnabled = isEnabled;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Sends the given event to Amplitude
|
|
65
|
-
*
|
|
66
|
-
* @param event Event to send to amplitude. Please check
|
|
67
|
-
* [this](https://amplitude.github.io/Amplitude-TypeScript/interfaces/_amplitude_analytics_node.Types.BaseEvent.html)
|
|
68
|
-
* to get more info about the BaseEvent type
|
|
69
|
-
*/
|
|
70
|
-
track(event) {
|
|
71
|
-
return this.isEnabled ? (0, analytics_node_1.track)(event) : { promise: Promise.resolve(null) };
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.Amplitude = Amplitude;
|
|
75
59
|
//# sourceMappingURL=amplitudePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amplitudePlugin.js","sourceRoot":"","sources":["../../../lib/plugins/amplitude/amplitudePlugin.ts"],"names":[],"mappings":";;;;AAAA,8DAAqD;AAQrD,4EAA+B;AAE/B,2CAAuC;AAQvC,SAAS,MAAM,CAAC,OAAwB,EAAE,MAAuB,EAAE,IAA2B;IAC5F,MAAM,iBAAiB,GAAG,IAAI,qBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAEhD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,IAAA,qBAAI,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;SAChC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACjB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,mBAAmB;YACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAG,EAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,CAAC,GAAY,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAwB,EACxB,SAAoB,EACpB,eAAyC;IAEzC,OAAO,CAAC,OAAO,CACb,YAAY,EACZ,CAAC,GAAmB,EAAE,GAAiB,EAAE,IAA6B,EAAE,EAAE;QACxE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CACF,CAAA;AACH,CAAC;AAqCD;;;;;;;;;;;;;GAaG;AACU,QAAA,eAAe,GAAG,IAAA,wBAAE,EAAkB,MAAM,EAAE;IACzD,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amplitudePlugin.spec.js","sourceRoot":"","sources":["../../../lib/plugins/amplitude/amplitudePlugin.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NodeConfig } from '@bugsnag/node';
|
|
2
|
-
import { bugsnagErrorReporter, type ErrorReport, reportErrorToBugsnag, type Severity } from '@lokalise/error-utils';
|
|
2
|
+
import { bugsnagErrorReporter, type ErrorReport, reportErrorToBugsnag, addFeatureFlag, type Severity } from '@lokalise/error-utils';
|
|
3
3
|
import type { FastifyInstance } from 'fastify';
|
|
4
|
-
export { reportErrorToBugsnag, bugsnagErrorReporter, ErrorReport, Severity };
|
|
4
|
+
export { reportErrorToBugsnag, addFeatureFlag, bugsnagErrorReporter, ErrorReport, Severity };
|
|
5
5
|
export interface BugsnagPluginConfig {
|
|
6
6
|
bugsnag: NodeConfig;
|
|
7
7
|
isEnabled: boolean;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.bugsnagPlugin = exports.bugsnagErrorReporter = exports.reportErrorToBugsnag = void 0;
|
|
3
|
+
exports.bugsnagPlugin = exports.bugsnagErrorReporter = exports.addFeatureFlag = exports.reportErrorToBugsnag = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const js_1 = tslib_1.__importDefault(require("@bugsnag/js"));
|
|
6
6
|
const error_utils_1 = require("@lokalise/error-utils");
|
|
7
7
|
Object.defineProperty(exports, "bugsnagErrorReporter", { enumerable: true, get: function () { return error_utils_1.bugsnagErrorReporter; } });
|
|
8
8
|
Object.defineProperty(exports, "reportErrorToBugsnag", { enumerable: true, get: function () { return error_utils_1.reportErrorToBugsnag; } });
|
|
9
|
+
Object.defineProperty(exports, "addFeatureFlag", { enumerable: true, get: function () { return error_utils_1.addFeatureFlag; } });
|
|
9
10
|
const fastify_plugin_1 = tslib_1.__importDefault(require("fastify-plugin"));
|
|
10
11
|
function plugin(_app, opts, done) {
|
|
11
12
|
if (opts.isEnabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bugsnagPlugin.js","sourceRoot":"","sources":["../../lib/plugins/bugsnagPlugin.ts"],"names":[],"mappings":";;;;AAAA,6DAAiC;AAEjC,
|
|
1
|
+
{"version":3,"file":"bugsnagPlugin.js","sourceRoot":"","sources":["../../lib/plugins/bugsnagPlugin.ts"],"names":[],"mappings":";;;;AAAA,6DAAiC;AAEjC,uDAM8B;AAIiB,qGAT7C,kCAAoB,OAS6C;AAA1D,qGAPP,kCAAoB,OAOO;AAAE,+FAN7B,4BAAc,OAM6B;AAF7C,4EAA+B;AAS/B,SAAS,MAAM,CAAC,IAAqB,EAAE,IAAyB,EAAE,IAAgB;IAChF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,YAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,EAAE,CAAA;AACR,CAAC;AAEY,QAAA,aAAa,GAAG,IAAA,wBAAE,EAAC,MAAM,EAAE;IACtC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,gBAAgB;CACvB,CAAC,CAAA"}
|
|
@@ -7,6 +7,6 @@ export interface MetricsPluginOptions {
|
|
|
7
7
|
bindAddress?: string;
|
|
8
8
|
errorObjectResolver: ErrorObjectResolver;
|
|
9
9
|
}
|
|
10
|
-
declare function plugin(app: FastifyInstance, opts: MetricsPluginOptions):
|
|
10
|
+
declare function plugin(app: FastifyInstance, opts: MetricsPluginOptions, done: (err?: Error) => void): void;
|
|
11
11
|
export declare const metricsPlugin: typeof plugin;
|
|
12
12
|
export {};
|
|
@@ -6,7 +6,7 @@ const fastify_1 = tslib_1.__importDefault(require("fastify"));
|
|
|
6
6
|
const fastify_metrics_1 = tslib_1.__importDefault(require("fastify-metrics"));
|
|
7
7
|
const fastify_plugin_1 = tslib_1.__importDefault(require("fastify-plugin"));
|
|
8
8
|
const METRICS_PORT = 9080;
|
|
9
|
-
function plugin(app, opts) {
|
|
9
|
+
function plugin(app, opts, done) {
|
|
10
10
|
void app.register(fastify_metrics_1.default, {
|
|
11
11
|
defaultMetrics: { enabled: true },
|
|
12
12
|
endpoint: null,
|
|
@@ -14,43 +14,48 @@ function plugin(app, opts) {
|
|
|
14
14
|
name: 'metrics',
|
|
15
15
|
routeMetrics: { enabled: true },
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
17
|
+
try {
|
|
18
|
+
const promServer = (0, fastify_1.default)({
|
|
19
|
+
logger: opts.loggerOptions,
|
|
20
|
+
disableRequestLogging: opts.disablePrometheusRequestLogging ?? true,
|
|
21
|
+
});
|
|
22
|
+
promServer.route({
|
|
23
|
+
url: '/metrics',
|
|
24
|
+
method: 'GET',
|
|
25
|
+
logLevel: 'info',
|
|
26
|
+
schema: {
|
|
27
|
+
// hide route from swagger plugins
|
|
28
|
+
// @ts-expect-error
|
|
29
|
+
hide: true,
|
|
30
|
+
},
|
|
31
|
+
handler: async (_, reply) => {
|
|
32
|
+
const metrics = await app.metrics.client.register.metrics();
|
|
33
|
+
return reply.type('text/plain').send(metrics);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
app.addHook('onClose', async () => {
|
|
37
|
+
await promServer.close();
|
|
38
|
+
});
|
|
39
|
+
promServer
|
|
40
|
+
.listen({
|
|
41
|
+
port: METRICS_PORT,
|
|
42
|
+
host: opts.bindAddress,
|
|
43
|
+
listenTextResolver: (address) => {
|
|
44
|
+
return `Prometheus metrics server listening at ${address}`;
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
.then(() => {
|
|
48
|
+
done();
|
|
49
|
+
})
|
|
50
|
+
.catch((err) => {
|
|
51
|
+
const logObject = opts.errorObjectResolver(err);
|
|
52
|
+
promServer.log.error(logObject);
|
|
53
|
+
done(new Error('Critical error when trying to launch metrics server'));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
done(err);
|
|
58
|
+
}
|
|
54
59
|
}
|
|
55
60
|
exports.metricsPlugin = (0, fastify_plugin_1.default)(plugin, {
|
|
56
61
|
fastify: '4.x',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metricsPlugin.js","sourceRoot":"","sources":["../../lib/plugins/metricsPlugin.ts"],"names":[],"mappings":";;;;AACA,8DAA6B;AAE7B,8EAA4C;AAC5C,4EAA+B;AAE/B,MAAM,YAAY,GAAG,IAAI,CAAA;AAWzB,SAAS,MAAM,CAAC,GAAoB,EAAE,IAA0B;
|
|
1
|
+
{"version":3,"file":"metricsPlugin.js","sourceRoot":"","sources":["../../lib/plugins/metricsPlugin.ts"],"names":[],"mappings":";;;;AACA,8DAA6B;AAE7B,8EAA4C;AAC5C,4EAA+B;AAE/B,MAAM,YAAY,GAAG,IAAI,CAAA;AAWzB,SAAS,MAAM,CAAC,GAAoB,EAAE,IAA0B,EAAE,IAA2B;IAC3F,KAAK,GAAG,CAAC,QAAQ,CAAC,yBAAc,EAAE;QAChC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACjC,QAAQ,EAAE,IAAI;QACd,mBAAmB,EAAE,IAAI;QACzB,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAChC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAA,iBAAO,EAAC;YACzB,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,qBAAqB,EAAE,IAAI,CAAC,+BAA+B,IAAI,IAAI;SACpE,CAAC,CAAA;QAEF,UAAU,CAAC,KAAK,CAAC;YACf,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE;gBACN,kCAAkC;gBAClC,mBAAmB;gBACnB,IAAI,EAAE,IAAI;aACX;YACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC1B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC/C,CAAC;SACF,CAAC,CAAA;QAEF,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,UAAU;aACP,MAAM,CAAC;YACN,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,kBAAkB,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC9B,OAAO,0CAA0C,OAAO,EAAE,CAAA;YAC5D,CAAC;SACF,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,EAAE,CAAA;QACR,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC/C,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC/B,IAAI,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAY,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAEY,QAAA,aAAa,GAAG,IAAA,wBAAE,EAAC,MAAM,EAAE;IACtC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,gBAAgB;CACvB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lokalise/fastify-extras",
|
|
3
|
-
"version": "17.0
|
|
3
|
+
"version": "17.1.0",
|
|
4
4
|
"description": "Opinionated set of fastify plugins, commonly used in Lokalise",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Lokalise",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@bugsnag/js": "^7.22.4",
|
|
46
|
-
"@lokalise/error-utils": "^1.0
|
|
46
|
+
"@lokalise/error-utils": "^1.1.0",
|
|
47
47
|
"@opentelemetry/api": "1.8.0",
|
|
48
48
|
"@opentelemetry/exporter-trace-otlp-grpc": "~0.49.1",
|
|
49
49
|
"@opentelemetry/instrumentation": "~0.49.1",
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"eslint-plugin-import": "^2.29.1",
|
|
82
82
|
"eslint-plugin-vitest": "^0.3.20",
|
|
83
83
|
"fastify": "^4.25.2",
|
|
84
|
-
"newrelic": "11.
|
|
84
|
+
"newrelic": "11.15.0",
|
|
85
85
|
"pino": "^8.17.2",
|
|
86
|
-
"pino-pretty": "^
|
|
86
|
+
"pino-pretty": "^11.0.0",
|
|
87
87
|
"prettier": "^3.2.5",
|
|
88
88
|
"shx": "^0.3.4",
|
|
89
89
|
"ts-node": "^10.9.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amplitudePlugin.js","sourceRoot":"","sources":["../../lib/plugins/amplitudePlugin.ts"],"names":[],"mappings":";;;;AAAA,8DAA4D;AAc5D,4EAA+B;AAQ/B,SAAS,MAAM,CAAC,OAAwB,EAAE,MAAuB,EAAE,IAA2B;IAC5F,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;IAEhD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,IAAA,qBAAI,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;SAChC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACjB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,mBAAmB;YACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAG,EAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,IAAI,CAAC,GAAY,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAwB,EACxB,SAAoB,EACpB,eAAyC;IAEzC,OAAO,CAAC,OAAO,CACb,YAAY,EACZ,CAAC,GAAmB,EAAE,GAAiB,EAAE,IAA6B,EAAE,EAAE;QACxE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,EAAE,CAAA;IACf,CAAC,CACF,CAAA;AACH,CAAC;AAqCD;;;;;;;;;;;;;GAaG;AACU,QAAA,eAAe,GAAG,IAAA,wBAAE,EAAkB,MAAM,EAAE;IACzD,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAA;AAEF,MAAa,SAAS;IACH,SAAS,CAAS;IAEnC,YAAY,SAAkB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,KAAgB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3E,CAAC;CACF;AAjBD,8BAiBC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amplitudePlugin.spec.js","sourceRoot":"","sources":["../../lib/plugins/amplitudePlugin.spec.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|