Skip to content

Commit ae7f520

Browse files
Copilotrubensworks
andcommitted
Fix linting errors in Solid authentication handlers
Co-authored-by: rubensworks <440384+rubensworks@users.noreply.github.com>
1 parent c02ed93 commit ae7f520

7 files changed

Lines changed: 2086 additions & 338 deletions

File tree

engines/mcp-sparql-hdt/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"build:ts": "node \"../../node_modules/typescript/bin/tsc\""
5454
},
5555
"dependencies": {
56-
"@comunica/query-sparql-hdt": "^5.1.3",
56+
"@comunica/query-sparql-hdt": "^5.0.0",
5757
"@comunica/utils-mcp": "^5.1.3"
5858
}
5959
}

engines/mcp-sparql-link-traversal-solid/lib/BinHelpersSolid.ts

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable unicorn/no-process-exit */
22
import type { QueryEngineBase } from '@comunica/actor-init-query';
3-
import type { Session } from '@rubensworks/solid-client-authn-isomorphic';
43
import { SparqlMcpServer } from '@comunica/utils-mcp';
4+
import type { Session } from '@rubensworks/solid-client-authn-isomorphic';
55
import yargs from 'yargs';
66
import { hideBin } from 'yargs/helpers';
77

@@ -60,64 +60,63 @@ export function runCliSolid(queryEngine: QueryEngineBase, version: string): void
6060
}
6161

