Files
JsonTool/json-class-interface/dist/utils.js
2024-09-27 01:15:47 +08:00

57 lines
2.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.stripIndent = exports.setKeyNotNull = exports.setInterfaceModel = exports.setDefaultNeedPropertyValue = exports.setDefaultNull = exports.firstLetterCap = exports.isObjectOrArray = exports.isObject = exports.isArray = exports.isNullOrUndefined = exports.isUndefined = exports.isNull = void 0;
const isNull = (val) => val === null;
exports.isNull = isNull;
const isUndefined = (val) => val === undefined;
exports.isUndefined = isUndefined;
const isNullOrUndefined = (val) => (0, exports.isNull)(val) || (0, exports.isUndefined)(val);
exports.isNullOrUndefined = isNullOrUndefined;
const isArray = (val) => Array.isArray(val);
exports.isArray = isArray;
const isObject = (val) => (0, exports.isNull)(val) ? false : val.constructor === Object;
exports.isObject = isObject;
const isObjectOrArray = (val) => (0, exports.isObject)(val) || (0, exports.isArray)(val);
exports.isObjectOrArray = isObjectOrArray;
const firstLetterCap = (val) => {
let splitArr = val.split("_");
return splitArr.map(v => v.charAt(0).toUpperCase() + v.slice(1)).join("");
};
exports.firstLetterCap = firstLetterCap;
const setDefaultNull = (options) => options?.nullAlias ? options?.nullAlias : "string";
exports.setDefaultNull = setDefaultNull;
const setDefaultNeedPropertyValue = (options, key) => {
options.needProperty = options.needProperty || false;
return options?.needProperty
? options?.interfaceModel
? null
: options?.needPropertyValue
? `\t\n@property("${key}")`
: `@property()`
: null;
};
exports.setDefaultNeedPropertyValue = setDefaultNeedPropertyValue;
const setInterfaceModel = (options) => options?.interfaceModel ? 'export interface' : `export class`;
exports.setInterfaceModel = setInterfaceModel;
const setKeyNotNull = (options, key) => `${key}${options?.interfaceModel ? '' : '!'}`;
exports.setKeyNotNull = setKeyNotNull;
const stripIndent = (template, ...expressions) => {
let result = template.reduce((prev, next, i) => {
let expression = expressions[i - 1];
if ((0, exports.isArray)(expression)) {
expression = expression.join('');
}
return prev + expression + next;
});
const match = result.match(/^[^\S\n]*(?=\S)/gm);
const indent = match && Math.min(...match.map(el => el.length));
if (indent) {
const regexp = new RegExp(`^.{${indent}}`, 'gm');
result = result.replace(regexp, '');
}
result = result.replace(/^[^\S\n]+/gm, ' ');
result = result.trim();
return result;
};
exports.stripIndent = stripIndent;