Skip to content

Commit df6f85b

Browse files
committed
chore: add-console-telemetry
1 parent 3ac2dad commit df6f85b

9 files changed

Lines changed: 207 additions & 14 deletions

File tree

e2e/mock-api-v2/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
"main": "./src/main.js",
88
"scripts": {
99
"build": "pnpm nx nxBuild",
10-
"dev": "pnpm nx build --watch & node dist/src/main.js --watch-path=./",
10+
"dev": "node dist/src/main.js --watch-path=./",
1111
"lint": "pnpm nx nxLint",
1212
"serve": "node dist/src/main.js",
1313
"test": "pnpm nx nxTest"
1414
},
1515
"dependencies": {
1616
"@effect/language-service": "catalog:effect",
17+
"@effect/opentelemetry": "0.53.1",
1718
"@effect/platform": "catalog:effect",
1819
"@effect/platform-node": "catalog:effect",
20+
"@opentelemetry/sdk-logs": "0.202.0",
21+
"@opentelemetry/sdk-metrics": "2.0.1",
22+
"@opentelemetry/sdk-trace-base": "2.0.1",
23+
"@opentelemetry/sdk-trace-node": "2.0.1",
24+
"@opentelemetry/sdk-trace-web": "2.0.1",
1925
"effect": "catalog:effect",
2026
"nanoid": "5.1.5"
2127
},

e2e/mock-api-v2/src/handlers/authorize.handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const AuthorizeHandlerMock = HttpApiBuilder.group(MockApi, 'Authorization', (han
1818
const response = yield* handleAuthorize(urlParams);
1919

2020
return response.body;
21-
}),
21+
}).pipe(Effect.withSpan('DavinciAuthorize')),
2222
),
2323
);
2424

e2e/mock-api-v2/src/handlers/healthcheck.handler.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { MockApi } from '../spec.js';
33
import { Effect } from 'effect';
44

55
const HealthCheckLive = HttpApiBuilder.group(MockApi, 'Healthcheck', (handlers) =>
6-
handlers.handle('HealthCheck', () => Effect.succeed('Healthy')),
6+
handlers.handle('HealthCheck', () =>
7+
Effect.succeed('Healthy').pipe(Effect.withSpan('HealthCheck')),
8+
),
79
);
810

911
export { HealthCheckLive };

e2e/mock-api-v2/src/handlers/open-id-configuration.handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { HttpApiBuilder } from '@effect/platform';
1919
const OpenidConfigMock = HttpApiBuilder.group(MockApi, 'OpenIDConfig', (handlers) =>
2020
handlers.handle(
2121
'openid',
22-
Effect.fn(function* () {
22+
Effect.fn('OpenId')(function* () {
2323
const value = yield* Effect.succeed(openidConfigurationResponse);
2424
return value;
2525
}),

e2e/mock-api-v2/src/handlers/token.handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const TokensHandler = HttpApiBuilder.group(MockApi, 'Tokens', (handlers) =>
1616
const tokens = yield* getTokens(null);
1717

1818
return tokens;
19-
}),
19+
}).pipe(Effect.withSpan('TokensHandler')),
2020
),
2121
);
2222

e2e/mock-api-v2/src/handlers/userinfo.handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const UserInfoMockHandler = HttpApiBuilder.group(MockApi, 'Protected Requests',
2222
const response = yield* getUserInfo(authToken);
2323

2424
return response;
25-
}),
25+
}).pipe(Effect.withSpan('UserInfoHandler')),
2626
),
2727
);
2828

e2e/mock-api-v2/src/main.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ import { UserInfoMockService } from './services/userinfo.service.js';
2121
import { AuthorizationMock } from './middleware/Authorization.js';
2222
import { SessionMiddlewareMock } from './middleware/Session.js';
2323
import { SessionStorage } from './services/session.service.js';
24+
import { NodeSdk } from '@effect/opentelemetry';
25+
import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base';
26+
27+
const NodeSdkLive = NodeSdk.layer(() => ({
28+
resource: { serviceName: 'Mock-Api' },
29+
spanProcessor: new BatchSpanProcessor(new ConsoleSpanExporter()),
30+
}));
2431

2532
const APIMock = HttpApiBuilder.api(MockApi).pipe(
2633
Layer.provide(HealthCheckLive),
@@ -40,6 +47,7 @@ const ServerMock = HttpApiBuilder.serve(HttpMiddleware.logger).pipe(
4047
Layer.provide(SessionMiddlewareMock),
4148
Layer.provide(SessionStorage.Default),
4249
Layer.provide(AuthorizeMock),
50+
Layer.provide(NodeSdkLive),
4351
Layer.provide(
4452
HttpApiBuilder.middlewareCors({
4553
allowedMethods: ['GET', 'PUT', 'POST', 'OPTIONS'],

e2e/mock-api-v2/src/services/session.service.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ export class SessionStorage extends Effect.Service<SessionStorage>()('SessionSto
3030
};
3131

3232
return {
33-
createSession: (data: SessionData) => {
33+
createSession: Effect.fn('CreateSessionMiddleware')(function* (data: SessionData) {
3434
const sessionId = nanoid();
3535
_store.set(sessionId, data);
36-
return Effect.succeed(data);
37-
},
36+
return data;
37+
}),
3838

39-
getSession: Effect.fn(function* (sessionId: string) {
39+
getSession: Effect.fn('GetSessionMiddleware')(function* (sessionId: string) {
4040
const session = _store.get(sessionId);
4141

4242
if (!session) {
@@ -52,20 +52,26 @@ export class SessionStorage extends Effect.Service<SessionStorage>()('SessionSto
5252
return session;
5353
}),
5454

55-
deleteSession: Effect.fn(function* (sessionId: string) {
55+
deleteSession: Effect.fn('DeleteSessionMiddleware')(function* (sessionId: string) {
5656
_store.delete(sessionId);
5757
return undefined;
5858
}),
5959

60-
updateSession: Effect.fn(function* (sessionId: string, data: SessionData) {
60+
updateSession: Effect.fn('UpdateSessionMiddleware')(function* (
61+
sessionId: string,
62+
data: SessionData,
63+
) {
6164
if (!_store.has(sessionId)) {
6265
return new Error('Session not found');
6366
}
6467
_store.set(sessionId, data);
6568
return data;
6669
}),
6770

68-
refreshSession: Effect.fn(function* (sessionId: string, expiryDate?: Date) {
71+
refreshSession: Effect.fn('RefreshSessionMiddleware')(function* (
72+
sessionId: string,
73+
expiryDate?: Date,
74+
) {
6975
const session = _store.get(sessionId);
7076

7177
if (!session) {
@@ -87,7 +93,7 @@ export class SessionStorage extends Effect.Service<SessionStorage>()('SessionSto
8793

8894
isSessionExpired,
8995

90-
cleanupExpiredSessions: Effect.fn(function* () {
96+
cleanupExpiredSessions: Effect.fn('CleanupExpiredSessionsMiddleware')(function* () {
9197
for (const [sessionId, session] of _store.entries()) {
9298
if (isSessionExpired(session)) {
9399
_store.delete(sessionId);

pnpm-lock.yaml

Lines changed: 171 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)