6262
// Add session to query engine context if authenticated
63+
let wrappedQueryEngine = queryEngine;
6364
if (session) {
65+
// Create a wrapper that adds the session to all query contexts
66+
wrappedQueryEngine = Object.create(queryEngine);
6467
const originalQuery = queryEngine.query.bind(queryEngine);
65-
queryEngine.query = function(query: string, context?: any): any {
66-
const contextWithAuth = {
68+
const originalQueryBindings = queryEngine.queryBindings.bind(queryEngine);
69+
const originalQueryQuads = queryEngine.queryQuads.bind(queryEngine);
70+
const originalQueryBoolean = queryEngine.queryBoolean.bind(queryEngine);
71+
const originalQueryVoid = queryEngine.queryVoid.bind(queryEngine);
72+
73+
wrappedQueryEngine.query = function(query: any, context?: any): any {
74+
return originalQuery(query, {
6775
...context,
6876
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
69-
};
70-
return originalQuery(query, contextWithAuth);
77+
});
7178
};
7279

73-
const originalQueryBindings = queryEngine.queryBindings.bind(queryEngine);
74-
queryEngine.queryBindings = function(query: string, context?: any): any {
75-
const contextWithAuth = {
80+
wrappedQueryEngine.queryBindings = function(query: any, context?: any): any {
81+
return originalQueryBindings(query, {
7682
...context,
7783
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
78-
};
79-
return originalQueryBindings(query, contextWithAuth);
84+
});
8085
};
8186

82-
const originalQueryQuads = queryEngine.queryQuads.bind(queryEngine);
83-
queryEngine.queryQuads = function(query: string, context?: any): any {
84-
const contextWithAuth = {
87+
wrappedQueryEngine.queryQuads = function(query: any, context?: any): any {
88+
return originalQueryQuads(query, {
8589
...context,
8690
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
87-
};
88-
return originalQueryQuads(query, contextWithAuth);
91+
});
8992
};
9093

91-
const originalQueryBoolean = queryEngine.queryBoolean.bind(queryEngine);
92-
queryEngine.queryBoolean = function(query: string, context?: any): any {
93-
const contextWithAuth = {
94+
wrappedQueryEngine.queryBoolean = function(query: any, context?: any): any {
95+
return originalQueryBoolean(query, {
9496
...context,
9597
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
96-
};
97-
return originalQueryBoolean(query, contextWithAuth);
98+
});
9899
};
99100

100-
const originalQueryVoid = queryEngine.queryVoid.bind(queryEngine);
101-
queryEngine.queryVoid = function(query: string, context?: any): any {
102-
const contextWithAuth = {
101+
wrappedQueryEngine.queryVoid = function(query: any, context?: any): any {
102+
return originalQueryVoid(query, {
103103
...context,
104104
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
105-
};
106-
return originalQueryVoid(query, contextWithAuth);
105+
});
107106
};
108107
}
109108

110109
const server = new SparqlMcpServer(
111110
'http',
112111
argv.port,
113-
queryEngine,
112+
wrappedQueryEngine,
114113
version,
115114
process.stderr,
116115
defaultSources,
117116
);
118117

119118
// Handle graceful shutdown
120-
const cleanup = async() => {
119+
const cleanup = async(): Promise<void> => {
121120
if (session) {
122121
try {
123122
await session.logout();
@@ -128,22 +127,20 @@ export function runCliSolid(queryEngine: QueryEngineBase, version: string): void
128127
}
129128
};
130129

131-
process.on('SIGINT', async() => {
132-
await cleanup();
133-
process.exit(0);
130+
process.on('SIGINT', () => {
131+
cleanup().then(() => process.exit(0)).catch(() => process.exit(1));
134132
});
135133

136-
process.on('SIGTERM', async() => {
137-
await cleanup();
138-
process.exit(0);
134+
process.on('SIGTERM', () => {
135+
cleanup().then(() => process.exit(0)).catch(() => process.exit(1));
139136
});
140137

141-
server.start().catch((error) => {
138+
await server.start().catch((error) => {
142139
process.stderr.write(`Server error: ${error.message}\n`);
143140
if (error.stack) {
144141
process.stderr.write(`${error.stack}\n`);
145142
}
146-
cleanup().finally(() => process.exit(1));
143+
return cleanup().finally(() => process.exit(1));
147144
});
148145
})().catch((error) => {
149146
process.stderr.write(`Initialization error: ${error.message}\n`);

engines/mcp-sparql-link-traversal-solid/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"build:ts": "node \"../../node_modules/typescript/bin/tsc\""
5656
},
5757
"dependencies": {
58-
"@comunica/query-sparql-link-traversal-solid": "^5.1.3",
58+
"@comunica/query-sparql-link-traversal-solid": "^0.8.0",
5959
"@comunica/utils-mcp": "^5.1.3",
6060
"@rubensworks/solid-client-authn-isomorphic": "^2.0.0",
6161
"solid-node-interactive-auth": "^1.0.2",

engines/mcp-sparql-link-traversal/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"build:ts": "node \"../../node_modules/typescript/bin/tsc\""
5555
},
5656
"dependencies": {
57-
"@comunica/query-sparql-link-traversal": "^5.1.3",
57+
"@comunica/query-sparql-link-traversal": "^0.8.0",
5858
"@comunica/utils-mcp": "^5.1.3"
5959
}
6060
}

engines/mcp-sparql-solid/lib/BinHelpersSolid.ts

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable unicorn/no-process-exit */
22
import type { QueryEngineBase } from '@comunica/actor-init-query';
3-
import type { Session } from '@rubensworks/solid-client-authn-isomorphic';
43
import { SparqlMcpServer } from '@comunica/utils-mcp';
4+
import type { Session } from '@rubensworks/solid-client-authn-isomorphic';
55
import yargs from 'yargs';
66
import { hideBin } from 'yargs/helpers';
77

@@ -60,64 +60,63 @@ export function runCliSolid(queryEngine: QueryEngineBase, version: string): void
6060
}
6161

6262
// Add session to query engine context if authenticated
63+
let wrappedQueryEngine = queryEngine;
6364
if (session) {
65+
// Create a wrapper that adds the session to all query contexts
66+
wrappedQueryEngine = Object.create(queryEngine);
6467
const originalQuery = queryEngine.query.bind(queryEngine);
65-
queryEngine.query = function(query: string, context?: any): any {
66-
const contextWithAuth = {
68+
const originalQueryBindings = queryEngine.queryBindings.bind(queryEngine);
69+
const originalQueryQuads = queryEngine.queryQuads.bind(queryEngine);
70+
const originalQueryBoolean = queryEngine.queryBoolean.bind(queryEngine);
71+
const originalQueryVoid = queryEngine.queryVoid.bind(queryEngine);
72+
73+
wrappedQueryEngine.query = function(query: any, context?: any): any {
74+
return originalQuery(query, {
6775
...context,
6876
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
69-
};
70-
return originalQuery(query, contextWithAuth);
77+
});
7178
};
7279

73-
const originalQueryBindings = queryEngine.queryBindings.bind(queryEngine);
74-
queryEngine.queryBindings = function(query: string, context?: any): any {
75-
const contextWithAuth = {
80+
wrappedQueryEngine.queryBindings = function(query: any, context?: any): any {
81+
return originalQueryBindings(query, {
7682
...context,
7783
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
78-
};
79-
return originalQueryBindings(query, contextWithAuth);
84+
});
8085
};
8186

82-
const originalQueryQuads = queryEngine.queryQuads.bind(queryEngine);
83-
queryEngine.queryQuads = function(query: string, context?: any): any {
84-
const contextWithAuth = {
87+
wrappedQueryEngine.queryQuads = function(query: any, context?: any): any {
88+
return originalQueryQuads(query, {
8589
...context,
8690
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
87-
};
88-
return originalQueryQuads(query, contextWithAuth);
91+
});
8992
};
9093

91-
const originalQueryBoolean = queryEngine.queryBoolean.bind(queryEngine);
92-
queryEngine.queryBoolean = function(query: string, context?: any): any {
93-
const contextWithAuth = {
94+
wrappedQueryEngine.queryBoolean = function(query: any, context?: any): any {
95+
return originalQueryBoolean(query, {
9496
...context,
9597
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
96-
};
97-
return originalQueryBoolean(query, contextWithAuth);
98+
});
9899
};
99100

100-
const originalQueryVoid = queryEngine.queryVoid.bind(queryEngine);
101-
queryEngine.queryVoid = function(query: string, context?: any): any {
102-
const contextWithAuth = {
101+
wrappedQueryEngine.queryVoid = function(query: any, context?: any): any {
102+
return originalQueryVoid(query, {
103103
...context,
104104
'@comunica/actor-http-inrupt-solid-client-authn:session': session,
105-
};
106-
return originalQueryVoid(query, contextWithAuth);
105+
});
107106
};
108107
}
109108

110109
const server = new SparqlMcpServer(
111110
'http',
112111
argv.port,
113-
queryEngine,
112+
wrappedQueryEngine,
114113
version,
115114
process.stderr,
116115
defaultSources,
117116
);
118117

119118
// Handle graceful shutdown
120-
const cleanup = async() => {
119+
const cleanup = async(): Promise<void> => {
121120
if (session) {
122121
try {
123122
await session.logout();
@@ -128,22 +127,20 @@ export function runCliSolid(queryEngine: QueryEngineBase, version: string): void
128127
}
129128
};
130129

131-
process.on('SIGINT', async() => {
132-
await cleanup();
133-
process.exit(0);
130+
process.on('SIGINT', () => {
131+
cleanup().then(() => process.exit(0)).catch(() => process.exit(1));
134132
});
135133

136-
process.on('SIGTERM', async() => {
137-
await cleanup();
138-
process.exit(0);
134+
process.on('SIGTERM', () => {
135+
cleanup().then(() => process.exit(0)).catch(() => process.exit(1));
139136
});
140137

141-
server.start().catch((error) => {
138+
await server.start().catch((error) => {
142139
process.stderr.write(`Server error: ${error.message}\n`);
143140
if (error.stack) {
144141
process.stderr.write(`${error.stack}\n`);
145142
}
146-
cleanup().finally(() => process.exit(1));
143+
return cleanup().finally(() => process.exit(1));
147144
});
148145
})().catch((error) => {
149146
process.stderr.write(`Initialization error: ${error.message}\n`);

engines/mcp-sparql-solid/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"build:ts": "node \"../../node_modules/typescript/bin/tsc\""
5555
},
5656
"dependencies": {
57-
"@comunica/query-sparql-solid": "^5.1.3",
57+
"@comunica/query-sparql-solid": "^5.0.1",
5858
"@comunica/utils-mcp": "^5.1.3",
5959
"@rubensworks/solid-client-authn-isomorphic": "^2.0.0",
6060
"solid-node-interactive-auth": "^1.0.2",

0 commit comments

Comments
 (0)