123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- const _ = require('lodash')
- const crypto = require('node:crypto')
- module.exports = {
- /* eslint-disable promise/param-names */
- createDeferred () {
- let result, resolve, reject
- return {
- resolve: function (value) {
- if (resolve) {
- resolve(value)
- } else {
- result = result || new Promise(function (r) { r(value) })
- }
- },
- reject: function (reason) {
- if (reject) {
- reject(reason)
- } else {
- result = result || new Promise(function (x, j) { j(reason) })
- }
- },
- promise: new Promise(function (r, j) {
- if (result) {
- r(result)
- } else {
- resolve = r
- reject = j
- }
- })
- }
- },
- /**
- * Decode a tree path
- *
- * @param {string} str String to decode
- * @returns Decoded tree path
- */
- decodeTreePath (str) {
- return str.replaceAll('_', '-').replaceAll('.', '/')
- },
- /**
- * Encode a tree path
- *
- * @param {string} str String to encode
- * @returns Encoded tree path
- */
- encodeTreePath (str) {
- return str?.toLowerCase()?.replaceAll('-', '_')?.replaceAll('/', '.') || ''
- },
- /**
- * Generate SHA-1 Hash of a string
- *
- * @param {string} str String to hash
- * @returns Hashed string
- */
- generateHash (str) {
- return crypto.createHash('sha1').update(str).digest('hex')
- },
- /**
- * Get default value of type
- *
- * @param {any} type primitive type name
- * @returns Default value
- */
- getTypeDefaultValue (type) {
- switch (type.toLowerCase()) {
- case 'string':
- return ''
- case 'number':
- return 0
- case 'boolean':
- return false
- }
- },
- parseModuleProps (props) {
- return _.transform(props, (result, value, key) => {
- let defaultValue = ''
- if (_.isPlainObject(value)) {
- defaultValue = !_.isNil(value.default) ? value.default : this.getTypeDefaultValue(value.type)
- } else {
- defaultValue = this.getTypeDefaultValue(value)
- }
- _.set(result, key, {
- default: defaultValue,
- type: (value.type || value).toLowerCase(),
- title: value.title || _.startCase(key),
- hint: value.hint || '',
- enum: value.enum || false,
- enumDisplay: value.enumDisplay || 'select',
- multiline: value.multiline || false,
- sensitive: value.sensitive || false,
- icon: value.icon || 'rename',
- order: value.order || 100
- })
- return result
- }, {})
- }
- }
|