UNPKG

@xuda.io/runtime-bundle

Version:

The Xuda Runtime Bundle refers to a collection of scripts and libraries packaged together to provide the necessary runtime environment for executing plugins or components in the Xuda platform.

106 lines (85 loc) 2.85 kB
const new_node_id = (type, app_id) => { const abbreviate = (word) => { if (word.length <= 3) { return word; } // Remove vowels except the first letter let abbreviation = word[0]; const vowels = 'aeiou'; for (let i = 1; i < word.length && abbreviation.length < 3; i++) { if (!vowels.includes(word[i].toLowerCase())) { abbreviation += word[i]; } } // If the abbreviation is still less than 3 letters, pad it with the remaining letters if (abbreviation.length < 3) { abbreviation = word.substring(0, 3); } return abbreviation; }; var last12uuid = crypto.randomUUID().split('-')[4]; if (type) { var menuAbbreviated = abbreviate(type.replaceAll('_', '')); return `${app_id.substr(app_id.length - 3)}_${menuAbbreviated}_${last12uuid}`; } return app_id.substr(app_id.length - 3) + '_' + last12uuid; }; export const createDoc = function ({ _id, uid, menuType, checkedInUserName, app_id, parentId, properties, studio_meta = {}, minimal = false } = {}) { if (!_id) { _id = new_node_id(menuType, app_id); } var doc = { _id, stat: 3, docType: 'studio', docDate: Date.now(), ts: Date.now(), order_ts: Date.now(), studio_meta: { ...{ created: Date.now(), createdByUid: uid, checkedInUserId: uid, checkedInUserName, parentId: parentId || menuType === 'globals' ? 'globals' : menuType === 'table' ? 'database' : menuType === 'route' ? 'routes' : 'programs', }, ...studio_meta, }, properties: properties || {}, }; if (minimal) return doc; if (menuType) { switch (menuType) { case 'table': if (!doc.tableIndexes) doc.tableIndexes = []; if (!doc.tableFields) doc.tableFields = []; break; case 'alert': if (!doc.alertData) doc.alertData = {}; break; case 'javascript': if (!doc.scriptData) doc.scriptData = {}; break; case 'folder': break; case 'route': if (!doc.routeMenu) doc.routeMenu = {}; break; case 'api': if (!doc.scriptData) doc.scriptData = {}; case 'component': if (!doc.progUi) doc.progUi = [{ id: 'root', type: 'element', tagName: doc?.properties?.renderType !== 'form' ? 'xu-multi-view' : 'xu-single-view', attributes: {}, children: [] }]; default: //get_data, set_data, batch if (!doc.progDataSource) doc.progDataSource = { dataSourceType: '', }; if (!doc.progFields) doc.progFields = []; if (!doc.progEvents) doc.progEvents = []; break; } } return doc; }; export const valid_menuType = ['globals', 'table', 'get_data', 'set_data', 'batch', 'alert', 'javascript', 'folder', 'route', 'api', 'component'];