Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
this.normalizeValue = value => {
// nullの場合はそのまま扱う。
if (isNull(value)) {
return value;
}
// undefined時はnullとして扱う。
if (isUndefined(value)) {
return null;
}
// 文字列を受け取った場合は形式によって返却値が変わる。
if (isString(value)) {
// 数字と`-`のみも文字列に変換する。
value = value.replace(/[^-^0-9]/g, '');
// 空文字列の場合はnullとして扱う。
if (!value.length) {
return null;
}
// 数値に変換する。
// `-12` -> 12
// `0012` -> 12
// `1-2` -> NaN
value = Number(value);
// 画像系チェック。
if (contains(['png', 'jpg', 'jpeg', 'gif'], suffix)) {
this.isImage = true;
return data;
}
// 動画系チェック。
if (contains(['mp4', 'ogv', 'webm'], suffix)) {
this.isVideo = true;
this.videoType = suffix;
return data;
}
// 推測できない場合はそのまま表示。
this.isText = true;
return data;
}
if (isUndefined(data)) {
this.isText = true;
return '';
}
// それ以外。強制的に文字列化。
this.isText = true;
return String(data);
})();
const checkParameterObject = (parameterObject, val) => {
const name = parameterObject.name;
const _default = parameterObject.default;
const required = parameterObject.required;
const _in = parameterObject.in;
// 値が設定されていればスルー。
if (!isUndefined(val[name])) {
return;
}
// defaultが設定されていればそれを使用する。
if (!isUndefined(_default)) {
val[name] = deepClone(_default);
return;
}
// requiredがfalseならスルー。
if (!required) {
return;
}
// この時点で、入力必須だけどユーザ未入力な状態。可能な限り初期値を設定する。
// inは"query", "header", "path", "formData", "body"のいずれか。
if (contains(['formData', 'header', 'path', 'query'], _in)) {
// 初期値設定不可能。
return;
}
// この時点でinは必ず'body'になる。
const schema = parameterObject.schema;
if (contains(['boolean', 'integer', 'number', 'null', 'string'], schema.type)) {
const renderHtml = data => {
let ret = '';
// nullの場合
if (isNull(data)) {
ret = `<div class="${BlockName}__null">null</div>`;
return ret;
}
// undefinedの場合
if (isUndefined(data)) {
ret = `<div class="${BlockName}__undefined">undefined</div>`;
return ret;
}
// 関数の場合
if (isFunction(data)) {
ret = `<div class="${BlockName}__function">f()</div>`;
return ret;
}
// Numberの場合
if (isNumber(data)) {
ret = `<div class="${BlockName}__number">${data}</div>`;
return ret;
}
this.getSelectOptions = () => {
const options = [];
const enumDescriptions = formObject['x-enum-descriptions'] || {};
if (isUndefined(this.opts.val)) {
options.push({
label: '-- select an option --',
value: undefined,
isSelected: true,
isDiabled: true
});
}
forEach(formObject.enum, (v, idx) => {
options.push({
id: `select_${idx}`,
label: enumDescriptions[v] || v,
value: v,
isSelected: (v === this.opts.val)
});
});
return options;
forOwn(properties, (property, key) => {
if (contains(['boolean', 'integer', 'number', 'null', 'string'], property.type)) {
if (!isUndefined(val[key])) {
return;
}
if (isUndefined(property.default)) {
return;
}
val[key] = property.default;
}
if (property.type === 'object') {
if (!contains(required, key)) {
return;
}
val[key] = {};
generateDefaultProperties(property, val[key]);
}
if (property.type === 'array') {
if (!contains(required, key)) {
return;
}
val[key] = [];
this.normalizeValue = value => {
if (isNumber(value)) {
return String(value);
}
if (isUndefined(value)) {
return null;
}
return value;
};
forOwn(ret, (val, key) => {
if (isUndefined(val)) {
delete ret[key];
}
});
if (!size(ret)) {
forOwn(properties, (property, key) => {
if (contains(['boolean', 'integer', 'number', 'null', 'string'], property.type)) {
if (!isUndefined(val[key])) {
return;
}
if (isUndefined(property.default)) {
return;
}
val[key] = property.default;
}
if (property.type === 'object') {
if (!contains(required, key)) {
return;
}
val[key] = {};
generateDefaultProperties(property, val[key]);
}
if (property.type === 'array') {
if (!contains(required, key)) {
forOwn(ret, (val, key) => {
if (isUndefined(val)) {
delete ret[key];
}
});
if (!size(ret)) {