@mongodb-js/devtools-connect 1.4.3 → 2.0.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/lib/connect.d.ts +19 -1
- package/lib/connect.js +61 -23
- package/lib/connect.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js.map +1 -1
- package/lib/ipc-rpc-state-share.d.ts +38 -0
- package/lib/ipc-rpc-state-share.js +213 -0
- package/lib/ipc-rpc-state-share.js.map +1 -0
- package/lib/log-hook.d.ts +1 -1
- package/lib/log-hook.js +5 -6
- package/lib/log-hook.js.map +1 -1
- package/lib/oidc/handler.d.ts +3 -0
- package/lib/oidc/handler.js +24 -0
- package/lib/oidc/handler.js.map +1 -0
- package/lib/oidc/static/create-static-pages.d.ts +4 -0
- package/lib/oidc/static/create-static-pages.js +89 -0
- package/lib/oidc/static/create-static-pages.js.map +1 -0
- package/lib/oidc/static/create-static-pages.spec.d.ts +1 -0
- package/lib/oidc/static/create-static-pages.spec.js +71 -0
- package/lib/oidc/static/create-static-pages.spec.js.map +1 -0
- package/lib/oidc/static/pages-source.d.ts +12 -0
- package/lib/oidc/static/pages-source.js +95 -0
- package/lib/oidc/static/pages-source.js.map +1 -0
- package/lib/oidc/static/static-pages.js +109 -0
- package/lib/state-share-socket.d.ts +9 -0
- package/lib/state-share-socket.js +15 -0
- package/lib/state-share-socket.js.map +1 -0
- package/lib/types.d.ts +2 -1
- package/package.json +13 -5
package/lib/connect.d.ts
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import type { ConnectLogEmitter } from './index';
|
|
2
2
|
import type { MongoClient, MongoClientOptions } from 'mongodb';
|
|
3
|
+
import type { MongoDBOIDCPlugin, MongoDBOIDCPluginOptions } from '@mongodb-js/oidc-plugin';
|
|
3
4
|
export declare class MongoAutoencryptionUnavailable extends Error {
|
|
4
5
|
constructor();
|
|
5
6
|
}
|
|
7
|
+
export declare class DevtoolsConnectionState {
|
|
8
|
+
oidcPlugin: MongoDBOIDCPlugin;
|
|
9
|
+
productName: string;
|
|
10
|
+
private stateShareClient;
|
|
11
|
+
private stateShareServer;
|
|
12
|
+
constructor(options: Pick<DevtoolsConnectOptions, 'productDocsLink' | 'productName' | 'oidc' | 'parentHandle'>, logger: ConnectLogEmitter);
|
|
13
|
+
getStateShareServer(): Promise<string>;
|
|
14
|
+
destroy(): Promise<void>;
|
|
15
|
+
}
|
|
6
16
|
export interface DevtoolsConnectOptions extends MongoClientOptions {
|
|
7
17
|
useSystemCA?: boolean;
|
|
18
|
+
productDocsLink: string;
|
|
19
|
+
productName: string;
|
|
20
|
+
oidc?: Omit<MongoDBOIDCPluginOptions, 'logger' | 'redirectServerRequestHandler'>;
|
|
21
|
+
parentState?: DevtoolsConnectionState;
|
|
22
|
+
parentHandle?: string;
|
|
8
23
|
}
|
|
9
|
-
export declare function connectMongoClient(uri: string, clientOptions: DevtoolsConnectOptions, logger: ConnectLogEmitter, MongoClientClass: typeof MongoClient): Promise<
|
|
24
|
+
export declare function connectMongoClient(uri: string, clientOptions: DevtoolsConnectOptions, logger: ConnectLogEmitter, MongoClientClass: typeof MongoClient): Promise<{
|
|
25
|
+
client: MongoClient;
|
|
26
|
+
state: DevtoolsConnectionState;
|
|
27
|
+
}>;
|
package/lib/connect.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.connectMongoClient = exports.MongoAutoencryptionUnavailable = void 0;
|
|
6
|
+
exports.connectMongoClient = exports.DevtoolsConnectionState = exports.MongoAutoencryptionUnavailable = void 0;
|
|
4
7
|
const fast_failure_connect_1 = require("./fast-failure-connect");
|
|
5
8
|
const system_ca_1 = require("system-ca");
|
|
9
|
+
const oidc_plugin_1 = require("@mongodb-js/oidc-plugin");
|
|
10
|
+
const lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
11
|
+
const handler_1 = require("./oidc/handler");
|
|
12
|
+
const ipc_rpc_state_share_1 = require("./ipc-rpc-state-share");
|
|
6
13
|
class MongoAutoencryptionUnavailable extends Error {
|
|
7
14
|
constructor() {
|
|
8
15
|
super('Automatic encryption is only available with Atlas and MongoDB Enterprise');
|
|
@@ -10,21 +17,19 @@ class MongoAutoencryptionUnavailable extends Error {
|
|
|
10
17
|
}
|
|
11
18
|
exports.MongoAutoencryptionUnavailable = MongoAutoencryptionUnavailable;
|
|
12
19
|
async function connectWithFailFast(uri, client, logger) {
|
|
13
|
-
var _a, _b;
|
|
14
20
|
const failedConnections = new Map();
|
|
15
21
|
let failEarlyClosePromise = null;
|
|
16
22
|
logger.emit('devtools-connect:connect-attempt-initialized', {
|
|
17
23
|
uri,
|
|
18
24
|
driver: client.options.metadata.driver,
|
|
19
25
|
devtoolsConnectVersion: require('../package.json').version,
|
|
20
|
-
host:
|
|
26
|
+
host: client.options.srvHost ?? client.options.hosts.join(',')
|
|
21
27
|
});
|
|
22
28
|
const heartbeatFailureListener = ({ failure, connectionId }) => {
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const servers = topologyDescription === null || topologyDescription === void 0 ? void 0 : topologyDescription.servers;
|
|
29
|
+
const topologyDescription = client.topology?.description;
|
|
30
|
+
const servers = topologyDescription?.servers;
|
|
26
31
|
const isFailFast = (0, fast_failure_connect_1.isFastFailureConnectionError)(failure);
|
|
27
|
-
const isKnownServer = !!
|
|
32
|
+
const isKnownServer = !!servers?.has(connectionId);
|
|
28
33
|
logger.emit('devtools-connect:connect-heartbeat-failure', {
|
|
29
34
|
connectionId,
|
|
30
35
|
failure,
|
|
@@ -62,7 +67,7 @@ async function connectWithFailFast(uri, client, logger) {
|
|
|
62
67
|
client.removeListener('serverHeartbeatFailed', heartbeatFailureListener);
|
|
63
68
|
client.removeListener('serverHeartbeatSucceeded', heartbeatSucceededListener);
|
|
64
69
|
logger.emit('devtools-connect:connect-attempt-finished', {
|
|
65
|
-
cryptSharedLibVersionInfo:
|
|
70
|
+
cryptSharedLibVersionInfo: client?.autoEncrypter?.cryptSharedLibVersionInfo
|
|
66
71
|
});
|
|
67
72
|
}
|
|
68
73
|
}
|
|
@@ -71,7 +76,7 @@ async function resolveMongodbSrv(uri, logger) {
|
|
|
71
76
|
const resolutionDetails = [];
|
|
72
77
|
if (uri.startsWith('mongodb+srv://')) {
|
|
73
78
|
try {
|
|
74
|
-
resolveDnsHelpers
|
|
79
|
+
resolveDnsHelpers ?? (resolveDnsHelpers = {
|
|
75
80
|
resolve: require('resolve-mongodb-srv'),
|
|
76
81
|
osDns: require('os-dns-native')
|
|
77
82
|
});
|
|
@@ -88,18 +93,16 @@ async function resolveMongodbSrv(uri, logger) {
|
|
|
88
93
|
dns: {
|
|
89
94
|
resolveSrv(hostname, cb) {
|
|
90
95
|
resolveSrv(hostname, (...args) => {
|
|
91
|
-
var _a;
|
|
92
96
|
resolutionDetails.push({
|
|
93
|
-
query: 'SRV', hostname, error:
|
|
97
|
+
query: 'SRV', hostname, error: args[0]?.message, wasNativelyLookedUp: wasNativelyLookedUp(args[1])
|
|
94
98
|
});
|
|
95
99
|
cb(...args);
|
|
96
100
|
});
|
|
97
101
|
},
|
|
98
102
|
resolveTxt(hostname, cb) {
|
|
99
103
|
resolveTxt(hostname, (...args) => {
|
|
100
|
-
var _a;
|
|
101
104
|
resolutionDetails.push({
|
|
102
|
-
query: 'TXT', hostname, error:
|
|
105
|
+
query: 'TXT', hostname, error: args[0]?.message, wasNativelyLookedUp: wasNativelyLookedUp(args[1])
|
|
103
106
|
});
|
|
104
107
|
cb(...args);
|
|
105
108
|
});
|
|
@@ -149,8 +152,33 @@ function detectAndLogMissingOptionalDependencies(logger) {
|
|
|
149
152
|
logger.emit('devtools-connect:missing-optional-dependency', { name: 'kerberos', error });
|
|
150
153
|
}
|
|
151
154
|
}
|
|
155
|
+
class DevtoolsConnectionState {
|
|
156
|
+
constructor(options, logger) {
|
|
157
|
+
this.stateShareClient = null;
|
|
158
|
+
this.stateShareServer = null;
|
|
159
|
+
this.productName = options.productName;
|
|
160
|
+
if (options.parentHandle) {
|
|
161
|
+
this.stateShareClient = new ipc_rpc_state_share_1.StateShareClient(options.parentHandle);
|
|
162
|
+
this.oidcPlugin = this.stateShareClient.oidcPlugin;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
this.oidcPlugin = (0, oidc_plugin_1.createMongoDBOIDCPlugin)({
|
|
166
|
+
...options.oidc,
|
|
167
|
+
logger,
|
|
168
|
+
redirectServerRequestHandler: handler_1.oidcServerRequestHandler.bind(null, options)
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async getStateShareServer() {
|
|
173
|
+
this.stateShareServer ?? (this.stateShareServer = await ipc_rpc_state_share_1.StateShareServer.create(this));
|
|
174
|
+
return this.stateShareServer.handle;
|
|
175
|
+
}
|
|
176
|
+
async destroy() {
|
|
177
|
+
await this.stateShareServer?.close();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.DevtoolsConnectionState = DevtoolsConnectionState;
|
|
152
181
|
async function connectMongoClient(uri, clientOptions, logger, MongoClientClass) {
|
|
153
|
-
var _a, _b;
|
|
154
182
|
detectAndLogMissingOptionalDependencies(logger);
|
|
155
183
|
if (clientOptions.useSystemCA) {
|
|
156
184
|
const systemCAOpts = { includeNodeCertificates: true };
|
|
@@ -164,29 +192,39 @@ async function connectMongoClient(uri, clientOptions, logger, MongoClientClass)
|
|
|
164
192
|
ca: ca.join('\n')
|
|
165
193
|
};
|
|
166
194
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
195
|
+
const oidcFeatureFlag = !!process.env.ENABLE_DEVTOOLS_OIDC;
|
|
196
|
+
const state = clientOptions.parentState ?? new DevtoolsConnectionState(clientOptions, logger);
|
|
197
|
+
const mongoClientOptions = (0, lodash_merge_1.default)({}, clientOptions, oidcFeatureFlag ? state.oidcPlugin.mongoClientOptions : {});
|
|
198
|
+
delete mongoClientOptions.useSystemCA;
|
|
199
|
+
delete mongoClientOptions.productDocsLink;
|
|
200
|
+
delete mongoClientOptions.productName;
|
|
201
|
+
delete mongoClientOptions.oidc;
|
|
202
|
+
delete mongoClientOptions.parentState;
|
|
203
|
+
delete mongoClientOptions.parentHandle;
|
|
204
|
+
if (mongoClientOptions.autoEncryption !== undefined &&
|
|
205
|
+
!mongoClientOptions.autoEncryption.bypassAutoEncryption &&
|
|
206
|
+
!mongoClientOptions.autoEncryption.bypassQueryAnalysis) {
|
|
207
|
+
const optionsWithoutFLE = { ...mongoClientOptions };
|
|
172
208
|
delete optionsWithoutFLE.autoEncryption;
|
|
173
209
|
delete optionsWithoutFLE.serverApi;
|
|
174
210
|
const client = new MongoClientClass(uri, optionsWithoutFLE);
|
|
211
|
+
state.oidcPlugin.logger.on('mongodb-oidc-plugin:auth-failed', () => client.close());
|
|
175
212
|
await connectWithFailFast(uri, client, logger);
|
|
176
213
|
const buildInfo = await client.db('admin').admin().command({ buildInfo: 1 });
|
|
177
214
|
await client.close();
|
|
178
|
-
if (!(
|
|
179
|
-
!(
|
|
215
|
+
if (!(buildInfo.modules?.includes('enterprise')) &&
|
|
216
|
+
!(buildInfo.gitVersion?.match(/enterprise/))) {
|
|
180
217
|
throw new MongoAutoencryptionUnavailable();
|
|
181
218
|
}
|
|
182
219
|
}
|
|
183
220
|
uri = await resolveMongodbSrv(uri, logger);
|
|
184
|
-
const client = new MongoClientClass(uri,
|
|
221
|
+
const client = new MongoClientClass(uri, mongoClientOptions);
|
|
222
|
+
state.oidcPlugin.logger.on('mongodb-oidc-plugin:auth-failed', () => client.close());
|
|
185
223
|
await connectWithFailFast(uri, client, logger);
|
|
186
224
|
if (client.autoEncrypter) {
|
|
187
225
|
client.autoEncrypter[Symbol.for('@@mdb.decorateDecryptionResult')] = true;
|
|
188
226
|
}
|
|
189
|
-
return client;
|
|
227
|
+
return { client, state };
|
|
190
228
|
}
|
|
191
229
|
exports.connectMongoClient = connectMongoClient;
|
|
192
230
|
//# sourceMappingURL=connect.js.map
|
package/lib/connect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from './types';
|
|
2
|
-
export { connectMongoClient
|
|
2
|
+
export { connectMongoClient } from './connect';
|
|
3
|
+
export type { DevtoolsConnectOptions, DevtoolsConnectionState } from './connect';
|
|
3
4
|
export { hookLogger } from './log-hook';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAE3B,uCAAwC;AAA/B,sGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { MongoDBOIDCPlugin } from '@mongodb-js/oidc-plugin';
|
|
3
|
+
import type { DevtoolsConnectionState } from './connect';
|
|
4
|
+
import { Readable } from 'stream';
|
|
5
|
+
export declare function readSignedStream(input: Readable, signature: string | string[] | undefined, hmacKey: Uint8Array): Promise<string>;
|
|
6
|
+
export declare function sign(payload: Uint8Array | string, hmacKey: Uint8Array): string;
|
|
7
|
+
export declare abstract class RpcServer {
|
|
8
|
+
private hmacKey;
|
|
9
|
+
private server;
|
|
10
|
+
private serverPathPrefix;
|
|
11
|
+
private cleanupCallback?;
|
|
12
|
+
static ctr: number;
|
|
13
|
+
protected constructor(serverPathPrefix: string);
|
|
14
|
+
get handle(): string;
|
|
15
|
+
protected _init(): Promise<void>;
|
|
16
|
+
private _serverListen;
|
|
17
|
+
private _handleRequest;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
protected abstract handleRpc(content: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
20
|
+
}
|
|
21
|
+
export declare class RpcClient {
|
|
22
|
+
private hmacKey;
|
|
23
|
+
private serverAddress;
|
|
24
|
+
constructor(handle: string);
|
|
25
|
+
makeRpcCall(reqData: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
26
|
+
}
|
|
27
|
+
export declare class StateShareServer extends RpcServer {
|
|
28
|
+
private state;
|
|
29
|
+
private abortContexts;
|
|
30
|
+
private constructor();
|
|
31
|
+
static create(state: DevtoolsConnectionState): Promise<StateShareServer>;
|
|
32
|
+
protected handleRpc(content: any): Promise<Record<string, unknown>>;
|
|
33
|
+
}
|
|
34
|
+
export declare class StateShareClient extends RpcClient {
|
|
35
|
+
oidcPlugin: MongoDBOIDCPlugin;
|
|
36
|
+
constructor(handle: string);
|
|
37
|
+
private _oidcCallback;
|
|
38
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StateShareClient = exports.StateShareServer = exports.RpcClient = exports.RpcServer = exports.sign = exports.readSignedStream = void 0;
|
|
7
|
+
const http_1 = require("http");
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const events_1 = require("events");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const stream_1 = require("stream");
|
|
14
|
+
const path_1 = require("path");
|
|
15
|
+
async function readSignedStream(input, signature, hmacKey) {
|
|
16
|
+
if (!signature)
|
|
17
|
+
throw new Error('Missing signature');
|
|
18
|
+
if (Array.isArray(signature))
|
|
19
|
+
throw new Error('Multiple signatures');
|
|
20
|
+
const verify = crypto_1.default.createHmac('sha256', hmacKey);
|
|
21
|
+
const inputFromUtf8 = input.pipe(new stream_1.PassThrough()).setEncoding('utf8');
|
|
22
|
+
input.pipe(verify);
|
|
23
|
+
const verifyFinish = (0, events_1.once)(verify, 'finish');
|
|
24
|
+
let body = '';
|
|
25
|
+
for await (const chunk of inputFromUtf8) {
|
|
26
|
+
body += chunk;
|
|
27
|
+
}
|
|
28
|
+
await verifyFinish;
|
|
29
|
+
if (verify.read().toString('base64') !== signature) {
|
|
30
|
+
throw new Error('Signature mismatch');
|
|
31
|
+
}
|
|
32
|
+
return body;
|
|
33
|
+
}
|
|
34
|
+
exports.readSignedStream = readSignedStream;
|
|
35
|
+
function sign(payload, hmacKey) {
|
|
36
|
+
return crypto_1.default.createHmac('sha256', hmacKey).update(payload).digest('base64');
|
|
37
|
+
}
|
|
38
|
+
exports.sign = sign;
|
|
39
|
+
class RpcServer {
|
|
40
|
+
constructor(serverPathPrefix) {
|
|
41
|
+
this.serverPathPrefix = serverPathPrefix.replace(/[^a-zA-Z0-9]/g, '');
|
|
42
|
+
this.hmacKey = undefined;
|
|
43
|
+
this.server = undefined;
|
|
44
|
+
}
|
|
45
|
+
get handle() {
|
|
46
|
+
return JSON.stringify([this.hmacKey.toString('base64'), this.server.address()]);
|
|
47
|
+
}
|
|
48
|
+
async _init() {
|
|
49
|
+
this.server = (0, http_1.createServer)((req, res) => this._handleRequest(req, res));
|
|
50
|
+
this.hmacKey = (await (0, util_1.promisify)(crypto_1.default.randomBytes)(16));
|
|
51
|
+
await this._serverListen();
|
|
52
|
+
}
|
|
53
|
+
async _serverListen() {
|
|
54
|
+
if (this.cleanupCallback) {
|
|
55
|
+
throw new Error('RPC server already listening');
|
|
56
|
+
}
|
|
57
|
+
let path;
|
|
58
|
+
const name = `${this.serverPathPrefix}_${process.pid}_ipc_${RpcServer.ctr++}_${Math.floor(Math.random() * 10000)}`;
|
|
59
|
+
if (process.platform === 'win32') {
|
|
60
|
+
path = `\\\\.\\pipe\\${name}`;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const tmpdir = process.env.XDG_RUNTIME_DIR ?? os_1.default.tmpdir();
|
|
64
|
+
path = (0, path_1.resolve)(`${tmpdir}/${name}.sock`);
|
|
65
|
+
}
|
|
66
|
+
this.server.listen({ path, exclusive: true });
|
|
67
|
+
await (0, events_1.once)(this.server, 'listening');
|
|
68
|
+
await fs_1.promises.chmod(path, 0o600);
|
|
69
|
+
this.cleanupCallback = () => {
|
|
70
|
+
if (process.platform !== 'win32') {
|
|
71
|
+
try {
|
|
72
|
+
(0, fs_1.rmSync)(path);
|
|
73
|
+
}
|
|
74
|
+
catch { }
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
process.on('exit', this.cleanupCallback);
|
|
78
|
+
}
|
|
79
|
+
async _handleRequest(req, res) {
|
|
80
|
+
let response;
|
|
81
|
+
try {
|
|
82
|
+
const content = JSON.parse(await readSignedStream(req, req.headers['x-signature'], this.hmacKey));
|
|
83
|
+
response = { status: 200, ...await this.handleRpc(content) };
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
response = { status: 500, error: err && typeof err === 'object' && 'message' in err ? err.message : String(err) };
|
|
87
|
+
}
|
|
88
|
+
res.statusCode = response.status;
|
|
89
|
+
const payload = new TextEncoder().encode(JSON.stringify(response));
|
|
90
|
+
res.setHeader('content-type', 'application/json');
|
|
91
|
+
res.setHeader('content-length', payload.length);
|
|
92
|
+
res.setHeader('x-signature', sign(payload, this.hmacKey));
|
|
93
|
+
res.end(payload);
|
|
94
|
+
}
|
|
95
|
+
async close() {
|
|
96
|
+
this.server.close();
|
|
97
|
+
await (0, events_1.once)(this.server, 'close');
|
|
98
|
+
this.cleanupCallback?.();
|
|
99
|
+
this.cleanupCallback = undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.RpcServer = RpcServer;
|
|
103
|
+
RpcServer.ctr = 0;
|
|
104
|
+
class RpcClient {
|
|
105
|
+
constructor(handle) {
|
|
106
|
+
const [hmacKeyBase64, serverAddr] = JSON.parse(handle);
|
|
107
|
+
this.serverAddress = serverAddr;
|
|
108
|
+
this.hmacKey = Buffer.from(hmacKeyBase64, 'base64');
|
|
109
|
+
}
|
|
110
|
+
async makeRpcCall(reqData) {
|
|
111
|
+
const payload = new TextEncoder().encode(JSON.stringify(reqData));
|
|
112
|
+
const req = (0, http_1.request)({
|
|
113
|
+
socketPath: this.serverAddress,
|
|
114
|
+
method: 'POST',
|
|
115
|
+
headers: {
|
|
116
|
+
'content-type': 'application/json',
|
|
117
|
+
'content-length': payload.length,
|
|
118
|
+
'x-signature': sign(payload, this.hmacKey)
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
req.end(payload);
|
|
122
|
+
const [res] = await (0, events_1.once)(req, 'response');
|
|
123
|
+
const content = JSON.parse(await readSignedStream(res, res.headers['x-signature'], this.hmacKey));
|
|
124
|
+
if (res.statusCode !== 200 || content.status !== 200) {
|
|
125
|
+
throw new Error(String(content.error ?? `${res.statusCode} ${res.statusMessage}`));
|
|
126
|
+
}
|
|
127
|
+
return content;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.RpcClient = RpcClient;
|
|
131
|
+
class StateShareServer extends RpcServer {
|
|
132
|
+
constructor(state) {
|
|
133
|
+
super(state.productName);
|
|
134
|
+
this.abortContexts = new Map();
|
|
135
|
+
this.state = state;
|
|
136
|
+
}
|
|
137
|
+
static async create(state) {
|
|
138
|
+
const result = new this(state);
|
|
139
|
+
await result._init();
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
async handleRpc(content) {
|
|
143
|
+
const oidcCallbacks = this.state.oidcPlugin.mongoClientOptions.authMechanismProperties;
|
|
144
|
+
let oidcMethod;
|
|
145
|
+
switch (content.method) {
|
|
146
|
+
case 'oidc:_abort':
|
|
147
|
+
this.abortContexts.get(content.timeoutContextId)?.abort();
|
|
148
|
+
return {};
|
|
149
|
+
case 'oidc:REQUEST_TOKEN_CALLBACK':
|
|
150
|
+
oidcMethod = 'REQUEST_TOKEN_CALLBACK';
|
|
151
|
+
case 'oidc:REFRESH_TOKEN_CALLBACK': {
|
|
152
|
+
oidcMethod ?? (oidcMethod = 'REFRESH_TOKEN_CALLBACK');
|
|
153
|
+
const abortController = new AbortController();
|
|
154
|
+
this.abortContexts.set(content.timeoutContextId, abortController);
|
|
155
|
+
try {
|
|
156
|
+
const result = await oidcCallbacks[oidcMethod](content.info, {
|
|
157
|
+
...content.context,
|
|
158
|
+
timeoutContext: abortController.signal
|
|
159
|
+
});
|
|
160
|
+
return { result };
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
this.abortContexts.delete(content.timeoutContextId);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
default:
|
|
167
|
+
throw new Error(`Unknown method ${JSON.stringify(content.method)}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.StateShareServer = StateShareServer;
|
|
172
|
+
class StateShareClient extends RpcClient {
|
|
173
|
+
constructor(handle) {
|
|
174
|
+
super(handle);
|
|
175
|
+
this.oidcPlugin = {
|
|
176
|
+
serialize() {
|
|
177
|
+
throw new Error('serialize() not supported in devtools-connect state-share clients');
|
|
178
|
+
},
|
|
179
|
+
logger: new events_1.EventEmitter(),
|
|
180
|
+
mongoClientOptions: {
|
|
181
|
+
authMechanismProperties: {
|
|
182
|
+
REQUEST_TOKEN_CALLBACK: this._oidcCallback.bind(this, 'oidc:REQUEST_TOKEN_CALLBACK'),
|
|
183
|
+
REFRESH_TOKEN_CALLBACK: this._oidcCallback.bind(this, 'oidc:REFRESH_TOKEN_CALLBACK')
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
async _oidcCallback(method, info, _context) {
|
|
189
|
+
const timeoutContextId = (await (0, util_1.promisify)(crypto_1.default.randomBytes)(16)).toString('base64');
|
|
190
|
+
const { timeoutContext, ...context } = _context;
|
|
191
|
+
const abort = () => {
|
|
192
|
+
this.makeRpcCall({
|
|
193
|
+
method: 'oidc:_abort',
|
|
194
|
+
timeoutContextId
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
timeoutContext?.addEventListener('abort', abort);
|
|
198
|
+
try {
|
|
199
|
+
const { result } = (await this.makeRpcCall({
|
|
200
|
+
method,
|
|
201
|
+
timeoutContextId,
|
|
202
|
+
context,
|
|
203
|
+
info
|
|
204
|
+
}));
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
timeoutContext?.removeEventListener('abort', abort);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.StateShareClient = StateShareClient;
|
|
213
|
+
//# sourceMappingURL=ipc-rpc-state-share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc-rpc-state-share.js","sourceRoot":"","sources":["../src/ipc-rpc-state-share.ts"],"names":[],"mappings":"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"}
|
package/lib/log-hook.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ interface MongoLogWriter {
|
|
|
3
3
|
info(c: string, id: unknown, ctx: string, msg: string, attr?: any): void;
|
|
4
4
|
warn(c: string, id: unknown, ctx: string, msg: string, attr?: any): void;
|
|
5
5
|
error(c: string, id: unknown, ctx: string, msg: string, attr?: any): void;
|
|
6
|
-
mongoLogId(id: number): unknown;
|
|
6
|
+
mongoLogId(this: void, id: number): unknown;
|
|
7
7
|
}
|
|
8
8
|
export declare function hookLogger(emitter: ConnectLogEmitter, log: MongoLogWriter, contextPrefix: string, redactURICredentials: (uri: string) => string): void;
|
|
9
9
|
export {};
|
package/lib/log-hook.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hookLogger = void 0;
|
|
4
|
+
const oidc_plugin_1 = require("@mongodb-js/oidc-plugin");
|
|
4
5
|
function hookLogger(emitter, log, contextPrefix, redactURICredentials) {
|
|
6
|
+
(0, oidc_plugin_1.hookLoggerToMongoLogWriter)(emitter, log, contextPrefix);
|
|
5
7
|
const { mongoLogId } = log;
|
|
6
8
|
emitter.on('devtools-connect:connect-attempt-initialized', function (ev) {
|
|
7
9
|
log.info('DEVTOOLS-CONNECT', mongoLogId(1000000042), `${contextPrefix}-connect`, 'Initiating connection attempt', {
|
|
@@ -10,10 +12,9 @@ function hookLogger(emitter, log, contextPrefix, redactURICredentials) {
|
|
|
10
12
|
});
|
|
11
13
|
});
|
|
12
14
|
emitter.on('devtools-connect:connect-heartbeat-failure', function (ev) {
|
|
13
|
-
var _a;
|
|
14
15
|
log.warn('DEVTOOLS-CONNECT', mongoLogId(1000000034), `${contextPrefix}-connect`, 'Server heartbeat failure', {
|
|
15
16
|
...ev,
|
|
16
|
-
failure:
|
|
17
|
+
failure: ev.failure?.message
|
|
17
18
|
});
|
|
18
19
|
});
|
|
19
20
|
emitter.on('devtools-connect:connect-heartbeat-succeeded', function (ev) {
|
|
@@ -35,10 +36,9 @@ function hookLogger(emitter, log, contextPrefix, redactURICredentials) {
|
|
|
35
36
|
log.info('DEVTOOLS-CONNECT', mongoLogId(1000000037), `${contextPrefix}-connect`, 'Connection attempt finished', attr);
|
|
36
37
|
});
|
|
37
38
|
emitter.on('devtools-connect:resolve-srv-error', function (ev) {
|
|
38
|
-
var _a;
|
|
39
39
|
log.error('DEVTOOLS-CONNECT', mongoLogId(1000000038), `${contextPrefix}-connect`, 'Resolving SRV record failed', {
|
|
40
40
|
from: redactURICredentials(ev.from),
|
|
41
|
-
error:
|
|
41
|
+
error: ev.error?.message,
|
|
42
42
|
duringLoad: ev.duringLoad,
|
|
43
43
|
resolutionDetails: ev.resolutionDetails
|
|
44
44
|
});
|
|
@@ -57,10 +57,9 @@ function hookLogger(emitter, log, contextPrefix, redactURICredentials) {
|
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
59
|
emitter.on('devtools-connect:used-system-ca', function (ev) {
|
|
60
|
-
var _a;
|
|
61
60
|
log.info('DEVTOOLS-CONNECT', mongoLogId(1000000049), `${contextPrefix}-connect`, 'Loaded system CA list', {
|
|
62
61
|
caCount: ev.caCount,
|
|
63
|
-
asyncFallbackError:
|
|
62
|
+
asyncFallbackError: ev.asyncFallbackError?.message
|
|
64
63
|
});
|
|
65
64
|
});
|
|
66
65
|
}
|
package/lib/log-hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-hook.js","sourceRoot":"","sources":["../src/log-hook.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"log-hook.js","sourceRoot":"","sources":["../src/log-hook.ts"],"names":[],"mappings":";;;AAYA,yDAAuF;AASvF,SAAgB,UAAU,CACxB,OAA0B,EAC1B,GAAmB,EACnB,aAAqB,EACrB,oBAA6C;IAC7C,IAAA,wCAAc,EAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IAE5C,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,8CAA8C,EAAE,UAAS,EAAkC;QACpG,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,+BAA+B,EAAE;YACnH,GAAG,EAAE;YACL,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,4CAA4C,EAAE,UAAS,EAAgC;QAChG,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,0BAA0B,EAAE;YAC9G,GAAG,EAAE;YACL,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,8CAA8C,EAAE,UAAS,EAAkC;QACpG,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;IACxH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,qCAAqC,EAAE;QAChD,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,8CAA8C,CAAC,CAAC;IACtI,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,2CAA2C,EAAE,UAAS,EAA+B;QAC9F,IAAI,IAAS,CAAC;QACd,IAAI,EAAE,CAAC,yBAAyB,EAAE;YAChC,IAAI,GAAG;gBACL,yBAAyB,EAAE;oBACzB,OAAO,EAAE,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1D,UAAU,EAAE,EAAE,CAAC,yBAAyB,CAAC,UAAU;iBACpD;aACF,CAAC;SACH;QACD,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,6BAA6B,EAAE,IAAI,CAAC,CAAC;IAC3H,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oCAAoC,EAAE,UAAS,EAA+B;QACvF,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,6BAA6B,EAAE;YAClH,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC;YACnC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO;YACxB,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,wCAAwC,EAAE,UAAS,EAAmC;QAC/F,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,gCAAgC,EAAE;YACpH,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC;YACnC,EAAE,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,8CAA8C,EAAE,UAAS,EAAyC;QAC3G,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,OAAO,EAAE,6BAA6B,EAAE;YAC/G,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,iCAAiC,EAAE,UAAS,EAA4B;QACjF,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,UAAa,CAAC,EAAE,GAAG,aAAa,UAAU,EAAE,uBAAuB,EAAE;YAC3G,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,EAAE,OAAO;SACnD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzED,gCAyEC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RedirectServerRequestInfo } from '@mongodb-js/oidc-plugin';
|
|
2
|
+
import type { DevtoolsConnectOptions } from '../connect';
|
|
3
|
+
export declare function oidcServerRequestHandler(options: Pick<DevtoolsConnectOptions, 'productDocsLink' | 'productName'>, info: RedirectServerRequestInfo): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oidcServerRequestHandler = void 0;
|
|
4
|
+
const static_pages_1 = require("./static/static-pages");
|
|
5
|
+
function oidcServerRequestHandler(options, info) {
|
|
6
|
+
const { productDocsLink, productName } = options;
|
|
7
|
+
const { res, result, status } = info;
|
|
8
|
+
res.statusCode = status;
|
|
9
|
+
res.setHeader('Content-Security-Policy', "default-src 'self'; style-src 'unsafe-inline'");
|
|
10
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
|
11
|
+
switch (result) {
|
|
12
|
+
case 'accepted':
|
|
13
|
+
res.end((0, static_pages_1.OIDCAcceptedPage)({ productDocsLink, productName }));
|
|
14
|
+
break;
|
|
15
|
+
case 'rejected':
|
|
16
|
+
res.end((0, static_pages_1.OIDCErrorPage)({ productDocsLink, productName, ...info }));
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
res.end((0, static_pages_1.OIDCNotFoundPage)({ productDocsLink, productName }));
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.oidcServerRequestHandler = oidcServerRequestHandler;
|
|
24
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/oidc/handler.ts"],"names":[],"mappings":";;;AAEA,wDAA0F;AAE1F,SAAgB,wBAAwB,CACtC,OAAwE,EACxE,IAA+B;IAE/B,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;IAIxB,GAAG,CAAC,SAAS,CAAC,yBAAyB,EAAE,+CAA+C,CAAC,CAAC;IAC1F,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;IAE1D,QAAQ,MAAM,EAAE;QACd,KAAK,UAAU;YACb,GAAG,CAAC,GAAG,CAAC,IAAA,+BAAgB,EAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5D,MAAM;QACR,KAAK,UAAU;YACb,GAAG,CAAC,GAAG,CAAC,IAAA,4BAAa,EAAC,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,MAAM;QACR;YACE,GAAG,CAAC,GAAG,CAAC,IAAA,+BAAgB,EAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5D,MAAM;KACT;AACH,CAAC;AAxBD,4DAwBC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateStaticPagesModule = void 0;
|
|
7
|
+
const server_1 = require("react-dom/server");
|
|
8
|
+
const emotion_1 = require("@leafygreen-ui/emotion");
|
|
9
|
+
const pages_source_1 = require("./pages-source");
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
const zlib_1 = require("zlib");
|
|
13
|
+
function* allSubsets(array) {
|
|
14
|
+
if (array.length === 0) {
|
|
15
|
+
yield [];
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const first = array[0];
|
|
19
|
+
for (const slicedSubset of allSubsets(array.slice(1))) {
|
|
20
|
+
yield [first, ...slicedSubset];
|
|
21
|
+
yield slicedSubset;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function placeholder(prop) {
|
|
25
|
+
return `{{prop:${prop}}}`;
|
|
26
|
+
}
|
|
27
|
+
const S = JSON.stringify;
|
|
28
|
+
function generateStaticPage(Component, props, markupTable) {
|
|
29
|
+
let result = `module.exports[${S(Component.name)}] = function(props) {
|
|
30
|
+
const actualProps = JSON.stringify(
|
|
31
|
+
Object.keys(props)
|
|
32
|
+
.filter(prop => ${S(props)}.includes(prop) && props[prop] != null).sort());`;
|
|
33
|
+
for (const availableProps of allSubsets(props)) {
|
|
34
|
+
const propsObject = {};
|
|
35
|
+
const replacers = [];
|
|
36
|
+
for (const prop of availableProps) {
|
|
37
|
+
propsObject[prop] = placeholder(prop);
|
|
38
|
+
replacers.push(`.replaceAll(${S(placeholder(prop))}, escapeHTML(props[${S(prop)}]))`);
|
|
39
|
+
}
|
|
40
|
+
const markup = (0, emotion_1.renderStylesToString)((0, server_1.renderToStaticMarkup)(react_1.default.createElement(Component, propsObject)));
|
|
41
|
+
const markupHash = (0, crypto_1.createHash)('sha256').update(markup).digest('hex');
|
|
42
|
+
markupTable[markupHash] = markup;
|
|
43
|
+
result += `if (actualProps === ${S(S(availableProps.sort()))}) {
|
|
44
|
+
return (getMarkup(${S(markupHash)})${replacers.join('')});
|
|
45
|
+
}`;
|
|
46
|
+
}
|
|
47
|
+
result += '}\n';
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
function generateStaticPagesModule(components) {
|
|
51
|
+
let result = `
|
|
52
|
+
'use strict';
|
|
53
|
+
function escapeHTML(str) {
|
|
54
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
55
|
+
}
|
|
56
|
+
`;
|
|
57
|
+
const markupTable = {};
|
|
58
|
+
for (const component of components) {
|
|
59
|
+
result += generateStaticPage(...component, markupTable);
|
|
60
|
+
}
|
|
61
|
+
const compressedMarkupTable = (0, zlib_1.brotliCompressSync)(S(markupTable), {
|
|
62
|
+
params: {
|
|
63
|
+
[zlib_1.constants.BROTLI_PARAM_MODE]: zlib_1.constants.BROTLI_MODE_TEXT,
|
|
64
|
+
[zlib_1.constants.BROTLI_PARAM_QUALITY]: zlib_1.constants.BROTLI_MAX_QUALITY
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
result += `
|
|
68
|
+
const markupTableSrc = ${S(compressedMarkupTable.toString('base64'))};
|
|
69
|
+
let markupTable;
|
|
70
|
+
function getMarkup(hash) {
|
|
71
|
+
if (markupTable === undefined) {
|
|
72
|
+
markupTable = JSON.parse(
|
|
73
|
+
require('zlib').brotliDecompressSync(
|
|
74
|
+
Buffer.from(markupTableSrc, 'base64')));
|
|
75
|
+
}
|
|
76
|
+
return markupTable[hash];
|
|
77
|
+
}
|
|
78
|
+
`;
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
exports.generateStaticPagesModule = generateStaticPagesModule;
|
|
82
|
+
if (require.main === module) {
|
|
83
|
+
console.log(generateStaticPagesModule([
|
|
84
|
+
[pages_source_1.OIDCErrorPage, ['error', 'errorDescription', 'errorURI', 'productDocsLink', 'productName']],
|
|
85
|
+
[pages_source_1.OIDCAcceptedPage, ['productDocsLink', 'productName']],
|
|
86
|
+
[pages_source_1.OIDCNotFoundPage, ['productDocsLink', 'productName']]
|
|
87
|
+
]));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=create-static-pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-static-pages.js","sourceRoot":"","sources":["../../../src/oidc/static/create-static-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const react_1 = __importDefault(require("react"));
|
|
30
|
+
const create_static_pages_1 = require("./create-static-pages");
|
|
31
|
+
const compass_components_1 = require("@mongodb-js/compass-components");
|
|
32
|
+
const vm_1 = require("vm");
|
|
33
|
+
const zlib_1 = __importDefault(require("zlib"));
|
|
34
|
+
const ts_sinon_1 = __importDefault(require("ts-sinon"));
|
|
35
|
+
const chai_1 = __importStar(require("chai"));
|
|
36
|
+
const sinon_chai_1 = __importDefault(require("sinon-chai"));
|
|
37
|
+
chai_1.default.use(sinon_chai_1.default);
|
|
38
|
+
describe('generateStaticPagesModule', function () {
|
|
39
|
+
let exports;
|
|
40
|
+
beforeEach(function () {
|
|
41
|
+
function Component({ prop1, prop2 }) {
|
|
42
|
+
return (react_1.default.createElement("div", null,
|
|
43
|
+
react_1.default.createElement(compass_components_1.H1, null, prop1 || 'default'),
|
|
44
|
+
prop2 && react_1.default.createElement("p", { "data-attr": prop2 }, prop2)));
|
|
45
|
+
}
|
|
46
|
+
const result = (0, create_static_pages_1.generateStaticPagesModule)([[Component, ['prop1', 'prop2']]]);
|
|
47
|
+
exports = {};
|
|
48
|
+
const require = ts_sinon_1.default.stub();
|
|
49
|
+
require.throws();
|
|
50
|
+
require.withArgs('zlib').returns(zlib_1.default);
|
|
51
|
+
(0, vm_1.runInNewContext)(result, {
|
|
52
|
+
module: { exports }, require, Buffer
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
it('includes selected props', function () {
|
|
56
|
+
(0, chai_1.expect)(exports.Component({ prop1: 'prop1value' })).to.match(/<h1[^>]+>prop1value<\/h1>/);
|
|
57
|
+
(0, chai_1.expect)(exports.Component({ prop1: 'prop1value' })).not.to.include('prop2');
|
|
58
|
+
(0, chai_1.expect)(exports.Component({ prop1: 'prop1value' })).not.to.include('data-attr');
|
|
59
|
+
(0, chai_1.expect)(exports.Component({ prop2: 'prop2value' })).to.match(/<h1[^>]+>default<\/h1>/);
|
|
60
|
+
(0, chai_1.expect)(exports.Component({ prop2: 'prop2value' })).to.match(/<p[^>]+>prop2value<\/p>/);
|
|
61
|
+
(0, chai_1.expect)(exports.Component({ prop2: 'prop2value' })).to.include('data-attr="prop2value"');
|
|
62
|
+
});
|
|
63
|
+
it('properly escapes props', function () {
|
|
64
|
+
(0, chai_1.expect)(exports.Component({ prop2: 'prop2<&"\'>value' })).to.include('data-attr="prop2<&"'>value"');
|
|
65
|
+
(0, chai_1.expect)(exports.Component({ prop2: 'prop2<&"\'>value' })).to.include('>prop2<&"'>value</p>');
|
|
66
|
+
});
|
|
67
|
+
it('includes relevant style information', function () {
|
|
68
|
+
(0, chai_1.expect)(exports.Component({ prop1: 'prop1value' })).to.include('<style');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=create-static-pages.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-static-pages.spec.js","sourceRoot":"","sources":["../../../src/oidc/static/create-static-pages.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface OIDCPageBaseProps {
|
|
3
|
+
productDocsLink?: string;
|
|
4
|
+
productName?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function OIDCAcceptedPage(baseProps: OIDCPageBaseProps): JSX.Element;
|
|
7
|
+
export declare function OIDCNotFoundPage(baseProps: OIDCPageBaseProps): JSX.Element;
|
|
8
|
+
export declare function OIDCErrorPage({ error, errorDescription, errorURI, ...baseProps }: {
|
|
9
|
+
error?: string;
|
|
10
|
+
errorDescription?: string;
|
|
11
|
+
errorURI?: string;
|
|
12
|
+
} & OIDCPageBaseProps): JSX.Element;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OIDCErrorPage = exports.OIDCNotFoundPage = exports.OIDCAcceptedPage = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const compass_components_1 = require("@mongodb-js/compass-components");
|
|
9
|
+
const bodyStyles = (0, compass_components_1.css)({
|
|
10
|
+
position: 'absolute',
|
|
11
|
+
margin: 0,
|
|
12
|
+
width: '100%',
|
|
13
|
+
height: '100%',
|
|
14
|
+
display: 'flex',
|
|
15
|
+
flexDirection: 'row',
|
|
16
|
+
alignItems: 'center'
|
|
17
|
+
});
|
|
18
|
+
const emptySidebarStyles = (0, compass_components_1.css)({
|
|
19
|
+
flex: '0 0 15%',
|
|
20
|
+
height: '100%',
|
|
21
|
+
backgroundColor: compass_components_1.palette.green.dark2
|
|
22
|
+
});
|
|
23
|
+
const mainViewStyles = (0, compass_components_1.css)({
|
|
24
|
+
flex: '0 0 85%',
|
|
25
|
+
height: '100%',
|
|
26
|
+
backgroundColor: compass_components_1.palette.gray.light3
|
|
27
|
+
});
|
|
28
|
+
const mainContainerStyles = (0, compass_components_1.css)({
|
|
29
|
+
padding: compass_components_1.spacing[6]
|
|
30
|
+
});
|
|
31
|
+
const mainContentStyles = (0, compass_components_1.css)({
|
|
32
|
+
textAlign: 'center',
|
|
33
|
+
padding: compass_components_1.spacing[7],
|
|
34
|
+
marginTop: compass_components_1.spacing[5]
|
|
35
|
+
});
|
|
36
|
+
const successIconStyles = (0, compass_components_1.css)({
|
|
37
|
+
color: compass_components_1.palette.green.dark2,
|
|
38
|
+
marginBottom: compass_components_1.spacing[3] + compass_components_1.spacing[1]
|
|
39
|
+
});
|
|
40
|
+
const failureIconStyles = (0, compass_components_1.css)({
|
|
41
|
+
color: compass_components_1.palette.red.base,
|
|
42
|
+
marginBottom: compass_components_1.spacing[3] + compass_components_1.spacing[1]
|
|
43
|
+
});
|
|
44
|
+
function DocsLink({ productDocsLink, productName }) {
|
|
45
|
+
return (productDocsLink ? react_1.default.createElement("p", null,
|
|
46
|
+
react_1.default.createElement(compass_components_1.Link, { arrowAppearance: "persist", href: productDocsLink },
|
|
47
|
+
productName,
|
|
48
|
+
" Documentation")) : react_1.default.createElement(react_1.default.Fragment, null));
|
|
49
|
+
}
|
|
50
|
+
function PageContainer({ title, children }) {
|
|
51
|
+
return (react_1.default.createElement("html", null,
|
|
52
|
+
react_1.default.createElement("head", null,
|
|
53
|
+
react_1.default.createElement("title", null, title)),
|
|
54
|
+
react_1.default.createElement("body", { className: bodyStyles },
|
|
55
|
+
react_1.default.createElement("div", { className: emptySidebarStyles }),
|
|
56
|
+
react_1.default.createElement("div", { className: mainViewStyles },
|
|
57
|
+
react_1.default.createElement("div", { className: mainContainerStyles },
|
|
58
|
+
react_1.default.createElement(compass_components_1.MongoDBLogo, null),
|
|
59
|
+
react_1.default.createElement(compass_components_1.KeylineCard, { className: mainContentStyles }, children))))));
|
|
60
|
+
}
|
|
61
|
+
function OIDCAcceptedPage(baseProps) {
|
|
62
|
+
return (react_1.default.createElement(PageContainer, { title: "Login Successful" },
|
|
63
|
+
react_1.default.createElement(compass_components_1.Icon, { glyph: 'CheckmarkWithCircle', size: 40, className: (0, compass_components_1.cx)(successIconStyles) }),
|
|
64
|
+
react_1.default.createElement(compass_components_1.H3, null, "Login Successful"),
|
|
65
|
+
react_1.default.createElement(compass_components_1.Description, null, "You can close this window now."),
|
|
66
|
+
react_1.default.createElement(DocsLink, { ...baseProps })));
|
|
67
|
+
}
|
|
68
|
+
exports.OIDCAcceptedPage = OIDCAcceptedPage;
|
|
69
|
+
function OIDCNotFoundPage(baseProps) {
|
|
70
|
+
return (react_1.default.createElement(PageContainer, { title: "Page Not Found" },
|
|
71
|
+
react_1.default.createElement(compass_components_1.Icon, { glyph: 'XWithCircle', size: 40, className: (0, compass_components_1.cx)(failureIconStyles) }),
|
|
72
|
+
react_1.default.createElement(compass_components_1.H3, null, "Page Not Found"),
|
|
73
|
+
react_1.default.createElement(compass_components_1.Description, null, "This page is not available."),
|
|
74
|
+
react_1.default.createElement(DocsLink, { ...baseProps })));
|
|
75
|
+
}
|
|
76
|
+
exports.OIDCNotFoundPage = OIDCNotFoundPage;
|
|
77
|
+
function OIDCErrorPage({ error, errorDescription, errorURI, ...baseProps }) {
|
|
78
|
+
return (react_1.default.createElement(PageContainer, { title: "Authentication Failed" },
|
|
79
|
+
react_1.default.createElement(compass_components_1.Icon, { glyph: 'XWithCircle', size: 40, className: (0, compass_components_1.cx)(failureIconStyles) }),
|
|
80
|
+
react_1.default.createElement(compass_components_1.H3, null, "Authentication Failed"),
|
|
81
|
+
react_1.default.createElement(compass_components_1.Body, null,
|
|
82
|
+
react_1.default.createElement(compass_components_1.Description, null,
|
|
83
|
+
baseProps.productName,
|
|
84
|
+
" could not authenticate to the MongoDB server."),
|
|
85
|
+
error && react_1.default.createElement(compass_components_1.Body, null,
|
|
86
|
+
"Error Code: ",
|
|
87
|
+
react_1.default.createElement(compass_components_1.InlineCode, null, error)),
|
|
88
|
+
(errorDescription || errorURI) && react_1.default.createElement(compass_components_1.Description, null,
|
|
89
|
+
errorDescription,
|
|
90
|
+
errorURI && react_1.default.createElement("p", null,
|
|
91
|
+
react_1.default.createElement(compass_components_1.Link, { href: errorURI }, "Additional information may be available here.")))),
|
|
92
|
+
react_1.default.createElement(DocsLink, { ...baseProps })));
|
|
93
|
+
}
|
|
94
|
+
exports.OIDCErrorPage = OIDCErrorPage;
|
|
95
|
+
//# sourceMappingURL=pages-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages-source.js","sourceRoot":"","sources":["../../../src/oidc/static/pages-source.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
'use strict';
|
|
3
|
+
function escapeHTML(str) {
|
|
4
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
5
|
+
}
|
|
6
|
+
module.exports["OIDCErrorPage"] = function(props) {
|
|
7
|
+
const actualProps = JSON.stringify(
|
|
8
|
+
Object.keys(props)
|
|
9
|
+
.filter(prop => ["error","errorDescription","errorURI","productDocsLink","productName"].includes(prop) && props[prop] != null).sort());if (actualProps === "[\"error\",\"errorDescription\",\"errorURI\",\"productDocsLink\",\"productName\"]") {
|
|
10
|
+
return (getMarkup("e7657fd2e6cae15bceda5c20c54782888a5a75a169b9d6624f0cedee22177fa7").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
11
|
+
}if (actualProps === "[\"errorDescription\",\"errorURI\",\"productDocsLink\",\"productName\"]") {
|
|
12
|
+
return (getMarkup("39ec87827ec006de52c725ef776c2a0bb8fbb8254c805f7de2f2aec46bc9f9ce").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
13
|
+
}if (actualProps === "[\"error\",\"errorURI\",\"productDocsLink\",\"productName\"]") {
|
|
14
|
+
return (getMarkup("5b79515e585afa35f22817c230a1ce8d4f0e157c22c7976a05a2808f71800c93").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
15
|
+
}if (actualProps === "[\"errorURI\",\"productDocsLink\",\"productName\"]") {
|
|
16
|
+
return (getMarkup("4e75d19695927c4f7bb62024169a7a8c9c523c282b1fe7cb86fd62d3b720e383").replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
17
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"productDocsLink\",\"productName\"]") {
|
|
18
|
+
return (getMarkup("a1a04afd699e979c0bbca4984ae0988d1b82699fa172c51a9cb43a2fc92d22ce").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
19
|
+
}if (actualProps === "[\"errorDescription\",\"productDocsLink\",\"productName\"]") {
|
|
20
|
+
return (getMarkup("77e6077a88fc7ad2b90ad75f46360847cce55bb817661ad00525069e35535b0d").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
21
|
+
}if (actualProps === "[\"error\",\"productDocsLink\",\"productName\"]") {
|
|
22
|
+
return (getMarkup("9e801649e3d0524c0c653839e22a96a9b4985eaf9320b6d4420ccb00ff8fac70").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
23
|
+
}if (actualProps === "[\"productDocsLink\",\"productName\"]") {
|
|
24
|
+
return (getMarkup("d1ed98d85f89839987edddee93351d1bb599129efe88aa8113e7db74f2c98a12").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
25
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"errorURI\",\"productName\"]") {
|
|
26
|
+
return (getMarkup("fbee6023f25c4c5a5d6406e595ed5d14deedffc965a3ffcebdfbd171e644c644").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
27
|
+
}if (actualProps === "[\"errorDescription\",\"errorURI\",\"productName\"]") {
|
|
28
|
+
return (getMarkup("56d14cd3ac8b7c26f35b3aa50e1238d2c09683d3cbece341346ab2adacab7fcb").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
29
|
+
}if (actualProps === "[\"error\",\"errorURI\",\"productName\"]") {
|
|
30
|
+
return (getMarkup("9fa603b57d3d75c0798420ef9a33a0a8302f8cd7fcd563709a3e773e24f93592").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
31
|
+
}if (actualProps === "[\"errorURI\",\"productName\"]") {
|
|
32
|
+
return (getMarkup("211d1b8b770abf0d8b263530b292d1f6b3dd9e2d339f82da1a37ba0b42a8a02e").replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
33
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"productName\"]") {
|
|
34
|
+
return (getMarkup("307175acaf3496a3b00778935e64780ec8a52cbf34a229bf02196c3e80c699ff").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
35
|
+
}if (actualProps === "[\"errorDescription\",\"productName\"]") {
|
|
36
|
+
return (getMarkup("f401b5a36206b6a1d5200bce89a8a8d0e68f5a12b4ae3ffee9a5f32a225d3569").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
37
|
+
}if (actualProps === "[\"error\",\"productName\"]") {
|
|
38
|
+
return (getMarkup("a249f1ca3d65053c7b489206c33e8bf6cdef4b7e968229008325c3e1a555373a").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
39
|
+
}if (actualProps === "[\"productName\"]") {
|
|
40
|
+
return (getMarkup("bebe6b672324413342fdd7fe5ef37aa4a4d86a1388ba2b23724e186321b62bb0").replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
41
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"errorURI\",\"productDocsLink\"]") {
|
|
42
|
+
return (getMarkup("bb9282d8c4d31f259c3d0340f62ba4480b268d473cadb1261341bb7f41976a17").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
43
|
+
}if (actualProps === "[\"errorDescription\",\"errorURI\",\"productDocsLink\"]") {
|
|
44
|
+
return (getMarkup("2137135c9be2bd9652fb59bfd231e21c687379fbbc3f3deda7a82eab813cb20d").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
45
|
+
}if (actualProps === "[\"error\",\"errorURI\",\"productDocsLink\"]") {
|
|
46
|
+
return (getMarkup("ae12f66433a1481fc49cdf1b56da7871abb309f6333193d6f336c34da4fae11e").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
47
|
+
}if (actualProps === "[\"errorURI\",\"productDocsLink\"]") {
|
|
48
|
+
return (getMarkup("bbc0ba949d14fae5ed5343ab5d1e4e5de4581b5f1a343ad0298674dff1c888c9").replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
49
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"productDocsLink\"]") {
|
|
50
|
+
return (getMarkup("c445cc12e1d55505aadb84dde0de73461d39175ca026ab643831c5572ce364f0").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
51
|
+
}if (actualProps === "[\"errorDescription\",\"productDocsLink\"]") {
|
|
52
|
+
return (getMarkup("cf8b30dba3bd0ce39e976354e0f21410a073af641147296df1361183a240e9ef").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
53
|
+
}if (actualProps === "[\"error\",\"productDocsLink\"]") {
|
|
54
|
+
return (getMarkup("850a39408afe2c0c93b25c06f4dcd087f6b1395875801ed756e96f7db8f58ee7").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
55
|
+
}if (actualProps === "[\"productDocsLink\"]") {
|
|
56
|
+
return (getMarkup("25619e7be98777ed9f6753e3b12b2c1e62ecb78292d505fe684f2dac956f926f").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
57
|
+
}if (actualProps === "[\"error\",\"errorDescription\",\"errorURI\"]") {
|
|
58
|
+
return (getMarkup("4c6749224fd554508c837e403d57dce74934e33c459e9dadd0e7618b6c84359b").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])));
|
|
59
|
+
}if (actualProps === "[\"errorDescription\",\"errorURI\"]") {
|
|
60
|
+
return (getMarkup("2d8294f823122fc7887cdf32249be0969bebac82356ab8ca37a0b773c45eaa7a").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])));
|
|
61
|
+
}if (actualProps === "[\"error\",\"errorURI\"]") {
|
|
62
|
+
return (getMarkup("859f9e8107cff328c1a6c9d6a0664dbe57568c269781b8f5ed578bad89fbca99").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])));
|
|
63
|
+
}if (actualProps === "[\"errorURI\"]") {
|
|
64
|
+
return (getMarkup("73c862bfb65cf711738b8cc0fe46b066ff9302f3fd188ae7050fd9f499e741cb").replaceAll("{{prop:errorURI}}", escapeHTML(props["errorURI"])));
|
|
65
|
+
}if (actualProps === "[\"error\",\"errorDescription\"]") {
|
|
66
|
+
return (getMarkup("114078cc63c86c3d89bbbd3720ba5d88cc4a9fa0af524bed62fbba56893c5114").replaceAll("{{prop:error}}", escapeHTML(props["error"])).replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])));
|
|
67
|
+
}if (actualProps === "[\"errorDescription\"]") {
|
|
68
|
+
return (getMarkup("48bf0be64bae853e36fb4cbf12e38a8edf9cce88d3ab5bc27fe080612aed6fd8").replaceAll("{{prop:errorDescription}}", escapeHTML(props["errorDescription"])));
|
|
69
|
+
}if (actualProps === "[\"error\"]") {
|
|
70
|
+
return (getMarkup("369ba05d31cc43811e70d980e4c31c12600ce36bb1611a6e517855798b5491b6").replaceAll("{{prop:error}}", escapeHTML(props["error"])));
|
|
71
|
+
}if (actualProps === "[]") {
|
|
72
|
+
return (getMarkup("4a309661df0a42e803658e865ad79a8a6d40076b6c26585913c0ade3bcaf5995"));
|
|
73
|
+
}}
|
|
74
|
+
module.exports["OIDCAcceptedPage"] = function(props) {
|
|
75
|
+
const actualProps = JSON.stringify(
|
|
76
|
+
Object.keys(props)
|
|
77
|
+
.filter(prop => ["productDocsLink","productName"].includes(prop) && props[prop] != null).sort());if (actualProps === "[\"productDocsLink\",\"productName\"]") {
|
|
78
|
+
return (getMarkup("b15e60135ab9701297e4ad172532349a2cd349ba9883d3931ce2e59992d8b4c4").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
79
|
+
}if (actualProps === "[\"productName\"]") {
|
|
80
|
+
return (getMarkup("5027b44457be2146ba47be53a5ab7f98e26e649b487ba01b3b415ecf96c4e187").replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
81
|
+
}if (actualProps === "[\"productDocsLink\"]") {
|
|
82
|
+
return (getMarkup("096af1d4cec1cb72ac3ce835651eceea6af6ae06a25d6027532c716f385e3834").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
83
|
+
}if (actualProps === "[]") {
|
|
84
|
+
return (getMarkup("5027b44457be2146ba47be53a5ab7f98e26e649b487ba01b3b415ecf96c4e187"));
|
|
85
|
+
}}
|
|
86
|
+
module.exports["OIDCNotFoundPage"] = function(props) {
|
|
87
|
+
const actualProps = JSON.stringify(
|
|
88
|
+
Object.keys(props)
|
|
89
|
+
.filter(prop => ["productDocsLink","productName"].includes(prop) && props[prop] != null).sort());if (actualProps === "[\"productDocsLink\",\"productName\"]") {
|
|
90
|
+
return (getMarkup("f41f18c14fcfcf207200362fac629f078e745284d443f1e7a121902463b4d987").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])).replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
91
|
+
}if (actualProps === "[\"productName\"]") {
|
|
92
|
+
return (getMarkup("b5ec149823770bd5cbd44e6ea299c56316b155480993677cac805e3c8be03a5a").replaceAll("{{prop:productName}}", escapeHTML(props["productName"])));
|
|
93
|
+
}if (actualProps === "[\"productDocsLink\"]") {
|
|
94
|
+
return (getMarkup("e37b34866b33ff8ea7dcaa0121bf4e53bfe5a016d7121328737b14464f41222e").replaceAll("{{prop:productDocsLink}}", escapeHTML(props["productDocsLink"])));
|
|
95
|
+
}if (actualProps === "[]") {
|
|
96
|
+
return (getMarkup("b5ec149823770bd5cbd44e6ea299c56316b155480993677cac805e3c8be03a5a"));
|
|
97
|
+
}}
|
|
98
|
+
|
|
99
|
+
const markupTableSrc = "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";
|
|
100
|
+
let markupTable;
|
|
101
|
+
function getMarkup(hash) {
|
|
102
|
+
if (markupTable === undefined) {
|
|
103
|
+
markupTable = JSON.parse(
|
|
104
|
+
require('zlib').brotliDecompressSync(
|
|
105
|
+
Buffer.from(markupTableSrc, 'base64')));
|
|
106
|
+
}
|
|
107
|
+
return markupTable[hash];
|
|
108
|
+
}
|
|
109
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MongoDBOIDCPlugin } from "@mongodb-js/oidc-plugin";
|
|
2
|
+
import { DevtoolsConnectionState } from "./connect";
|
|
3
|
+
export declare class StateShareServer {
|
|
4
|
+
private constructor();
|
|
5
|
+
static create(state: DevtoolsConnectionState): Promise<StateShareServer>;
|
|
6
|
+
}
|
|
7
|
+
export declare class StateShareClient {
|
|
8
|
+
oidcPlugin: MongoDBOIDCPlugin;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StateShareClient = exports.StateShareServer = void 0;
|
|
4
|
+
class StateShareServer {
|
|
5
|
+
constructor(state) {
|
|
6
|
+
}
|
|
7
|
+
static create(state) {
|
|
8
|
+
const result = new StateShareServer(state);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.StateShareServer = StateShareServer;
|
|
12
|
+
class StateShareClient {
|
|
13
|
+
}
|
|
14
|
+
exports.StateShareClient = StateShareClient;
|
|
15
|
+
//# sourceMappingURL=state-share-socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-share-socket.js","sourceRoot":"","sources":["../src/state-share-socket.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAC3B,YAAoB,KAA8B;IAElD,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAA8B;QAC1C,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AARD,4CAQC;AAED,MAAa,gBAAgB;CAE5B;AAFD,4CAEC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MongoDBOIDCLogEventsMap } from '@mongodb-js/oidc-plugin';
|
|
1
2
|
export interface ConnectAttemptInitializedEvent {
|
|
2
3
|
uri: string;
|
|
3
4
|
driver: {
|
|
@@ -47,7 +48,7 @@ export interface ConnectUsedSystemCAEvent {
|
|
|
47
48
|
caCount: number;
|
|
48
49
|
asyncFallbackError: Error | undefined;
|
|
49
50
|
}
|
|
50
|
-
export interface ConnectEventMap {
|
|
51
|
+
export interface ConnectEventMap extends MongoDBOIDCLogEventsMap {
|
|
51
52
|
'devtools-connect:connect-attempt-initialized': (ev: ConnectAttemptInitializedEvent) => void;
|
|
52
53
|
'devtools-connect:connect-heartbeat-failure': (ev: ConnectHeartbeatFailureEvent) => void;
|
|
53
54
|
'devtools-connect:connect-heartbeat-succeeded': (ev: ConnectHeartbeatSucceededEvent) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mongodb-js/devtools-connect",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "A connection establishment utility for MongoDB developer tools",
|
|
5
5
|
"homepage": "https://github.com/mongodb-js/devtools-connect",
|
|
6
6
|
"repository": {
|
|
@@ -26,24 +26,30 @@
|
|
|
26
26
|
".esm-wrapper.mjs"
|
|
27
27
|
],
|
|
28
28
|
"scripts": {
|
|
29
|
-
"lint": "eslint src/**/*.ts",
|
|
30
|
-
"testonly": "nyc mocha --colors -r ts-node/register src
|
|
29
|
+
"lint": "eslint src/**/*.ts src/**/*.tsx",
|
|
30
|
+
"testonly": "nyc mocha --colors -r ts-node/register src/**/*.spec.ts src/**/*.spec.tsx",
|
|
31
31
|
"test": "npm run lint && npm run build && npm run testonly",
|
|
32
32
|
"build": "npm run compile-ts && gen-esm-wrapper . ./.esm-wrapper.mjs",
|
|
33
33
|
"prepack": "npm run build",
|
|
34
|
-
"compile-ts": "tsc -p tsconfig.json"
|
|
34
|
+
"compile-ts": "tsc -p tsconfig.json && node lib/oidc/static/create-static-pages.js > lib/oidc/static/static-pages.js"
|
|
35
35
|
},
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
37
|
"dependencies": {
|
|
38
|
+
"lodash.merge": "^4.6.2",
|
|
38
39
|
"system-ca": "^1.0.2"
|
|
39
40
|
},
|
|
40
41
|
"peerDependencies": {
|
|
41
|
-
"mongodb": "^4.2.2",
|
|
42
|
+
"mongodb": "^4.2.2 || ^5.0.0",
|
|
42
43
|
"mongodb-log-writer": "^1.1.3"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
46
|
+
"@mongodb-js/compass-components": "^1.6.0",
|
|
47
|
+
"@mongodb-js/oidc-plugin": "^0.1.0",
|
|
48
|
+
"@types/lodash.merge": "^4.6.7",
|
|
45
49
|
"@types/mocha": "^9.0.0",
|
|
46
50
|
"@types/node": "^16.4.10",
|
|
51
|
+
"@types/react": "^17.0.53",
|
|
52
|
+
"@types/react-dom": "^17.0.19",
|
|
47
53
|
"@types/sinon": "^10.0.2",
|
|
48
54
|
"@typescript-eslint/eslint-plugin": "^4.2.0",
|
|
49
55
|
"@typescript-eslint/parser": "^4.2.0",
|
|
@@ -61,6 +67,8 @@
|
|
|
61
67
|
"mongodb-connection-string-url": "^2.3.2",
|
|
62
68
|
"mongodb-log-writer": "^1.1.3",
|
|
63
69
|
"nyc": "^15.1.0",
|
|
70
|
+
"react": "^17.0.2",
|
|
71
|
+
"react-dom": "^17.0.2",
|
|
64
72
|
"sinon-chai": "^3.7.0",
|
|
65
73
|
"ts-node": "^10.2.1",
|
|
66
74
|
"ts-sinon": "^2.0.1",
|