UNPKG

manifest

Version:

The backend for AI code editors

111 lines (110 loc) 3.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRecordKeyByValue = getRecordKeyByValue; exports.camelize = camelize; exports.kebabize = kebabize; exports.lowerCaseFirstLetter = lowerCaseFirstLetter; exports.upperCaseFirstLetter = upperCaseFirstLetter; exports.getRandomIntExcluding = getRandomIntExcluding; exports.getDtoPropertyNameFromRelationship = getDtoPropertyNameFromRelationship; exports.getRelationshipNameFromDtoPropertyName = getRelationshipNameFromDtoPropertyName; exports.forceNumberArray = forceNumberArray; exports.getSmallestImageSize = getSmallestImageSize; exports.base64ToBlob = base64ToBlob; function getRecordKeyByValue(record, value) { for (const [key, val] of Object.entries(record)) { if (val === value) { return key; } } return undefined; } function camelize(str) { const combined = Array.isArray(str) ? str.join('_') : str; return lowerCaseFirstLetter((combined || '') .split('_') .map((word, index) => index === 0 ? word : word[0].toUpperCase() + word.slice(1)) .join('')); } function kebabize(str) { return str .replace(/([a-z])([A-Z])/g, '$1-$2') .replace(/\s+/g, '-') .toLowerCase(); } function lowerCaseFirstLetter(str) { return str.charAt(0).toLowerCase() + str.slice(1); } function upperCaseFirstLetter(str) { return str.charAt(0).toUpperCase() + str.slice(1); } function getRandomIntExcluding({ min, max, exclude }) { const randomInt = Math.floor(Math.random() * (max - min + 1)) + min; return exclude?.length && exclude.includes(randomInt) ? getRandomIntExcluding({ min, max, exclude }) : randomInt; } function getDtoPropertyNameFromRelationship(relationship) { if (relationship.nested) { return relationship.name; } if (relationship?.type === 'many-to-one') { return relationship.name + 'Id'; } else if (relationship?.type === 'many-to-many') { return relationship.name.endsWith('s') ? relationship.name.slice(0, -1) + 'Ids' : relationship.name + 'Id'; } else { throw new Error('Unknown relationship'); } } function getRelationshipNameFromDtoPropertyName(propertyName) { if (propertyName.endsWith('Id')) { return propertyName.endsWith('Ids') ? propertyName.slice(0, -3) + 's' : propertyName.slice(0, -2); } else { throw new Error('Unknown property name'); } } function forceNumberArray(value) { if (typeof value === 'number') { return [value]; } else if (typeof value === 'string') { return [parseInt(value, 10)]; } else if (typeof value === 'undefined' || value === null) { return []; } return value.map((v) => (typeof v === 'string' ? parseInt(v, 10) : v)); } function getSmallestImageSize(imageSizesObject) { return Object.keys(imageSizesObject).reduce((smallestSize, currentSize) => { const currentImageSize = imageSizesObject?.[currentSize]; const smallestImageSize = imageSizesObject?.[smallestSize]; if (currentImageSize?.width !== undefined && smallestImageSize?.width !== undefined && currentImageSize.width < smallestImageSize.width) { return currentSize; } return smallestSize; }); } function base64ToBlob(base64, contentType) { const byteCharacters = atob(base64); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += 512) { const slice = byteCharacters.slice(offset, offset + 512); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } return new Blob(byteArrays, { type: contentType }); }