@domoinc/ryuu-proxy 5.0.1 → 5.1.0-beta.1
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/dist/index.d.ts +22 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +162 -114
- package/dist/index.js.map +1 -1
- package/dist/lib/errors.js +5 -5
- package/dist/lib/errors.js.map +1 -1
- package/package.json +19 -46
- package/dist/lib/Transport/index.d.ts +0 -31
- package/dist/lib/Transport/index.d.ts.map +0 -1
- package/dist/lib/Transport/index.js +0 -250
- package/dist/lib/Transport/index.js.map +0 -1
- package/dist/lib/constants.d.ts +0 -3
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -6
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/models.d.ts +0 -9
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js +0 -3
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/utils/index.d.ts +0 -7
- package/dist/lib/utils/index.d.ts.map +0 -1
- package/dist/lib/utils/index.js +0 -79
- package/dist/lib/utils/index.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
import { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import { IncomingMessage } from 'http';
|
|
1
|
+
import type { Request, Response, NextFunction } from 'express';
|
|
2
|
+
import type { IncomingMessage } from 'http';
|
|
3
|
+
import type { RyuuClient, Manifest } from 'ryuu-client';
|
|
3
4
|
import busboy from 'busboy';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
export interface ProxyConfig {
|
|
6
|
+
client: RyuuClient;
|
|
7
|
+
manifest: Manifest;
|
|
8
|
+
domainUrl: string;
|
|
9
|
+
oauthTokens?: {
|
|
10
|
+
access: string;
|
|
11
|
+
refresh: string;
|
|
12
|
+
};
|
|
12
13
|
}
|
|
14
|
+
declare function isDomoRequest(url: string | undefined): boolean;
|
|
15
|
+
export declare function createProxy(config: ProxyConfig): {
|
|
16
|
+
express: () => (req: Request, res: Response, next: NextFunction) => void | busboy.Busboy;
|
|
17
|
+
stream: (req: IncomingMessage) => Promise<globalThis.Response> | undefined;
|
|
18
|
+
isDomoRequest: typeof isDomoRequest;
|
|
19
|
+
};
|
|
20
|
+
export declare function getOauthTokens(instance: string, proxyId: string, scopes?: string[]): {
|
|
21
|
+
access: string;
|
|
22
|
+
refresh: string;
|
|
23
|
+
} | undefined;
|
|
24
|
+
export type { Manifest, RyuuClient } from 'ryuu-client';
|
|
13
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,MAAM,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAUD,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGvD;AAwGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;oBAoBnC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY;kBA0DpC,eAAe;;EAMrC;AAGD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAQjD;AAGD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,123 +1,171 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as os from 'os';
|
|
3
|
+
import { createWriteStream } from 'fs';
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import { Readable } from 'node:stream';
|
|
6
|
+
import Configstore from 'configstore';
|
|
7
|
+
import busboy from 'busboy';
|
|
8
|
+
const DOMO_PATTERNS = [
|
|
9
|
+
/^\/domo\/.+\/v\d/,
|
|
10
|
+
/^\/data\/v\d\/.+/,
|
|
11
|
+
/^\/sql\/v\d\/.+/,
|
|
12
|
+
/^\/dql\/v\d\/.+/,
|
|
13
|
+
/^\/api\/.+/,
|
|
14
|
+
];
|
|
15
|
+
function isDomoRequest(url) {
|
|
16
|
+
if (!url)
|
|
17
|
+
return false;
|
|
18
|
+
return DOMO_PATTERNS.some((p) => p.test(url));
|
|
19
|
+
}
|
|
20
|
+
function isMultiPart(headers) {
|
|
21
|
+
return Object.entries(headers).some(([key, value]) => key.toLowerCase() === 'content-type' &&
|
|
22
|
+
value !== undefined &&
|
|
23
|
+
value.toString().toLowerCase().includes('multipart'));
|
|
24
|
+
}
|
|
25
|
+
function buildHeaders(req, domainUrl, oauthTokens) {
|
|
26
|
+
const hostname = domainUrl.replace('https://', '');
|
|
27
|
+
// Determine which headers to filter
|
|
28
|
+
const filters = isMultiPart(req.headers)
|
|
29
|
+
? ['content-type', 'content-length', 'cookie']
|
|
30
|
+
: ['cookie'];
|
|
31
|
+
const filtered = Object.keys(req.headers).reduce((acc, key) => {
|
|
32
|
+
if (!filters.includes(key.toLowerCase())) {
|
|
33
|
+
acc[key] = req.headers[key];
|
|
34
|
+
}
|
|
35
|
+
return acc;
|
|
36
|
+
}, {});
|
|
37
|
+
// Fix referer
|
|
38
|
+
const referer = req.headers.referer ?? 'https://0.0.0.0:3000';
|
|
39
|
+
const fixedReferer = referer.includes('?')
|
|
40
|
+
? referer
|
|
41
|
+
: `${referer}?userId=27&customer=dev&locale=en-US&platform=desktop`;
|
|
42
|
+
// Build cookie header
|
|
43
|
+
let cookie;
|
|
44
|
+
const existing = req.headers.cookie;
|
|
45
|
+
const existingStr = Array.isArray(existing)
|
|
46
|
+
? existing.join('; ')
|
|
47
|
+
: existing;
|
|
48
|
+
const tokenStr = oauthTokens
|
|
49
|
+
? `_daatv1=${oauthTokens.access}; _dartv1=${oauthTokens.refresh}`
|
|
50
|
+
: undefined;
|
|
51
|
+
if (existingStr && tokenStr) {
|
|
52
|
+
cookie = `${existingStr}; ${tokenStr}`;
|
|
7
53
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
54
|
+
else {
|
|
55
|
+
cookie = existingStr ?? tokenStr;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
...filtered,
|
|
59
|
+
referer: fixedReferer,
|
|
60
|
+
host: hostname,
|
|
61
|
+
...(cookie ? { cookie } : {}),
|
|
33
62
|
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
63
|
+
}
|
|
64
|
+
function parseBody(req) {
|
|
65
|
+
const exprReq = req;
|
|
66
|
+
if (typeof exprReq.body !== 'undefined') {
|
|
67
|
+
return Promise.resolve(typeof exprReq.body === 'string'
|
|
68
|
+
? exprReq.body
|
|
69
|
+
: JSON.stringify(exprReq.body));
|
|
70
|
+
}
|
|
71
|
+
return new Promise((resolve) => {
|
|
72
|
+
const chunks = [];
|
|
73
|
+
req.on('data', (chunk) => chunks.push(chunk));
|
|
74
|
+
req.on('end', () => {
|
|
75
|
+
const raw = Buffer.concat(chunks).toString();
|
|
76
|
+
resolve(raw || undefined);
|
|
77
|
+
});
|
|
78
|
+
req.on('error', () => resolve(undefined));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function pipeResponse(upstream, res) {
|
|
82
|
+
res.status(upstream.status);
|
|
83
|
+
upstream.headers.forEach((value, key) => {
|
|
84
|
+
if (!['transfer-encoding', 'connection', 'keep-alive', 'content-encoding', 'content-length'].includes(key.toLowerCase())) {
|
|
85
|
+
res.setHeader(key, value);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (upstream.body) {
|
|
89
|
+
Readable.fromWeb(upstream.body).pipe(res);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
res.end();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export function createProxy(config) {
|
|
96
|
+
const { client, domainUrl, oauthTokens } = config;
|
|
97
|
+
async function proxyRequest(req, headersOnly) {
|
|
98
|
+
const headers = buildHeaders(req, domainUrl, oauthTokens);
|
|
99
|
+
const url = `${domainUrl}${req.url ?? ''}`;
|
|
100
|
+
const body = headersOnly ? undefined : await parseBody(req);
|
|
101
|
+
return client.request(url, {
|
|
102
|
+
method: req.method,
|
|
103
|
+
headers: headers,
|
|
104
|
+
body,
|
|
105
|
+
rawResponse: true,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function express() {
|
|
109
|
+
return (req, res, next) => {
|
|
110
|
+
if (!isDomoRequest(req.url))
|
|
111
|
+
return next();
|
|
112
|
+
if (isMultiPart(req.headers)) {
|
|
113
|
+
const bb = busboy({ headers: req.headers });
|
|
114
|
+
let filePath;
|
|
115
|
+
let fieldName;
|
|
116
|
+
let fileMimeType;
|
|
117
|
+
bb.on('file', (fieldname, filestream, fileMetadata) => {
|
|
118
|
+
filePath = path.join(os.tmpdir(), path.basename(fileMetadata.filename));
|
|
119
|
+
fieldName = fieldname;
|
|
120
|
+
fileMimeType = fileMetadata.mimeType;
|
|
121
|
+
filestream.pipe(createWriteStream(filePath));
|
|
122
|
+
});
|
|
123
|
+
bb.on('finish', () => {
|
|
124
|
+
(async () => {
|
|
125
|
+
const headers = buildHeaders(req, domainUrl, oauthTokens);
|
|
126
|
+
const url = `${domainUrl}${req.url ?? ''}`;
|
|
127
|
+
const fileBuffer = await readFile(filePath);
|
|
128
|
+
const filename = path.basename(filePath);
|
|
129
|
+
const form = new FormData();
|
|
130
|
+
form.append(fieldName, new Blob([fileBuffer], { type: fileMimeType }), filename);
|
|
131
|
+
const response = await client.request(url, {
|
|
132
|
+
method: req.method,
|
|
133
|
+
headers: headers,
|
|
134
|
+
body: form,
|
|
135
|
+
rawResponse: true,
|
|
136
|
+
});
|
|
137
|
+
pipeResponse(response, res);
|
|
138
|
+
})().catch((err) => {
|
|
139
|
+
const status = err.status ?? err.statusCode ?? 500;
|
|
140
|
+
res.status(status).send(err.message ?? 'Unknown error');
|
|
80
141
|
});
|
|
81
|
-
return req.pipe(bb);
|
|
82
|
-
}
|
|
83
|
-
return this.transport
|
|
84
|
-
.build(req)
|
|
85
|
-
.then((options) => this.transport.request({
|
|
86
|
-
...options,
|
|
87
|
-
httpsAgent: this.agent,
|
|
88
|
-
}))
|
|
89
|
-
.then((rawRequest) => rawRequest.data.pipe(res))
|
|
90
|
-
.catch((err) => this.onError(err, res));
|
|
91
|
-
}
|
|
92
|
-
return next();
|
|
93
|
-
};
|
|
94
|
-
this.stream = (req) => {
|
|
95
|
-
if (this.transport.isDomoRequest(req.url)) {
|
|
96
|
-
return this.transport
|
|
97
|
-
.build(req)
|
|
98
|
-
.then(this.transport.request)
|
|
99
|
-
.catch((err) => {
|
|
100
|
-
// Re-throw the error so callers can handle it
|
|
101
|
-
throw err;
|
|
102
142
|
});
|
|
143
|
+
return req.pipe(bb);
|
|
103
144
|
}
|
|
104
|
-
|
|
145
|
+
proxyRequest(req)
|
|
146
|
+
.then((response) => pipeResponse(response, res))
|
|
147
|
+
.catch((err) => {
|
|
148
|
+
const status = err.status ?? err.statusCode ?? 500;
|
|
149
|
+
res.status(status).send(err.message ?? 'Unknown error');
|
|
150
|
+
});
|
|
105
151
|
};
|
|
106
|
-
this.transport = new Transport_1.default(config);
|
|
107
|
-
dotenv.config({ path: `${process.cwd()}/.env` });
|
|
108
|
-
const proxyHost = process.env.REACT_APP_PROXY_HOST ?? process.env.PROXY_HOST;
|
|
109
|
-
const proxyPort = process.env.REACT_APP_PROXY_PORT ?? process.env.PROXY_PORT;
|
|
110
|
-
const proxyUsername = process.env.REACT_APP_PROXY_USERNAME ?? process.env.PROXY_USERNAME;
|
|
111
|
-
const proxyPassword = process.env.REACT_APP_PROXY_PASSWORD ?? process.env.PROXY_PASSWORD;
|
|
112
|
-
if (proxyHost !== undefined && proxyPort !== undefined) {
|
|
113
|
-
if (proxyUsername !== undefined && proxyPassword !== undefined) {
|
|
114
|
-
this.agent = new https_proxy_agent_1.HttpsProxyAgent(`http://${proxyUsername}:${proxyPassword}@${proxyHost}:${proxyPort}`);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
this.agent = new https_proxy_agent_1.HttpsProxyAgent(`http://${proxyHost}:${proxyPort}`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
152
|
}
|
|
153
|
+
function stream(req) {
|
|
154
|
+
if (!isDomoRequest(req.url))
|
|
155
|
+
return undefined;
|
|
156
|
+
return proxyRequest(req);
|
|
157
|
+
}
|
|
158
|
+
return { express, stream, isDomoRequest };
|
|
159
|
+
}
|
|
160
|
+
// Helper: resolve OAuth tokens from configstore for a given proxyId
|
|
161
|
+
export function getOauthTokens(instance, proxyId, scopes) {
|
|
162
|
+
const configstore = new Configstore(`/ryuu/${instance}`);
|
|
163
|
+
const allScopes = scopes ? ['domoapps', ...scopes] : ['domoapps'];
|
|
164
|
+
const key = `${proxyId}-${allScopes.join('-')}`;
|
|
165
|
+
const access = configstore.get(`${key}-accessToken`);
|
|
166
|
+
const refresh = configstore.get(`${key}-refreshToken`);
|
|
167
|
+
if (access && refresh)
|
|
168
|
+
return { access, refresh };
|
|
169
|
+
return undefined;
|
|
121
170
|
}
|
|
122
|
-
exports.Proxy = Proxy;
|
|
123
171
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export class DomoException extends Error {
|
|
2
|
+
statusCode;
|
|
3
|
+
url;
|
|
4
|
+
error;
|
|
5
|
+
proxy;
|
|
5
6
|
constructor(err, url) {
|
|
6
7
|
const message = 'Ensure the app has been published at least once (manifest.json should have an Id) ' +
|
|
7
8
|
'and you are working with an active session by running: `domo login`';
|
|
@@ -13,5 +14,4 @@ class DomoException extends Error {
|
|
|
13
14
|
this.url = url;
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
exports.DomoException = DomoException;
|
|
17
17
|
//# sourceMappingURL=errors.js.map
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,UAAU,CAAS;IAEnB,GAAG,CAAS;IAEZ,KAAK,CAAS;IAEd,KAAK,CAAS;IAEd,YAAY,GAA2E,EAAE,GAAW;QAClG,MAAM,OAAO,GACX,oFAAoF;YACpF,qEAAqE,CAAC;QAExE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domoinc/ryuu-proxy",
|
|
3
|
-
"version": "5.0.1",
|
|
3
|
+
"version": "5.1.0-beta.1",
|
|
4
4
|
"description": "a middleware that provides a proxy for local domo app development",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"default": "./dist/index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
5
12
|
"main": "./dist/index.js",
|
|
6
13
|
"types": "./dist/index.d.ts",
|
|
7
14
|
"author": "AppTeam6 <Squad.AppTeam6@domo.com>",
|
|
@@ -19,66 +26,32 @@
|
|
|
19
26
|
],
|
|
20
27
|
"devDependencies": {
|
|
21
28
|
"@types/busboy": "^1.5.4",
|
|
22
|
-
"@types/chai": "^4.3.20",
|
|
23
29
|
"@types/configstore": "^6.0.2",
|
|
24
30
|
"@types/express": "^4.17.24",
|
|
25
|
-
"@types/
|
|
26
|
-
"@types/mocha": "^10.0.10",
|
|
27
|
-
"@types/node": "^18.19.130",
|
|
28
|
-
"@types/sinon": "^17.0.4",
|
|
29
|
-
"@types/tough-cookie": "^4.0.5",
|
|
30
|
-
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
31
|
-
"@typescript-eslint/parser": "^7.0.0",
|
|
32
|
-
"chai": "^4.5.0",
|
|
33
|
-
"eslint": "^8.57.0",
|
|
34
|
-
"eslint-config-airbnb-base": "^15.0.0",
|
|
35
|
-
"eslint-config-airbnb-typescript": "^18.0.0",
|
|
36
|
-
"eslint-config-prettier": "^10.1.8",
|
|
37
|
-
"eslint-plugin-import": "^2.31.0",
|
|
38
|
-
"eslint-plugin-prettier": "^5.5.4",
|
|
39
|
-
"mocha": "^10.8.2",
|
|
31
|
+
"@types/node": "^22.13.0",
|
|
40
32
|
"mock-req": "^0.2.0",
|
|
41
|
-
"nyc": "^17.1.0",
|
|
42
33
|
"prettier": "^3.6.2",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"ts-node": "^10.9.2",
|
|
46
|
-
"typescript": "^5.9.3"
|
|
34
|
+
"typescript": "^5.9.3",
|
|
35
|
+
"vitest": "^3.1.0"
|
|
47
36
|
},
|
|
48
37
|
"dependencies": {
|
|
49
|
-
"axios": "^1.13.0",
|
|
50
|
-
"axios-cookiejar-support": "^6.0.4",
|
|
51
38
|
"busboy": "^1.6.0",
|
|
52
39
|
"configstore": "^7.1.0",
|
|
53
|
-
"
|
|
54
|
-
"form-data": "^4.0.4",
|
|
55
|
-
"fs-extra": "^11.3.2",
|
|
56
|
-
"glob": "^10.4.5",
|
|
57
|
-
"https-proxy-agent": "^7.0.6",
|
|
58
|
-
"ryuu-client": "^4.4.4",
|
|
59
|
-
"tough-cookie": "^5.0.0"
|
|
40
|
+
"ryuu-client": "^5.0.0-beta.1"
|
|
60
41
|
},
|
|
61
42
|
"peerDependencies": {
|
|
62
|
-
"express": "^4.17.0 || ^5.0.0"
|
|
63
|
-
"ryuu": "^4.2.5"
|
|
43
|
+
"express": "^4.17.0 || ^5.0.0"
|
|
64
44
|
},
|
|
65
45
|
"scripts": {
|
|
66
|
-
"lint": "eslint src --ext .ts",
|
|
67
|
-
"lint:fix": "eslint src --ext .ts --fix",
|
|
68
46
|
"format": "prettier --write src/**/*.ts",
|
|
69
47
|
"format:check": "prettier --check src/**/*.ts",
|
|
70
|
-
"test": "
|
|
71
|
-
"test:
|
|
72
|
-
"test:coverage
|
|
73
|
-
"tdd": "mocha --watch",
|
|
48
|
+
"test": "vitest run",
|
|
49
|
+
"test:watch": "vitest",
|
|
50
|
+
"test:coverage": "vitest run --coverage",
|
|
74
51
|
"build": "rm -rf ./dist && tsc",
|
|
75
|
-
"release:alpha": "pnpm run build && pnpm publish --tag alpha",
|
|
76
|
-
"release:beta": "pnpm run build && pnpm publish --tag beta",
|
|
52
|
+
"release:alpha": "pnpm run build && pnpm publish --tag alpha --no-git-checks",
|
|
53
|
+
"release:beta": "pnpm run build && pnpm publish --tag beta --no-git-checks",
|
|
77
54
|
"release:production": "pnpm run build && pnpm publish",
|
|
78
|
-
"
|
|
79
|
-
"clean": "rm -rf node_modules pnpm-lock.yaml && pnpm install",
|
|
80
|
-
"bump:alpha": "pnpm run build && pnpm run bump -- --prerelease alpha",
|
|
81
|
-
"bump:beta": "pnpm run build && pnpm run bump -- --prerelease beta",
|
|
82
|
-
"bump": "standard-version"
|
|
55
|
+
"clean": "rm -rf node_modules pnpm-lock.yaml && pnpm install"
|
|
83
56
|
}
|
|
84
57
|
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import Domo = require('ryuu-client');
|
|
2
|
-
import { AxiosRequestConfig } from 'axios';
|
|
3
|
-
import { IncomingMessage, IncomingHttpHeaders } from 'http';
|
|
4
|
-
import { Manifest } from 'ryuu-client/lib/models';
|
|
5
|
-
import { ProxyOptions, OauthToken } from '../models';
|
|
6
|
-
export default class Transport {
|
|
7
|
-
private manifest;
|
|
8
|
-
private clientPromise;
|
|
9
|
-
private domainPromise;
|
|
10
|
-
private proxyId;
|
|
11
|
-
private oauthTokenPromise;
|
|
12
|
-
private cookieJar;
|
|
13
|
-
constructor({ manifest }: ProxyOptions);
|
|
14
|
-
request: (options: AxiosRequestConfig) => Promise<any>;
|
|
15
|
-
getEnv(instance: string): string;
|
|
16
|
-
isDomoRequest(url: string | undefined): boolean;
|
|
17
|
-
isMultiPartRequest(headers: IncomingHttpHeaders): boolean;
|
|
18
|
-
getManifest(): Manifest;
|
|
19
|
-
getDomainPromise(): Promise<{
|
|
20
|
-
url: string;
|
|
21
|
-
}>;
|
|
22
|
-
getLastLogin(): Promise<Domo>;
|
|
23
|
-
getScopedOauthTokens(): Promise<OauthToken | undefined>;
|
|
24
|
-
build(req: IncomingMessage): Promise<AxiosRequestConfig>;
|
|
25
|
-
buildBasic(req: IncomingMessage): Promise<AxiosRequestConfig>;
|
|
26
|
-
private prepareHeaders;
|
|
27
|
-
private prepareCookies;
|
|
28
|
-
private parseBody;
|
|
29
|
-
private verifyLogin;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/Transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,GAAG,QAAQ,aAAa,CAAC,CAAC;AACrC,OAAc,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGrD,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,aAAa,CAA2B;IAEhD,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,iBAAiB,CAAkC;IAE3D,OAAO,CAAC,SAAS,CAAY;gBAEjB,EAAE,QAAQ,EAAE,EAAE,YAAY;IA0BtC,OAAO,GAAI,SAAS,kBAAkB,KAAG,OAAO,CAAC,GAAG,CAAC,CAC2B;IAEhF,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUhC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAmB/C,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO;IASzD,WAAW,IAAI,QAAQ;IAIvB,gBAAgB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAI5C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C7B,oBAAoB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAQvD,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAexD,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkB7D,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,SAAS;IA8BjB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -1,250 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const Domo = require("ryuu-client");
|
|
40
|
-
const axios_1 = __importDefault(require("axios"));
|
|
41
|
-
const axios_cookiejar_support_1 = require("axios-cookiejar-support");
|
|
42
|
-
const tough_cookie_1 = require("tough-cookie");
|
|
43
|
-
const dotenv = __importStar(require("dotenv"));
|
|
44
|
-
const utils_1 = require("../utils");
|
|
45
|
-
const constants_1 = require("../constants");
|
|
46
|
-
class Transport {
|
|
47
|
-
constructor({ manifest }) {
|
|
48
|
-
this.request = (options) => this.clientPromise.then((client) => client.processRequestRaw(options));
|
|
49
|
-
this.manifest = manifest;
|
|
50
|
-
this.clientPromise = this.getLastLogin();
|
|
51
|
-
this.proxyId = (0, utils_1.getProxyId)(manifest);
|
|
52
|
-
this.domainPromise = this.clientPromise.then(async (client) => client.getDomoappsData({ ...this.manifest }, this.proxyId));
|
|
53
|
-
this.oauthTokenPromise = this.getScopedOauthTokens();
|
|
54
|
-
// Add error handlers to prevent unhandled promise rejections
|
|
55
|
-
// These will be caught by the actual consumers when they use the promises
|
|
56
|
-
this.clientPromise.catch(() => {
|
|
57
|
-
// Silently catch - error will be handled when promise is actually used
|
|
58
|
-
});
|
|
59
|
-
this.domainPromise.catch(() => {
|
|
60
|
-
// Silently catch - error will be handled when promise is actually used
|
|
61
|
-
});
|
|
62
|
-
this.oauthTokenPromise.catch(() => {
|
|
63
|
-
// Silently catch - error will be handled when promise is actually used
|
|
64
|
-
});
|
|
65
|
-
// Initialize cookie jar once and reuse it for all requests to persist auth cookies
|
|
66
|
-
(0, axios_cookiejar_support_1.wrapper)(axios_1.default);
|
|
67
|
-
this.cookieJar = new tough_cookie_1.CookieJar();
|
|
68
|
-
}
|
|
69
|
-
getEnv(instance) {
|
|
70
|
-
const regexp = /([-_\w]+)\.(.*)/;
|
|
71
|
-
const int = 2;
|
|
72
|
-
const match = instance.match(regexp);
|
|
73
|
-
if (!match) {
|
|
74
|
-
throw new Error(`Invalid instance format: ${instance}`);
|
|
75
|
-
}
|
|
76
|
-
return match[int];
|
|
77
|
-
}
|
|
78
|
-
isDomoRequest(url) {
|
|
79
|
-
if (!url) {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
const domoPattern = /^\/domo\/.+\/v\d/;
|
|
83
|
-
const dataPattern = /^\/data\/v\d\/.+/;
|
|
84
|
-
const sqlQueryPattern = /^\/sql\/v\d\/.+/;
|
|
85
|
-
const dqlPattern = /^\/dql\/v\d\/.+/;
|
|
86
|
-
const apiPattern = /^\/api\/.+/;
|
|
87
|
-
return (domoPattern.test(url) ||
|
|
88
|
-
dataPattern.test(url) ||
|
|
89
|
-
sqlQueryPattern.test(url) ||
|
|
90
|
-
dqlPattern.test(url) ||
|
|
91
|
-
apiPattern.test(url));
|
|
92
|
-
}
|
|
93
|
-
isMultiPartRequest(headers) {
|
|
94
|
-
return Object.entries(headers).some(([header, value]) => header.toLowerCase() === 'content-type' &&
|
|
95
|
-
value !== undefined &&
|
|
96
|
-
value.toString().toLowerCase().includes('multipart'));
|
|
97
|
-
}
|
|
98
|
-
getManifest() {
|
|
99
|
-
return this.manifest;
|
|
100
|
-
}
|
|
101
|
-
getDomainPromise() {
|
|
102
|
-
return this.domainPromise;
|
|
103
|
-
}
|
|
104
|
-
getLastLogin() {
|
|
105
|
-
return (0, utils_1.getMostRecentLogin)()
|
|
106
|
-
.then(this.verifyLogin)
|
|
107
|
-
.then((recentLogin) => {
|
|
108
|
-
dotenv.config({ path: `${process.cwd()}/.env` });
|
|
109
|
-
const proxyHost = process.env.REACT_APP_PROXY_HOST ?? process.env.PROXY_HOST;
|
|
110
|
-
const proxyPort = process.env.REACT_APP_PROXY_PORT ?? process.env.PROXY_PORT;
|
|
111
|
-
const proxyUsername = process.env.REACT_APP_PROXY_USERNAME ?? process.env.PROXY_USERNAME;
|
|
112
|
-
const proxyPassword = process.env.REACT_APP_PROXY_PASSWORD ?? process.env.PROXY_PASSWORD;
|
|
113
|
-
if (proxyHost !== undefined && proxyPort !== undefined) {
|
|
114
|
-
if (proxyUsername !== undefined && proxyPassword !== undefined) {
|
|
115
|
-
return new Domo(recentLogin.instance, recentLogin.refreshToken, constants_1.CLIENT_ID, {
|
|
116
|
-
host: proxyHost,
|
|
117
|
-
port: proxyPort,
|
|
118
|
-
auth: `${proxyUsername}:${proxyPassword}`,
|
|
119
|
-
}, recentLogin.devToken);
|
|
120
|
-
}
|
|
121
|
-
return new Domo(recentLogin.instance, recentLogin.refreshToken, constants_1.CLIENT_ID, {
|
|
122
|
-
host: proxyHost,
|
|
123
|
-
port: proxyPort,
|
|
124
|
-
}, recentLogin.devToken);
|
|
125
|
-
}
|
|
126
|
-
return new Domo(recentLogin.instance, recentLogin.refreshToken, constants_1.CLIENT_ID, {}, recentLogin.devToken);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
getScopedOauthTokens() {
|
|
130
|
-
if ((0, utils_1.isOauthEnabled)(this.manifest)) {
|
|
131
|
-
return (0, utils_1.getOauthTokens)(this.proxyId, this.manifest.scopes);
|
|
132
|
-
}
|
|
133
|
-
return Promise.resolve(undefined);
|
|
134
|
-
}
|
|
135
|
-
build(req) {
|
|
136
|
-
let options;
|
|
137
|
-
return this.buildBasic(req)
|
|
138
|
-
.then((basicOptions) => {
|
|
139
|
-
options = basicOptions;
|
|
140
|
-
options.transformResponse = [];
|
|
141
|
-
options.responseType = 'stream';
|
|
142
|
-
return this.parseBody(req);
|
|
143
|
-
})
|
|
144
|
-
.then((data) => ({
|
|
145
|
-
...options,
|
|
146
|
-
data,
|
|
147
|
-
}));
|
|
148
|
-
}
|
|
149
|
-
buildBasic(req) {
|
|
150
|
-
let api;
|
|
151
|
-
let hostname;
|
|
152
|
-
return this.domainPromise
|
|
153
|
-
.then((domain) => {
|
|
154
|
-
api = `${domain.url}${req.url ?? ''}`;
|
|
155
|
-
hostname = domain.url;
|
|
156
|
-
return this.prepareHeaders(req.headers, this.proxyId, hostname);
|
|
157
|
-
})
|
|
158
|
-
.then((headers) => ({
|
|
159
|
-
jar: this.cookieJar,
|
|
160
|
-
headers,
|
|
161
|
-
url: api,
|
|
162
|
-
responseType: 'stream',
|
|
163
|
-
method: req.method,
|
|
164
|
-
}));
|
|
165
|
-
}
|
|
166
|
-
prepareHeaders(headers, _context, host) {
|
|
167
|
-
const hostname = host.replace('https://', '');
|
|
168
|
-
return this.oauthTokenPromise.then((tokens) => {
|
|
169
|
-
const refererValue = headers.referer ?? 'https://0.0.0.0:3000';
|
|
170
|
-
const referer = refererValue.indexOf('?') >= 0
|
|
171
|
-
? `${refererValue}`
|
|
172
|
-
: `${refererValue}?userId=27&customer=dev&locale=en-US&platform=desktop`;
|
|
173
|
-
const cookieHeader = this.prepareCookies(headers, tokens);
|
|
174
|
-
const filters = this.isMultiPartRequest(headers)
|
|
175
|
-
? ['content-type', 'content-length', 'cookie']
|
|
176
|
-
: ['cookie'];
|
|
177
|
-
const filteredHeaders = Object.keys(headers).reduce((newHeaders, key) => {
|
|
178
|
-
if (!filters.includes(key.toLowerCase())) {
|
|
179
|
-
return { ...newHeaders, [key]: headers[key] };
|
|
180
|
-
}
|
|
181
|
-
return newHeaders;
|
|
182
|
-
}, {});
|
|
183
|
-
return {
|
|
184
|
-
...filteredHeaders,
|
|
185
|
-
...cookieHeader,
|
|
186
|
-
referer,
|
|
187
|
-
host: hostname,
|
|
188
|
-
};
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
prepareCookies(headers, tokens) {
|
|
192
|
-
const existingCookie = Object.keys(headers).reduce((newHeaders, key) => {
|
|
193
|
-
if (key.toLowerCase() === 'cookie') {
|
|
194
|
-
const cookieValue = headers[key];
|
|
195
|
-
// handle if cookie is an array
|
|
196
|
-
if (Array.isArray(cookieValue)) {
|
|
197
|
-
return { ...newHeaders, cookie: cookieValue.join('; ') };
|
|
198
|
-
}
|
|
199
|
-
if (cookieValue !== undefined) {
|
|
200
|
-
return { ...newHeaders, cookie: cookieValue };
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return newHeaders;
|
|
204
|
-
}, {});
|
|
205
|
-
const tokenCookie = tokens !== undefined ? { cookie: `_daatv1=${tokens.access}; _dartv1=${tokens.refresh}` } : {};
|
|
206
|
-
if (existingCookie.cookie !== undefined && tokenCookie.cookie !== undefined) {
|
|
207
|
-
return {
|
|
208
|
-
cookie: `${existingCookie.cookie}; ${tokenCookie.cookie}`,
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
if (existingCookie.cookie === undefined) {
|
|
212
|
-
return tokenCookie;
|
|
213
|
-
}
|
|
214
|
-
return existingCookie;
|
|
215
|
-
}
|
|
216
|
-
parseBody(req) {
|
|
217
|
-
// if body-parser was used before this middleware the "body" attribute will be set
|
|
218
|
-
const exprReq = req;
|
|
219
|
-
if (typeof exprReq.body !== 'undefined') {
|
|
220
|
-
if (typeof exprReq.body === 'string') {
|
|
221
|
-
return Promise.resolve(exprReq.body);
|
|
222
|
-
}
|
|
223
|
-
return Promise.resolve(JSON.stringify(exprReq.body));
|
|
224
|
-
}
|
|
225
|
-
return new Promise((resolve) => {
|
|
226
|
-
const body = [];
|
|
227
|
-
try {
|
|
228
|
-
req.on('data', (chunk) => body.push(chunk));
|
|
229
|
-
req.on('end', () => {
|
|
230
|
-
const raw = Buffer.concat(body).toString();
|
|
231
|
-
resolve(raw);
|
|
232
|
-
});
|
|
233
|
-
req.on('error', () => {
|
|
234
|
-
resolve(undefined);
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
catch (e) {
|
|
238
|
-
resolve(undefined);
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
verifyLogin(login) {
|
|
243
|
-
if (!login.refreshToken) {
|
|
244
|
-
throw new Error('Not authenticated. Please login using "domo login"');
|
|
245
|
-
}
|
|
246
|
-
return login;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
exports.default = Transport;
|
|
250
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/Transport/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,4BAA4B,CAAC;AACnD,eAAO,MAAM,aAAa,iBAAiB,CAAC"}
|
package/dist/lib/constants.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,yBAAyB,CAAC;AACtC,QAAA,aAAa,GAAG,cAAc,CAAC"}
|
package/dist/lib/models.d.ts
DELETED
package/dist/lib/models.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/lib/models.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,wBAAwB,EAAE,QAAQ,CAAC;CACrD;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
package/dist/lib/models.js
DELETED
package/dist/lib/models.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/lib/models.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Manifest } from 'ryuu-client/lib/models';
|
|
2
|
-
import { OauthToken } from '../models';
|
|
3
|
-
export declare function getMostRecentLogin(): Promise<any>;
|
|
4
|
-
export declare const isOauthEnabled: (manifest: Manifest) => boolean;
|
|
5
|
-
export declare const getProxyId: (manifest: Manifest) => string;
|
|
6
|
-
export declare function getOauthTokens(proxyId: string, scopes: string[] | undefined): Promise<OauthToken>;
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,wBAAgB,kBAAkB,iBAWjC;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,KAAG,OAEsB,CAAC;AAE3E,eAAO,MAAM,UAAU,GAAI,UAAU,QAAQ,KAAG,MAA+C,CAAC;AAEhG,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAejG"}
|
package/dist/lib/utils/index.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.getProxyId = exports.isOauthEnabled = void 0;
|
|
40
|
-
exports.getMostRecentLogin = getMostRecentLogin;
|
|
41
|
-
exports.getOauthTokens = getOauthTokens;
|
|
42
|
-
const Domo = require("ryuu-client");
|
|
43
|
-
const glob_1 = require("glob");
|
|
44
|
-
const fs = __importStar(require("fs-extra"));
|
|
45
|
-
const configstore_1 = __importDefault(require("configstore"));
|
|
46
|
-
const constants_1 = require("../constants");
|
|
47
|
-
function getMostRecentLogin() {
|
|
48
|
-
const home = Domo.getHomeDir();
|
|
49
|
-
const logins = (0, glob_1.globSync)(`${home}/ryuu/*.json`);
|
|
50
|
-
if (logins.length === 0)
|
|
51
|
-
return Promise.resolve({});
|
|
52
|
-
const recent = logins.reduce((prev, next) => (fs.statSync(prev).mtime > fs.statSync(next).mtime ? prev : next));
|
|
53
|
-
const loginData = fs.readJsonSync(recent);
|
|
54
|
-
const configstore = new configstore_1.default(`/ryuu/${loginData.instance}`);
|
|
55
|
-
loginData.refreshToken = configstore.get('refreshToken');
|
|
56
|
-
loginData.devToken = configstore.get('devToken');
|
|
57
|
-
return Promise.resolve(loginData);
|
|
58
|
-
}
|
|
59
|
-
const isOauthEnabled = (manifest) => Object.keys(manifest).includes(constants_1.OAUTH_ENABLED) &&
|
|
60
|
-
manifest[constants_1.OAUTH_ENABLED] === true;
|
|
61
|
-
exports.isOauthEnabled = isOauthEnabled;
|
|
62
|
-
const getProxyId = (manifest) => manifest.proxyId ?? Domo.createUUID();
|
|
63
|
-
exports.getProxyId = getProxyId;
|
|
64
|
-
function getOauthTokens(proxyId, scopes) {
|
|
65
|
-
return getMostRecentLogin()
|
|
66
|
-
.then((loginData) => {
|
|
67
|
-
const configstore = new configstore_1.default(`/ryuu/${loginData.instance}`);
|
|
68
|
-
const allScopes = scopes !== undefined ? ['domoapps', ...scopes] : ['domoapps'];
|
|
69
|
-
return Promise.all([
|
|
70
|
-
configstore.get(`${proxyId}-${allScopes.join('-')}-accessToken`),
|
|
71
|
-
configstore.get(`${proxyId}-${allScopes.join('-')}-refreshToken`),
|
|
72
|
-
]);
|
|
73
|
-
})
|
|
74
|
-
.then((tokens) => ({
|
|
75
|
-
access: tokens[0],
|
|
76
|
-
refresh: tokens[1],
|
|
77
|
-
}));
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,gDAWC;AAQD,wCAeC;AA3CD,oCAAqC;AACrC,+BAAgC;AAChC,6CAA+B;AAC/B,8DAAsC;AAGtC,4CAA6C;AAG7C,SAAgB,kBAAkB;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAA,eAAQ,EAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChH,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,SAAS,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnE,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAW,EAAE,CAC5D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,yBAAa,CAAC;IAC5C,QAA+C,CAAC,yBAAa,CAAC,KAAK,IAAI,CAAC;AAF9D,QAAA,cAAc,kBAEgD;AAEpE,MAAM,UAAU,GAAG,CAAC,QAAkB,EAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AAAnF,QAAA,UAAU,cAAyE;AAEhG,SAAgB,cAAc,CAAC,OAAe,EAAE,MAA4B;IAC1E,OAAO,kBAAkB,EAAE;SACxB,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,SAAS,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEhF,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAW;YAC1E,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAW;SAC5E,CAAC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;KACnB,CAAC,CAAC,CAAC;AACR,CAAC"}
|