fix(sourcemap-uploader): 3.0.6 - server parameter to the upload functions instead of being global

This commit is contained in:
ShiKhu 2021-09-07 13:54:42 +02:00
parent 11ee390f8d
commit b498427601
5 changed files with 29 additions and 24 deletions

View file

@ -10,28 +10,31 @@ npm i -D @openreplay/sourcemap-uploader
## CLI ## CLI
Upload sourcemap for one file: ### Upload a sourcemap for one file:
``` ```
sourcemap-uploader -s https://opnereplay.mycompany.com/api -k API_KEY -p PROJECT_KEY file -m ./dist/index.js.map -u https://myapp.com/index.js sourcemap-uploader -s https://opnereplay.mycompany.com/api -k API_KEY -p PROJECT_KEY file -m ./dist/index.js.map -u https://myapp.com/index.js
``` ```
Upload all sourcemaps in a given directory. The URL must correspond to the root where you upload JS files from the directory. In other words, if you have your `app-42.js` along with the `app-42.js.map` in the `./build` folder and then want to upload it to your OpenReplay instance so it can be reachable through the link `https://myapp.com/static/app-42.js`, then the command should be like: ### Upload all sourcemaps in a given directory.
The URL must correspond to the root where you upload JS files from the directory. In other words, if you have your `app-42.js` along with the `app-42.js.map` in the `./build` folder and then want to upload it to your OpenReplay instance so it can be reachable through the link `https://myapp.com/static/app-42.js`, then the command should be like:
``` ```
sourcemap-uploader -s https://opnereplay.mycompany.com/api -k API_KEY -p PROJECT_KEY dir -m ./build -u https://myapp.com/static sourcemap-uploader -s https://opnereplay.mycompany.com/api -k API_KEY -p PROJECT_KEY dir -m ./build -u https://myapp.com/static
``` ```
- Use `-s` (`--server`) to specify the URL of your OpenReplay instance (make to append it with /api) - Use `-s` (`--server`) to specify the URL of your OpenReplay instance (append it with /api).
**Do not use this parameter if you use SaaS version of the OpenRplay**
- Use `-v` (`--verbose`) to see the logs. - Use `-v` (`--verbose`) to see the logs.
## NPM ## NPM
There are two functions inside `index.js` of the package: There are two functions you can export from the package:
``` ```
uploadFile(api_key, project_key, sourcemap_file_path, js_file_url) uploadFile(api_key, project_key, sourcemap_file_path, js_file_url, [server])
uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url) uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url, [server])
``` ```
Both functions return Promise. Both functions return Promise with a result value to be the list of files for which sourcemaps were uploaded.

View file

@ -58,15 +58,9 @@ const { command, api_key, project_key, server, verbose, ...args } = parser.parse
global._VERBOSE = !!verbose; global._VERBOSE = !!verbose;
try {
global.SERVER = new URL(server || "https://api.openreplay.com");
} catch (e) {
console.error(`Sourcemap Uploader: server URL parse error. ${e}`)
}
(command === 'file' (command === 'file'
? uploadFile(api_key, project_key, args.sourcemap_file_path, args.js_file_url) ? uploadFile(api_key, project_key, args.sourcemap_file_path, args.js_file_url, server)
: uploadDir(api_key, project_key, args.sourcemap_dir_path, args.js_dir_url) : uploadDir(api_key, project_key, args.sourcemap_dir_path, args.js_dir_url, server)
) )
.then((sourceFiles) => .then((sourceFiles) =>
sourceFiles.length > 0 sourceFiles.length > 0

View file

@ -3,12 +3,12 @@ const readFile = require('./lib/readFile.js'),
uploadSourcemaps = require('./lib/uploadSourcemaps.js'); uploadSourcemaps = require('./lib/uploadSourcemaps.js');
module.exports = { module.exports = {
async uploadFile(api_key, project_key, sourcemap_file_path, js_file_url) { async uploadFile(api_key, project_key, sourcemap_file_path, js_file_url, server) {
const sourcemap = await readFile(sourcemap_file_path, js_file_url); const sourcemap = await readFile(sourcemap_file_path, js_file_url);
return uploadSourcemaps(api_key, project_key, [sourcemap]); return uploadSourcemaps(api_key, project_key, [sourcemap], server);
}, },
async uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url) { async uploadDir(api_key, project_key, sourcemap_dir_path, js_dir_url, server) {
const sourcemaps = await readDir(sourcemap_dir_path, js_dir_url); const sourcemaps = await readDir(sourcemap_dir_path, js_dir_url);
return uploadSourcemaps(api_key, project_key, sourcemaps); return uploadSourcemaps(api_key, project_key, sourcemaps, server);
}, },
}; };

View file

@ -1,15 +1,22 @@
const https = require('https'); const https = require('https');
const getUploadURLs = (api_key, project_key, js_file_urls) => const getUploadURLs = (api_key, project_key, js_file_urls, server) =>
new Promise((resolve, reject) => { new Promise((resolve, reject) => {
if (js_file_urls.length === 0) { if (js_file_urls.length === 0) {
resolve([]); resolve([]);
} }
const pathPrefix = (global.SERVER.pathname + "/").replace(/\/+/g, '/'); let serverURL;
try {
serverURL = new URL(server);
} catch(e) {
return reject(`Failed to parse server URL "${server}".`)
}
const pathPrefix = (serverURL.pathname + "/").replace(/\/+/g, '/');
const options = { const options = {
method: 'PUT', method: 'PUT',
hostname: global.SERVER.host, hostname: serverURL.host,
path: pathPrefix + `${project_key}/sourcemaps/`, path: pathPrefix + `${project_key}/sourcemaps/`,
headers: { Authorization: api_key, 'Content-Type': 'application/json' }, headers: { Authorization: api_key, 'Content-Type': 'application/json' },
} }
@ -74,11 +81,12 @@ const uploadSourcemap = (upload_url, body) =>
req.end(); req.end();
}); });
module.exports = (api_key, project_key, sourcemaps) => module.exports = (api_key, project_key, sourcemaps, server) =>
getUploadURLs( getUploadURLs(
api_key, api_key,
project_key, project_key,
sourcemaps.map(({ js_file_url }) => js_file_url), sourcemaps.map(({ js_file_url }) => js_file_url),
server || "https://api.openreplay.com",
).then(upload_urls => ).then(upload_urls =>
Promise.all( Promise.all(
upload_urls.map((upload_url, i) => upload_urls.map((upload_url, i) =>

View file

@ -1,6 +1,6 @@
{ {
"name": "@openreplay/sourcemap-uploader", "name": "@openreplay/sourcemap-uploader",
"version": "3.0.5", "version": "3.0.6",
"description": "NPM module to upload your JS sourcemaps files to OpenReplay", "description": "NPM module to upload your JS sourcemaps files to OpenReplay",
"bin": "cli.js", "bin": "cli.js",
"main": "index.js", "main": "index.js",