Move plugins to "sonar/desktop/plugins"
Summary: Plugins moved from "sonar/desktop/src/plugins" to "sonar/desktop/plugins". Fixed all the paths after moving. New "desktop" folder structure: - `src` - Flipper desktop app JS code executing in Electron Renderer (Chrome) process. - `static` - Flipper desktop app JS code executing in Electron Main (Node.js) process. - `plugins` - Flipper desktop JS plugins. - `pkg` - Flipper packaging lib and CLI tool. - `doctor` - Flipper diagnostics lib and CLI tool. - `scripts` - Build scripts for Flipper desktop app. - `headless` - Headless version of Flipper desktop app. - `headless-tests` - Integration tests running agains Flipper headless version. Reviewed By: mweststrate Differential Revision: D20344186 fbshipit-source-id: d020da970b2ea1e001f9061a8782bfeb54e31ba0
This commit is contained in:
committed by
Facebook GitHub Bot
parent
beb5c85e69
commit
10d990c32c
94
desktop/plugins/navigation/util/uri.tsx
Normal file
94
desktop/plugins/navigation/util/uri.tsx
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import querystring from 'querystring';
|
||||
|
||||
export const validateParameter = (value: string, parameter: string) => {
|
||||
return (
|
||||
value &&
|
||||
(parameterIsNumberType(parameter) ? !isNaN(parseInt(value, 10)) : true) &&
|
||||
(parameterIsBooleanType(parameter)
|
||||
? value === 'true' || value === 'false'
|
||||
: true)
|
||||
);
|
||||
};
|
||||
|
||||
export const filterOptionalParameters = (uri: string) => {
|
||||
return uri.replace(/[/&]?([^&?={}\/]*=)?{\?.*?}/g, '');
|
||||
};
|
||||
|
||||
export const parseURIParameters = (query: string) => {
|
||||
// get parameters from query string and store in Map
|
||||
const parameters = query
|
||||
.split('?')
|
||||
.splice(1)
|
||||
.join('');
|
||||
const parametersObj = querystring.parse(parameters);
|
||||
const parametersMap = new Map<string, string>();
|
||||
for (const key in parametersObj) {
|
||||
parametersMap.set(key, parametersObj[key] as string);
|
||||
}
|
||||
return parametersMap;
|
||||
};
|
||||
|
||||
export const parameterIsNumberType = (parameter: string) => {
|
||||
const regExp = /^{(#|\?#)/g;
|
||||
return regExp.test(parameter);
|
||||
};
|
||||
|
||||
export const parameterIsBooleanType = (parameter: string) => {
|
||||
const regExp = /^{(!|\?!)/g;
|
||||
return regExp.test(parameter);
|
||||
};
|
||||
|
||||
export const replaceRequiredParametersWithValues = (
|
||||
uri: string,
|
||||
values: Array<string>,
|
||||
) => {
|
||||
const parameterRegExp = /{[^?]*?}/g;
|
||||
const replaceRegExp = /{[^?]*?}/;
|
||||
let newURI = uri;
|
||||
let index = 0;
|
||||
let match = parameterRegExp.exec(uri);
|
||||
while (match != null) {
|
||||
newURI = newURI.replace(replaceRegExp, values[index]);
|
||||
match = parameterRegExp.exec(uri);
|
||||
index++;
|
||||
}
|
||||
return newURI;
|
||||
};
|
||||
|
||||
export const getRequiredParameters = (uri: string) => {
|
||||
const parameterRegExp = /{[^?]*?}/g;
|
||||
const matches: Array<string> = [];
|
||||
let match = parameterRegExp.exec(uri);
|
||||
while (match != null) {
|
||||
if (match[0]) {
|
||||
matches.push(match[0]);
|
||||
}
|
||||
match = parameterRegExp.exec(uri);
|
||||
}
|
||||
return matches;
|
||||
};
|
||||
|
||||
export const liveEdit = (uri: string, formValues: Array<string>) => {
|
||||
const parameterRegExp = /({[^?]*?})/g;
|
||||
const uriArray = uri.split(parameterRegExp);
|
||||
return uriArray.reduce((acc, uriComponent, idx) => {
|
||||
if (idx % 2 === 0 || !formValues[(idx - 1) / 2]) {
|
||||
return acc + uriComponent;
|
||||
} else {
|
||||
return acc + formValues[(idx - 1) / 2];
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const stripQueryParameters = (uri: string) => {
|
||||
return uri.replace(/\?.*$/g, '');
|
||||
};
|
||||
Reference in New Issue
Block a user