mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2025-04-06 17:33:31 +03:00
Merge in DNS/adguard-home from beta-client-2 to master
Squashed commit of the following:
commit b2640cc49a6c5484d730b534dcf5a8013d7fa478
Merge: 659def862 aef4659e9
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Tue Dec 29 19:23:09 2020 +0300
Merge branch 'master' into beta-client-2
commit 659def8626467949c35b7a6a0c99ffafb07b4385
Author: Eugene Burkov <e.burkov@adguard.com>
Date: Tue Dec 29 17:25:14 2020 +0300
all: upgrade github actions node version
commit b4b8cf8dd75672e9155da5d111ac66e8f5ba1535
Author: Vladislav Abdulmyanov <v.abdulmyanov@adguard.com>
Date: Tue Dec 29 16:57:14 2020 +0300
all: beta client squashed
74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
const toCamel = (s: string) => {
|
|
return s.replace(/([-_][a-z])/ig, ($1) => {
|
|
return $1.toUpperCase()
|
|
.replace('-', '')
|
|
.replace('_', '');
|
|
});
|
|
};
|
|
const capitalize = (s: string) => {
|
|
return s[0].toUpperCase() + s.slice(1);
|
|
};
|
|
const TYPES = {
|
|
integer: 'number',
|
|
float: 'number',
|
|
number: 'number',
|
|
string: 'string',
|
|
boolean: 'boolean',
|
|
};
|
|
|
|
/**
|
|
* @param schemaProp: valueof shema.properties[key]
|
|
* @param openApi: openapi object
|
|
* @returns [propType - basicType or import one, isArray, isClass, isImport]
|
|
*/
|
|
const schemaParamParser = (schemaProp: any, openApi: any): [string, boolean, boolean, boolean, boolean] => {
|
|
let type = '';
|
|
let isImport = false;
|
|
let isClass = false;
|
|
let isArray = false;
|
|
let isAdditional = false;
|
|
|
|
if (schemaProp.$ref || schemaProp.additionalProperties?.$ref) {
|
|
const temp = (schemaProp.$ref || schemaProp.additionalProperties?.$ref).split('/');
|
|
|
|
if (schemaProp.additionalProperties) {
|
|
isAdditional = true;
|
|
}
|
|
|
|
type = `${temp[temp.length - 1]}`;
|
|
|
|
const cl = openApi ? openApi.components.schemas[temp[temp.length - 1]] : {};
|
|
|
|
if (cl.type === 'string' && cl.enum) {
|
|
isImport = true;
|
|
}
|
|
|
|
if (cl.type === 'object' && !cl.oneOf) {
|
|
isClass = true;
|
|
isImport = true;
|
|
} else if (cl.type === 'array') {
|
|
const temp: any = schemaParamParser(cl.items, openApi);
|
|
type = `${temp[0]}`;
|
|
isArray = true;
|
|
isClass = isClass || temp[2];
|
|
isImport = isImport || temp[3];
|
|
}
|
|
} else if (schemaProp.type === 'array') {
|
|
const temp: any = schemaParamParser(schemaProp.items, openApi);
|
|
type = `${temp[0]}`;
|
|
isArray = true;
|
|
isClass = isClass || temp[2];
|
|
isImport = isImport || temp[3];
|
|
} else {
|
|
type = (TYPES as Record<any, string>)[schemaProp.type];
|
|
}
|
|
if (!type) {
|
|
// TODO: Fix bug with Error fields.
|
|
type = 'any';
|
|
// throw new Error('Failed to find entity type');
|
|
}
|
|
|
|
return [type, isArray, isClass, isImport, isAdditional];
|
|
};
|
|
|
|
export { TYPES, toCamel, capitalize, schemaParamParser };
|