UNPKG

@mikezimm/npmfunctions

Version:
142 lines (110 loc) 9.77 kB
/*** * d888888b .88b d88. d8888b. .d88b. d8888b. d888888b .d88b. d88888b d88888b d888888b .o88b. d888888b .d8b. db * `88' 88'YbdP`88 88 `8D .8P Y8. 88 `8D `~~88~~' .8P Y8. 88' 88' `88' d8P Y8 `88' d8' `8b 88 * 88 88 88 88 88oodD' 88 88 88oobY' 88 88 88 88ooo 88ooo 88 8P 88 88ooo88 88 * 88 88 88 88 88~~~ 88 88 88`8b 88 88 88 88~~~ 88~~~ 88 8b 88 88~~~88 88 * .88. 88 88 88 88 `8b d8' 88 `88. 88 `8b d8' 88 88 .88. Y8b d8 .88. 88 88 88booo. * Y888888P YP YP YP 88 `Y88P' 88 YD YP `Y88P' YP YP Y888888P `Y88P' Y888888P YP YP Y88888P * * */ /*** * d888888b .88b d88. d8888b. .d88b. d8888b. d888888b d8b db d8888b. .88b d88. d88888b db db d8b db .o88b. d888888b d888888b .d88b. d8b db .d8888. * `88' 88'YbdP`88 88 `8D .8P Y8. 88 `8D `~~88~~' 888o 88 88 `8D 88'YbdP`88 88' 88 88 888o 88 d8P Y8 `~~88~~' `88' .8P Y8. 888o 88 88' YP * 88 88 88 88 88oodD' 88 88 88oobY' 88 88V8o 88 88oodD' 88 88 88 88ooo 88 88 88V8o 88 8P 88 88 88 88 88V8o 88 `8bo. * 88 88 88 88 88~~~ 88 88 88`8b 88 88 V8o88 88~~~ 88 88 88 88~~~ 88 88 88 V8o88 8b 88 88 88 88 88 V8o88 `Y8b. * .88. 88 88 88 88 `8b d8' 88 `88. 88 88 V888 88 88 88 88 88 88b d88 88 V888 Y8b d8 88 .88. `8b d8' 88 V888 db 8D * Y888888P YP YP YP 88 `Y88P' 88 YD YP VP V8P 88 YP YP YP YP ~Y8888P' VP V8P `Y88P' YP Y888888P `Y88P' VP V8P `8888Y' * * */ import { isStringValidDate } from './Time/checks'; /*** * d888888b .88b d88. d8888b. .d88b. d8888b. d888888b .d8888. d88888b d8888b. db db d888888b .o88b. d88888b .d8888. * `88' 88'YbdP`88 88 `8D .8P Y8. 88 `8D `~~88~~' 88' YP 88' 88 `8D 88 88 `88' d8P Y8 88' 88' YP * 88 88 88 88 88oodD' 88 88 88oobY' 88 `8bo. 88ooooo 88oobY' Y8 8P 88 8P 88ooooo `8bo. * 88 88 88 88 88~~~ 88 88 88`8b 88 `Y8b. 88~~~~~ 88`8b `8b d8' 88 8b 88~~~~~ `Y8b. * .88. 88 88 88 88 `8b d8' 88 `88. 88 db 8D 88. 88 `88. `8bd8' .88. Y8b d8 88. db 8D * Y888888P YP YP YP 88 `Y88P' 88 YD YP `8888Y' Y88888P 88 YD YP Y888888P `Y88P' Y88888P `8888Y' * * */ /*** * d888888b .88b d88. d8888b. .d88b. d8888b. d888888b db db d88888b db d8888b. d88888b d8888b. .d8888. * `88' 88'YbdP`88 88 `8D .8P Y8. 88 `8D `~~88~~' 88 88 88' 88 88 `8D 88' 88 `8D 88' YP * 88 88 88 88 88oodD' 88 88 88oobY' 88 88ooo88 88ooooo 88 88oodD' 88ooooo 88oobY' `8bo. * 88 88 88 88 88~~~ 88 88 88`8b 88 88~~~88 88~~~~~ 88 88~~~ 88~~~~~ 88`8b `Y8b. * .88. 88 88 88 88 `8b d8' 88 `88. 88 88 88 88. 88booo. 88 88. 88 `88. db 8D * Y888888P YP YP YP 88 `Y88P' 88 YD YP YP YP Y88888P Y88888P 88 Y88888P 88 YD `8888Y' * * */ /*** * d888888b .88b d88. d8888b. .d88b. d8888b. d888888b .o88b. .d88b. .88b d88. d8888b. .d88b. d8b db d88888b d8b db d888888b * `88' 88'YbdP`88 88 `8D .8P Y8. 88 `8D `~~88~~' d8P Y8 .8P Y8. 88'YbdP`88 88 `8D .8P Y8. 888o 88 88' 888o 88 `~~88~~' * 88 88 88 88 88oodD' 88 88 88oobY' 88 8P 88 88 88 88 88 88oodD' 88 88 88V8o 88 88ooooo 88V8o 88 88 * 88 88 88 88 88~~~ 88 88 88`8b 88 8b 88 88 88 88 88 88~~~ 88 88 88 V8o88 88~~~~~ 88 V8o88 88 * .88. 88 88 88 88 `8b d8' 88 `88. 88 Y8b d8 `8b d8' 88 88 88 88 `8b d8' 88 V888 88. 88 V888 88 * Y888888P YP YP YP 88 `Y88P' 88 YD YP `Y88P' `Y88P' YP YP YP 88 `Y88P' VP V8P Y88888P VP V8P YP * * */ /*** * d88888b db db d8888b. .d88b. d8888b. d888888b d888888b d8b db d888888b d88888b d8888b. d88888b .d8b. .o88b. d88888b .d8888. * 88' `8b d8' 88 `8D .8P Y8. 88 `8D `~~88~~' `88' 888o 88 `~~88~~' 88' 88 `8D 88' d8' `8b d8P Y8 88' 88' YP * 88ooooo `8bd8' 88oodD' 88 88 88oobY' 88 88 88V8o 88 88 88ooooo 88oobY' 88ooo 88ooo88 8P 88ooooo `8bo. * 88~~~~~ .dPYb. 88~~~ 88 88 88`8b 88 88 88 V8o88 88 88~~~~~ 88`8b 88~~~ 88~~~88 8b 88~~~~~ `Y8b. * 88. .8P Y8. 88 `8b d8' 88 `88. 88 .88. 88 V888 88 88. 88 `88. 88 88 88 Y8b d8 88. db 8D * Y88888P YP YP 88 `Y88P' 88 YD YP Y888888P VP V8P YP Y88888P 88 YD YP YP YP `Y88P' Y88888P `8888Y' * * * import { ITypeStrings, getDetailValueType } from '@mikezimm/npmfunctions/dist/Services/typeServices'; */ /*** * d888888b db db d8888b. d88888b d888888b d8b db d888888b d88888b d8888b. d88888b .d8b. .o88b. d88888b .d8888. * `~~88~~' `8b d8' 88 `8D 88' `88' 888o 88 `~~88~~' 88' 88 `8D 88' d8' `8b d8P Y8 88' 88' YP * 88 `8bd8' 88oodD' 88ooooo 88 88V8o 88 88 88ooooo 88oobY' 88ooo 88ooo88 8P 88ooooo `8bo. * 88 88 88~~~ 88~~~~~ 88 88 V8o88 88 88~~~~~ 88`8b 88~~~ 88~~~88 8b 88~~~~~ `Y8b. * 88 88 88 88. .88. 88 V888 88 88. 88 `88. 88 88 88 Y8b d8 88. db 8D * YP YP 88 Y88888P Y888888P VP V8P YP Y88888P 88 YD YP YP YP `Y88P' Y88888P `8888Y' * * import { ITypeStrings, getDetailValueType } from '@mikezimm/npmfunctions/dist/Services/typeServices'; */ export type ITypeStrings = 'unknown' | 'undefined' | 'null' | 'function' | 'numberstring' | 'datestring' | 'string' | 'date' | 'number' | 'boolean' | 'object' | 'array' | 'link' ; /** * Gets actual likely type * @param fieldValue */ export function getDetailValueType ( fieldValue : any ) { let fieldType = typeof fieldValue; let result : ITypeStrings = 'unknown'; if ( fieldValue === undefined ) { result = 'undefined'; } else if ( fieldValue === null ) { result = 'null'; } else if ( fieldType === 'function' ) { result = 'function'; } else if ( fieldType === 'string' ){ if ( isNaN(fieldValue) ) { //This is a string or date string if ( isStringValidDate(fieldValue, 'common') ) { result = 'datestring'; } else { result = 'string'; } } else { result = 'numberstring' ; } } else if ( fieldType === 'boolean' ){ result = 'boolean'; } else if ( fieldType === 'number' ){ result = 'number'; } else if ( fieldType === 'object' ){ //If it's a multi-choice; return all choices in an array. if (Array.isArray(fieldValue)) { result = 'array'; //Else just stringify it } else { let keys: string = JSON.stringify( Object.keys(fieldValue) ); if ( keys === "['Description','Url']" || keys === '["Description","Url"]' ) { result = 'link'; } else { result = 'object'; } } } return result; }