@0xobelisk/graphql-server 1.2.0-pre.100
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/.turbo/turbo-build.log +8 -0
- package/DUAL_POOL_CONFIG.md +188 -0
- package/Dockerfile +35 -0
- package/LICENSE +92 -0
- package/README.md +487 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +206 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/subscription-config.d.ts +80 -0
- package/dist/config/subscription-config.d.ts.map +1 -0
- package/dist/config/subscription-config.js +158 -0
- package/dist/config/subscription-config.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/all-fields-filter-plugin.d.ts +4 -0
- package/dist/plugins/all-fields-filter-plugin.d.ts.map +1 -0
- package/dist/plugins/all-fields-filter-plugin.js +132 -0
- package/dist/plugins/all-fields-filter-plugin.js.map +1 -0
- package/dist/plugins/database-introspector.d.ts +23 -0
- package/dist/plugins/database-introspector.d.ts.map +1 -0
- package/dist/plugins/database-introspector.js +96 -0
- package/dist/plugins/database-introspector.js.map +1 -0
- package/dist/plugins/enhanced-playground.d.ts +9 -0
- package/dist/plugins/enhanced-playground.d.ts.map +1 -0
- package/dist/plugins/enhanced-playground.js +113 -0
- package/dist/plugins/enhanced-playground.js.map +1 -0
- package/dist/plugins/enhanced-server-manager.d.ts +29 -0
- package/dist/plugins/enhanced-server-manager.d.ts.map +1 -0
- package/dist/plugins/enhanced-server-manager.js +262 -0
- package/dist/plugins/enhanced-server-manager.js.map +1 -0
- package/dist/plugins/index.d.ts +9 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +26 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/postgraphile-config.d.ts +94 -0
- package/dist/plugins/postgraphile-config.d.ts.map +1 -0
- package/dist/plugins/postgraphile-config.js +138 -0
- package/dist/plugins/postgraphile-config.js.map +1 -0
- package/dist/plugins/query-filter.d.ts +4 -0
- package/dist/plugins/query-filter.d.ts.map +1 -0
- package/dist/plugins/query-filter.js +42 -0
- package/dist/plugins/query-filter.js.map +1 -0
- package/dist/plugins/simple-naming.d.ts +4 -0
- package/dist/plugins/simple-naming.d.ts.map +1 -0
- package/dist/plugins/simple-naming.js +79 -0
- package/dist/plugins/simple-naming.js.map +1 -0
- package/dist/plugins/welcome-page.d.ts +11 -0
- package/dist/plugins/welcome-page.d.ts.map +1 -0
- package/dist/plugins/welcome-page.js +203 -0
- package/dist/plugins/welcome-page.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +265 -0
- package/dist/server.js.map +1 -0
- package/dist/universal-subscriptions.d.ts +32 -0
- package/dist/universal-subscriptions.d.ts.map +1 -0
- package/dist/universal-subscriptions.js +318 -0
- package/dist/universal-subscriptions.js.map +1 -0
- package/dist/utils/logger/index.d.ts +80 -0
- package/dist/utils/logger/index.d.ts.map +1 -0
- package/dist/utils/logger/index.js +230 -0
- package/dist/utils/logger/index.js.map +1 -0
- package/docker-compose.yml +46 -0
- package/eslint.config.mjs +3 -0
- package/package.json +78 -0
- package/src/cli.ts +232 -0
- package/src/config/subscription-config.ts +243 -0
- package/src/index.ts +11 -0
- package/src/plugins/README.md +138 -0
- package/src/plugins/all-fields-filter-plugin.ts +158 -0
- package/src/plugins/database-introspector.ts +126 -0
- package/src/plugins/enhanced-playground.ts +121 -0
- package/src/plugins/enhanced-server-manager.ts +314 -0
- package/src/plugins/index.ts +9 -0
- package/src/plugins/postgraphile-config.ts +182 -0
- package/src/plugins/query-filter.ts +50 -0
- package/src/plugins/simple-naming.ts +105 -0
- package/src/plugins/welcome-page.ts +218 -0
- package/src/server.ts +324 -0
- package/src/universal-subscriptions.ts +397 -0
- package/src/utils/logger/README.md +209 -0
- package/src/utils/logger/index.ts +275 -0
- package/sui-indexer-schema.graphql +3691 -0
- package/tsconfig.json +28 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export interface SubscriptionCapabilities {
|
|
2
|
+
liveQueries: boolean;
|
|
3
|
+
pgSubscriptions: boolean;
|
|
4
|
+
nativeWebSocket: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface SubscriptionConfig {
|
|
7
|
+
enableSubscriptions: boolean;
|
|
8
|
+
capabilities: SubscriptionCapabilities;
|
|
9
|
+
walLevel: 'minimal' | 'replica' | 'logical';
|
|
10
|
+
graphqlPort: number;
|
|
11
|
+
websocketPort?: number;
|
|
12
|
+
maxConnections: number;
|
|
13
|
+
heartbeatInterval: number;
|
|
14
|
+
enableNotificationLogging: boolean;
|
|
15
|
+
enablePerformanceMetrics: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface SubscriptionConfigInput {
|
|
18
|
+
enableSubscriptions: boolean;
|
|
19
|
+
databaseUrl: string;
|
|
20
|
+
port: string;
|
|
21
|
+
enableLiveQueries?: boolean;
|
|
22
|
+
enablePgSubscriptions?: boolean;
|
|
23
|
+
enableNativeWebSocket?: boolean;
|
|
24
|
+
realtimePort?: string;
|
|
25
|
+
maxConnections?: string;
|
|
26
|
+
heartbeatInterval?: string;
|
|
27
|
+
debugNotifications?: boolean;
|
|
28
|
+
enableMetrics?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare class SubscriptionConfigManager {
|
|
31
|
+
private config;
|
|
32
|
+
constructor(configInput: SubscriptionConfigInput);
|
|
33
|
+
private parseConfigInput;
|
|
34
|
+
private detectWalLevel;
|
|
35
|
+
getConfig(): SubscriptionConfig;
|
|
36
|
+
getRecommendedSubscriptionMethod(): string;
|
|
37
|
+
generateClientConfig(): {
|
|
38
|
+
graphqlEndpoint: string;
|
|
39
|
+
subscriptionEndpoint: string | undefined;
|
|
40
|
+
nativeWebSocketEndpoint: string | undefined;
|
|
41
|
+
capabilities: SubscriptionCapabilities;
|
|
42
|
+
recommendedMethod: string;
|
|
43
|
+
};
|
|
44
|
+
generatePostGraphileConfig(): {
|
|
45
|
+
subscriptions: boolean;
|
|
46
|
+
live: boolean;
|
|
47
|
+
simpleSubscriptions: boolean;
|
|
48
|
+
pgSettings: {
|
|
49
|
+
statement_timeout: string;
|
|
50
|
+
default_transaction_isolation: string;
|
|
51
|
+
};
|
|
52
|
+
allowExplain: boolean;
|
|
53
|
+
disableQueryLog: boolean;
|
|
54
|
+
};
|
|
55
|
+
generateDocumentation(): string;
|
|
56
|
+
}
|
|
57
|
+
export declare const subscriptionConfig: {
|
|
58
|
+
getConfig(): SubscriptionConfig;
|
|
59
|
+
generateClientConfig(): {
|
|
60
|
+
graphqlEndpoint: string;
|
|
61
|
+
subscriptionEndpoint: string | undefined;
|
|
62
|
+
nativeWebSocketEndpoint: string | undefined;
|
|
63
|
+
capabilities: SubscriptionCapabilities;
|
|
64
|
+
recommendedMethod: string;
|
|
65
|
+
};
|
|
66
|
+
generatePostGraphileConfig(): {
|
|
67
|
+
subscriptions: boolean;
|
|
68
|
+
live: boolean;
|
|
69
|
+
simpleSubscriptions: boolean;
|
|
70
|
+
pgSettings: {
|
|
71
|
+
statement_timeout: string;
|
|
72
|
+
default_transaction_isolation: string;
|
|
73
|
+
};
|
|
74
|
+
allowExplain: boolean;
|
|
75
|
+
disableQueryLog: boolean;
|
|
76
|
+
};
|
|
77
|
+
generateDocumentation(): string;
|
|
78
|
+
refresh(configInput: SubscriptionConfigInput): void;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=subscription-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-config.d.ts","sourceRoot":"","sources":["../../src/config/subscription-config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAEjC,mBAAmB,EAAE,OAAO,CAAC;IAG7B,YAAY,EAAE,wBAAwB,CAAC;IAGvC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAG5C,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAGD,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,WAAW,EAAE,uBAAuB;IAKhD,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,cAAc;IAStB,SAAS,IAAI,kBAAkB;IAK/B,gCAAgC,IAAI,MAAM;IAa1C,oBAAoB;;;;;;;IAkBpB,0BAA0B;;;;;;;;;;;IAmB1B,qBAAqB,IAAI,MAAM;CA6ChC;AAKD,eAAO,MAAM,kBAAkB;iBAChB,kBAAkB;;;;;;;;;;;;;;;;;;;6BA2BN,MAAM;yBAUV,uBAAuB;CAG7C,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Subscription configuration manager - supports dynamic configuration for three subscription modes
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.subscriptionConfig = exports.SubscriptionConfigManager = void 0;
|
|
5
|
+
class SubscriptionConfigManager {
|
|
6
|
+
config;
|
|
7
|
+
constructor(configInput) {
|
|
8
|
+
this.config = this.parseConfigInput(configInput);
|
|
9
|
+
}
|
|
10
|
+
// Parse configuration from input parameters
|
|
11
|
+
parseConfigInput(input) {
|
|
12
|
+
const enableSubscriptions = input.enableSubscriptions;
|
|
13
|
+
// Auto-detect WAL level (in actual applications, query through database)
|
|
14
|
+
const walLevel = this.detectWalLevel(input.databaseUrl);
|
|
15
|
+
// Determine capabilities based on input parameters - default enable all features when subscriptions are enabled
|
|
16
|
+
const capabilities = {
|
|
17
|
+
liveQueries: enableSubscriptions && input.enableLiveQueries !== false && walLevel === 'logical',
|
|
18
|
+
pgSubscriptions: enableSubscriptions && input.enablePgSubscriptions !== false,
|
|
19
|
+
nativeWebSocket: enableSubscriptions && input.enableNativeWebSocket !== false
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
enableSubscriptions,
|
|
23
|
+
capabilities,
|
|
24
|
+
walLevel,
|
|
25
|
+
graphqlPort: parseInt(input.port),
|
|
26
|
+
websocketPort: input.realtimePort ? parseInt(input.realtimePort) : undefined,
|
|
27
|
+
maxConnections: parseInt(input.maxConnections || '1000'),
|
|
28
|
+
heartbeatInterval: parseInt(input.heartbeatInterval || '30000'),
|
|
29
|
+
enableNotificationLogging: input.debugNotifications === true,
|
|
30
|
+
enablePerformanceMetrics: input.enableMetrics === true
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Detect database WAL level
|
|
34
|
+
detectWalLevel(_databaseUrl) {
|
|
35
|
+
// In actual applications should query database
|
|
36
|
+
// SELECT setting FROM pg_settings WHERE name = 'wal_level';
|
|
37
|
+
// Currently return default value
|
|
38
|
+
return 'replica';
|
|
39
|
+
}
|
|
40
|
+
// Get current configuration
|
|
41
|
+
getConfig() {
|
|
42
|
+
return { ...this.config };
|
|
43
|
+
}
|
|
44
|
+
// Get recommended subscription method
|
|
45
|
+
getRecommendedSubscriptionMethod() {
|
|
46
|
+
if (this.config.capabilities.liveQueries) {
|
|
47
|
+
return 'live-queries';
|
|
48
|
+
}
|
|
49
|
+
else if (this.config.capabilities.pgSubscriptions) {
|
|
50
|
+
return 'pg-subscriptions';
|
|
51
|
+
}
|
|
52
|
+
else if (this.config.capabilities.nativeWebSocket) {
|
|
53
|
+
return 'native-websocket';
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return 'none';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Generate client configuration
|
|
60
|
+
generateClientConfig() {
|
|
61
|
+
const baseUrl = `http://localhost:${this.config.graphqlPort}`;
|
|
62
|
+
return {
|
|
63
|
+
graphqlEndpoint: `${baseUrl}/graphql`,
|
|
64
|
+
subscriptionEndpoint: this.config.capabilities.pgSubscriptions || this.config.capabilities.liveQueries
|
|
65
|
+
? `ws://localhost:${this.config.graphqlPort}/graphql`
|
|
66
|
+
: undefined,
|
|
67
|
+
nativeWebSocketEndpoint: this.config.capabilities.nativeWebSocket
|
|
68
|
+
? `ws://localhost:${this.config.websocketPort || this.config.graphqlPort}`
|
|
69
|
+
: undefined,
|
|
70
|
+
capabilities: this.config.capabilities,
|
|
71
|
+
recommendedMethod: this.getRecommendedSubscriptionMethod()
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Generate PostGraphile configuration - simplified version, only keep listen subscriptions
|
|
75
|
+
generatePostGraphileConfig() {
|
|
76
|
+
return {
|
|
77
|
+
subscriptions: this.config.enableSubscriptions,
|
|
78
|
+
live: false, // Disable live queries, only use listen subscriptions
|
|
79
|
+
simpleSubscriptions: this.config.capabilities.pgSubscriptions,
|
|
80
|
+
// Performance configuration - optimized for listen subscriptions
|
|
81
|
+
pgSettings: {
|
|
82
|
+
statement_timeout: '30s',
|
|
83
|
+
default_transaction_isolation: 'read committed'
|
|
84
|
+
},
|
|
85
|
+
// Monitoring configuration
|
|
86
|
+
allowExplain: this.config.enablePerformanceMetrics,
|
|
87
|
+
disableQueryLog: !this.config.enableNotificationLogging
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Generate environment variable documentation
|
|
91
|
+
generateDocumentation() {
|
|
92
|
+
return `
|
|
93
|
+
# 📡 Subscription System Configuration Guide
|
|
94
|
+
|
|
95
|
+
## Basic Configuration
|
|
96
|
+
enableSubscriptions=${this.config.enableSubscriptions} # Enable/disable subscription features
|
|
97
|
+
|
|
98
|
+
## Capability Configuration (optional, auto-detect by default)
|
|
99
|
+
enableLiveQueries=${this.config.capabilities.liveQueries} # Enable @live directive (requires wal_level=logical)
|
|
100
|
+
enablePgSubscriptions=${this.config.capabilities.pgSubscriptions} # Enable PostgreSQL subscriptions
|
|
101
|
+
enableNativeWebSocket=${this.config.capabilities.nativeWebSocket} # Enable native WebSocket
|
|
102
|
+
|
|
103
|
+
## Port Configuration
|
|
104
|
+
port=${this.config.graphqlPort} # GraphQL port
|
|
105
|
+
realtimePort=${this.config.websocketPort || 'undefined'} # Native WebSocket port (optional)
|
|
106
|
+
|
|
107
|
+
## Performance Configuration
|
|
108
|
+
maxConnections=${this.config.maxConnections} # Maximum connections
|
|
109
|
+
heartbeatInterval=${this.config.heartbeatInterval} # Heartbeat interval (ms)
|
|
110
|
+
|
|
111
|
+
## Debug Configuration
|
|
112
|
+
debugNotifications=${this.config.enableNotificationLogging} # Notification logging
|
|
113
|
+
enableMetrics=${this.config.enablePerformanceMetrics} # Performance metrics
|
|
114
|
+
|
|
115
|
+
## Current Configuration Status:
|
|
116
|
+
- Subscription Features: ${this.config.enableSubscriptions ? '✅ Enabled' : '❌ Disabled'}
|
|
117
|
+
- Live Queries: ${this.config.capabilities.liveQueries ? '✅ Available' : '❌ Not Available'}
|
|
118
|
+
- PG Subscriptions: ${this.config.capabilities.pgSubscriptions ? '✅ Available' : '❌ Not Available'}
|
|
119
|
+
- Native WebSocket: ${this.config.capabilities.nativeWebSocket ? '✅ Available' : '❌ Not Available'}
|
|
120
|
+
- WAL Level: ${this.config.walLevel}
|
|
121
|
+
- Recommended Method: ${this.getRecommendedSubscriptionMethod()}
|
|
122
|
+
`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.SubscriptionConfigManager = SubscriptionConfigManager;
|
|
126
|
+
// Export singleton instance - lazy initialization
|
|
127
|
+
let _subscriptionConfigInstance = null;
|
|
128
|
+
exports.subscriptionConfig = {
|
|
129
|
+
getConfig() {
|
|
130
|
+
if (!_subscriptionConfigInstance) {
|
|
131
|
+
throw new Error('Subscription config not initialized. Call refresh() first with configuration.');
|
|
132
|
+
}
|
|
133
|
+
return _subscriptionConfigInstance.getConfig();
|
|
134
|
+
},
|
|
135
|
+
generateClientConfig() {
|
|
136
|
+
if (!_subscriptionConfigInstance) {
|
|
137
|
+
throw new Error('Subscription config not initialized. Call refresh() first with configuration.');
|
|
138
|
+
}
|
|
139
|
+
return _subscriptionConfigInstance.generateClientConfig();
|
|
140
|
+
},
|
|
141
|
+
generatePostGraphileConfig() {
|
|
142
|
+
if (!_subscriptionConfigInstance) {
|
|
143
|
+
throw new Error('Subscription config not initialized. Call refresh() first with configuration.');
|
|
144
|
+
}
|
|
145
|
+
return _subscriptionConfigInstance.generatePostGraphileConfig();
|
|
146
|
+
},
|
|
147
|
+
generateDocumentation() {
|
|
148
|
+
if (!_subscriptionConfigInstance) {
|
|
149
|
+
throw new Error('Subscription config not initialized. Call refresh() first with configuration.');
|
|
150
|
+
}
|
|
151
|
+
return _subscriptionConfigInstance.generateDocumentation();
|
|
152
|
+
},
|
|
153
|
+
// Initialize/refresh configuration with input parameters
|
|
154
|
+
refresh(configInput) {
|
|
155
|
+
_subscriptionConfigInstance = new SubscriptionConfigManager(configInput);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=subscription-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-config.js","sourceRoot":"","sources":["../../src/config/subscription-config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { startServer } from './server';
|
|
3
|
+
// import { systemLogger } from './utils/logger';
|
|
4
|
+
// // // Start application
|
|
5
|
+
// // systemLogger.info('🚀 Starting Sui Indexer GraphQL Server (Express Architecture)...', {
|
|
6
|
+
// // nodeVersion: process.version,
|
|
7
|
+
// // platform: process.platform,
|
|
8
|
+
// // pid: process.pid
|
|
9
|
+
// // });
|
|
10
|
+
// // startServer();
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,iDAAiD;AAEjD,0BAA0B;AAC1B,6FAA6F;AAC7F,qCAAqC;AACrC,mCAAmC;AACnC,wBAAwB;AACxB,SAAS;AAET,oBAAoB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all-fields-filter-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/all-fields-filter-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,eAAO,MAAM,qBAAqB,EAAE,MAwJnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AllFieldsFilterPlugin = void 0;
|
|
4
|
+
// All fields filter plugin - ensure all fields support filtering
|
|
5
|
+
const AllFieldsFilterPlugin = (builder) => {
|
|
6
|
+
// Extend filter input type, add filter support for all fields
|
|
7
|
+
builder.hook('GraphQLInputObjectType:fields', (fields, build, context) => {
|
|
8
|
+
const { scope: { isPgConnectionFilter, pgIntrospection: table } } = context;
|
|
9
|
+
// Only handle connection filters
|
|
10
|
+
if (!isPgConnectionFilter || !table || table.kind !== 'class') {
|
|
11
|
+
return fields;
|
|
12
|
+
}
|
|
13
|
+
const enhancedFields = { ...fields };
|
|
14
|
+
// Add filters for each field of the table
|
|
15
|
+
table.attributes.forEach((attr) => {
|
|
16
|
+
const fieldName = build.inflection.column(attr);
|
|
17
|
+
// Skip fields that already exist
|
|
18
|
+
if (enhancedFields[fieldName]) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Determine filter type based on field type
|
|
22
|
+
let filterType;
|
|
23
|
+
const pgType = attr.type;
|
|
24
|
+
// Special handling for BigInt type
|
|
25
|
+
if (pgType.name === 'int8' || pgType.name === 'bigint') {
|
|
26
|
+
// For BigInt type, try to use StringFilter (because BigInt is represented as string in GraphQL)
|
|
27
|
+
filterType = build.getTypeByName('StringFilter');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Map PostgreSQL types to GraphQL filter types
|
|
31
|
+
switch (pgType.category) {
|
|
32
|
+
case 'S': // String type
|
|
33
|
+
filterType = build.getTypeByName('StringFilter');
|
|
34
|
+
break;
|
|
35
|
+
case 'N': // Numeric type
|
|
36
|
+
if (pgType.name.includes('int')) {
|
|
37
|
+
filterType = build.getTypeByName('IntFilter');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
filterType = build.getTypeByName('FloatFilter');
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
case 'B': // Boolean type
|
|
44
|
+
filterType = build.getTypeByName('BooleanFilter');
|
|
45
|
+
break;
|
|
46
|
+
case 'D': // Date/time type
|
|
47
|
+
filterType = build.getTypeByName('DatetimeFilter');
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
// For other types, use string filter as default
|
|
51
|
+
filterType = build.getTypeByName('StringFilter');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// If specific filter type not found, use string filter
|
|
55
|
+
if (!filterType) {
|
|
56
|
+
filterType = build.getTypeByName('StringFilter');
|
|
57
|
+
}
|
|
58
|
+
// Add field filter
|
|
59
|
+
if (filterType) {
|
|
60
|
+
enhancedFields[fieldName] = {
|
|
61
|
+
type: filterType,
|
|
62
|
+
description: `Filter by the object's \`${attr.name}\` field.`
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return enhancedFields;
|
|
67
|
+
});
|
|
68
|
+
// Ensure sorting options are generated for all fields
|
|
69
|
+
builder.hook('GraphQLEnumType:values', (values, build, context) => {
|
|
70
|
+
const { scope: { isPgRowSortEnum, pgIntrospection: table } } = context;
|
|
71
|
+
if (!isPgRowSortEnum || !table || table.kind !== 'class') {
|
|
72
|
+
return values;
|
|
73
|
+
}
|
|
74
|
+
const enhancedValues = { ...values };
|
|
75
|
+
// Add ASC and DESC sorting options for each field
|
|
76
|
+
table.attributes.forEach((attr) => {
|
|
77
|
+
const columnName = build.inflection.column(attr);
|
|
78
|
+
const enumName = build.inflection.constantCase(columnName);
|
|
79
|
+
// Add ascending sort
|
|
80
|
+
const ascKey = `${enumName}_ASC`;
|
|
81
|
+
if (!enhancedValues[ascKey]) {
|
|
82
|
+
enhancedValues[ascKey] = {
|
|
83
|
+
value: {
|
|
84
|
+
alias: `${attr.name.toLowerCase()}_ASC`,
|
|
85
|
+
specs: [[attr.name, true]]
|
|
86
|
+
},
|
|
87
|
+
description: `Sorts by ${attr.name} in ascending order.`
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Add descending sort
|
|
91
|
+
const descKey = `${enumName}_DESC`;
|
|
92
|
+
if (!enhancedValues[descKey]) {
|
|
93
|
+
enhancedValues[descKey] = {
|
|
94
|
+
value: {
|
|
95
|
+
alias: `${attr.name.toLowerCase()}_DESC`,
|
|
96
|
+
specs: [[attr.name, false]]
|
|
97
|
+
},
|
|
98
|
+
description: `Sorts by ${attr.name} in descending order.`
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return enhancedValues;
|
|
103
|
+
});
|
|
104
|
+
// Extend condition filters to support all fields
|
|
105
|
+
builder.hook('GraphQLInputObjectType:fields', (fields, build, context) => {
|
|
106
|
+
const { scope: { isPgCondition, pgIntrospection: table } } = context;
|
|
107
|
+
if (!isPgCondition || !table || table.kind !== 'class') {
|
|
108
|
+
return fields;
|
|
109
|
+
}
|
|
110
|
+
const enhancedFields = { ...fields };
|
|
111
|
+
// Add condition filters for each field
|
|
112
|
+
table.attributes.forEach((attr) => {
|
|
113
|
+
const fieldName = build.inflection.column(attr);
|
|
114
|
+
// Skip fields that already exist
|
|
115
|
+
if (enhancedFields[fieldName]) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Get GraphQL type
|
|
119
|
+
const gqlType = build.pgGetGqlTypeByTypeIdAndModifier(attr.typeId, attr.typeModifier);
|
|
120
|
+
if (gqlType) {
|
|
121
|
+
enhancedFields[fieldName] = {
|
|
122
|
+
type: gqlType,
|
|
123
|
+
description: `Checks for equality with the object's \`${attr.name}\` field.`
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
return enhancedFields;
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
exports.AllFieldsFilterPlugin = AllFieldsFilterPlugin;
|
|
131
|
+
exports.default = exports.AllFieldsFilterPlugin;
|
|
132
|
+
//# sourceMappingURL=all-fields-filter-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all-fields-filter-plugin.js","sourceRoot":"","sources":["../../src/plugins/all-fields-filter-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Pool } from 'pg';
|
|
2
|
+
export interface TableField {
|
|
3
|
+
field_name: string;
|
|
4
|
+
field_type: string;
|
|
5
|
+
field_index: number | null;
|
|
6
|
+
is_key: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface DynamicTable {
|
|
9
|
+
table_name: string;
|
|
10
|
+
fields: TableField[];
|
|
11
|
+
}
|
|
12
|
+
export declare class DatabaseIntrospector {
|
|
13
|
+
private pool;
|
|
14
|
+
private schema;
|
|
15
|
+
constructor(pool: Pool, schema?: string);
|
|
16
|
+
getStoreTables(): Promise<string[]>;
|
|
17
|
+
getSystemTables(): Promise<string[]>;
|
|
18
|
+
getDynamicTableFields(tableName: string): Promise<TableField[]>;
|
|
19
|
+
getSystemTableFields(tableName: string): Promise<TableField[]>;
|
|
20
|
+
getAllTables(): Promise<DynamicTable[]>;
|
|
21
|
+
testConnection(): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=database-introspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-introspector.d.ts","sourceRoot":"","sources":["../../src/plugins/database-introspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG1B,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAGD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,IAAI;IAAQ,OAAO,CAAC,MAAM;gBAA1B,IAAI,EAAE,IAAI,EAAU,MAAM,GAAE,MAAiB;IAG3D,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBnC,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkB/D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmB9D,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA2BvC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CASzC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseIntrospector = void 0;
|
|
4
|
+
// Scan database table structure
|
|
5
|
+
class DatabaseIntrospector {
|
|
6
|
+
pool;
|
|
7
|
+
schema;
|
|
8
|
+
constructor(pool, schema = 'public') {
|
|
9
|
+
this.pool = pool;
|
|
10
|
+
this.schema = schema;
|
|
11
|
+
}
|
|
12
|
+
// Get all dynamically created store_* tables
|
|
13
|
+
async getStoreTables() {
|
|
14
|
+
const result = await this.pool.query(`
|
|
15
|
+
SELECT table_name
|
|
16
|
+
FROM information_schema.tables
|
|
17
|
+
WHERE table_schema = $1
|
|
18
|
+
AND table_name LIKE 'store_%'
|
|
19
|
+
ORDER BY table_name
|
|
20
|
+
`, [this.schema]);
|
|
21
|
+
return result.rows.map((row) => row.table_name);
|
|
22
|
+
}
|
|
23
|
+
// Get system tables (dubhe related tables)
|
|
24
|
+
async getSystemTables() {
|
|
25
|
+
const result = await this.pool.query(`
|
|
26
|
+
SELECT table_name
|
|
27
|
+
FROM information_schema.tables
|
|
28
|
+
WHERE table_schema = $1
|
|
29
|
+
AND (table_name = 'table_fields')
|
|
30
|
+
ORDER BY table_name
|
|
31
|
+
`, [this.schema]);
|
|
32
|
+
return result.rows.map((row) => row.table_name);
|
|
33
|
+
}
|
|
34
|
+
// Get dynamic table field information from table_fields table
|
|
35
|
+
async getDynamicTableFields(tableName) {
|
|
36
|
+
// Extract table name (remove store_ prefix)
|
|
37
|
+
const baseTableName = tableName.replace('store_', '');
|
|
38
|
+
const result = await this.pool.query(`
|
|
39
|
+
SELECT field_name, field_type, field_index, is_key
|
|
40
|
+
FROM table_fields
|
|
41
|
+
WHERE table_name = $1
|
|
42
|
+
ORDER BY is_key DESC, field_index ASC
|
|
43
|
+
`, [baseTableName]);
|
|
44
|
+
return result.rows;
|
|
45
|
+
}
|
|
46
|
+
// Get field information from system tables
|
|
47
|
+
async getSystemTableFields(tableName) {
|
|
48
|
+
const result = await this.pool.query(`
|
|
49
|
+
SELECT
|
|
50
|
+
column_name as field_name,
|
|
51
|
+
data_type as field_type,
|
|
52
|
+
ordinal_position as field_index,
|
|
53
|
+
CASE WHEN column_name = 'entity_id' THEN true ELSE false END as is_key
|
|
54
|
+
FROM information_schema.columns
|
|
55
|
+
WHERE table_schema = $1 AND table_name = $2
|
|
56
|
+
ORDER BY ordinal_position
|
|
57
|
+
`, [this.schema, tableName]);
|
|
58
|
+
return result.rows;
|
|
59
|
+
}
|
|
60
|
+
// Get complete information for all tables
|
|
61
|
+
async getAllTables() {
|
|
62
|
+
const storeTables = await this.getStoreTables();
|
|
63
|
+
const systemTables = await this.getSystemTables();
|
|
64
|
+
const allTables = [];
|
|
65
|
+
// Process dynamic tables
|
|
66
|
+
for (const tableName of storeTables) {
|
|
67
|
+
const fields = await this.getDynamicTableFields(tableName);
|
|
68
|
+
allTables.push({
|
|
69
|
+
table_name: tableName,
|
|
70
|
+
fields
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Process system tables
|
|
74
|
+
for (const tableName of systemTables) {
|
|
75
|
+
const fields = await this.getSystemTableFields(tableName);
|
|
76
|
+
allTables.push({
|
|
77
|
+
table_name: tableName,
|
|
78
|
+
fields
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return allTables;
|
|
82
|
+
}
|
|
83
|
+
// Test database connection
|
|
84
|
+
async testConnection() {
|
|
85
|
+
try {
|
|
86
|
+
await this.pool.query('SELECT NOW() as current_time');
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('Database connection test failed:', error);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.DatabaseIntrospector = DatabaseIntrospector;
|
|
96
|
+
//# sourceMappingURL=database-introspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-introspector.js","sourceRoot":"","sources":["../../src/plugins/database-introspector.ts"],"names":[],"mappings":";;;AAeA,gCAAgC;AAChC,MAAa,oBAAoB;IACX;IAAoB;IAAxC,YAAoB,IAAU,EAAU,SAAiB,QAAQ;QAA7C,SAAI,GAAJ,IAAI,CAAM;QAAU,WAAM,GAAN,MAAM,CAAmB;IAAG,CAAC;IAErE,6CAA6C;IAC7C,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;;GAMH,EACG,CAAC,IAAI,CAAC,MAAM,CAAC,CACd,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;;GAMH,EACG,CAAC,IAAI,CAAC,MAAM,CAAC,CACd,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,qBAAqB,CAAC,SAAiB;QAC3C,4CAA4C;QAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;GAKH,EACG,CAAC,aAAa,CAAC,CAChB,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;;;;;GASH,EACG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CACzB,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,YAAY;QAChB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,MAAM,SAAS,GAAmB,EAAE,CAAC;QAErC,yBAAyB;QACzB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC;gBACb,UAAU,EAAE,SAAS;gBACrB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC1D,SAAS,CAAC,IAAI,CAAC;gBACb,UAAU,EAAE,SAAS;gBACrB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AA7GD,oDA6GC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
export interface PlaygroundOptions {
|
|
3
|
+
url: string;
|
|
4
|
+
subscriptionUrl?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function createEnhancedPlayground(options: PlaygroundOptions): (req: IncomingMessage, res: ServerResponse, config?: any) => string;
|
|
9
|
+
//# sourceMappingURL=enhanced-playground.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-playground.d.ts","sourceRoot":"","sources":["../../src/plugins/enhanced-playground.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,GACzB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,MAAM,CA0GrE"}
|